From da722305e53e9adc45010c1d9d0ff366b9660e74 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 28 Feb 2019 04:58:14 +0000 Subject: [PATCH 01/56] chore(NA): first changes on every package.json order to support new babel 7. chore(NA): build for kbn-pm with babel 7. --- package.json | 37 +- packages/elastic-datemath/.babelrc | 23 +- packages/elastic-datemath/package.json | 6 +- packages/eslint-config-kibana/package.json | 16 +- packages/kbn-babel-code-parser/package.json | 2 +- packages/kbn-babel-preset/common_preset.js | 9 +- packages/kbn-babel-preset/node_preset.js | 4 +- packages/kbn-babel-preset/package.json | 15 +- packages/kbn-babel-preset/webpack_preset.js | 2 +- packages/kbn-dev-utils/package.json | 2 +- .../package.json | 4 +- packages/kbn-interpreter/.babelrc | 2 +- packages/kbn-interpreter/package.json | 11 +- .../src/plugin/types/register.js | 2 +- .../template/package_template.json | 16 +- packages/kbn-pm/.babelrc | 10 +- packages/kbn-pm/dist/index.js | 7172 ++++++++--------- packages/kbn-pm/package.json | 11 +- .../__fixtures__/packages/bar/package.json | 4 +- .../__fixtures__/packages/foo/package.json | 4 +- packages/kbn-pm/tsconfig.json | 32 +- packages/kbn-pm/webpack.config.js | 9 - packages/kbn-test/package.json | 4 +- packages/kbn-ui-framework/package.json | 12 +- src/dev/jest/setup/babel_polyfill.js | 2 +- src/functional_test_runner/cli.js | 1 - .../ui/ui_bundles/app_entry_template.js | 2 +- src/optimize/base_optimizer.js | 50 +- src/optimize/watch/watch_cache.ts | 11 +- src/setup_node_env/babel_register/index.js | 10 - src/setup_node_env/babel_register/polyfill.js | 6 +- x-pack/package.json | 20 +- .../canvas/.storybook/webpack.config.js | 2 +- .../scripts/generate_types_from_graphql.js | 1 - .../uptime/scripts/infer_graphql_types.js | 1 - yarn.lock | 1523 ++-- 36 files changed, 3930 insertions(+), 5108 deletions(-) diff --git a/package.json b/package.json index 77e6ed1231c600..236689d5310bad 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,9 @@ ] }, "dependencies": { + "@babel/core": "^7.3.4", + "@babel/polyfill": "^7.2.5", + "@babel/register": "^7.0.0", "@elastic/datemath": "5.0.2", "@elastic/eui": "7.1.0", "@elastic/filesaver": "1.1.2", @@ -119,10 +122,7 @@ "angular-sanitize": "1.6.5", "angular-sortable-view": "0.0.15", "autoprefixer": "^9.1.0", - "babel-core": "6.26.3", - "babel-loader": "7.1.5", - "babel-polyfill": "6.26.0", - "babel-register": "6.26.0", + "babel-loader": "8.0.5", "bluebird": "3.5.3", "boom": "^7.2.0", "brace": "0.11.1", @@ -259,7 +259,7 @@ "@octokit/rest": "^15.10.0", "@types/angular": "1.6.50", "@types/angular-mocks": "^1.7.0", - "@types/babel-core": "^6.25.5", + "@types/babel__core": "^7.1.0", "@types/bluebird": "^3.1.1", "@types/boom": "^7.2.0", "@types/chance": "^1.0.0", @@ -315,8 +315,8 @@ "@types/zen-observable": "^0.8.0", "angular-mocks": "1.4.7", "archiver": "^3.0.0", - "babel-eslint": "^9.0.0", - "babel-jest": "^23.6.0", + "babel-eslint": "^10.0.1", + "babel-jest": "^24.1.0", "backport": "4.4.1", "chai": "3.5.0", "chance": "1.0.10", @@ -330,17 +330,17 @@ "enzyme-adapter-react-16": "^1.9.0", "enzyme-adapter-utils": "^1.10.0", "enzyme-to-json": "^3.3.4", - "eslint": "^5.6.0", - "eslint-config-prettier": "^3.1.0", - "eslint-plugin-babel": "^5.2.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-jest": "^21.26.2", - "eslint-plugin-jsx-a11y": "^6.1.2", - "eslint-plugin-mocha": "^5.2.0", + "eslint": "^5.14.0", + "eslint-config-prettier": "^4.1.0", + "eslint-plugin-babel": "^5.3.0", + "eslint-plugin-import": "^2.16.0", + "eslint-plugin-jest": "^22.3.0", + "eslint-plugin-jsx-a11y": "^6.2.1", + "eslint-plugin-mocha": "^5.3.0", "eslint-plugin-no-unsanitized": "^3.0.2", "eslint-plugin-prefer-object-spread": "^1.2.1", - "eslint-plugin-prettier": "^2.6.2", - "eslint-plugin-react": "^7.11.1", + "eslint-plugin-prettier": "^3.0.1", + "eslint-plugin-react": "^7.12.4", "expect.js": "0.3.1", "faker": "1.1.0", "fetch-mock": "7.3.0", @@ -352,7 +352,7 @@ "grunt-karma": "2.0.0", "grunt-peg": "^2.0.1", "grunt-run": "0.7.0", - "gulp-babel": "^7.0.1", + "gulp-babel": "^8.0.0", "gulp-sourcemaps": "2.6.4", "has-ansi": "^3.0.0", "image-diff": "1.6.0", @@ -398,9 +398,6 @@ "supertest": "^3.1.0", "supertest-as-promised": "^4.0.2", "tree-kill": "^1.1.0", - "ts-jest": "^23.1.4", - "ts-loader": "^5.2.2", - "ts-node": "^7.0.1", "tsconfig-paths": "^3.8.0", "tslint": "^5.11.0", "tslint-config-prettier": "^1.15.0", diff --git a/packages/elastic-datemath/.babelrc b/packages/elastic-datemath/.babelrc index e39c0afafdd9b3..26138d48b71b78 100644 --- a/packages/elastic-datemath/.babelrc +++ b/packages/elastic-datemath/.babelrc @@ -1,13 +1,16 @@ { - "presets": [["env", { - "targets": { - "node": "current", - "browsers": [ - "last 2 versions", - "> 5%", - "Safari 7", - ] + "presets": [ + ["@babel/preset-env", { + "targets": { + "node": "current", + "browsers": [ + "last 2 versions", + "> 5%", + "Safari 7" + ] + } } - }]], + ] + ], "plugins": ["add-module-exports"] -} \ No newline at end of file +} diff --git a/packages/elastic-datemath/package.json b/packages/elastic-datemath/package.json index 3b626077f5eafd..77c545709a3cf5 100644 --- a/packages/elastic-datemath/package.json +++ b/packages/elastic-datemath/package.json @@ -11,9 +11,9 @@ "kbn:watch": "yarn build --watch" }, "devDependencies": { - "babel-cli": "^6.26.0", - "babel-plugin-add-module-exports": "^0.2.1", - "babel-preset-env": "^1.7.0", + "@babel/cli": "^7.2.3", + "@babel/preset-env": "^7.3.4", + "babel-plugin-add-module-exports": "^1.0.0", "moment": "^2.13.0" }, "dependencies": { diff --git a/packages/eslint-config-kibana/package.json b/packages/eslint-config-kibana/package.json index d2e639eebbbe33..c4a5a99e4c976d 100644 --- a/packages/eslint-config-kibana/package.json +++ b/packages/eslint-config-kibana/package.json @@ -15,15 +15,15 @@ }, "homepage": "https://github.com/elastic/eslint-config-kibana#readme", "peerDependencies": { - "babel-eslint": "^9.0.0", - "eslint": "^5.6.0", - "eslint-plugin-babel": "^5.2.0", - "eslint-plugin-jsx-a11y": "^6.1.2", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-jest": "^21.22.1", - "eslint-plugin-mocha": "^5.2.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.14.1", + "eslint-plugin-babel": "^5.3.0", + "eslint-plugin-jsx-a11y": "^6.2.1", + "eslint-plugin-import": "^2.16.0", + "eslint-plugin-jest": "^22.3.0", + "eslint-plugin-mocha": "^5.3.0", "eslint-plugin-no-unsanitized": "^3.0.2", "eslint-plugin-prefer-object-spread": "^1.2.1", - "eslint-plugin-react": "^7.11.1" + "eslint-plugin-react": "^7.12.4" } } diff --git a/packages/kbn-babel-code-parser/package.json b/packages/kbn-babel-code-parser/package.json index 23e7c29f22dfd4..addc5302856592 100755 --- a/packages/kbn-babel-code-parser/package.json +++ b/packages/kbn-babel-code-parser/package.json @@ -15,7 +15,7 @@ "kbn:watch": "yarn build --watch" }, "devDependencies": { - "babel-cli": "^6.26.0" + "@babel/cli": "^7.2.3" }, "dependencies": { "@kbn/babel-preset": "1.0.0", diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index a2d4495adc54b8..eed591affcc642 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -19,13 +19,14 @@ module.exports = { presets: [ - require.resolve('babel-preset-react'), + require.resolve('@babel/preset-react'), + require.resolve('@babel/preset-typescript'), ], plugins: [ require.resolve('babel-plugin-add-module-exports'), // stage 3 - require.resolve('babel-plugin-transform-async-generator-functions'), - require.resolve('babel-plugin-transform-object-rest-spread'), + require.resolve('@babel/plugin-proposal-object-rest-spread'), + require.resolve('@babel/plugin-transform-async-to-generator'), // the class properties proposal was merged with the private fields proposal // into the "class fields" proposal. Babel doesn't support this combined @@ -33,6 +34,6 @@ module.exports = { // TECHNICALLY stage 2, but for all intents and purposes it's stage 3 // // See https://github.com/babel/proposals/issues/12 for progress - require.resolve('babel-plugin-transform-class-properties'), + require.resolve('@babel/plugin-proposal-class-properties'), ], }; diff --git a/packages/kbn-babel-preset/node_preset.js b/packages/kbn-babel-preset/node_preset.js index 04d6dd3609e8ad..2b11e17f78d3d6 100644 --- a/packages/kbn-babel-preset/node_preset.js +++ b/packages/kbn-babel-preset/node_preset.js @@ -20,7 +20,7 @@ module.exports = { presets: [ [ - require.resolve('babel-preset-env'), + require.resolve('@babel/preset-env'), { targets: { // only applies the necessary transformations based on the @@ -31,7 +31,7 @@ module.exports = { node: 'current', }, - // replaces `import "babel-polyfill"` with a list of require statements + // replaces `import "@babel/polyfill"` with a list of require statements // for just the polyfills that the target versions don't already supply // on their own useBuiltIns: true, diff --git a/packages/kbn-babel-preset/package.json b/packages/kbn-babel-preset/package.json index 1309d88197e5c3..75fd4faca899a9 100644 --- a/packages/kbn-babel-preset/package.json +++ b/packages/kbn-babel-preset/package.json @@ -4,12 +4,13 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "babel-plugin-add-module-exports": "^0.2.1", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-define": "^1.3.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0", - "babel-preset-env": "^1.7.0", - "babel-preset-react": "^6.24.1" + "@babel/plugin-proposal-class-properties": "^7.3.4", + "@babel/plugin-proposal-object-rest-spread": "^7.3.4", + "@babel/plugin-transform-async-to-generator": "^7.3.4", + "@babel/preset-env": "^7.3.4", + "@babel/preset-react":"^7.0.0", + "@babel/preset-typescript": "^7.3.3", + "babel-plugin-add-module-exports": "^1.0.0", + "babel-plugin-transform-define": "^1.3.1" } } diff --git a/packages/kbn-babel-preset/webpack_preset.js b/packages/kbn-babel-preset/webpack_preset.js index 97bfa44a049d93..61ff21a2e13115 100644 --- a/packages/kbn-babel-preset/webpack_preset.js +++ b/packages/kbn-babel-preset/webpack_preset.js @@ -20,7 +20,7 @@ module.exports = { presets: [ [ - require.resolve('babel-preset-env'), + require.resolve('@babel/preset-env'), { targets: { browsers: [ diff --git a/packages/kbn-dev-utils/package.json b/packages/kbn-dev-utils/package.json index 3775cc06d3b11d..bc097b66b206c7 100644 --- a/packages/kbn-dev-utils/package.json +++ b/packages/kbn-dev-utils/package.json @@ -19,8 +19,8 @@ "tslib": "^1.9.3" }, "devDependencies": { + "@babel/cli": "^7.2.3", "@kbn/babel-preset": "1.0.0", - "babel-cli": "^6.26.0", "chance": "1.0.6", "expect.js": "0.3.1" } diff --git a/packages/kbn-eslint-plugin-license-header/package.json b/packages/kbn-eslint-plugin-license-header/package.json index 2c62a4232cf18e..64753279ee8cbf 100644 --- a/packages/kbn-eslint-plugin-license-header/package.json +++ b/packages/kbn-eslint-plugin-license-header/package.json @@ -4,8 +4,8 @@ "private": true, "license": "Apache-2.0", "peerDependencies": { - "eslint": "^5.6.0", - "babel-eslint": "^9.0.0" + "eslint": "^5.14.1", + "babel-eslint": "^10.0.1" }, "dependencies": { "dedent": "^0.7.0" diff --git a/packages/kbn-interpreter/.babelrc b/packages/kbn-interpreter/.babelrc index 57a5cc3669eb4d..8472361bfa3a05 100644 --- a/packages/kbn-interpreter/.babelrc +++ b/packages/kbn-interpreter/.babelrc @@ -1,7 +1,7 @@ { "presets": ["@kbn/babel-preset/webpack_preset"], "plugins": [ - ["babel-plugin-transform-runtime", { + ["@babel/plugin-transform-runtime", { "polyfill": false, "regenerator": true }] diff --git a/packages/kbn-interpreter/package.json b/packages/kbn-interpreter/package.json index 290e02cb2b2e7f..ded8f38bff492e 100644 --- a/packages/kbn-interpreter/package.json +++ b/packages/kbn-interpreter/package.json @@ -9,19 +9,20 @@ "kbn:watch": "node scripts/build --dev --watch" }, "dependencies": { + "@babel/runtime": "^7.3.4", "@kbn/i18n": "1.0.0", "lodash": "npm:@elastic/lodash@3.10.1-kibana1", "lodash.clone": "^4.5.0", "uuid": "3.0.1" }, "devDependencies": { + "@babel/cli": "^7.2.3", + "@babel/core": "7.3.4", + "@babel/plugin-transform-runtime": "^7.3.4", + "@babel/polyfill": "7.2.5", "@kbn/babel-preset": "1.0.0", "@kbn/dev-utils": "1.0.0", - "babel-cli": "^6.26.0", - "babel-core": "6.26.3", - "babel-loader": "7.1.5", - "babel-plugin-transform-runtime": "^6.23.0", - "babel-polyfill": "6.20.0", + "babel-loader": "8.0.5", "copy-webpack-plugin": "^4.6.0", "css-loader": "1.0.0", "del": "^3.0.0", diff --git a/packages/kbn-interpreter/src/plugin/types/register.js b/packages/kbn-interpreter/src/plugin/types/register.js index 17b03f0229672d..582843c91f83bb 100644 --- a/packages/kbn-interpreter/src/plugin/types/register.js +++ b/packages/kbn-interpreter/src/plugin/types/register.js @@ -17,7 +17,7 @@ * under the License. */ -import 'babel-polyfill'; +import '@babel/polyfill'; import { typeSpecs } from './index'; // eslint-disable-next-line no-undef diff --git a/packages/kbn-plugin-generator/sao_template/template/package_template.json b/packages/kbn-plugin-generator/sao_template/template/package_template.json index a3641c9c1a9425..1b60bd0190b9ff 100644 --- a/packages/kbn-plugin-generator/sao_template/template/package_template.json +++ b/packages/kbn-plugin-generator/sao_template/template/package_template.json @@ -26,16 +26,16 @@ "@elastic/eslint-config-kibana": "link:../../kibana/packages/eslint-config-kibana", "@elastic/eslint-import-resolver-kibana": "link:../../kibana/packages/kbn-eslint-import-resolver-kibana", "@kbn/plugin-helpers": "link:../../kibana/packages/kbn-plugin-helpers", - "babel-eslint": "^9.0.0", - "eslint": "^5.6.0", - "eslint-plugin-babel": "^5.2.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-jest": "^21.26.2", - "eslint-plugin-jsx-a11y": "^6.1.2", - "eslint-plugin-mocha": "^5.2.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.14.1", + "eslint-plugin-babel": "^5.3.0", + "eslint-plugin-import": "^2.16.0", + "eslint-plugin-jest": "^22.3.0", + "eslint-plugin-jsx-a11y": "^6.2.1", + "eslint-plugin-mocha": "^5.3.0", "eslint-plugin-no-unsanitized": "^3.0.2", "eslint-plugin-prefer-object-spread": "^1.2.1", - "eslint-plugin-react": "^7.11.1", + "eslint-plugin-react": "^7.12.4", "expect.js": "^0.3.1" } } diff --git a/packages/kbn-pm/.babelrc b/packages/kbn-pm/.babelrc index f34e55f9b7ba65..1ca768097a7ee8 100644 --- a/packages/kbn-pm/.babelrc +++ b/packages/kbn-pm/.babelrc @@ -1,10 +1,14 @@ { "presets": [ - "stage-3", - ["env", { + "@babel/typescript", + ["@babel/preset-env", { "targets": { "node": "current" } }] + ], + "plugins": [ + "@babel/proposal-class-properties", + "@babel/proposal-object-rest-spread" ] -} \ No newline at end of file +} diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 43c4337521ec44..4d77ce094f91c9 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -87,146 +87,90 @@ module.exports = /************************************************************************/ /******/ ([ /* 0 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__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__(367); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["buildProductionProjects"]; }); -Object.defineProperty(exports, "__esModule", { - value: true -}); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "prepareExternalProjectDependencies", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["prepareExternalProjectDependencies"]; }); -var _cli = __webpack_require__(1); +/* harmony import */ var _utils_workspaces__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(131); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "copyWorkspacePackages", function() { return _utils_workspaces__WEBPACK_IMPORTED_MODULE_2__["copyWorkspacePackages"]; }); -Object.defineProperty(exports, 'run', { - enumerable: true, - get: function () { - return _cli.run; - } -}); - -var _production = __webpack_require__(371); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, 'buildProductionProjects', { - enumerable: true, - get: function () { - return _production.buildProductionProjects; - } -}); -Object.defineProperty(exports, 'prepareExternalProjectDependencies', { - enumerable: true, - get: function () { - return _production.prepareExternalProjectDependencies; - } -}); -var _workspaces = __webpack_require__(134); -Object.defineProperty(exports, 'copyWorkspacePackages', { - enumerable: true, - get: function () { - return _workspaces.copyWorkspacePackages; - } -}); /***/ }), /* 1 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "run", function() { return run; }); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dedent__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var getopts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); +/* harmony import */ var getopts__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(getopts__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(357); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(33); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.run = undefined; - -let run = exports.run = (() => { - var _ref = _asyncToGenerator(function* (argv) { - // We can simplify this setup (and remove this extra handling) once Yarn - // starts forwarding the `--` directly to this script, see - // https://github.com/yarnpkg/yarn/blob/b2d3e1a8fe45ef376b716d597cc79b38702a9320/src/cli/index.js#L174-L182 - if (argv.includes('--')) { - _log.log.write(_chalk2.default.red(`Using "--" is not allowed, as it doesn't work with 'yarn kbn'.`)); - process.exit(1); - } - const options = (0, _getopts2.default)(argv, { - alias: { - e: 'exclude', - h: 'help', - i: 'include' - }, - boolean: ['prefer-offline', 'frozen-lockfile'] - }); - const args = options._; - if (options.help || args.length === 0) { - help(); - return; - } - // This `rootPath` is relative to `./dist/` as that's the location of the - // built version of this tool. - const rootPath = (0, _path.resolve)(__dirname, '../../../'); - const commandName = args[0]; - const extraArgs = args.slice(1); - const commandOptions = { options, extraArgs, rootPath }; - const command = _commands.commands[commandName]; - if (command === undefined) { - _log.log.write(_chalk2.default.red(`[${commandName}] is not a valid command, see 'kbn --help'`)); - process.exit(1); - } - yield (0, _run.runCommand)(command, commandOptions); - }); - - return function run(_x) { - return _ref.apply(this, arguments); - }; -})(); - -var _chalk = __webpack_require__(2); - -var _chalk2 = _interopRequireDefault(_chalk); - -var _dedent = __webpack_require__(14); - -var _dedent2 = _interopRequireDefault(_dedent); - -var _getopts = __webpack_require__(15); - -var _getopts2 = _interopRequireDefault(_getopts); - -var _path = __webpack_require__(16); - -var _commands = __webpack_require__(17); -var _run = __webpack_require__(361); -var _log = __webpack_require__(33); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ function help() { - const availableCommands = Object.keys(_commands.commands).map(commandName => _commands.commands[commandName]).map(command => `${command.name} - ${command.description}`); - _log.log.write(_dedent2.default` + const availableCommands = Object.keys(_commands__WEBPACK_IMPORTED_MODULE_4__["commands"]).map(commandName => _commands__WEBPACK_IMPORTED_MODULE_4__["commands"][commandName]).map(command => `${command.name} - ${command.description}`); + _utils_log__WEBPACK_IMPORTED_MODULE_6__["log"].write(dedent__WEBPACK_IMPORTED_MODULE_1___default.a` usage: kbn [] By default commands are run for Kibana itself, all packages in the 'packages/' @@ -245,6 +189,50 @@ function help() { `); } +async function run(argv) { + // We can simplify this setup (and remove this extra handling) once Yarn + // starts forwarding the `--` directly to this script, see + // https://github.com/yarnpkg/yarn/blob/b2d3e1a8fe45ef376b716d597cc79b38702a9320/src/cli/index.js#L174-L182 + if (argv.includes('--')) { + _utils_log__WEBPACK_IMPORTED_MODULE_6__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.red(`Using "--" is not allowed, as it doesn't work with 'yarn kbn'.`)); + process.exit(1); + } + + const options = getopts__WEBPACK_IMPORTED_MODULE_2___default()(argv, { + alias: { + e: 'exclude', + h: 'help', + i: 'include' + }, + boolean: ['prefer-offline', 'frozen-lockfile'] + }); + const args = options._; + + if (options.help || args.length === 0) { + help(); + return; + } // This `rootPath` is relative to `./dist/` as that's the location of the + // built version of this tool. + + + const rootPath = Object(path__WEBPACK_IMPORTED_MODULE_3__["resolve"])(__dirname, '../../../'); + const commandName = args[0]; + const extraArgs = args.slice(1); + const commandOptions = { + options, + extraArgs, + rootPath + }; + const command = _commands__WEBPACK_IMPORTED_MODULE_4__["commands"][commandName]; + + if (command === undefined) { + _utils_log__WEBPACK_IMPORTED_MODULE_6__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.red(`[${commandName}] is not a valid command, see 'kbn --help'`)); + process.exit(1); + } + + await Object(_run__WEBPACK_IMPORTED_MODULE_5__["runCommand"])(command, commandOptions); +} + /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { @@ -2452,24 +2440,15 @@ module.exports = require("path"); /***/ }), /* 17 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.commands = undefined; - -var _bootstrap = __webpack_require__(18); - -var _clean = __webpack_require__(136); - -var _run = __webpack_require__(159); - -var _watch = __webpack_require__(160); - +__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__(18); +/* harmony import */ var _clean__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(133); +/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(155); +/* harmony import */ var _watch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(156); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -2488,117 +2467,137 @@ var _watch = __webpack_require__(160); * specific language governing permissions and limitations * under the License. */ -const commands = exports.commands = { - bootstrap: _bootstrap.BootstrapCommand, - clean: _clean.CleanCommand, - run: _run.RunCommand, - watch: _watch.WatchCommand + + + + +const commands = { + bootstrap: _bootstrap__WEBPACK_IMPORTED_MODULE_0__["BootstrapCommand"], + clean: _clean__WEBPACK_IMPORTED_MODULE_1__["CleanCommand"], + run: _run__WEBPACK_IMPORTED_MODULE_2__["RunCommand"], + watch: _watch__WEBPACK_IMPORTED_MODULE_3__["WatchCommand"] }; /***/ }), /* 18 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BootstrapCommand", function() { return BootstrapCommand; }); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33); +/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(35); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.BootstrapCommand = undefined; - -var _chalk = __webpack_require__(2); - -var _chalk2 = _interopRequireDefault(_chalk); - -var _link_project_executables = __webpack_require__(19); -var _log = __webpack_require__(33); -var _parallelize = __webpack_require__(34); -var _projects = __webpack_require__(35); +const BootstrapCommand = { + description: 'Install dependencies and crosslink projects', + name: 'bootstrap', -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + async run(projects, projectGraph, { + options + }) { + const batchedProjectsByWorkspace = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_4__["topologicallyBatchProjects"])(projects, projectGraph, { + batchByWorkspace: true + }); + const batchedProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_4__["topologicallyBatchProjects"])(projects, projectGraph); + const extraArgs = [...(options['frozen-lockfile'] === true ? ['--frozen-lockfile'] : []), ...(options['prefer-offline'] === true ? ['--prefer-offline'] : [])]; + _utils_log__WEBPACK_IMPORTED_MODULE_2__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold('\nRunning installs in topological order:')); + + for (const batch of batchedProjectsByWorkspace) { + for (const project of batch) { + if (project.isWorkspaceProject) { + _utils_log__WEBPACK_IMPORTED_MODULE_2__["log"].write(`Skipping workspace project: ${project.name}`); + continue; + } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + if (project.hasDependencies()) { + await project.installDependencies({ + extraArgs + }); + } + } + } + _utils_log__WEBPACK_IMPORTED_MODULE_2__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold('\nInstalls completed, linking package executables:\n')); + await Object(_utils_link_project_executables__WEBPACK_IMPORTED_MODULE_1__["linkProjectExecutables"])(projects, projectGraph); + /** + * At the end of the bootstrapping process we call all `kbn:bootstrap` scripts + * in the list of projects. We do this because some projects need to be + * transpiled before they can be used. Ideally we shouldn't do this unless we + * have to, as it will slow down the bootstrapping process. + */ -const BootstrapCommand = exports.BootstrapCommand = { - description: 'Install dependencies and crosslink projects', - name: 'bootstrap', - run(projects, projectGraph, { options }) { - return _asyncToGenerator(function* () { - const batchedProjectsByWorkspace = (0, _projects.topologicallyBatchProjects)(projects, projectGraph, { - batchByWorkspace: true - }); - const batchedProjects = (0, _projects.topologicallyBatchProjects)(projects, projectGraph); - const extraArgs = [...(options['frozen-lockfile'] === true ? ['--frozen-lockfile'] : []), ...(options['prefer-offline'] === true ? ['--prefer-offline'] : [])]; - _log.log.write(_chalk2.default.bold('\nRunning installs in topological order:')); - for (const batch of batchedProjectsByWorkspace) { - for (const project of batch) { - if (project.isWorkspaceProject) { - _log.log.write(`Skipping workspace project: ${project.name}`); - continue; - } - if (project.hasDependencies()) { - yield project.installDependencies({ extraArgs }); - } - } - } - _log.log.write(_chalk2.default.bold('\nInstalls completed, linking package executables:\n')); - yield (0, _link_project_executables.linkProjectExecutables)(projects, projectGraph); - /** - * At the end of the bootstrapping process we call all `kbn:bootstrap` scripts - * in the list of projects. We do this because some projects need to be - * transpiled before they can be used. Ideally we shouldn't do this unless we - * have to, as it will slow down the bootstrapping process. - */ - _log.log.write(_chalk2.default.bold('\nLinking executables completed, running `kbn:bootstrap` scripts\n')); - yield (0, _parallelize.parallelizeBatches)(batchedProjects, (() => { - var _ref = _asyncToGenerator(function* (pkg) { - if (pkg.hasScript('kbn:bootstrap')) { - yield pkg.runScriptStreaming('kbn:bootstrap'); - } - }); + _utils_log__WEBPACK_IMPORTED_MODULE_2__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold('\nLinking executables completed, running `kbn:bootstrap` scripts\n')); + await Object(_utils_parallelize__WEBPACK_IMPORTED_MODULE_3__["parallelizeBatches"])(batchedProjects, async pkg => { + if (pkg.hasScript('kbn:bootstrap')) { + await pkg.runScriptStreaming('kbn:bootstrap'); + } + }); + _utils_log__WEBPACK_IMPORTED_MODULE_2__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green.bold('\nBootstrapping completed!\n')); + } - return function (_x) { - return _ref.apply(this, arguments); - }; - })()); - _log.log.write(_chalk2.default.green.bold('\nBootstrapping completed!\n')); - })(); - } }; /***/ }), /* 19 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__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__(16); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(33); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.linkProjectExecutables = undefined; /** * Yarn does not link the executables from dependencies that are installed @@ -2608,130 +2607,122 @@ exports.linkProjectExecutables = undefined; * dependencies, and manually linking their executables if defined. The logic * for linking was mostly adapted from lerna: https://github.com/lerna/lerna/blob/1d7eb9eeff65d5a7de64dea73613b1bf6bfa8d57/src/PackageUtilities.js#L348 */ -let linkProjectExecutables = exports.linkProjectExecutables = (() => { - var _ref = _asyncToGenerator(function* (projectsByName, projectGraph) { - for (const [projectName, projectDeps] of projectGraph) { - const project = projectsByName.get(projectName); - const binsDir = (0, _path.resolve)(project.nodeModulesLocation, '.bin'); - for (const projectDep of projectDeps) { - const executables = projectDep.getExecutables(); - for (const name of Object.keys(executables)) { - const srcPath = executables[name]; - // existing logic from lerna -- ensure that the bin we are going to - // point to exists or ignore it - if (!(yield (0, _fs.isFile)(srcPath))) { - continue; - } - const dest = (0, _path.resolve)(binsDir, name); - // Get relative project path with normalized path separators. - const projectRelativePath = (0, _path.relative)(project.path, srcPath).split(_path.sep).join('/'); - _log.log.write(_chalk2.default`{dim [${project.name}]} ${name} -> {dim ${projectRelativePath}}`); - yield (0, _fs.mkdirp)((0, _path.dirname)(dest)); - yield (0, _fs.createSymlink)(srcPath, dest, 'exec'); - yield (0, _fs.chmod)(dest, '755'); - } - } - } - }); - - return function linkProjectExecutables(_x, _x2) { - return _ref.apply(this, arguments); - }; -})(); +async function linkProjectExecutables(projectsByName, projectGraph) { + for (const [projectName, projectDeps] of projectGraph) { + const project = projectsByName.get(projectName); + const binsDir = Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(project.nodeModulesLocation, '.bin'); -var _path = __webpack_require__(16); + for (const projectDep of projectDeps) { + const executables = projectDep.getExecutables(); -var _chalk = __webpack_require__(2); + for (const name of Object.keys(executables)) { + const srcPath = executables[name]; // existing logic from lerna -- ensure that the bin we are going to + // point to exists or ignore it -var _chalk2 = _interopRequireDefault(_chalk); - -var _fs = __webpack_require__(20); - -var _log = __webpack_require__(33); + if (!(await Object(_fs__WEBPACK_IMPORTED_MODULE_2__["isFile"])(srcPath))) { + continue; + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + const dest = Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(binsDir, name); // Get relative project path with normalized path separators. -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + const projectRelativePath = Object(path__WEBPACK_IMPORTED_MODULE_0__["relative"])(project.path, srcPath).split(path__WEBPACK_IMPORTED_MODULE_0__["sep"]).join('/'); + _log__WEBPACK_IMPORTED_MODULE_3__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_1___default.a`{dim [${project.name}]} ${name} -> {dim ${projectRelativePath}}`); + await Object(_fs__WEBPACK_IMPORTED_MODULE_2__["mkdirp"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["dirname"])(dest)); + await Object(_fs__WEBPACK_IMPORTED_MODULE_2__["createSymlink"])(srcPath, dest, 'exec'); + await Object(_fs__WEBPACK_IMPORTED_MODULE_2__["chmod"])(dest, '755'); + } + } + } +} /***/ }), /* 20 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unlink", function() { return unlink; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyDirectory", function() { return copyDirectory; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "chmod", function() { return chmod; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readFile", function() { return readFile; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mkdirp", function() { return mkdirp; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDirectory", function() { return isDirectory; }); +/* 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 import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(21); +/* harmony import */ var cmd_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cmd_shim__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var mkdirp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(31); +/* harmony import */ var mkdirp__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(mkdirp__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var ncp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32); +/* 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__(16); +/* 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__(29); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_5__); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.createSymlink = exports.isFile = exports.isDirectory = exports.mkdirp = exports.readFile = exports.chmod = exports.copyDirectory = exports.unlink = undefined; -let statTest = (() => { - var _ref = _asyncToGenerator(function* (path, block) { - try { - return block((yield stat(path))); - } catch (e) { - if (e.code === 'ENOENT') { - return false; - } - throw e; - } - }); - return function statTest(_x, _x2) { - return _ref.apply(this, arguments); - }; -})(); + + +const stat = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_1___default.a.stat); +const readFile = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_1___default.a.readFile); +const symlink = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_1___default.a.symlink); +const chmod = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_1___default.a.chmod); +const cmdShim = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(cmd_shim__WEBPACK_IMPORTED_MODULE_0___default.a); +const mkdirp = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(mkdirp__WEBPACK_IMPORTED_MODULE_2___default.a); +const unlink = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(fs__WEBPACK_IMPORTED_MODULE_1___default.a.unlink); +const copyDirectory = Object(util__WEBPACK_IMPORTED_MODULE_5__["promisify"])(ncp__WEBPACK_IMPORTED_MODULE_3__["ncp"]); + + +async function statTest(path, block) { + try { + return block((await stat(path))); + } catch (e) { + if (e.code === 'ENOENT') { + return false; + } + + throw e; + } +} /** * Test if a path points to a directory. * @param path */ -let isDirectory = exports.isDirectory = (() => { - var _ref2 = _asyncToGenerator(function* (path) { - return yield statTest(path, function (stats) { - return stats.isDirectory(); - }); - }); - - return function isDirectory(_x3) { - return _ref2.apply(this, arguments); - }; -})(); +async function isDirectory(path) { + return await statTest(path, stats => stats.isDirectory()); +} /** * Test if a path points to a regular file. * @param path */ - -let isFile = exports.isFile = (() => { - var _ref3 = _asyncToGenerator(function* (path) { - return yield statTest(path, function (stats) { - return stats.isFile(); - }); - }); - - return function isFile(_x4) { - return _ref3.apply(this, arguments); - }; -})(); +async function isFile(path) { + return await statTest(path, stats => stats.isFile()); +} /** * Create a symlink at dest that points to src. Adapted from * https://github.com/lerna/lerna/blob/2f1b87d9e2295f587e4ac74269f714271d8ed428/src/FileSystemUtilities.js#L103. @@ -2743,96 +2734,32 @@ let isFile = exports.isFile = (() => { * for executable files on windows. */ +async function createSymlink(src, dest, type) { + if (process.platform === 'win32') { + if (type === 'exec') { + await cmdShim(src, dest); + } else { + await forceCreate(src, dest, type); + } + } else { + const posixType = type === 'exec' ? 'file' : type; + const relativeSource = Object(path__WEBPACK_IMPORTED_MODULE_4__["relative"])(Object(path__WEBPACK_IMPORTED_MODULE_4__["dirname"])(dest), src); + await forceCreate(relativeSource, dest, posixType); + } +} -let createSymlink = exports.createSymlink = (() => { - var _ref4 = _asyncToGenerator(function* (src, dest, type) { - if (process.platform === 'win32') { - if (type === 'exec') { - yield cmdShim(src, dest); - } else { - yield forceCreate(src, dest, type); - } - } else { - const posixType = type === 'exec' ? 'file' : type; - const relativeSource = (0, _path.relative)((0, _path.dirname)(dest), src); - yield forceCreate(relativeSource, dest, posixType); - } - }); - - return function createSymlink(_x5, _x6, _x7) { - return _ref4.apply(this, arguments); - }; -})(); - -let forceCreate = (() => { - var _ref5 = _asyncToGenerator(function* (src, dest, type) { - try { - // If something exists at `dest` we need to remove it first. - yield unlink(dest); - } catch (error) { - if (error.code !== 'ENOENT') { - throw error; - } - } - yield symlink(src, dest, type); - }); - - return function forceCreate(_x8, _x9, _x10) { - return _ref5.apply(this, arguments); - }; -})(); - -var _cmdShim = __webpack_require__(21); - -var _cmdShim2 = _interopRequireDefault(_cmdShim); - -var _fs = __webpack_require__(23); - -var _fs2 = _interopRequireDefault(_fs); - -var _mkdirp = __webpack_require__(31); - -var _mkdirp2 = _interopRequireDefault(_mkdirp); - -var _ncp = __webpack_require__(32); - -var _path = __webpack_require__(16); - -var _util = __webpack_require__(29); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - +async function forceCreate(src, dest, type) { + try { + // If something exists at `dest` we need to remove it first. + await unlink(dest); + } catch (error) { + if (error.code !== 'ENOENT') { + throw error; + } + } -const stat = (0, _util.promisify)(_fs2.default.stat); -const readFile = (0, _util.promisify)(_fs2.default.readFile); -const symlink = (0, _util.promisify)(_fs2.default.symlink); -const chmod = (0, _util.promisify)(_fs2.default.chmod); -const cmdShim = (0, _util.promisify)(_cmdShim2.default); -const mkdirp = (0, _util.promisify)(_mkdirp2.default); -const unlink = exports.unlink = (0, _util.promisify)(_fs2.default.unlink); -const copyDirectory = exports.copyDirectory = (0, _util.promisify)(_ncp.ncp); -exports.chmod = chmod; -exports.readFile = readFile; -exports.mkdirp = mkdirp; + await symlink(src, dest, type); +} /***/ }), /* 21 */ @@ -4179,14 +4106,11 @@ function ncp (source, dest, options, callback) { /***/ }), /* 33 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; }); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -4205,7 +4129,7 @@ Object.defineProperty(exports, "__esModule", { * specific language governing permissions and limitations * under the License. */ -const log = exports.log = { +const log = { /** * Log something to the console. Ideally we would use a real logger in * kbn-pm, but that's a pretty big change for now. @@ -4215,19 +4139,94 @@ const log = exports.log = { // tslint:disable no-console console.log(...args); } + }; /***/ }), /* 34 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parallelizeBatches", function() { return parallelizeBatches; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parallelize", function() { return parallelize; }); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +async function parallelizeBatches(batches, fn) { + for (const batch of batches) { + // We need to make sure the entire batch has completed before we can move on + // to the next batch + await parallelize(batch, fn); + } +} +async function parallelize(items, fn, concurrency = 4) { + if (items.length === 0) { + return; + } + return new Promise((resolve, reject) => { + let activePromises = 0; + const values = items.slice(0); -Object.defineProperty(exports, "__esModule", { - value: true -}); + async function scheduleItem(item) { + activePromises++; + + try { + await fn(item); + activePromises--; + + if (values.length > 0) { + // We have more work to do, so we schedule the next promise + scheduleItem(values.shift()); + } else if (activePromises === 0) { + // We have no more values left, and all items have completed, so we've + // completed all the work. + resolve(); + } + } catch (error) { + reject(error); + } + } + + values.splice(0, concurrency).map(scheduleItem); + }); +} +/***/ }), +/* 35 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return getProjects; }); +/* 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__(36); +/* 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__(16); +/* 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__(29); +/* 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__(52); +/* harmony import */ var _project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53); +/* harmony import */ var _workspaces__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(131); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -4246,252 +4245,181 @@ Object.defineProperty(exports, "__esModule", { * specific language governing permissions and limitations * under the License. */ -let parallelizeBatches = exports.parallelizeBatches = (() => { - var _ref = _asyncToGenerator(function* (batches, fn) { - for (const batch of batches) { - // We need to make sure the entire batch has completed before we can move on - // to the next batch - yield parallelize(batch, fn); - } + + + + + + +const glob = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(glob__WEBPACK_IMPORTED_MODULE_0___default.a); +async function getProjects(rootPath, projectsPathsPatterns, { + include = [], + exclude = [] +} = {}) { + const projects = new Map(); + const workspaceProjectsPaths = await Object(_workspaces__WEBPACK_IMPORTED_MODULE_5__["workspacePackagePaths"])(rootPath); + + for (const pattern of projectsPathsPatterns) { + const pathsToProcess = await packagesFromGlobPattern({ + pattern, + rootPath }); - return function parallelizeBatches(_x, _x2) { - return _ref.apply(this, arguments); - }; -})(); + for (const filePath of pathsToProcess) { + const projectConfigPath = normalize(filePath); + const projectDir = path__WEBPACK_IMPORTED_MODULE_1___default.a.dirname(projectConfigPath); + const project = await _project__WEBPACK_IMPORTED_MODULE_4__["Project"].fromPath(projectDir); -let parallelize = exports.parallelize = (() => { - var _ref2 = _asyncToGenerator(function* (items, fn, concurrency = 4) { - if (items.length === 0) { - return; - } - return new Promise(function (resolve, reject) { - let scheduleItem = (() => { - var _ref3 = _asyncToGenerator(function* (item) { - activePromises++; - try { - yield fn(item); - activePromises--; - if (values.length > 0) { - // We have more work to do, so we schedule the next promise - scheduleItem(values.shift()); - } else if (activePromises === 0) { - // We have no more values left, and all items have completed, so we've - // completed all the work. - resolve(); - } - } catch (error) { - reject(error); - } - }); + if (workspaceProjectsPaths.indexOf(filePath) >= 0) { + project.isWorkspaceProject = true; + } - return function scheduleItem(_x5) { - return _ref3.apply(this, arguments); - }; - })(); + const excludeProject = exclude.includes(project.name) || include.length > 0 && !include.includes(project.name); - let activePromises = 0; - const values = items.slice(0); + if (excludeProject) { + continue; + } - values.splice(0, concurrency).map(scheduleItem); + if (projects.has(project.name)) { + throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`There are multiple projects with the same name [${project.name}]`, { + name: project.name, + paths: [project.path, projects.get(project.name).path] }); - }); + } - return function parallelize(_x3, _x4) { - return _ref2.apply(this, arguments); - }; -})(); + projects.set(project.name, project); + } + } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } + return projects; +} -/***/ }), -/* 35 */ -/***/ (function(module, exports, __webpack_require__) { +function packagesFromGlobPattern({ + pattern, + rootPath +}) { + const globOptions = { + cwd: rootPath, + // Should throw in case of unusual errors when reading the file system + strict: true, + // Always returns absolute paths for matched files + absolute: true, + // Do not match ** against multiple filenames + // (This is only specified because we currently don't have a need for it.) + noglobstar: true + }; + return glob(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(pattern, 'package.json'), globOptions); +} // https://github.com/isaacs/node-glob/blob/master/common.js#L104 +// glob always returns "\\" as "/" in windows, so everyone +// gets normalized because we can't have nice things. -"use strict"; +function normalize(dir) { + return path__WEBPACK_IMPORTED_MODULE_1___default.a.normalize(dir); +} + +function buildProjectGraph(projects) { + const projectGraph = new Map(); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getProjects = undefined; - -let getProjects = exports.getProjects = (() => { - var _ref = _asyncToGenerator(function* (rootPath, projectsPathsPatterns, { include = [], exclude = [] } = {}) { - const projects = new Map(); - const workspaceProjectsPaths = yield (0, _workspaces.workspacePackagePaths)(rootPath); - for (const pattern of projectsPathsPatterns) { - const pathsToProcess = yield packagesFromGlobPattern({ pattern, rootPath }); - for (const filePath of pathsToProcess) { - const projectConfigPath = normalize(filePath); - const projectDir = _path2.default.dirname(projectConfigPath); - const project = yield _project.Project.fromPath(projectDir); - if (workspaceProjectsPaths.indexOf(filePath) >= 0) { - project.isWorkspaceProject = true; - } - const excludeProject = exclude.includes(project.name) || include.length > 0 && !include.includes(project.name); - if (excludeProject) { - continue; - } - if (projects.has(project.name)) { - throw new _errors.CliError(`There are multiple projects with the same name [${project.name}]`, { - name: project.name, - paths: [project.path, projects.get(project.name).path] - }); - } - projects.set(project.name, project); - } - } - return projects; - }); + for (const project of projects.values()) { + const projectDeps = []; + const dependencies = project.allDependencies; - return function getProjects(_x, _x2) { - return _ref.apply(this, arguments); - }; -})(); + for (const depName of Object.keys(dependencies)) { + if (projects.has(depName)) { + const dep = projects.get(depName); + const dependentProjectIsInWorkspace = project.isWorkspaceProject || project.json.name === 'kibana'; + project.ensureValidProjectDependency(dep, dependentProjectIsInWorkspace); + projectDeps.push(dep); + } + } -exports.buildProjectGraph = buildProjectGraph; -exports.topologicallyBatchProjects = topologicallyBatchProjects; -exports.includeTransitiveProjects = includeTransitiveProjects; + projectGraph.set(project.name, projectDeps); + } -var _glob = __webpack_require__(36); + return projectGraph; +} +function topologicallyBatchProjects(projectsToBatch, projectGraph, { + batchByWorkspace = false +} = {}) { + // We're going to be chopping stuff out of this list, so copy it. + const projectsLeftToBatch = new Set(projectsToBatch.keys()); + const batches = []; -var _glob2 = _interopRequireDefault(_glob); + if (batchByWorkspace) { + const workspaceRootProject = Array.from(projectsToBatch.values()).find(p => p.isWorkspaceRoot); -var _path = __webpack_require__(16); + if (!workspaceRootProject) { + throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`There was no yarn workspace root found.`); + } // Push in the workspace root first. -var _path2 = _interopRequireDefault(_path); -var _util = __webpack_require__(29); + batches.push([workspaceRootProject]); + projectsLeftToBatch.delete(workspaceRootProject.name); // In the next batch, push in all workspace projects. -var _errors = __webpack_require__(52); + const workspaceBatch = []; -var _project = __webpack_require__(53); + for (const projectName of projectsLeftToBatch) { + const project = projectsToBatch.get(projectName); -var _workspaces = __webpack_require__(134); + if (project.isWorkspaceProject) { + workspaceBatch.push(project); + projectsLeftToBatch.delete(projectName); + } + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + batches.push(workspaceBatch); + } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + while (projectsLeftToBatch.size > 0) { + // Get all projects that have no remaining dependencies within the repo + // that haven't yet been picked. + const batch = []; + for (const projectName of projectsLeftToBatch) { + const projectDeps = projectGraph.get(projectName); + const needsDependenciesBatched = projectDeps.some(dep => projectsLeftToBatch.has(dep.name)); -const glob = (0, _util.promisify)(_glob2.default); + if (!needsDependenciesBatched) { + batch.push(projectsToBatch.get(projectName)); + } + } // If we weren't able to find a project with no remaining dependencies, + // then we've encountered a cycle in the dependency graph. -function packagesFromGlobPattern({ pattern, rootPath }) { - const globOptions = { - cwd: rootPath, - // Should throw in case of unusual errors when reading the file system - strict: true, - // Always returns absolute paths for matched files - absolute: true, - // Do not match ** against multiple filenames - // (This is only specified because we currently don't have a need for it.) - noglobstar: true - }; - return glob(_path2.default.join(pattern, 'package.json'), globOptions); -} -// https://github.com/isaacs/node-glob/blob/master/common.js#L104 -// glob always returns "\\" as "/" in windows, so everyone -// gets normalized because we can't have nice things. -function normalize(dir) { - return _path2.default.normalize(dir); -} -function buildProjectGraph(projects) { - const projectGraph = new Map(); - for (const project of projects.values()) { - const projectDeps = []; - const dependencies = project.allDependencies; - for (const depName of Object.keys(dependencies)) { - if (projects.has(depName)) { - const dep = projects.get(depName); - const dependentProjectIsInWorkspace = project.isWorkspaceProject || project.json.name === 'kibana'; - project.ensureValidProjectDependency(dep, dependentProjectIsInWorkspace); - projectDeps.push(dep); - } - } - projectGraph.set(project.name, projectDeps); - } - return projectGraph; -} -function topologicallyBatchProjects(projectsToBatch, projectGraph, { batchByWorkspace = false } = {}) { - // We're going to be chopping stuff out of this list, so copy it. - const projectsLeftToBatch = new Set(projectsToBatch.keys()); - const batches = []; - if (batchByWorkspace) { - const workspaceRootProject = Array.from(projectsToBatch.values()).find(p => p.isWorkspaceRoot); - if (!workspaceRootProject) { - throw new _errors.CliError(`There was no yarn workspace root found.`); - } - // Push in the workspace root first. - batches.push([workspaceRootProject]); - projectsLeftToBatch.delete(workspaceRootProject.name); - // In the next batch, push in all workspace projects. - const workspaceBatch = []; - for (const projectName of projectsLeftToBatch) { - const project = projectsToBatch.get(projectName); - if (project.isWorkspaceProject) { - workspaceBatch.push(project); - projectsLeftToBatch.delete(projectName); - } - } - batches.push(workspaceBatch); - } - while (projectsLeftToBatch.size > 0) { - // Get all projects that have no remaining dependencies within the repo - // that haven't yet been picked. - const batch = []; - for (const projectName of projectsLeftToBatch) { - const projectDeps = projectGraph.get(projectName); - const needsDependenciesBatched = projectDeps.some(dep => projectsLeftToBatch.has(dep.name)); - if (!needsDependenciesBatched) { - batch.push(projectsToBatch.get(projectName)); - } - } - // If we weren't able to find a project with no remaining dependencies, - // then we've encountered a cycle in the dependency graph. - const hasCycles = batch.length === 0; - if (hasCycles) { - const cycleProjectNames = [...projectsLeftToBatch]; - const message = 'Encountered a cycle in the dependency graph. Projects in cycle are:\n' + cycleProjectNames.join(', '); - throw new _errors.CliError(message); - } - batches.push(batch); - batch.forEach(project => projectsLeftToBatch.delete(project.name)); - } - return batches; -} -function includeTransitiveProjects(subsetOfProjects, allProjects, { onlyProductionDependencies = false } = {}) { - const dependentProjects = new Map(); - // the current list of packages we are expanding using breadth-first-search - const toProcess = [...subsetOfProjects]; - while (toProcess.length > 0) { - const project = toProcess.shift(); - const dependencies = onlyProductionDependencies ? project.productionDependencies : project.allDependencies; - Object.keys(dependencies).forEach(dep => { - if (allProjects.has(dep)) { - toProcess.push(allProjects.get(dep)); - } - }); - dependentProjects.set(project.name, project); + + const hasCycles = batch.length === 0; + + if (hasCycles) { + const cycleProjectNames = [...projectsLeftToBatch]; + const message = 'Encountered a cycle in the dependency graph. Projects in cycle are:\n' + cycleProjectNames.join(', '); + throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](message); } - return dependentProjects; + + batches.push(batch); + batch.forEach(project => projectsLeftToBatch.delete(project.name)); + } + + return batches; +} +function includeTransitiveProjects(subsetOfProjects, allProjects, { + onlyProductionDependencies = false +} = {}) { + const dependentProjects = new Map(); // the current list of packages we are expanding using breadth-first-search + + const toProcess = [...subsetOfProjects]; + + while (toProcess.length > 0) { + const project = toProcess.shift(); + const dependencies = onlyProductionDependencies ? project.productionDependencies : project.allDependencies; + Object.keys(dependencies).forEach(dep => { + if (allProjects.has(dep)) { + toProcess.push(allProjects.get(dep)); + } + }); + dependentProjects.set(project.name, project); + } + + return dependentProjects; } /***/ }), @@ -7854,14 +7782,11 @@ function onceStrict (fn) { /***/ }), /* 52 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CliError", function() { return CliError; }); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -7881,208 +7806,227 @@ Object.defineProperty(exports, "__esModule", { * under the License. */ class CliError extends Error { - constructor(message, meta = {}) { - super(message); - this.meta = meta; - } + constructor(message, meta = {}) { + super(message); + this.meta = meta; + } + } -exports.CliError = CliError; /***/ }), /* 53 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (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 chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* 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__(16); +/* 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__(29); +/* 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__(52); +/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(33); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(54); +/* harmony import */ var _scripts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(92); +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +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; } +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Project = undefined; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -var _chalk = __webpack_require__(2); -var _chalk2 = _interopRequireDefault(_chalk); -var _path = __webpack_require__(16); -var _util = __webpack_require__(29); +class Project { + static async fromPath(path) { + const pkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["readPackageJson"])(path); + return new Project(pkgJson, path); + } -var _errors = __webpack_require__(52); + constructor(packageJson, projectPath) { + _defineProperty(this, "json", void 0); -var _log = __webpack_require__(33); + _defineProperty(this, "packageJsonLocation", void 0); -var _package_json = __webpack_require__(54); + _defineProperty(this, "nodeModulesLocation", void 0); -var _scripts = __webpack_require__(95); + _defineProperty(this, "targetLocation", void 0); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + _defineProperty(this, "path", void 0); -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } + _defineProperty(this, "allDependencies", void 0); -class Project { - constructor(packageJson, projectPath) { - this.isWorkspaceRoot = false; - this.isWorkspaceProject = false; - this.json = Object.freeze(packageJson); - this.path = projectPath; - this.packageJsonLocation = (0, _path.resolve)(this.path, 'package.json'); - this.nodeModulesLocation = (0, _path.resolve)(this.path, 'node_modules'); - this.targetLocation = (0, _path.resolve)(this.path, 'target'); - this.productionDependencies = this.json.dependencies || {}; - this.devDependencies = this.json.devDependencies || {}; - this.allDependencies = _extends({}, this.devDependencies, this.productionDependencies); - this.isWorkspaceRoot = this.json.hasOwnProperty('workspaces'); - this.scripts = this.json.scripts || {}; - } - static fromPath(path) { - return _asyncToGenerator(function* () { - const pkgJson = yield (0, _package_json.readPackageJson)(path); - return new Project(pkgJson, path); - })(); - } - get name() { - return this.json.name; - } - ensureValidProjectDependency(project, dependentProjectIsInWorkspace) { - const versionInPackageJson = this.allDependencies[project.name]; - let expectedVersionInPackageJson; - if (dependentProjectIsInWorkspace) { - expectedVersionInPackageJson = project.json.version; - } else { - const relativePathToProject = normalizePath((0, _path.relative)(this.path, project.path)); - expectedVersionInPackageJson = `link:${relativePathToProject}`; - } - // No issues! - if (versionInPackageJson === expectedVersionInPackageJson) { - return; - } - let problemMsg; - if ((0, _package_json.isLinkDependency)(versionInPackageJson) && dependentProjectIsInWorkspace) { - problemMsg = `but should be using a workspace`; - } else if ((0, _package_json.isLinkDependency)(versionInPackageJson)) { - problemMsg = `using 'link:', but the path is wrong`; - } else { - problemMsg = `but it's not using the local package`; - } - throw new _errors.CliError(`[${this.name}] depends on [${project.name}] ${problemMsg}. Update its package.json to the expected value below.`, { - actual: `"${project.name}": "${versionInPackageJson}"`, - expected: `"${project.name}": "${expectedVersionInPackageJson}"`, - package: `${this.name} (${this.packageJsonLocation})` - }); - } - getBuildConfig() { - return this.json.kibana && this.json.kibana.build || {}; - } - /** - * Returns the directory that should be copied into the Kibana build artifact. - * This config can be specified to only include the project's build artifacts - * instead of everything located in the project directory. - */ - getIntermediateBuildDirectory() { - return (0, _path.resolve)(this.path, this.getBuildConfig().intermediateBuildDirectory || '.'); - } - getCleanConfig() { - return this.json.kibana && this.json.kibana.clean || {}; - } - hasScript(name) { - return name in this.scripts; - } - getExecutables() { - const raw = this.json.bin; - if (!raw) { - return {}; - } - if (typeof raw === 'string') { - return { - [this.name]: (0, _path.resolve)(this.path, raw) - }; - } - if (typeof raw === 'object') { - const binsConfig = {}; - for (const binName of Object.keys(raw)) { - binsConfig[binName] = (0, _path.resolve)(this.path, raw[binName]); - } - return binsConfig; - } - throw new _errors.CliError(`[${this.name}] has an invalid "bin" field in its package.json, ` + `expected an object or a string`, { - binConfig: (0, _util.inspect)(raw), - package: `${this.name} (${this.packageJsonLocation})` - }); - } - runScript(scriptName, args = []) { - var _this = this; + _defineProperty(this, "productionDependencies", void 0); + + _defineProperty(this, "devDependencies", void 0); + + _defineProperty(this, "scripts", void 0); + + _defineProperty(this, "isWorkspaceRoot", false); + + _defineProperty(this, "isWorkspaceProject", false); - return _asyncToGenerator(function* () { - _log.log.write(_chalk2.default.bold(`\n\nRunning script [${_chalk2.default.green(scriptName)}] in [${_chalk2.default.green(_this.name)}]:\n`)); - return (0, _scripts.runScriptInPackage)(scriptName, args, _this); - })(); + this.json = Object.freeze(packageJson); + this.path = projectPath; + this.packageJsonLocation = Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(this.path, 'package.json'); + this.nodeModulesLocation = Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(this.path, 'node_modules'); + this.targetLocation = Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(this.path, 'target'); + this.productionDependencies = this.json.dependencies || {}; + this.devDependencies = this.json.devDependencies || {}; + this.allDependencies = _objectSpread({}, this.devDependencies, this.productionDependencies); + this.isWorkspaceRoot = this.json.hasOwnProperty('workspaces'); + this.scripts = this.json.scripts || {}; + } + + get name() { + return this.json.name; + } + + ensureValidProjectDependency(project, dependentProjectIsInWorkspace) { + const versionInPackageJson = this.allDependencies[project.name]; + let expectedVersionInPackageJson; + + if (dependentProjectIsInWorkspace) { + expectedVersionInPackageJson = project.json.version; + } else { + const relativePathToProject = normalizePath(Object(path__WEBPACK_IMPORTED_MODULE_1__["relative"])(this.path, project.path)); + expectedVersionInPackageJson = `link:${relativePathToProject}`; + } // No issues! + + + if (versionInPackageJson === expectedVersionInPackageJson) { + return; } - runScriptStreaming(scriptName, args = []) { - return (0, _scripts.runScriptInPackageStreaming)(scriptName, args, this); + + let problemMsg; + + if (Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["isLinkDependency"])(versionInPackageJson) && dependentProjectIsInWorkspace) { + problemMsg = `but should be using a workspace`; + } else if (Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["isLinkDependency"])(versionInPackageJson)) { + problemMsg = `using 'link:', but the path is wrong`; + } else { + problemMsg = `but it's not using the local package`; } - hasDependencies() { - return Object.keys(this.allDependencies).length > 0; + + throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] depends on [${project.name}] ${problemMsg}. Update its package.json to the expected value below.`, { + actual: `"${project.name}": "${versionInPackageJson}"`, + expected: `"${project.name}": "${expectedVersionInPackageJson}"`, + package: `${this.name} (${this.packageJsonLocation})` + }); + } + + getBuildConfig() { + return this.json.kibana && this.json.kibana.build || {}; + } + /** + * Returns the directory that should be copied into the Kibana build artifact. + * This config can be specified to only include the project's build artifacts + * instead of everything located in the project directory. + */ + + + getIntermediateBuildDirectory() { + return Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(this.path, this.getBuildConfig().intermediateBuildDirectory || '.'); + } + + getCleanConfig() { + return this.json.kibana && this.json.kibana.clean || {}; + } + + hasScript(name) { + return name in this.scripts; + } + + getExecutables() { + const raw = this.json.bin; + + if (!raw) { + return {}; } - installDependencies({ extraArgs }) { - var _this2 = this; - return _asyncToGenerator(function* () { - _log.log.write(_chalk2.default.bold(`\n\nInstalling dependencies in [${_chalk2.default.green(_this2.name)}]:\n`)); - return (0, _scripts.installInDir)(_this2.path, extraArgs); - })(); + if (typeof raw === 'string') { + return { + [this.name]: Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(this.path, raw) + }; } -} -exports.Project = Project; // We normalize all path separators to `/` in generated files -function normalizePath(path) { - return path.replace(/[\\\/]+/g, '/'); -} + if (typeof raw === 'object') { + const binsConfig = {}; -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { + for (const binName of Object.keys(raw)) { + binsConfig[binName] = Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(this.path, raw[binName]); + } -"use strict"; + return binsConfig; + } + throw new _errors__WEBPACK_IMPORTED_MODULE_3__["CliError"](`[${this.name}] has an invalid "bin" field in its package.json, ` + `expected an object or a string`, { + binConfig: Object(util__WEBPACK_IMPORTED_MODULE_2__["inspect"])(raw), + package: `${this.name} (${this.packageJsonLocation})` + }); + } -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isLinkDependency = undefined; -exports.readPackageJson = readPackageJson; -exports.writePackageJson = writePackageJson; + async runScript(scriptName, args = []) { + _log__WEBPACK_IMPORTED_MODULE_4__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold(`\n\nRunning script [${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(scriptName)}] in [${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(this.name)}]:\n`)); + return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["runScriptInPackage"])(scriptName, args, this); + } -var _readPkg = __webpack_require__(55); + runScriptStreaming(scriptName, args = []) { + return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["runScriptInPackageStreaming"])(scriptName, args, this); + } -var _readPkg2 = _interopRequireDefault(_readPkg); + hasDependencies() { + return Object.keys(this.allDependencies).length > 0; + } -var _writePkg = __webpack_require__(83); + async installDependencies({ + extraArgs + }) { + _log__WEBPACK_IMPORTED_MODULE_4__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold(`\n\nInstalling dependencies in [${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(this.name)}]:\n`)); + return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__["installInDir"])(this.path, extraArgs); + } -var _writePkg2 = _interopRequireDefault(_writePkg); +} // We normalize all path separators to `/` in generated files -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function normalizePath(path) { + return path.replace(/[\\\/]+/g, '/'); +} +/***/ }), +/* 54 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "readPackageJson", function() { return readPackageJson; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "writePackageJson", function() { return writePackageJson; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLinkDependency", function() { return isLinkDependency; }); +/* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55); +/* 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__(82); +/* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(write_pkg__WEBPACK_IMPORTED_MODULE_1__); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -8101,13 +8045,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * specific language governing permissions and limitations * under the License. */ + + function readPackageJson(dir) { - return (0, _readPkg2.default)(dir, { normalize: false }); + return read_pkg__WEBPACK_IMPORTED_MODULE_0___default()(dir, { + normalize: false + }); } function writePackageJson(path, json) { - return (0, _writePkg2.default)(path, json); + return write_pkg__WEBPACK_IMPORTED_MODULE_1___default()(path, json); } -const isLinkDependency = exports.isLinkDependency = depVersion => depVersion.startsWith('link:'); +const isLinkDependency = depVersion => depVersion.startsWith('link:'); /***/ }), /* 55 */ @@ -8137,7 +8085,7 @@ module.exports = (fp, opts) => { }) .then(x => { if (opts.normalize !== false) { - __webpack_require__(65)(x); + __webpack_require__(64)(x); } return x; @@ -8156,7 +8104,7 @@ module.exports.sync = (fp, opts) => { const x = loadJsonFile.sync(fp); if (opts.normalize !== false) { - __webpack_require__(65)(x); + __webpack_require__(64)(x); } return x; @@ -8536,7 +8484,7 @@ module.exports = (obj, opts) => { "use strict"; const fs = __webpack_require__(23); -const pify = __webpack_require__(64); +const pify = __webpack_require__(62); function type(fn, fn2, fp) { if (typeof fp !== 'string') { @@ -8582,103 +8530,12 @@ exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); /* 64 */ /***/ (function(module, exports, __webpack_require__) { -"use strict"; - - -const processFn = (fn, opts) => function () { - const P = opts.promiseModule; - const args = new Array(arguments.length); - - for (let i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P((resolve, reject) => { - if (opts.errorFirst) { - args.push(function (err, result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - if (err) { - results.unshift(err); - reject(results); - } else { - resolve(results); - } - } else if (err) { - reject(err); - } else { - resolve(result); - } - }); - } else { - args.push(function (result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 0; i < arguments.length; i++) { - results[i] = arguments[i]; - } - - resolve(results); - } else { - resolve(result); - } - }); - } - - fn.apply(this, args); - }); -}; - -module.exports = (obj, opts) => { - opts = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, opts); - - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - let ret; - if (typeof obj === 'function') { - ret = function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, opts).apply(this, arguments); - }; - } else { - ret = Object.create(Object.getPrototypeOf(obj)); - } - - for (const key in obj) { // eslint-disable-line guard-for-in - const x = obj[key]; - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x; - } - - return ret; -}; - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - module.exports = normalize -var fixer = __webpack_require__(66) +var fixer = __webpack_require__(65) normalize.fixer = fixer -var makeWarning = __webpack_require__(81) +var makeWarning = __webpack_require__(80) var fieldsToFix = ['name','version','description','repository','modules','scripts' ,'files','bin','man','bugs','keywords','readme','homepage','license'] @@ -8715,17 +8572,17 @@ function ucFirst (string) { /***/ }), -/* 66 */ +/* 65 */ /***/ (function(module, exports, __webpack_require__) { -var semver = __webpack_require__(67) -var validateLicense = __webpack_require__(68); -var hostedGitInfo = __webpack_require__(73) -var isBuiltinModule = __webpack_require__(77) +var semver = __webpack_require__(66) +var validateLicense = __webpack_require__(67); +var hostedGitInfo = __webpack_require__(72) +var isBuiltinModule = __webpack_require__(76) var depTypes = ["dependencies","devDependencies","optionalDependencies"] -var extractDescription = __webpack_require__(79) -var url = __webpack_require__(74) -var typos = __webpack_require__(80) +var extractDescription = __webpack_require__(78) +var url = __webpack_require__(73) +var typos = __webpack_require__(79) var fixer = module.exports = { // default warning function @@ -9138,7 +8995,7 @@ function bugsTypos(bugs, warn) { /***/ }), -/* 67 */ +/* 66 */ /***/ (function(module, exports) { exports = module.exports = SemVer; @@ -10440,11 +10297,11 @@ function intersects(r1, r2, loose) { /***/ }), -/* 68 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { -var parse = __webpack_require__(69); -var correct = __webpack_require__(71); +var parse = __webpack_require__(68); +var correct = __webpack_require__(70); var genericWarning = ( 'license should be ' + @@ -10530,10 +10387,10 @@ module.exports = function(argument) { /***/ }), -/* 69 */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { -var parser = __webpack_require__(70).parser +var parser = __webpack_require__(69).parser module.exports = function (argument) { return parser.parse(argument) @@ -10541,7 +10398,7 @@ module.exports = function (argument) { /***/ }), -/* 70 */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {/* parser generated by jison 0.4.17 */ @@ -11905,10 +11762,10 @@ if ( true && __webpack_require__.c[__webpack_require__.s] === module) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)(module))) /***/ }), -/* 71 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { -var licenseIDs = __webpack_require__(72); +var licenseIDs = __webpack_require__(71); function valid(string) { return licenseIDs.indexOf(string) > -1; @@ -12148,20 +12005,20 @@ module.exports = function(identifier) { /***/ }), -/* 72 */ +/* 71 */ /***/ (function(module) { module.exports = ["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"]; /***/ }), -/* 73 */ +/* 72 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var url = __webpack_require__(74) -var gitHosts = __webpack_require__(75) -var GitHost = module.exports = __webpack_require__(76) +var url = __webpack_require__(73) +var gitHosts = __webpack_require__(74) +var GitHost = module.exports = __webpack_require__(75) var protocolToRepresentationMap = { 'git+ssh': 'sshurl', @@ -12282,13 +12139,13 @@ function parseGitUrl (giturl) { /***/ }), -/* 74 */ +/* 73 */ /***/ (function(module, exports) { module.exports = require("url"); /***/ }), -/* 75 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -12363,12 +12220,12 @@ Object.keys(gitHosts).forEach(function (name) { /***/ }), -/* 76 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var gitHosts = __webpack_require__(75) +var gitHosts = __webpack_require__(74) var extend = Object.assign || __webpack_require__(29)._extend var GitHost = module.exports = function (type, user, auth, project, committish, defaultRepresentation, opts) { @@ -12484,12 +12341,12 @@ GitHost.prototype.toString = function (opts) { /***/ }), -/* 77 */ +/* 76 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var builtinModules = __webpack_require__(78); +var builtinModules = __webpack_require__(77); module.exports = function (str) { if (typeof str !== 'string') { @@ -12501,7 +12358,7 @@ module.exports = function (str) { /***/ }), -/* 78 */ +/* 77 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -12518,7 +12375,7 @@ module.exports = Object.keys(process.binding('natives')).filter(function (el) { /***/ }), -/* 79 */ +/* 78 */ /***/ (function(module, exports) { module.exports = extractDescription @@ -12538,17 +12395,17 @@ function extractDescription (d) { /***/ }), -/* 80 */ +/* 79 */ /***/ (function(module) { module.exports = {"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"}}; /***/ }), -/* 81 */ +/* 80 */ /***/ (function(module, exports, __webpack_require__) { var util = __webpack_require__(29) -var messages = __webpack_require__(82) +var messages = __webpack_require__(81) module.exports = function() { var args = Array.prototype.slice.call(arguments, 0) @@ -12573,20 +12430,20 @@ function makeTypoWarning (providedName, probableName, field) { /***/ }), -/* 82 */ +/* 81 */ /***/ (function(module) { module.exports = {"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."}; /***/ }), -/* 83 */ +/* 82 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const writeJsonFile = __webpack_require__(84); -const sortKeys = __webpack_require__(89); +const writeJsonFile = __webpack_require__(83); +const sortKeys = __webpack_require__(88); const opts = {detectIndent: true}; @@ -12639,18 +12496,18 @@ module.exports.sync = (fp, data) => { /***/ }), -/* 84 */ +/* 83 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); const fs = __webpack_require__(22); -const writeFileAtomic = __webpack_require__(85); -const sortKeys = __webpack_require__(89); -const makeDir = __webpack_require__(91); -const pify = __webpack_require__(93); -const detectIndent = __webpack_require__(94); +const writeFileAtomic = __webpack_require__(84); +const sortKeys = __webpack_require__(88); +const makeDir = __webpack_require__(90); +const pify = __webpack_require__(62); +const detectIndent = __webpack_require__(91); const init = (fn, fp, data, opts) => { if (!fp) { @@ -12719,7 +12576,7 @@ module.exports.sync = (fp, data, opts) => { /***/ }), -/* 85 */ +/* 84 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -12730,8 +12587,8 @@ module.exports._getTmpname = getTmpname // for testing module.exports._cleanupOnExit = cleanupOnExit var fs = __webpack_require__(22) -var MurmurHash3 = __webpack_require__(86) -var onExit = __webpack_require__(87) +var MurmurHash3 = __webpack_require__(85) +var onExit = __webpack_require__(86) var path = __webpack_require__(16) var activeFiles = {} @@ -12925,7 +12782,7 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 86 */ +/* 85 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -13067,14 +12924,14 @@ function writeFileSync (filename, data, options) { /***/ }), -/* 87 */ +/* 86 */ /***/ (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__(30) -var signals = __webpack_require__(88) +var signals = __webpack_require__(87) var EE = __webpack_require__(45) /* istanbul ignore if */ @@ -13230,7 +13087,7 @@ function processEmit (ev, arg) { /***/ }), -/* 88 */ +/* 87 */ /***/ (function(module, exports) { // This is not the set of all possible signals. @@ -13289,12 +13146,12 @@ if (process.platform === 'linux') { /***/ }), -/* 89 */ +/* 88 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const isPlainObj = __webpack_require__(90); +const isPlainObj = __webpack_require__(89); module.exports = (obj, opts) => { if (!isPlainObj(obj)) { @@ -13351,7 +13208,7 @@ module.exports = (obj, opts) => { /***/ }), -/* 90 */ +/* 89 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13365,14 +13222,14 @@ module.exports = function (x) { /***/ }), -/* 91 */ +/* 90 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(23); const path = __webpack_require__(16); -const pify = __webpack_require__(92); +const pify = __webpack_require__(62); const defaults = { mode: 0o777 & (~process.umask()), @@ -13457,189 +13314,7 @@ module.exports.sync = (input, opts) => { /***/ }), -/* 92 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const processFn = (fn, opts) => function () { - const P = opts.promiseModule; - const args = new Array(arguments.length); - - for (let i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P((resolve, reject) => { - if (opts.errorFirst) { - args.push(function (err, result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - if (err) { - results.unshift(err); - reject(results); - } else { - resolve(results); - } - } else if (err) { - reject(err); - } else { - resolve(result); - } - }); - } else { - args.push(function (result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 0; i < arguments.length; i++) { - results[i] = arguments[i]; - } - - resolve(results); - } else { - resolve(result); - } - }); - } - - fn.apply(this, args); - }); -}; - -module.exports = (obj, opts) => { - opts = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, opts); - - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - let ret; - if (typeof obj === 'function') { - ret = function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, opts).apply(this, arguments); - }; - } else { - ret = Object.create(Object.getPrototypeOf(obj)); - } - - for (const key in obj) { // eslint-disable-line guard-for-in - const x = obj[key]; - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x; - } - - return ret; -}; - - -/***/ }), -/* 93 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const processFn = (fn, opts) => function () { - const P = opts.promiseModule; - const args = new Array(arguments.length); - - for (let i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P((resolve, reject) => { - if (opts.errorFirst) { - args.push(function (err, result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - if (err) { - results.unshift(err); - reject(results); - } else { - resolve(results); - } - } else if (err) { - reject(err); - } else { - resolve(result); - } - }); - } else { - args.push(function (result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 0; i < arguments.length; i++) { - results[i] = arguments[i]; - } - - resolve(results); - } else { - resolve(result); - } - }); - } - - fn.apply(this, args); - }); -}; - -module.exports = (obj, opts) => { - opts = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, opts); - - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - let ret; - if (typeof obj === 'function') { - ret = function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, opts).apply(this, arguments); - }; - } else { - ret = Object.create(Object.getPrototypeOf(obj)); - } - - for (const key in obj) { // eslint-disable-line guard-for-in - const x = obj[key]; - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x; - } - - return ret; -}; - - -/***/ }), -/* 94 */ +/* 91 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13768,185 +13443,161 @@ module.exports = str => { /***/ }), -/* 95 */ -/***/ (function(module, exports, __webpack_require__) { +/* 92 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__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__(93); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.runScriptInPackage = exports.installInDir = undefined; - /** * Install all dependencies in the given directory */ -let installInDir = exports.installInDir = (() => { - var _ref = _asyncToGenerator(function* (directory, extraArgs = []) { - const options = ['install', '--non-interactive', ...extraArgs]; - // We pass the mutex flag to ensure only one instance of yarn runs at any - // given time (e.g. to avoid conflicts). - yield (0, _child_process.spawn)('yarn', options, { - cwd: directory - }); - }); +async function installInDir(directory, extraArgs = []) { + const options = ['install', '--non-interactive', ...extraArgs]; // We pass the mutex flag to ensure only one instance of yarn runs at any + // given time (e.g. to avoid conflicts). - return function installInDir(_x) { - return _ref.apply(this, arguments); - }; -})(); + await Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["spawn"])('yarn', options, { + cwd: directory + }); +} /** * Run script in the given directory */ - -let runScriptInPackage = exports.runScriptInPackage = (() => { - var _ref2 = _asyncToGenerator(function* (script, args, pkg) { - const execOpts = { - cwd: pkg.path - }; - yield (0, _child_process.spawn)('yarn', ['run', script, ...args], execOpts); - }); - - return function runScriptInPackage(_x2, _x3, _x4) { - return _ref2.apply(this, arguments); - }; -})(); +async function runScriptInPackage(script, args, pkg) { + const execOpts = { + cwd: pkg.path + }; + await Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["spawn"])('yarn', ['run', script, ...args], execOpts); +} /** * Run script in the given directory */ - -exports.runScriptInPackageStreaming = runScriptInPackageStreaming; - -var _child_process = __webpack_require__(96); - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - function runScriptInPackageStreaming(script, args, pkg) { - const execOpts = { - cwd: pkg.path - }; - return (0, _child_process.spawnStreaming)('yarn', ['run', script, ...args], execOpts, { - prefix: pkg.name - }); + const execOpts = { + cwd: pkg.path + }; + return Object(_child_process__WEBPACK_IMPORTED_MODULE_0__["spawnStreaming"])('yarn', ['run', script, ...args], execOpts, { + prefix: pkg.name + }); } /***/ }), -/* 96 */ -/***/ (function(module, exports, __webpack_require__) { +/* 93 */ +/***/ (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 chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(94); +/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(execa__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var log_symbols__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(122); +/* harmony import */ var log_symbols__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(log_symbols__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(123); +/* harmony import */ var strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(strong_log_transformer__WEBPACK_IMPORTED_MODULE_3__); +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +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; } +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -exports.spawn = spawn; -exports.spawnStreaming = spawnStreaming; - -var _chalk = __webpack_require__(2); - -var _chalk2 = _interopRequireDefault(_chalk); - -var _execa = __webpack_require__(97); - -var _execa2 = _interopRequireDefault(_execa); - -var _logSymbols = __webpack_require__(125); - -var _logSymbols2 = _interopRequireDefault(_logSymbols); -var _strongLogTransformer = __webpack_require__(126); -var _strongLogTransformer2 = _interopRequireDefault(_strongLogTransformer); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function generateColors() { - const colorWheel = [_chalk2.default.cyan, _chalk2.default.magenta, _chalk2.default.blue, _chalk2.default.yellow, _chalk2.default.green]; - const count = colorWheel.length; - let children = 0; - return () => colorWheel[children++ % count]; + const colorWheel = [chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan, chalk__WEBPACK_IMPORTED_MODULE_0___default.a.magenta, chalk__WEBPACK_IMPORTED_MODULE_0___default.a.blue, chalk__WEBPACK_IMPORTED_MODULE_0___default.a.yellow, chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green]; + const count = colorWheel.length; + let children = 0; + return () => colorWheel[children++ % count]; } + function spawn(command, args, opts) { - return (0, _execa2.default)(command, args, _extends({}, opts, { - stdio: 'inherit' - })); + return execa__WEBPACK_IMPORTED_MODULE_1___default()(command, args, _objectSpread({}, opts, { + stdio: 'inherit' + })); } const nextColor = generateColors(); -function spawnStreaming(command, args, opts, { prefix }) { - const spawned = (0, _execa2.default)(command, args, _extends({}, opts, { - stdio: ['ignore', 'pipe', 'pipe'] - })); - const color = nextColor(); - const prefixedStdout = (0, _strongLogTransformer2.default)({ tag: `${color.bold(prefix)}:` }); - const prefixedStderr = (0, _strongLogTransformer2.default)({ - mergeMultiline: true, - tag: `${_logSymbols2.default.error} ${color.bold(prefix)}:` - }); - spawned.stdout.pipe(prefixedStdout).pipe(process.stdout); - spawned.stderr.pipe(prefixedStderr).pipe(process.stderr); - return spawned; +function spawnStreaming(command, args, opts, { + prefix +}) { + const spawned = execa__WEBPACK_IMPORTED_MODULE_1___default()(command, args, _objectSpread({}, opts, { + stdio: ['ignore', 'pipe', 'pipe'] + })); + const color = nextColor(); + const prefixedStdout = strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default()({ + tag: `${color.bold(prefix)}:` + }); + const prefixedStderr = strong_log_transformer__WEBPACK_IMPORTED_MODULE_3___default()({ + mergeMultiline: true, + tag: `${log_symbols__WEBPACK_IMPORTED_MODULE_2___default.a.error} ${color.bold(prefix)}:` + }); + spawned.stdout.pipe(prefixedStdout).pipe(process.stdout); + spawned.stderr.pipe(prefixedStderr).pipe(process.stderr); + return spawned; } /***/ }), -/* 97 */ +/* 94 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const childProcess = __webpack_require__(98); -const crossSpawn = __webpack_require__(99); -const stripEof = __webpack_require__(114); -const npmRunPath = __webpack_require__(115); -const isStream = __webpack_require__(117); -const _getStream = __webpack_require__(118); -const pFinally = __webpack_require__(122); -const onExit = __webpack_require__(87); -const errname = __webpack_require__(123); -const stdio = __webpack_require__(124); +const childProcess = __webpack_require__(95); +const crossSpawn = __webpack_require__(96); +const stripEof = __webpack_require__(111); +const npmRunPath = __webpack_require__(112); +const isStream = __webpack_require__(114); +const _getStream = __webpack_require__(115); +const pFinally = __webpack_require__(119); +const onExit = __webpack_require__(86); +const errname = __webpack_require__(120); +const stdio = __webpack_require__(121); const TEN_MEGABYTES = 1000 * 1000 * 10; @@ -14299,21 +13950,21 @@ module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, /***/ }), -/* 98 */ +/* 95 */ /***/ (function(module, exports) { module.exports = require("child_process"); /***/ }), -/* 99 */ +/* 96 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const cp = __webpack_require__(98); -const parse = __webpack_require__(100); -const enoent = __webpack_require__(113); +const cp = __webpack_require__(95); +const parse = __webpack_require__(97); +const enoent = __webpack_require__(110); function spawn(command, args, options) { // Parse the arguments @@ -14351,18 +14002,18 @@ module.exports._enoent = enoent; /***/ }), -/* 100 */ +/* 97 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const niceTry = __webpack_require__(101); -const resolveCommand = __webpack_require__(102); -const escape = __webpack_require__(108); -const readShebang = __webpack_require__(109); -const semver = __webpack_require__(112); +const niceTry = __webpack_require__(98); +const resolveCommand = __webpack_require__(99); +const escape = __webpack_require__(105); +const readShebang = __webpack_require__(106); +const semver = __webpack_require__(109); const isWin = process.platform === 'win32'; const isExecutableRegExp = /\.(?:com|exe)$/i; @@ -14483,7 +14134,7 @@ module.exports = parse; /***/ }), -/* 101 */ +/* 98 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14502,15 +14153,15 @@ module.exports = function(fn) { } /***/ }), -/* 102 */ +/* 99 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const which = __webpack_require__(103); -const pathKey = __webpack_require__(107)(); +const which = __webpack_require__(100); +const pathKey = __webpack_require__(104)(); function resolveCommandAttempt(parsed, withoutPathExt) { const cwd = process.cwd(); @@ -14556,7 +14207,7 @@ module.exports = resolveCommand; /***/ }), -/* 103 */ +/* 100 */ /***/ (function(module, exports, __webpack_require__) { module.exports = which @@ -14568,7 +14219,7 @@ var isWindows = process.platform === 'win32' || var path = __webpack_require__(16) var COLON = isWindows ? ';' : ':' -var isexe = __webpack_require__(104) +var isexe = __webpack_require__(101) function getNotFoundError (cmd) { var er = new Error('not found: ' + cmd) @@ -14697,15 +14348,15 @@ function whichSync (cmd, opt) { /***/ }), -/* 104 */ +/* 101 */ /***/ (function(module, exports, __webpack_require__) { var fs = __webpack_require__(23) var core if (process.platform === 'win32' || global.TESTING_WINDOWS) { - core = __webpack_require__(105) + core = __webpack_require__(102) } else { - core = __webpack_require__(106) + core = __webpack_require__(103) } module.exports = isexe @@ -14760,7 +14411,7 @@ function sync (path, options) { /***/ }), -/* 105 */ +/* 102 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe @@ -14808,7 +14459,7 @@ function sync (path, options) { /***/ }), -/* 106 */ +/* 103 */ /***/ (function(module, exports, __webpack_require__) { module.exports = isexe @@ -14855,7 +14506,7 @@ function checkMode (stat, options) { /***/ }), -/* 107 */ +/* 104 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14875,7 +14526,7 @@ module.exports = opts => { /***/ }), -/* 108 */ +/* 105 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -14927,14 +14578,14 @@ module.exports.argument = escapeArgument; /***/ }), -/* 109 */ +/* 106 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(23); -const shebangCommand = __webpack_require__(110); +const shebangCommand = __webpack_require__(107); function readShebang(command) { // Read the first 150 bytes from the file @@ -14966,12 +14617,12 @@ module.exports = readShebang; /***/ }), -/* 110 */ +/* 107 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var shebangRegex = __webpack_require__(111); +var shebangRegex = __webpack_require__(108); module.exports = function (str) { var match = str.match(shebangRegex); @@ -14992,7 +14643,7 @@ module.exports = function (str) { /***/ }), -/* 111 */ +/* 108 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15001,7 +14652,7 @@ module.exports = /^#!.*/; /***/ }), -/* 112 */ +/* 109 */ /***/ (function(module, exports) { exports = module.exports = SemVer; @@ -16331,7 +15982,7 @@ function coerce(version) { /***/ }), -/* 113 */ +/* 110 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16397,7 +16048,7 @@ module.exports = { /***/ }), -/* 114 */ +/* 111 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16419,13 +16070,13 @@ module.exports = function (x) { /***/ }), -/* 115 */ +/* 112 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const pathKey = __webpack_require__(116); +const pathKey = __webpack_require__(113); module.exports = opts => { opts = Object.assign({ @@ -16465,7 +16116,7 @@ module.exports.env = opts => { /***/ }), -/* 116 */ +/* 113 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16485,7 +16136,7 @@ module.exports = opts => { /***/ }), -/* 117 */ +/* 114 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16513,13 +16164,13 @@ isStream.transform = function (stream) { /***/ }), -/* 118 */ +/* 115 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pump = __webpack_require__(119); -const bufferStream = __webpack_require__(121); +const pump = __webpack_require__(116); +const bufferStream = __webpack_require__(118); class MaxBufferError extends Error { constructor() { @@ -16570,11 +16221,11 @@ module.exports.MaxBufferError = MaxBufferError; /***/ }), -/* 119 */ +/* 116 */ /***/ (function(module, exports, __webpack_require__) { var once = __webpack_require__(51) -var eos = __webpack_require__(120) +var eos = __webpack_require__(117) var fs = __webpack_require__(23) // we only need fs to get the ReadStream and WriteStream prototypes var noop = function () {} @@ -16658,7 +16309,7 @@ module.exports = pump /***/ }), -/* 120 */ +/* 117 */ /***/ (function(module, exports, __webpack_require__) { var once = __webpack_require__(51); @@ -16751,7 +16402,7 @@ module.exports = eos; /***/ }), -/* 121 */ +/* 118 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16809,7 +16460,7 @@ module.exports = options => { /***/ }), -/* 122 */ +/* 119 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16831,7 +16482,7 @@ module.exports = (promise, onFinally) => { /***/ }), -/* 123 */ +/* 120 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16877,7 +16528,7 @@ function errname(uv, code) { /***/ }), -/* 124 */ +/* 121 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16925,7 +16576,7 @@ module.exports = opts => { /***/ }), -/* 125 */ +/* 122 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16952,7 +16603,7 @@ module.exports = isSupported ? main : fallbacks; /***/ }), -/* 126 */ +/* 123 */ /***/ (function(module, exports, __webpack_require__) { // Copyright IBM Corp. 2014,2018. All Rights Reserved. @@ -16960,12 +16611,12 @@ module.exports = isSupported ? main : fallbacks; // 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__(127); -module.exports.cli = __webpack_require__(131); +module.exports = __webpack_require__(124); +module.exports.cli = __webpack_require__(128); /***/ }), -/* 127 */ +/* 124 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16980,9 +16631,9 @@ var stream = __webpack_require__(28); var util = __webpack_require__(29); var fs = __webpack_require__(23); -var through = __webpack_require__(128); -var duplexer = __webpack_require__(129); -var StringDecoder = __webpack_require__(130).StringDecoder; +var through = __webpack_require__(125); +var duplexer = __webpack_require__(126); +var StringDecoder = __webpack_require__(127).StringDecoder; module.exports = Logger; @@ -17171,7 +16822,7 @@ function lineMerger(host) { /***/ }), -/* 128 */ +/* 125 */ /***/ (function(module, exports, __webpack_require__) { var Stream = __webpack_require__(28) @@ -17285,7 +16936,7 @@ function through (write, end, opts) { /***/ }), -/* 129 */ +/* 126 */ /***/ (function(module, exports, __webpack_require__) { var Stream = __webpack_require__(28) @@ -17378,13 +17029,13 @@ function duplex(writer, reader) { /***/ }), -/* 130 */ +/* 127 */ /***/ (function(module, exports) { module.exports = require("string_decoder"); /***/ }), -/* 131 */ +/* 128 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17395,11 +17046,11 @@ module.exports = require("string_decoder"); -var minimist = __webpack_require__(132); +var minimist = __webpack_require__(129); var path = __webpack_require__(16); -var Logger = __webpack_require__(127); -var pkg = __webpack_require__(133); +var Logger = __webpack_require__(124); +var pkg = __webpack_require__(130); module.exports = cli; @@ -17453,7 +17104,7 @@ function usage($0, p) { /***/ }), -/* 132 */ +/* 129 */ /***/ (function(module, exports) { module.exports = function (args, opts) { @@ -17695,324 +17346,308 @@ function isNumber (x) { /***/ }), -/* 133 */ +/* 130 */ /***/ (function(module) { module.exports = {"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"}}; /***/ }), -/* 134 */ -/***/ (function(module, exports, __webpack_require__) { +/* 131 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "workspacePackagePaths", function() { return workspacePackagePaths; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyWorkspacePackages", function() { return copyWorkspacePackages; }); +/* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36); +/* 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__(16); +/* 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__(29); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(util__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(132); +/* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(54); +/* harmony import */ var _projects__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(35); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.copyWorkspacePackages = exports.workspacePackagePaths = undefined; - -let workspacePackagePaths = exports.workspacePackagePaths = (() => { - var _ref = _asyncToGenerator(function* (rootPath) { - const rootPkgJson = yield (0, _package_json.readPackageJson)(_path2.default.join(rootPath, 'package.json')); - if (!rootPkgJson.workspaces) { - return []; - } - const workspacesPathsPatterns = rootPkgJson.workspaces.packages; - let workspaceProjectsPaths = []; - for (const pattern of workspacesPathsPatterns) { - workspaceProjectsPaths = workspaceProjectsPaths.concat((yield packagesFromGlobPattern({ pattern, rootPath }))); - } - // Filter out exclude glob patterns - for (const pattern of workspacesPathsPatterns) { - if (pattern.startsWith('!')) { - const pathToRemove = _path2.default.join(rootPath, pattern.slice(1), 'package.json'); - workspaceProjectsPaths = workspaceProjectsPaths.filter(function (p) { - return p !== pathToRemove; - }); - } - } - return workspaceProjectsPaths; - }); - - return function workspacePackagePaths(_x) { - return _ref.apply(this, arguments); - }; -})(); -let copyWorkspacePackages = exports.copyWorkspacePackages = (() => { - var _ref2 = _asyncToGenerator(function* (rootPath) { - const workspaceProjects = yield getWorkspaceProjects(rootPath); - for (const project of workspaceProjects.values()) { - const dest = _path2.default.resolve(rootPath, 'node_modules', project.name); - // Remove the symlink - yield (0, _fs.unlink)(dest); - // Copy in the package - yield (0, _fs.copyDirectory)(project.path, dest); - } - }); - return function copyWorkspacePackages(_x2) { - return _ref2.apply(this, arguments); - }; -})(); -let getWorkspaceProjects = (() => { - var _ref3 = _asyncToGenerator(function* (rootPath) { - const projectPaths = (0, _config.getProjectPaths)(rootPath, {}); - const projects = yield (0, _projects.getProjects)(rootPath, projectPaths); - for (const [key, project] of projects.entries()) { - if (!project.isWorkspaceProject) { - projects.delete(key); - } - } - return projects; - }); - return function getWorkspaceProjects(_x3) { - return _ref3.apply(this, arguments); - }; -})(); -var _glob = __webpack_require__(36); +const glob = Object(util__WEBPACK_IMPORTED_MODULE_2__["promisify"])(glob__WEBPACK_IMPORTED_MODULE_0___default.a); +async function workspacePackagePaths(rootPath) { + const rootPkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__["readPackageJson"])(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(rootPath, 'package.json')); -var _glob2 = _interopRequireDefault(_glob); + if (!rootPkgJson.workspaces) { + return []; + } -var _path = __webpack_require__(16); + const workspacesPathsPatterns = rootPkgJson.workspaces.packages; + let workspaceProjectsPaths = []; -var _path2 = _interopRequireDefault(_path); + for (const pattern of workspacesPathsPatterns) { + workspaceProjectsPaths = workspaceProjectsPaths.concat((await packagesFromGlobPattern({ + pattern, + rootPath + }))); + } // Filter out exclude glob patterns -var _util = __webpack_require__(29); -var _config = __webpack_require__(135); + for (const pattern of workspacesPathsPatterns) { + if (pattern.startsWith('!')) { + const pathToRemove = path__WEBPACK_IMPORTED_MODULE_1___default.a.join(rootPath, pattern.slice(1), 'package.json'); + workspaceProjectsPaths = workspaceProjectsPaths.filter(p => p !== pathToRemove); + } + } -var _fs = __webpack_require__(20); + return workspaceProjectsPaths; +} +async function copyWorkspacePackages(rootPath) { + const workspaceProjects = await getWorkspaceProjects(rootPath); -var _package_json = __webpack_require__(54); + for (const project of workspaceProjects.values()) { + const dest = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(rootPath, 'node_modules', project.name); // Remove the symlink -var _projects = __webpack_require__(35); + await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["unlink"])(dest); // Copy in the package -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + await Object(_fs__WEBPACK_IMPORTED_MODULE_4__["copyDirectory"])(project.path, dest); + } +} -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ +async function getWorkspaceProjects(rootPath) { + const projectPaths = Object(_config__WEBPACK_IMPORTED_MODULE_3__["getProjectPaths"])(rootPath, {}); + const projects = await Object(_projects__WEBPACK_IMPORTED_MODULE_6__["getProjects"])(rootPath, projectPaths); + for (const [key, project] of projects.entries()) { + if (!project.isWorkspaceProject) { + projects.delete(key); + } + } -const glob = (0, _util.promisify)(_glob2.default); + return projects; +} -function packagesFromGlobPattern({ pattern, rootPath }) { - const globOptions = { - cwd: rootPath, - // Should throw in case of unusual errors when reading the file system - strict: true, - // Always returns absolute paths for matched files - absolute: true, - // Do not match ** against multiple filenames - // (This is only specified because we currently don't have a need for it.) - noglobstar: true - }; - return glob(_path2.default.join(pattern, 'package.json'), globOptions); +function packagesFromGlobPattern({ + pattern, + rootPath +}) { + const globOptions = { + cwd: rootPath, + // Should throw in case of unusual errors when reading the file system + strict: true, + // Always returns absolute paths for matched files + absolute: true, + // Do not match ** against multiple filenames + // (This is only specified because we currently don't have a need for it.) + noglobstar: true + }; + return glob(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(pattern, 'package.json'), globOptions); } /***/ }), -/* 135 */ -/***/ (function(module, exports, __webpack_require__) { +/* 132 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return getProjectPaths; }); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getProjectPaths = getProjectPaths; - -var _path = __webpack_require__(16); - /** * Returns all the paths where plugins are located */ function getProjectPaths(rootPath, options) { - const skipKibanaExtra = Boolean(options['skip-kibana-extra']); - const ossOnly = Boolean(options.oss); - const projectPaths = [rootPath, (0, _path.resolve)(rootPath, 'packages/*')]; - // This is needed in order to install the dependencies for the declared - // plugin functional used in the selenium functional tests. - // As we are now using the webpack dll for the client vendors dependencies - // when we run the plugin functional tests against the distributable - // dependencies used by such plugins like @eui, react and react-dom can't - // be loaded from the dll as the context is different from the one declared - // into the webpack dll reference plugin. - // In anyway, have a plugin declaring their own dependencies is the - // correct and the expect behavior. - projectPaths.push((0, _path.resolve)(rootPath, 'test/plugin_functional/plugins/*')); - if (!ossOnly) { - projectPaths.push((0, _path.resolve)(rootPath, 'x-pack')); - projectPaths.push((0, _path.resolve)(rootPath, 'x-pack/plugins/*')); - } - if (!skipKibanaExtra) { - projectPaths.push((0, _path.resolve)(rootPath, '../kibana-extra/*')); - projectPaths.push((0, _path.resolve)(rootPath, '../kibana-extra/*/packages/*')); - projectPaths.push((0, _path.resolve)(rootPath, '../kibana-extra/*/plugins/*')); - } - return projectPaths; -} /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + const skipKibanaExtra = Boolean(options['skip-kibana-extra']); + const ossOnly = Boolean(options.oss); + const projectPaths = [rootPath, Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'packages/*')]; // This is needed in order to install the dependencies for the declared + // plugin functional used in the selenium functional tests. + // As we are now using the webpack dll for the client vendors dependencies + // when we run the plugin functional tests against the distributable + // dependencies used by such plugins like @eui, react and react-dom can't + // be loaded from the dll as the context is different from the one declared + // into the webpack dll reference plugin. + // In anyway, have a plugin declaring their own dependencies is the + // correct and the expect behavior. -/***/ }), -/* 136 */ -/***/ (function(module, exports, __webpack_require__) { + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'test/plugin_functional/plugins/*')); -"use strict"; + if (!ossOnly) { + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, 'x-pack/plugins/*')); + } + if (!skipKibanaExtra) { + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*/packages/*')); + projectPaths.push(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(rootPath, '../kibana-extra/*/plugins/*')); + } -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.CleanCommand = undefined; + return projectPaths; +} -var _chalk = __webpack_require__(2); +/***/ }), +/* 133 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var _chalk2 = _interopRequireDefault(_chalk); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CleanCommand", function() { return CleanCommand; }); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(134); +/* 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__(148); +/* 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__(16); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(33); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -var _del = __webpack_require__(137); -var _del2 = _interopRequireDefault(_del); -var _ora = __webpack_require__(152); -var _ora2 = _interopRequireDefault(_ora); -var _path = __webpack_require__(16); -var _fs = __webpack_require__(20); +const CleanCommand = { + description: 'Remove the node_modules and target directories from all projects.', + name: 'clean', -var _log = __webpack_require__(33); + async run(projects) { + const toDelete = []; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + for (const project of projects.values()) { + if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_4__["isDirectory"])(project.nodeModulesLocation)) { + toDelete.push({ + cwd: project.path, + pattern: Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(project.path, project.nodeModulesLocation) + }); + } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_4__["isDirectory"])(project.targetLocation)) { + toDelete.push({ + cwd: project.path, + pattern: Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(project.path, project.targetLocation) + }); + } + const { + extraPatterns + } = project.getCleanConfig(); -const CleanCommand = exports.CleanCommand = { - description: 'Remove the node_modules and target directories from all projects.', - name: 'clean', - run(projects) { - return _asyncToGenerator(function* () { - const toDelete = []; - for (const project of projects.values()) { - if (yield (0, _fs.isDirectory)(project.nodeModulesLocation)) { - toDelete.push({ - cwd: project.path, - pattern: (0, _path.relative)(project.path, project.nodeModulesLocation) - }); - } - if (yield (0, _fs.isDirectory)(project.targetLocation)) { - toDelete.push({ - cwd: project.path, - pattern: (0, _path.relative)(project.path, project.targetLocation) - }); - } - const { extraPatterns } = project.getCleanConfig(); - if (extraPatterns) { - toDelete.push({ - cwd: project.path, - pattern: extraPatterns - }); - } - } - if (toDelete.length === 0) { - _log.log.write(_chalk2.default.bold.green('\n\nNothing to delete')); - } else { - _log.log.write(_chalk2.default.bold.red('\n\nDeleting:\n')); - /** - * In order to avoid patterns like `/build` in packages from accidentally - * impacting files outside the package we use `process.chdir()` to change - * the cwd to the package and execute `del()` without the `force` option - * so it will check that each file being deleted is within the package. - * - * `del()` does support a `cwd` option, but it's only for resolving the - * patterns and does not impact the cwd check. - */ - const originalCwd = process.cwd(); - try { - for (const _ref of toDelete) { - const { pattern, cwd } = _ref; + if (extraPatterns) { + toDelete.push({ + cwd: project.path, + pattern: extraPatterns + }); + } + } - process.chdir(cwd); - const promise = (0, _del2.default)(pattern); - _ora2.default.promise(promise, (0, _path.relative)(originalCwd, (0, _path.join)(cwd, String(pattern)))); - yield promise; - } - } finally { - process.chdir(originalCwd); - } - } - })(); + if (toDelete.length === 0) { + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold.green('\n\nNothing to delete')); + } else { + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold.red('\n\nDeleting:\n')); + /** + * In order to avoid patterns like `/build` in packages from accidentally + * impacting files outside the package we use `process.chdir()` to change + * the cwd to the package and execute `del()` without the `force` option + * so it will check that each file being deleted is within the package. + * + * `del()` does support a `cwd` option, but it's only for resolving the + * patterns and does not impact the cwd check. + */ + + const originalCwd = process.cwd(); + + try { + for (const _ref of toDelete) { + const { + pattern, + cwd + } = _ref; + process.chdir(cwd); + const promise = del__WEBPACK_IMPORTED_MODULE_1___default()(pattern); + ora__WEBPACK_IMPORTED_MODULE_2___default.a.promise(promise, Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(originalCwd, Object(path__WEBPACK_IMPORTED_MODULE_3__["join"])(cwd, String(pattern)))); + await promise; + } + } finally { + process.chdir(originalCwd); + } } + } + }; /***/ }), -/* 137 */ +/* 134 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const globby = __webpack_require__(138); -const isPathCwd = __webpack_require__(145); -const isPathInCwd = __webpack_require__(146); -const pify = __webpack_require__(149); -const rimraf = __webpack_require__(150); -const pMap = __webpack_require__(151); +const globby = __webpack_require__(135); +const isPathCwd = __webpack_require__(142); +const isPathInCwd = __webpack_require__(143); +const pify = __webpack_require__(62); +const rimraf = __webpack_require__(146); +const pMap = __webpack_require__(147); const rimrafP = pify(rimraf); @@ -18078,16 +17713,16 @@ module.exports.sync = (patterns, opts) => { /***/ }), -/* 138 */ +/* 135 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Promise = __webpack_require__(139); -var arrayUnion = __webpack_require__(141); -var objectAssign = __webpack_require__(143); +var Promise = __webpack_require__(136); +var arrayUnion = __webpack_require__(138); +var objectAssign = __webpack_require__(140); var glob = __webpack_require__(36); -var pify = __webpack_require__(144); +var pify = __webpack_require__(141); var globP = pify(glob, Promise).bind(glob); @@ -18173,17 +17808,17 @@ module.exports.hasMagic = function (patterns, opts) { /***/ }), -/* 139 */ +/* 136 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = typeof Promise === 'function' ? Promise : __webpack_require__(140); +module.exports = typeof Promise === 'function' ? Promise : __webpack_require__(137); /***/ }), -/* 140 */ +/* 137 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18482,12 +18117,12 @@ module.exports = Promise; /***/ }), -/* 141 */ +/* 138 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var arrayUniq = __webpack_require__(142); +var arrayUniq = __webpack_require__(139); module.exports = function () { return arrayUniq([].concat.apply([], arguments)); @@ -18495,7 +18130,7 @@ module.exports = function () { /***/ }), -/* 142 */ +/* 139 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18564,7 +18199,7 @@ if ('Set' in global) { /***/ }), -/* 143 */ +/* 140 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18661,7 +18296,7 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) { /***/ }), -/* 144 */ +/* 141 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18736,7 +18371,7 @@ pify.all = pify; /***/ }), -/* 145 */ +/* 142 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18749,12 +18384,12 @@ module.exports = function (str) { /***/ }), -/* 146 */ +/* 143 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isPathInside = __webpack_require__(147); +var isPathInside = __webpack_require__(144); module.exports = function (str) { return isPathInside(str, process.cwd()); @@ -18762,13 +18397,13 @@ module.exports = function (str) { /***/ }), -/* 147 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var path = __webpack_require__(16); -var pathIsInside = __webpack_require__(148); +var pathIsInside = __webpack_require__(145); module.exports = function (a, b) { a = path.resolve(a); @@ -18783,7 +18418,7 @@ module.exports = function (a, b) { /***/ }), -/* 148 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18818,98 +18453,7 @@ function stripTrailingSep(thePath) { /***/ }), -/* 149 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const processFn = (fn, opts) => function () { - const P = opts.promiseModule; - const args = new Array(arguments.length); - - for (let i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P((resolve, reject) => { - if (opts.errorFirst) { - args.push(function (err, result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - if (err) { - results.unshift(err); - reject(results); - } else { - resolve(results); - } - } else if (err) { - reject(err); - } else { - resolve(result); - } - }); - } else { - args.push(function (result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 0; i < arguments.length; i++) { - results[i] = arguments[i]; - } - - resolve(results); - } else { - resolve(result); - } - }); - } - - fn.apply(this, args); - }); -}; - -module.exports = (obj, opts) => { - opts = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, opts); - - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - let ret; - if (typeof obj === 'function') { - ret = function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, opts).apply(this, arguments); - }; - } else { - ret = Object.create(Object.getPrototypeOf(obj)); - } - - for (const key in obj) { // eslint-disable-line guard-for-in - const x = obj[key]; - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x; - } - - return ret; -}; - - -/***/ }), -/* 150 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { module.exports = rimraf @@ -19279,7 +18823,7 @@ function rmkidsSync (p, options) { /***/ }), -/* 151 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19353,15 +18897,15 @@ module.exports = (iterable, mapper, opts) => new Promise((resolve, reject) => { /***/ }), -/* 152 */ +/* 148 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const chalk = __webpack_require__(2); -const cliCursor = __webpack_require__(153); -const cliSpinners = __webpack_require__(157); -const logSymbols = __webpack_require__(125); +const cliCursor = __webpack_require__(149); +const cliSpinners = __webpack_require__(153); +const logSymbols = __webpack_require__(122); class Ora { constructor(options) { @@ -19508,12 +19052,12 @@ module.exports.promise = (action, options) => { /***/ }), -/* 153 */ +/* 149 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const restoreCursor = __webpack_require__(154); +const restoreCursor = __webpack_require__(150); let hidden = false; @@ -19554,13 +19098,13 @@ exports.toggle = (force, stream) => { /***/ }), -/* 154 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const onetime = __webpack_require__(155); -const signalExit = __webpack_require__(87); +const onetime = __webpack_require__(151); +const signalExit = __webpack_require__(86); module.exports = onetime(() => { signalExit(() => { @@ -19570,12 +19114,12 @@ module.exports = onetime(() => { /***/ }), -/* 155 */ +/* 151 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const mimicFn = __webpack_require__(156); +const mimicFn = __webpack_require__(152); module.exports = (fn, opts) => { // TODO: Remove this in v3 @@ -19616,7 +19160,7 @@ module.exports = (fn, opts) => { /***/ }), -/* 156 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19626,140 +19170,121 @@ module.exports = (to, from) => { for (const prop of Object.getOwnPropertyNames(from).concat(Object.getOwnPropertySymbols(from))) { Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); } + + return to; }; /***/ }), -/* 157 */ +/* 153 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = __webpack_require__(158); +module.exports = __webpack_require__(154); /***/ }), -/* 158 */ +/* 154 */ /***/ (function(module) { module.exports = {"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":["⢀⠀","⡀⠀","⠄⠀","⢂⠀","⡂⠀","⠅⠀","⢃⠀","⡃⠀","⠍⠀","⢋⠀","⡋⠀","⠍⠁","⢋⠁","⡋⠁","⠍⠉","⠋⠉","⠋⠉","⠉⠙","⠉⠙","⠉⠩","⠈⢙","⠈⡙","⢈⠩","⡀⢙","⠄⡙","⢂⠩","⡂⢘","⠅⡘","⢃⠨","⡃⢐","⠍⡐","⢋⠠","⡋⢀","⠍⡁","⢋⠁","⡋⠁","⠍⠉","⠋⠉","⠋⠉","⠉⠙","⠉⠙","⠉⠩","⠈⢙","⠈⡙","⠈⠩","⠀⢙","⠀⡙","⠀⠩","⠀⢘","⠀⡘","⠀⠨","⠀⢐","⠀⡐","⠀⠠","⠀⢀","⠀⡀"]},"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":["🌍 ","🌎 ","🌏 "]},"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":["🌲","🎄"]}}; /***/ }), -/* 159 */ -/***/ (function(module, exports, __webpack_require__) { +/* 155 */ +/***/ (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 chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33); +/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(35); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.RunCommand = undefined; - -var _chalk = __webpack_require__(2); - -var _chalk2 = _interopRequireDefault(_chalk); - -var _log = __webpack_require__(33); - -var _parallelize = __webpack_require__(34); - -var _projects = __webpack_require__(35); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -const RunCommand = exports.RunCommand = { - description: 'Run script defined in package.json in each package that contains that script.', - name: 'run', - run(projects, projectGraph, { extraArgs }) { - return _asyncToGenerator(function* () { - const batchedProjects = (0, _projects.topologicallyBatchProjects)(projects, projectGraph); - if (extraArgs.length === 0) { - _log.log.write(_chalk2.default.red.bold('\nNo script specified')); - process.exit(1); - } - const scriptName = extraArgs[0]; - const scriptArgs = extraArgs.slice(1); - _log.log.write(_chalk2.default.bold(`\nRunning script [${_chalk2.default.green(scriptName)}] in batched topological order\n`)); - yield (0, _parallelize.parallelizeBatches)(batchedProjects, (() => { - var _ref = _asyncToGenerator(function* (pkg) { - if (pkg.hasScript(scriptName)) { - yield pkg.runScriptStreaming(scriptName, scriptArgs); - } - }); - - return function (_x) { - return _ref.apply(this, arguments); - }; - })()); - })(); - } -}; -/***/ }), -/* 160 */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +const RunCommand = { + description: 'Run script defined in package.json in each package that contains that script.', + name: 'run', + async run(projects, projectGraph, { + extraArgs + }) { + const batchedProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_3__["topologicallyBatchProjects"])(projects, projectGraph); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.WatchCommand = undefined; + if (extraArgs.length === 0) { + _utils_log__WEBPACK_IMPORTED_MODULE_1__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.red.bold('\nNo script specified')); + process.exit(1); + } -var _chalk = __webpack_require__(2); + const scriptName = extraArgs[0]; + const scriptArgs = extraArgs.slice(1); + _utils_log__WEBPACK_IMPORTED_MODULE_1__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold(`\nRunning script [${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(scriptName)}] in batched topological order\n`)); + await Object(_utils_parallelize__WEBPACK_IMPORTED_MODULE_2__["parallelizeBatches"])(batchedProjects, async pkg => { + if (pkg.hasScript(scriptName)) { + await pkg.runScriptStreaming(scriptName, scriptArgs); + } + }); + } -var _chalk2 = _interopRequireDefault(_chalk); +}; -var _log = __webpack_require__(33); +/***/ }), +/* 156 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var _parallelize = __webpack_require__(34); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WatchCommand", function() { return WatchCommand; }); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(33); +/* harmony import */ var _utils_parallelize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(35); +/* harmony import */ var _utils_watch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(157); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -var _projects = __webpack_require__(35); -var _watch = __webpack_require__(161); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ /** @@ -19769,6 +19294,7 @@ const watchScriptName = 'kbn:watch'; /** * Name of the Kibana project. */ + const kibanaProjectName = 'kibana'; /** * Command that traverses through list of available projects/packages that have `kbn:watch` script in their @@ -19780,68 +19306,54 @@ const kibanaProjectName = 'kibana'; * the `kbn:watch` script and eventually for the entire batch. Currently we support completion "markers" for * `webpack` and `tsc` only, for the rest we rely on predefined timeouts. */ -const WatchCommand = exports.WatchCommand = { - description: 'Runs `kbn:watch` script for every project.', - name: 'watch', - run(projects, projectGraph) { - return _asyncToGenerator(function* () { - const projectsToWatch = new Map(); - for (const project of projects.values()) { - // We can't watch project that doesn't have `kbn:watch` script. - if (project.hasScript(watchScriptName)) { - projectsToWatch.set(project.name, project); - } - } - if (projectsToWatch.size === 0) { - _log.log.write(_chalk2.default.red(`\nThere are no projects to watch found. Make sure that projects define 'kbn:watch' script in 'package.json'.\n`)); - return; - } - const projectNames = Array.from(projectsToWatch.keys()); - _log.log.write(_chalk2.default.bold(_chalk2.default.green(`Running ${watchScriptName} scripts for [${projectNames.join(', ')}].`))); - // Kibana should always be run the last, so we don't rely on automatic - // topological batching and push it to the last one-entry batch manually. - const shouldWatchKibanaProject = projectsToWatch.delete(kibanaProjectName); - const batchedProjects = (0, _projects.topologicallyBatchProjects)(projectsToWatch, projectGraph); - if (shouldWatchKibanaProject) { - batchedProjects.push([projects.get(kibanaProjectName)]); - } - yield (0, _parallelize.parallelizeBatches)(batchedProjects, (() => { - var _ref = _asyncToGenerator(function* (pkg) { - const completionHint = yield (0, _watch.waitUntilWatchIsReady)(pkg.runScriptStreaming(watchScriptName).stdout); - _log.log.write(_chalk2.default.bold(`[${_chalk2.default.green(pkg.name)}] Initial build completed (${completionHint}).`)); - }); - return function (_x) { - return _ref.apply(this, arguments); - }; - })()); - })(); - } -}; +const WatchCommand = { + description: 'Runs `kbn:watch` script for every project.', + name: 'watch', -/***/ }), -/* 161 */ -/***/ (function(module, exports, __webpack_require__) { + async run(projects, projectGraph) { + const projectsToWatch = new Map(); -"use strict"; + for (const project of projects.values()) { + // We can't watch project that doesn't have `kbn:watch` script. + if (project.hasScript(watchScriptName)) { + projectsToWatch.set(project.name, project); + } + } + if (projectsToWatch.size === 0) { + _utils_log__WEBPACK_IMPORTED_MODULE_1__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.red(`\nThere are no projects to watch found. Make sure that projects define 'kbn:watch' script in 'package.json'.\n`)); + return; + } -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.waitUntilWatchIsReady = waitUntilWatchIsReady; + const projectNames = Array.from(projectsToWatch.keys()); + _utils_log__WEBPACK_IMPORTED_MODULE_1__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(`Running ${watchScriptName} scripts for [${projectNames.join(', ')}].`))); // Kibana should always be run the last, so we don't rely on automatic + // topological batching and push it to the last one-entry batch manually. -var _rxjs = __webpack_require__(162); + const shouldWatchKibanaProject = projectsToWatch.delete(kibanaProjectName); + const batchedProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_3__["topologicallyBatchProjects"])(projectsToWatch, projectGraph); -var Rx = _interopRequireWildcard(_rxjs); + if (shouldWatchKibanaProject) { + batchedProjects.push([projects.get(kibanaProjectName)]); + } + + await Object(_utils_parallelize__WEBPACK_IMPORTED_MODULE_2__["parallelizeBatches"])(batchedProjects, async pkg => { + const completionHint = await Object(_utils_watch__WEBPACK_IMPORTED_MODULE_4__["waitUntilWatchIsReady"])(pkg.runScriptStreaming(watchScriptName).stdout); + _utils_log__WEBPACK_IMPORTED_MODULE_1__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold(`[${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(pkg.name)}] Initial build completed (${completionHint}).`)); + }); + } -var _operators = __webpack_require__(261); +}; -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } +/***/ }), +/* 157 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Number of milliseconds we wait before we fall back to the default watch handler. - */ +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "waitUntilWatchIsReady", function() { return waitUntilWatchIsReady; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(158); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(257); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -19860,27 +19372,46 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; * specific language governing permissions and limitations * under the License. */ + + +/** + * Number of milliseconds we wait before we fall back to the default watch handler. + */ + const defaultHandlerDelay = 3000; /** * If default watch handler is used, then it's the number of milliseconds we wait for * any build output before we consider watch task ready. */ + const defaultHandlerReadinessTimeout = 2000; -function getWatchHandlers(buildOutput$, { handlerDelay = defaultHandlerDelay, handlerReadinessTimeout = defaultHandlerReadinessTimeout }) { - const typescriptHandler = buildOutput$.pipe((0, _operators.first)(data => data.includes('$ tsc')), (0, _operators.map)(() => buildOutput$.pipe((0, _operators.first)(data => data.includes('Compilation complete.')), (0, _operators.mapTo)('tsc')))); - const webpackHandler = buildOutput$.pipe((0, _operators.first)(data => data.includes('$ webpack')), (0, _operators.map)(() => buildOutput$.pipe((0, _operators.first)(data => data.includes('Chunk Names')), (0, _operators.mapTo)('webpack')))); - const defaultHandler = Rx.of(undefined).pipe((0, _operators.delay)(handlerReadinessTimeout), (0, _operators.map)(() => buildOutput$.pipe((0, _operators.timeout)(handlerDelay), (0, _operators.catchError)(() => Rx.of('timeout'))))); +/** + * Describes configurable watch options. + */ + +function getWatchHandlers(buildOutput$, { + handlerDelay = defaultHandlerDelay, + handlerReadinessTimeout = defaultHandlerReadinessTimeout +}) { + const typescriptHandler = buildOutput$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["first"])(data => data.includes('$ tsc')), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(() => buildOutput$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["first"])(data => data.includes('Compilation complete.')), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])('tsc')))); + const webpackHandler = buildOutput$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["first"])(data => data.includes('$ webpack')), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(() => buildOutput$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["first"])(data => data.includes('Chunk Names')), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])('webpack')))); + const defaultHandler = rxjs__WEBPACK_IMPORTED_MODULE_0__["of"](undefined).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["delay"])(handlerReadinessTimeout), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(() => buildOutput$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["timeout"])(handlerDelay), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["catchError"])(() => rxjs__WEBPACK_IMPORTED_MODULE_0__["of"]('timeout'))))); return [typescriptHandler, webpackHandler, defaultHandler]; } + function waitUntilWatchIsReady(stream, opts = {}) { - const buildOutput$ = new Rx.Subject(); + const buildOutput$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__["Subject"](); + const onDataListener = data => buildOutput$.next(data.toString('utf-8')); + const onEndListener = () => buildOutput$.complete(); + const onErrorListener = e => buildOutput$.error(e); + stream.once('end', onEndListener); stream.once('error', onErrorListener); stream.on('data', onDataListener); - return Rx.race(getWatchHandlers(buildOutput$, opts)).pipe((0, _operators.mergeMap)(whenReady => whenReady), (0, _operators.finalize)(() => { + return rxjs__WEBPACK_IMPORTED_MODULE_0__["race"](getWatchHandlers(buildOutput$, opts)).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mergeMap"])(whenReady => whenReady), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["finalize"])(() => { stream.removeListener('data', onDataListener); stream.removeListener('end', onEndListener); stream.removeListener('error', onErrorListener); @@ -19889,168 +19420,168 @@ function waitUntilWatchIsReady(stream, opts = {}) { } /***/ }), -/* 162 */ +/* 158 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163); +/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); /* 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__(181); +/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(177); /* 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__(186); +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182); /* 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__(178); +/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(174); /* 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__(182); +/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(178); /* 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__(187); +/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(183); /* 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__(188); +/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(184); /* 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__(205); +/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(201); /* 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__(206); +/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(202); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asap"]; }); -/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(210); +/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(206); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["async"]; }); -/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(189); +/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(185); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queue"]; }); -/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(211); +/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(207); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrame"]; }); -/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(214); +/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(210); /* 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__(195); +/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(191); /* 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__(171); +/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(167); /* 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__(165); +/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(161); /* 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__(197); +/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(193); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["Notification"]; }); -/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(179); +/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(175); /* 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__(180); +/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(176); /* 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__(215); +/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(211); /* 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__(216); +/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(212); /* 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__(217); +/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(213); /* 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__(218); +/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(214); /* 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__(183); +/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(179); /* 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__(176); +/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(172); /* 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__(219); +/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(215); /* 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__(220); +/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(216); /* 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__(222); +/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(218); /* 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__(223); +/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(219); /* 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__(234); +/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(230); /* 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__(244); +/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(240); /* 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__(198); +/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(194); /* 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__(245); +/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(241); /* 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__(235); +/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(231); /* 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__(246); +/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(242); /* 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__(247); +/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(243); /* 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__(248); +/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(244); /* 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__(249); +/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(245); /* 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__(250); +/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(246); /* 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__(252); +/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(248); /* 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__(253); +/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(249); /* 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__(199); +/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(195); /* 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__(254); +/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(250); /* 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__(255); +/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(251); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__["pairs"]; }); -/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(256); +/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(252); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_44__["race"]; }); -/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(257); +/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(253); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_45__["range"]; }); -/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(204); +/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(200); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_46__["throwError"]; }); -/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(258); +/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(254); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_47__["timer"]; }); -/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(259); +/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(255); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_48__["using"]; }); -/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(260); +/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(256); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_49__["zip"]; }); /* 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_50__ = __webpack_require__(169); +/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(165); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_50__["config"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -20111,16 +19642,16 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 163 */ +/* 159 */ /***/ (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_toSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(164); -/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(179); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(169); +/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(160); +/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(174); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(175); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(165); /** PURE_IMPORTS_START _util_toSubscriber,_internal_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ @@ -20234,15 +19765,15 @@ function getPromiseCtor(promiseCtor) { /***/ }), -/* 164 */ +/* 160 */ /***/ (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__(165); -/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(177); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(168); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(161); +/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(173); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(164); /** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */ @@ -20265,19 +19796,19 @@ function toSubscriber(nextOrObserver, error, complete) { /***/ }), -/* 165 */ +/* 161 */ /***/ (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 import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(168); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(177); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(169); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(170); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(163); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(164); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(167); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(173); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(165); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(166); /** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ @@ -20519,7 +20050,7 @@ function isTrustedSubscriber(obj) { /***/ }), -/* 166 */ +/* 162 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -20732,7 +20263,7 @@ function __importDefault(mod) { /***/ }), -/* 167 */ +/* 163 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -20746,14 +20277,14 @@ function isFunction(x) { /***/ }), -/* 168 */ +/* 164 */ /***/ (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__(169); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(170); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(165); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(166); /** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */ @@ -20774,7 +20305,7 @@ var empty = { /***/ }), -/* 169 */ +/* 165 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -20802,7 +20333,7 @@ var config = { /***/ }), -/* 170 */ +/* 166 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -20816,18 +20347,18 @@ function hostReportError(err) { /***/ }), -/* 171 */ +/* 167 */ /***/ (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__(172); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(173); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(167); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(175); -/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(176); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(168); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(169); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(163); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(171); +/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(172); /** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_tryCatch,_util_errorObject,_util_UnsubscriptionError PURE_IMPORTS_END */ @@ -20963,7 +20494,7 @@ function flattenUnsubscriptionErrors(errors) { /***/ }), -/* 172 */ +/* 168 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -20975,7 +20506,7 @@ var isArray = Array.isArray || (function (x) { return x && typeof x.length === ' /***/ }), -/* 173 */ +/* 169 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -20989,13 +20520,13 @@ function isObject(x) { /***/ }), -/* 174 */ +/* 170 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tryCatch", function() { return tryCatch; }); -/* harmony import */ var _errorObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(175); +/* harmony import */ var _errorObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(171); /** PURE_IMPORTS_START _errorObject PURE_IMPORTS_END */ var tryCatchTarget; @@ -21016,7 +20547,7 @@ function tryCatch(fn) { /***/ }), -/* 175 */ +/* 171 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21028,13 +20559,13 @@ var errorObject = { e: {} }; /***/ }), -/* 176 */ +/* 172 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return UnsubscriptionError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); /** PURE_IMPORTS_START tslib PURE_IMPORTS_END */ var UnsubscriptionError = /*@__PURE__*/ (function (_super) { @@ -21054,7 +20585,7 @@ var UnsubscriptionError = /*@__PURE__*/ (function (_super) { /***/ }), -/* 177 */ +/* 173 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21070,7 +20601,7 @@ var $$rxSubscriber = rxSubscriber; /***/ }), -/* 178 */ +/* 174 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21082,14 +20613,14 @@ var observable = typeof Symbol === 'function' && Symbol.observable || '@@observa /***/ }), -/* 179 */ +/* 175 */ /***/ (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 _noop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(180); +/* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(176); /** PURE_IMPORTS_START _noop PURE_IMPORTS_END */ function pipe() { @@ -21114,7 +20645,7 @@ function pipeFromArray(fns) { /***/ }), -/* 180 */ +/* 176 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21126,19 +20657,19 @@ function noop() { } /***/ }), -/* 181 */ +/* 177 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(163); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(165); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(171); -/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(185); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(159); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(161); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(167); +/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(181); /** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */ @@ -21285,7 +20816,7 @@ var RefCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 182 */ +/* 178 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21293,13 +20824,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__(166); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(163); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(165); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(183); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(184); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(177); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(159); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(161); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(167); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(179); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(180); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(173); /** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ @@ -21461,13 +20992,13 @@ var AnonymousSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 183 */ +/* 179 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return ObjectUnsubscribedError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); /** PURE_IMPORTS_START tslib PURE_IMPORTS_END */ var ObjectUnsubscribedError = /*@__PURE__*/ (function (_super) { @@ -21485,14 +21016,14 @@ var ObjectUnsubscribedError = /*@__PURE__*/ (function (_super) { /***/ }), -/* 184 */ +/* 180 */ /***/ (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__(166); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ @@ -21528,14 +21059,14 @@ var SubjectSubscription = /*@__PURE__*/ (function (_super) { /***/ }), -/* 185 */ +/* 181 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -21597,18 +21128,18 @@ var RefCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 186 */ +/* 182 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(171); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(163); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(182); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(167); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(159); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(178); /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */ @@ -21794,15 +21325,15 @@ var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) { /***/ }), -/* 187 */ +/* 183 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(183); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(179); /** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */ @@ -21849,19 +21380,19 @@ var BehaviorSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 188 */ +/* 184 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(189); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(196); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(183); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(184); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(185); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(167); +/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(192); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(179); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(180); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */ @@ -21982,14 +21513,14 @@ var ReplayEvent = /*@__PURE__*/ (function () { /***/ }), -/* 189 */ +/* 185 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return queue; }); -/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(190); -/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(193); +/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(186); +/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(189); /** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */ @@ -21998,14 +21529,14 @@ var queue = /*@__PURE__*/ new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__["Queu /***/ }), -/* 190 */ +/* 186 */ /***/ (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__(166); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(191); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187); /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ @@ -22050,14 +21581,14 @@ var QueueAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 191 */ +/* 187 */ /***/ (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__(166); -/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(192); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(188); /** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */ @@ -22155,14 +21686,14 @@ var AsyncAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 192 */ +/* 188 */ /***/ (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__(166); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); /** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ @@ -22184,14 +21715,14 @@ var Action = /*@__PURE__*/ (function (_super) { /***/ }), -/* 193 */ +/* 189 */ /***/ (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__(166); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(194); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(190); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -22207,14 +21738,14 @@ var QueueScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 194 */ +/* 190 */ /***/ (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__(166); -/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(195); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(191); /** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */ @@ -22276,7 +21807,7 @@ var AsyncScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 195 */ +/* 191 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22304,7 +21835,7 @@ var Scheduler = /*@__PURE__*/ (function () { /***/ }), -/* 196 */ +/* 192 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22313,9 +21844,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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(197); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(193); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -22385,15 +21916,15 @@ var ObserveOnMessage = /*@__PURE__*/ (function () { /***/ }), -/* 197 */ +/* 193 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return Notification; }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(198); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(199); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(204); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(194); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(195); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(200); /** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */ @@ -22467,7 +21998,7 @@ var Notification = /*@__PURE__*/ (function () { /***/ }), -/* 198 */ +/* 194 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22475,7 +22006,7 @@ __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 export (binding) */ __webpack_require__.d(__webpack_exports__, "emptyScheduled", function() { return emptyScheduled; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ var EMPTY = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.complete(); }); @@ -22489,16 +22020,16 @@ function emptyScheduled(scheduler) { /***/ }), -/* 199 */ +/* 195 */ /***/ (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__(200); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(201); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(198); -/* harmony import */ var _scalar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(203); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(196); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(194); +/* harmony import */ var _scalar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(199); /** PURE_IMPORTS_START _util_isScheduler,_fromArray,_empty,_scalar PURE_IMPORTS_END */ @@ -22529,7 +22060,7 @@ function of() { /***/ }), -/* 200 */ +/* 196 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22543,15 +22074,15 @@ function isScheduler(value) { /***/ }), -/* 201 */ +/* 197 */ /***/ (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__(163); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); -/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(202); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); +/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(198); /** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToArray PURE_IMPORTS_END */ @@ -22582,7 +22113,7 @@ function fromArray(input, scheduler) { /***/ }), -/* 202 */ +/* 198 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22603,13 +22134,13 @@ var subscribeToArray = function (array) { /***/ }), -/* 203 */ +/* 199 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scalar", function() { return scalar; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function scalar(value) { @@ -22625,13 +22156,13 @@ function scalar(value) { /***/ }), -/* 204 */ +/* 200 */ /***/ (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__(163); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function throwError(error, scheduler) { @@ -22650,15 +22181,15 @@ function dispatch(_a) { /***/ }), -/* 205 */ +/* 201 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(171); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(167); /** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */ @@ -22709,14 +22240,14 @@ var AsyncSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 206 */ +/* 202 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return asap; }); -/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(207); -/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(209); +/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(203); +/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(205); /** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */ @@ -22725,15 +22256,15 @@ var asap = /*@__PURE__*/ new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__["AsapSc /***/ }), -/* 207 */ +/* 203 */ /***/ (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__(166); -/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(208); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(191); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(204); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(187); /** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */ @@ -22776,7 +22307,7 @@ var AsapAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 208 */ +/* 204 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22806,14 +22337,14 @@ var Immediate = { /***/ }), -/* 209 */ +/* 205 */ /***/ (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__(166); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(194); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(190); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -22850,14 +22381,14 @@ var AsapScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 210 */ +/* 206 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "async", function() { return async; }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(191); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(194); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(187); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(190); /** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ @@ -22866,14 +22397,14 @@ var async = /*@__PURE__*/ new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["Asyn /***/ }), -/* 211 */ +/* 207 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return animationFrame; }); -/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(212); -/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(213); +/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(208); +/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(209); /** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */ @@ -22882,14 +22413,14 @@ var animationFrame = /*@__PURE__*/ new _AnimationFrameScheduler__WEBPACK_IMPORTE /***/ }), -/* 212 */ +/* 208 */ /***/ (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__(166); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(191); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187); /** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ @@ -22931,14 +22462,14 @@ var AnimationFrameAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 213 */ +/* 209 */ /***/ (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__(166); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(194); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(190); /** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ @@ -22975,16 +22506,16 @@ var AnimationFrameScheduler = /*@__PURE__*/ (function (_super) { /***/ }), -/* 214 */ +/* 210 */ /***/ (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__(166); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(191); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(194); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(190); /** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ @@ -23096,7 +22627,7 @@ var VirtualAction = /*@__PURE__*/ (function (_super) { /***/ }), -/* 215 */ +/* 211 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23110,13 +22641,13 @@ function identity(x) { /***/ }), -/* 216 */ +/* 212 */ /***/ (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__(163); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function isObservable(obj) { @@ -23126,13 +22657,13 @@ function isObservable(obj) { /***/ }), -/* 217 */ +/* 213 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return ArgumentOutOfRangeError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); /** PURE_IMPORTS_START tslib PURE_IMPORTS_END */ var ArgumentOutOfRangeError = /*@__PURE__*/ (function (_super) { @@ -23150,13 +22681,13 @@ var ArgumentOutOfRangeError = /*@__PURE__*/ (function (_super) { /***/ }), -/* 218 */ +/* 214 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return EmptyError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); /** PURE_IMPORTS_START tslib PURE_IMPORTS_END */ var EmptyError = /*@__PURE__*/ (function (_super) { @@ -23174,13 +22705,13 @@ var EmptyError = /*@__PURE__*/ (function (_super) { /***/ }), -/* 219 */ +/* 215 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return TimeoutError; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); /** PURE_IMPORTS_START tslib PURE_IMPORTS_END */ var TimeoutError = /*@__PURE__*/ (function (_super) { @@ -23198,17 +22729,17 @@ var TimeoutError = /*@__PURE__*/ (function (_super) { /***/ }), -/* 220 */ +/* 216 */ /***/ (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__(163); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(205); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(172); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(200); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(201); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(217); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(168); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(196); /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_isArray,_util_isScheduler PURE_IMPORTS_END */ @@ -23311,15 +22842,15 @@ function dispatchError(state) { /***/ }), -/* 221 */ +/* 217 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -23368,17 +22899,17 @@ var MapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 222 */ +/* 218 */ /***/ (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__(163); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(205); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(200); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(172); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(201); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(217); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(196); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(168); /** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_isScheduler,_util_isArray PURE_IMPORTS_END */ @@ -23489,7 +23020,7 @@ function dispatchError(arg) { /***/ }), -/* 223 */ +/* 219 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23497,12 +23028,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__(166); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(200); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(201); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(196); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(168); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(197); /** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */ @@ -23607,14 +23138,14 @@ var CombineLatestSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 224 */ +/* 220 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -23639,14 +23170,14 @@ var OuterSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 225 */ +/* 221 */ /***/ (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__(226); -/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(227); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(222); +/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(223); /** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo PURE_IMPORTS_END */ @@ -23658,14 +23189,14 @@ function subscribeToResult(outerSubscriber, result, outerValue, outerIndex) { /***/ }), -/* 226 */ +/* 222 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -23697,22 +23228,22 @@ var InnerSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 227 */ +/* 223 */ /***/ (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 _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163); -/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(202); -/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(228); -/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(229); -/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(231); -/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(232); -/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(233); -/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(173); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(230); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(178); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(198); +/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(224); +/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(225); +/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(227); +/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(228); +/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(229); +/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(169); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(226); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(174); /** PURE_IMPORTS_START _Observable,_subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */ @@ -23760,13 +23291,13 @@ var subscribeTo = function (result) { /***/ }), -/* 228 */ +/* 224 */ /***/ (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__(170); +/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); /** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */ var subscribeToPromise = function (promise) { @@ -23785,13 +23316,13 @@ var subscribeToPromise = function (promise) { /***/ }), -/* 229 */ +/* 225 */ /***/ (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__(230); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(226); /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ var subscribeToIterable = function (iterable) { @@ -23822,7 +23353,7 @@ var subscribeToIterable = function (iterable) { /***/ }), -/* 230 */ +/* 226 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23843,13 +23374,13 @@ var $$iterator = iterator; /***/ }), -/* 231 */ +/* 227 */ /***/ (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__(178); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(174); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ var subscribeToObservable = function (obj) { @@ -23867,7 +23398,7 @@ var subscribeToObservable = function (obj) { /***/ }), -/* 232 */ +/* 228 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23879,7 +23410,7 @@ var isArrayLike = (function (x) { return x && typeof x.length === 'number' && ty /***/ }), -/* 233 */ +/* 229 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -23893,16 +23424,16 @@ function isPromise(value) { /***/ }), -/* 234 */ +/* 230 */ /***/ (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 _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(200); -/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(199); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(235); -/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(241); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(196); +/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(195); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(231); +/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(237); /** PURE_IMPORTS_START _util_isScheduler,_of,_from,_operators_concatAll PURE_IMPORTS_END */ @@ -23922,22 +23453,22 @@ function concat() { /***/ }), -/* 235 */ +/* 231 */ /***/ (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__(163); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(233); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(232); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(236); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(237); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(201); -/* harmony import */ var _fromPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(238); -/* harmony import */ var _fromIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(239); -/* harmony import */ var _fromObservable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(240); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(227); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(229); +/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(228); +/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(232); +/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(233); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(197); +/* harmony import */ var _fromPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(234); +/* harmony import */ var _fromIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(235); +/* harmony import */ var _fromObservable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(236); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(223); /** PURE_IMPORTS_START _Observable,_util_isPromise,_util_isArrayLike,_util_isInteropObservable,_util_isIterable,_fromArray,_fromPromise,_fromIterable,_fromObservable,_util_subscribeTo PURE_IMPORTS_END */ @@ -23976,13 +23507,13 @@ function from(input, scheduler) { /***/ }), -/* 236 */ +/* 232 */ /***/ (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__(178); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(174); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ function isInteropObservable(input) { @@ -23992,13 +23523,13 @@ function isInteropObservable(input) { /***/ }), -/* 237 */ +/* 233 */ /***/ (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__(230); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(226); /** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ function isIterable(input) { @@ -24008,15 +23539,15 @@ function isIterable(input) { /***/ }), -/* 238 */ +/* 234 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromPromise", function() { return fromPromise; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); -/* harmony import */ var _util_subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(228); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); +/* harmony import */ var _util_subscribeToPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(224); /** PURE_IMPORTS_START _Observable,_Subscription,_util_subscribeToPromise PURE_IMPORTS_END */ @@ -24046,16 +23577,16 @@ function fromPromise(input, scheduler) { /***/ }), -/* 239 */ +/* 235 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromIterable", function() { return fromIterable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(230); -/* harmony import */ var _util_subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(229); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(226); +/* harmony import */ var _util_subscribeToIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(225); /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator,_util_subscribeToIterable PURE_IMPORTS_END */ @@ -24111,16 +23642,16 @@ function fromIterable(input, scheduler) { /***/ }), -/* 240 */ +/* 236 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromObservable", function() { return fromObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(178); -/* harmony import */ var _util_subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(231); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(174); +/* harmony import */ var _util_subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(227); /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable,_util_subscribeToObservable PURE_IMPORTS_END */ @@ -24149,13 +23680,13 @@ function fromObservable(input, scheduler) { /***/ }), -/* 241 */ +/* 237 */ /***/ (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__(242); +/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(238); /** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */ function concatAll() { @@ -24165,14 +23696,14 @@ function concatAll() { /***/ }), -/* 242 */ +/* 238 */ /***/ (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__(243); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(215); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(239); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(211); /** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */ @@ -24186,7 +23717,7 @@ function mergeAll(concurrent) { /***/ }), -/* 243 */ +/* 239 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -24194,11 +23725,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return mergeMap; }); /* 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 import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(225); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(224); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(235); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(221); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(220); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(217); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(231); /** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_map,_observable_from PURE_IMPORTS_END */ @@ -24297,15 +23828,15 @@ var MergeMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 244 */ +/* 240 */ /***/ (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__(163); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(235); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(198); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(231); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(194); /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ @@ -24328,19 +23859,19 @@ function defer(observableFactory) { /***/ }), -/* 245 */ +/* 241 */ /***/ (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 tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(163); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(198); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(224); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(221); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(159); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(168); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(194); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(220); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(217); /** PURE_IMPORTS_START tslib,_Observable,_util_isArray,_empty,_util_subscribeToResult,_OuterSubscriber,_operators_map PURE_IMPORTS_END */ @@ -24418,16 +23949,16 @@ var ForkJoinSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 246 */ +/* 242 */ /***/ (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__(163); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(172); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(167); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(168); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(163); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(217); /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ @@ -24494,16 +24025,16 @@ function isEventTarget(sourceObj) { /***/ }), -/* 247 */ +/* 243 */ /***/ (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__(163); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(172); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(167); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(168); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(163); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(217); /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ @@ -24539,15 +24070,15 @@ function fromEventPattern(addHandler, removeHandler, resultSelector) { /***/ }), -/* 248 */ +/* 244 */ /***/ (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__(163); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(215); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(200); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(211); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(196); /** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */ @@ -24676,14 +24207,14 @@ function dispatch(state) { /***/ }), -/* 249 */ +/* 245 */ /***/ (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__(244); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(198); +/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(240); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(194); /** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */ @@ -24700,15 +24231,15 @@ function iif(condition, trueResult, falseResult) { /***/ }), -/* 250 */ +/* 246 */ /***/ (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__(163); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(210); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(251); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(206); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(247); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */ @@ -24740,13 +24271,13 @@ function dispatch(state) { /***/ }), -/* 251 */ +/* 247 */ /***/ (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__(172); +/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(168); /** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */ function isNumeric(val) { @@ -24756,16 +24287,16 @@ function isNumeric(val) { /***/ }), -/* 252 */ +/* 248 */ /***/ (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__(163); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(200); -/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(242); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(201); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(196); +/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(238); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(197); /** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */ @@ -24797,15 +24328,15 @@ function merge() { /***/ }), -/* 253 */ +/* 249 */ /***/ (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__(163); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(180); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(176); /** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */ @@ -24817,16 +24348,16 @@ function never() { /***/ }), -/* 254 */ +/* 250 */ /***/ (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__(163); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(235); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(198); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(231); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(168); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(194); /** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */ @@ -24857,15 +24388,15 @@ function onErrorResumeNext() { /***/ }), -/* 255 */ +/* 251 */ /***/ (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__(163); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); /** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ @@ -24908,7 +24439,7 @@ function dispatch(state) { /***/ }), -/* 256 */ +/* 252 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -24916,11 +24447,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__(166); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(172); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(201); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(168); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(197); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -25002,14 +24533,14 @@ var RaceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 257 */ +/* 253 */ /***/ (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__(163); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); /** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ function range(start, count, scheduler) { @@ -25060,16 +24591,16 @@ function dispatch(state) { /***/ }), -/* 258 */ +/* 254 */ /***/ (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__(163); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(210); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(251); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(200); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(206); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(247); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(196); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -25114,15 +24645,15 @@ function dispatch(state) { /***/ }), -/* 259 */ +/* 255 */ /***/ (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__(163); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(235); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(198); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(231); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(194); /** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ @@ -25159,7 +24690,7 @@ function using(resourceFactory, observableFactory) { /***/ }), -/* 260 */ +/* 256 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25167,13 +24698,13 @@ __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__(166); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(201); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(165); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(225); -/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(230); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(168); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(161); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(221); +/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(226); /** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_OuterSubscriber,_util_subscribeToResult,_.._internal_symbol_iterator PURE_IMPORTS_END */ @@ -25393,320 +24924,320 @@ var ZipBufferIterator = /*@__PURE__*/ (function (_super) { /***/ }), -/* 261 */ +/* 257 */ /***/ (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__(262); +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(258); /* 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__(263); +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(259); /* 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__(264); +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(260); /* 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__(265); +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(261); /* 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__(266); +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(262); /* 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__(267); +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(263); /* 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__(268); +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(264); /* 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__(269); +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(265); /* 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__(270); +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(266); /* 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__(271); +/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(267); /* 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__(272); +/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(268); /* 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__(241); +/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(237); /* 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__(273); +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(269); /* 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__(274); +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(270); /* 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__(275); +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(271); /* 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__(276); +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(272); /* 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__(277); +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(273); /* 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__(278); +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(274); /* 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__(279); +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(275); /* 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__(281); +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(277); /* 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__(282); +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(278); /* 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__(283); +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(279); /* 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__(284); +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(280); /* 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__(285); +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(281); /* 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__(286); +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(282); /* 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__(291); +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(287); /* 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__(292); +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(288); /* 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__(293); +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(289); /* 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__(294); +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(290); /* 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__(295); +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(291); /* 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__(287); +/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(283); /* 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__(296); +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(292); /* 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__(297); +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(293); /* 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__(298); +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(294); /* 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__(299); +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(295); /* 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__(186); +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(182); /* 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__(300); +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(296); /* 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__(301); +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(297); /* 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__(302); +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(298); /* 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__(221); +/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(217); /* 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__(304); +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(300); /* 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__(305); +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(301); /* 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__(306); +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(302); /* 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__(309); +/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(305); /* 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__(242); +/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(238); /* 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__(243); +/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(239); /* 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__["mergeMap"]; }); -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(310); +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(306); /* 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__(311); +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(307); /* 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__(312); +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(308); /* 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__(313); +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(309); /* 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__(196); +/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(192); /* 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__(314); +/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(310); /* 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__(315); +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(311); /* 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__(316); +/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(312); /* 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__(318); +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(314); /* 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__(319); +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(315); /* 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__(320); +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(316); /* 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__(321); +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(317); /* 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__(322); +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(318); /* 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__(323); +/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(319); /* 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__(307); +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(303); /* 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__(324); +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(320); /* 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__(325); +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(321); /* 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__(326); +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(322); /* 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__(327); +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(323); /* 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__(185); +/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(181); /* 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__(328); +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(324); /* 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__(329); +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(325); /* 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__(308); +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(304); /* 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__(330); +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(326); /* 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__(331); +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(327); /* 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__(332); +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(328); /* 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__(333); +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(329); /* 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__(334); +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(330); /* 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__(335); +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(331); /* 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__(336); +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(332); /* 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__(337); +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(333); /* 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__(338); +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(334); /* 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__(339); +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(335); /* 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__(341); +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(337); /* 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__(342); +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(338); /* 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__(343); +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(339); /* 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__(290); +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(286); /* 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__(303); +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(299); /* 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__(344); +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(340); /* 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__(345); +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(341); /* 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__(289); +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(285); /* 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__(346); +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(342); /* 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__(347); +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(343); /* 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__(288); +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(284); /* 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__(348); +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(344); /* 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__(349); +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(345); /* 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__(350); +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(346); /* 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__(351); +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(347); /* 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__(352); +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(348); /* 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__(353); +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(349); /* 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__(354); +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(350); /* 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__(355); +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(351); /* 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__(356); +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(352); /* 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__(357); +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(353); /* 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__(358); +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(354); /* 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__(359); +/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(355); /* 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__(360); +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(356); /* 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 */ @@ -25818,17 +25349,17 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/* 262 */ +/* 258 */ /***/ (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__(166); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(175); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(171); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -25901,15 +25432,15 @@ var AuditSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 263 */ +/* 259 */ /***/ (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__(210); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(262); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(258); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(206); +/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(258); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(254); /** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */ @@ -25924,15 +25455,15 @@ function auditTime(duration, scheduler) { /***/ }), -/* 264 */ +/* 260 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -25973,14 +25504,14 @@ var BufferSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 265 */ +/* 261 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -26074,16 +25605,16 @@ var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 266 */ +/* 262 */ /***/ (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__(166); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(210); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(165); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(200); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(206); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(161); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(196); /** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */ @@ -26235,16 +25766,16 @@ function dispatchBufferClose(arg) { /***/ }), -/* 267 */ +/* 263 */ /***/ (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__(166); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); /** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */ @@ -26355,18 +25886,18 @@ var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 268 */ +/* 264 */ /***/ (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__(166); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(175); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(167); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_Subscription,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -26452,15 +25983,15 @@ var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 269 */ +/* 265 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -26509,13 +26040,13 @@ var CatchSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 270 */ +/* 266 */ /***/ (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__(223); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(219); /** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */ function combineAll(project) { @@ -26525,15 +26056,15 @@ function combineAll(project) { /***/ }), -/* 271 */ +/* 267 */ /***/ (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__(172); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(223); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(235); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(168); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(219); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(231); /** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */ @@ -26557,13 +26088,13 @@ function combineLatest() { /***/ }), -/* 272 */ +/* 268 */ /***/ (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__(234); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(230); /** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */ function concat() { @@ -26577,13 +26108,13 @@ function concat() { /***/ }), -/* 273 */ +/* 269 */ /***/ (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__(243); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(239); /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ function concatMap(project, resultSelector) { @@ -26593,13 +26124,13 @@ function concatMap(project, resultSelector) { /***/ }), -/* 274 */ +/* 270 */ /***/ (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__(273); +/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(269); /** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */ function concatMapTo(innerObservable, resultSelector) { @@ -26609,14 +26140,14 @@ function concatMapTo(innerObservable, resultSelector) { /***/ }), -/* 275 */ +/* 271 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -26674,15 +26205,15 @@ var CountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 276 */ +/* 272 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -26762,15 +26293,15 @@ var DebounceSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 277 */ +/* 273 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(210); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(206); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ @@ -26838,14 +26369,14 @@ function dispatchNext(subscriber) { /***/ }), -/* 278 */ +/* 274 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -26888,17 +26419,17 @@ var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 279 */ +/* 275 */ /***/ (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__(166); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(210); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(280); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(165); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(197); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(206); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(276); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(161); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(193); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -26992,7 +26523,7 @@ var DelayMessage = /*@__PURE__*/ (function () { /***/ }), -/* 280 */ +/* 276 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -27006,17 +26537,17 @@ function isDate(value) { /***/ }), -/* 281 */ +/* 277 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(163); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(159); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -27147,14 +26678,14 @@ var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 282 */ +/* 278 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -27185,16 +26716,16 @@ var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 283 */ +/* 279 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -27263,16 +26794,16 @@ var DistinctSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 284 */ +/* 280 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(175); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); /** PURE_IMPORTS_START tslib,_Subscriber,_util_tryCatch,_util_errorObject PURE_IMPORTS_END */ @@ -27335,13 +26866,13 @@ var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 285 */ +/* 281 */ /***/ (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__(284); +/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(280); /** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */ function distinctUntilKeyChanged(key, compare) { @@ -27351,17 +26882,17 @@ function distinctUntilKeyChanged(key, compare) { /***/ }), -/* 286 */ +/* 282 */ /***/ (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__(217); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(287); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(288); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(278); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(290); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(213); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(283); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(284); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(274); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(286); /** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ @@ -27383,14 +26914,14 @@ function elementAt(index, defaultValue) { /***/ }), -/* 287 */ +/* 283 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -27437,14 +26968,14 @@ var FilterSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 288 */ +/* 284 */ /***/ (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 _tap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(289); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(218); +/* harmony import */ var _tap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(285); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(214); /** PURE_IMPORTS_START _tap,_util_EmptyError PURE_IMPORTS_END */ @@ -27469,16 +27000,16 @@ function defaultErrorFactory() { /***/ }), -/* 289 */ +/* 285 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(180); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(167); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(176); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(163); /** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */ @@ -27557,16 +27088,16 @@ var TapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 290 */ +/* 286 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(217); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(198); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(213); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(194); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ @@ -27619,17 +27150,17 @@ var TakeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 291 */ +/* 287 */ /***/ (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_fromArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(201); -/* harmony import */ var _observable_scalar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(203); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(198); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(234); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(200); +/* harmony import */ var _observable_fromArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(197); +/* harmony import */ var _observable_scalar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(199); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(194); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(230); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(196); /** PURE_IMPORTS_START _observable_fromArray,_observable_scalar,_observable_empty,_observable_concat,_util_isScheduler PURE_IMPORTS_END */ @@ -27665,14 +27196,14 @@ function endWith() { /***/ }), -/* 292 */ +/* 288 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -27727,15 +27258,15 @@ var EverySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 293 */ +/* 289 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -27784,17 +27315,17 @@ var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 294 */ +/* 290 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(235); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(217); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(231); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */ @@ -27870,7 +27401,7 @@ var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 295 */ +/* 291 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -27878,11 +27409,11 @@ __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__(166); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(175); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(171); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -27986,15 +27517,15 @@ var ExpandSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 296 */ +/* 292 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(171); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(167); /** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */ @@ -28024,7 +27555,7 @@ var FinallySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 297 */ +/* 293 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -28032,8 +27563,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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -28095,13 +27626,13 @@ var FindValueSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 298 */ +/* 294 */ /***/ (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__(297); +/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(293); /** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */ function findIndex(predicate, thisArg) { @@ -28111,18 +27642,18 @@ function findIndex(predicate, thisArg) { /***/ }), -/* 299 */ +/* 295 */ /***/ (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__(218); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(287); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(290); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(278); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(288); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(215); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(214); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(283); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(286); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(274); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(284); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(211); /** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -28138,14 +27669,14 @@ function first(predicate, defaultValue) { /***/ }), -/* 300 */ +/* 296 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -28175,14 +27706,14 @@ var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 301 */ +/* 297 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -28219,18 +27750,18 @@ var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 302 */ +/* 298 */ /***/ (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__(218); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(287); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(303); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(288); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(278); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(215); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(214); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(283); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(299); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(284); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(274); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(211); /** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -28246,16 +27777,16 @@ function last(predicate, defaultValue) { /***/ }), -/* 303 */ +/* 299 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(217); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(198); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(213); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(194); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ @@ -28323,14 +27854,14 @@ var TakeLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 304 */ +/* 300 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -28362,15 +27893,15 @@ var MapToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 305 */ +/* 301 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(197); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(193); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -28412,13 +27943,13 @@ var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 306 */ +/* 302 */ /***/ (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__(307); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(303); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function max(comparer) { @@ -28431,16 +27962,16 @@ function max(comparer) { /***/ }), -/* 307 */ +/* 303 */ /***/ (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__(308); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(303); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(278); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(179); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(304); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(299); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(274); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(175); /** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ @@ -28462,14 +27993,14 @@ function reduce(accumulator, seed) { /***/ }), -/* 308 */ +/* 304 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -28544,13 +28075,13 @@ var ScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 309 */ +/* 305 */ /***/ (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__(252); +/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(248); /** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */ function merge() { @@ -28564,13 +28095,13 @@ function merge() { /***/ }), -/* 310 */ +/* 306 */ /***/ (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__(243); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(239); /** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ function mergeMapTo(innerObservable, resultSelector, concurrent) { @@ -28589,7 +28120,7 @@ function mergeMapTo(innerObservable, resultSelector, concurrent) { /***/ }), -/* 311 */ +/* 307 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -28597,11 +28128,11 @@ __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__(166); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(175); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(225); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(224); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(171); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220); /** PURE_IMPORTS_START tslib,_util_tryCatch,_util_errorObject,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */ @@ -28696,13 +28227,13 @@ var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 312 */ +/* 308 */ /***/ (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__(307); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(303); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function min(comparer) { @@ -28715,14 +28246,14 @@ function min(comparer) { /***/ }), -/* 313 */ +/* 309 */ /***/ (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__(181); +/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(177); /** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */ function multicast(subjectOrSubjectFactory, selector) { @@ -28764,18 +28295,18 @@ var MulticastOperator = /*@__PURE__*/ (function () { /***/ }), -/* 314 */ +/* 310 */ /***/ (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__(166); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(235); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(231); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(168); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -28848,14 +28379,14 @@ var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 315 */ +/* 311 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -28892,14 +28423,14 @@ var PairwiseSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 316 */ +/* 312 */ /***/ (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__(317); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(287); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(313); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(283); /** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */ @@ -28915,7 +28446,7 @@ function partition(predicate, thisArg) { /***/ }), -/* 317 */ +/* 313 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -28934,13 +28465,13 @@ function not(pred, thisArg) { /***/ }), -/* 318 */ +/* 314 */ /***/ (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__(221); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(217); /** PURE_IMPORTS_START _map PURE_IMPORTS_END */ function pluck() { @@ -28974,14 +28505,14 @@ function plucker(props, length) { /***/ }), -/* 319 */ +/* 315 */ /***/ (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__(182); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(313); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(178); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(309); /** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ @@ -28994,14 +28525,14 @@ function publish(selector) { /***/ }), -/* 320 */ +/* 316 */ /***/ (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__(187); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(313); +/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(183); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(309); /** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ @@ -29012,14 +28543,14 @@ function publishBehavior(value) { /***/ }), -/* 321 */ +/* 317 */ /***/ (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__(205); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(313); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(201); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(309); /** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ @@ -29030,14 +28561,14 @@ function publishLast() { /***/ }), -/* 322 */ +/* 318 */ /***/ (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__(188); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(313); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(184); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(309); /** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ @@ -29053,14 +28584,14 @@ function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { /***/ }), -/* 323 */ +/* 319 */ /***/ (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__(172); -/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(256); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(168); +/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(252); /** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */ @@ -29080,15 +28611,15 @@ function race() { /***/ }), -/* 324 */ +/* 320 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(198); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(194); /** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */ @@ -29145,18 +28676,18 @@ var RepeatSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 325 */ +/* 321 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(175); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_Subject,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -29241,14 +28772,14 @@ var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 326 */ +/* 322 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -29294,18 +28825,18 @@ var RetrySubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 327 */ +/* 323 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(175); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_Subject,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -29383,15 +28914,15 @@ var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 328 */ +/* 324 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -29440,15 +28971,15 @@ var SampleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 329 */ +/* 325 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(210); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(206); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ @@ -29500,7 +29031,7 @@ function dispatchNotification(state) { /***/ }), -/* 330 */ +/* 326 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -29508,10 +29039,10 @@ __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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(175); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); /** PURE_IMPORTS_START tslib,_Subscriber,_util_tryCatch,_util_errorObject PURE_IMPORTS_END */ @@ -29619,15 +29150,15 @@ var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 331 */ +/* 327 */ /***/ (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__(313); -/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(185); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(309); +/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(181); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(178); /** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ @@ -29642,13 +29173,13 @@ function share() { /***/ }), -/* 332 */ +/* 328 */ /***/ (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__(188); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(184); /** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */ function shareReplay(bufferSize, windowTime, scheduler) { @@ -29691,15 +29222,15 @@ function shareReplayOperator(bufferSize, windowTime, scheduler) { /***/ }), -/* 333 */ +/* 329 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(218); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(214); /** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */ @@ -29771,14 +29302,14 @@ var SingleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 334 */ +/* 330 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -29813,15 +29344,15 @@ var SkipSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 335 */ +/* 331 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(217); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(213); /** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */ @@ -29875,15 +29406,15 @@ var SkipLastSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 336 */ +/* 332 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -29927,14 +29458,14 @@ var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 337 */ +/* 333 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -29983,17 +29514,17 @@ var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 338 */ +/* 334 */ /***/ (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_fromArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(201); -/* harmony import */ var _observable_scalar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(203); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(198); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(234); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(200); +/* harmony import */ var _observable_fromArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(197); +/* harmony import */ var _observable_scalar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(199); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(194); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(230); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(196); /** PURE_IMPORTS_START _observable_fromArray,_observable_scalar,_observable_empty,_observable_concat,_util_isScheduler PURE_IMPORTS_END */ @@ -30029,13 +29560,13 @@ function startWith() { /***/ }), -/* 339 */ +/* 335 */ /***/ (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__(340); +/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(336); /** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */ function subscribeOn(scheduler, delay) { @@ -30060,16 +29591,16 @@ var SubscribeOnOperator = /*@__PURE__*/ (function () { /***/ }), -/* 340 */ +/* 336 */ /***/ (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__(166); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(163); -/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(206); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(251); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(159); +/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(202); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(247); /** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */ @@ -30124,14 +29655,14 @@ var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { /***/ }), -/* 341 */ +/* 337 */ /***/ (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__(342); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(215); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(338); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(211); /** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ @@ -30142,17 +29673,17 @@ function switchAll() { /***/ }), -/* 342 */ +/* 338 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(235); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(217); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(231); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */ @@ -30226,13 +29757,13 @@ var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 343 */ +/* 339 */ /***/ (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__(342); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(338); /** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */ function switchMapTo(innerObservable, resultSelector) { @@ -30242,15 +29773,15 @@ function switchMapTo(innerObservable, resultSelector) { /***/ }), -/* 344 */ +/* 340 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -30289,14 +29820,14 @@ var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 345 */ +/* 341 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ @@ -30347,16 +29878,16 @@ var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 346 */ +/* 342 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -30451,16 +29982,16 @@ var ThrottleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 347 */ +/* 343 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(210); -/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(346); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(206); +/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(342); /** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ @@ -30545,17 +30076,17 @@ function dispatchNext(arg) { /***/ }), -/* 348 */ +/* 344 */ /***/ (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__(210); -/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(308); -/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(244); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(206); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(304); +/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(240); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(217); /** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */ @@ -30589,16 +30120,16 @@ var TimeInterval = /*@__PURE__*/ (function () { /***/ }), -/* 349 */ +/* 345 */ /***/ (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__(210); -/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(219); -/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(350); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(204); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(206); +/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(215); +/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(346); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(200); /** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */ @@ -30614,17 +30145,17 @@ function timeout(due, scheduler) { /***/ }), -/* 350 */ +/* 346 */ /***/ (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__(166); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(210); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(280); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(206); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(276); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -30696,15 +30227,15 @@ var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 351 */ +/* 347 */ /***/ (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__(210); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(221); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(206); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(217); /** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */ @@ -30726,13 +30257,13 @@ var Timestamp = /*@__PURE__*/ (function () { /***/ }), -/* 352 */ +/* 348 */ /***/ (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__(307); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(303); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function toArrayReducer(arr, item, index) { @@ -30749,16 +30280,16 @@ function toArray() { /***/ }), -/* 353 */ +/* 349 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -30829,15 +30360,15 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 354 */ +/* 350 */ /***/ (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__(166); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(178); /** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */ @@ -30919,18 +30450,18 @@ var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 355 */ +/* 351 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(210); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(165); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(251); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(200); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(206); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(161); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(247); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(196); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -31089,19 +30620,19 @@ function dispatchWindowClose(state) { /***/ }), -/* 356 */ +/* 352 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(171); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(175); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(167); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(171); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_Subject,_Subscription,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -31235,18 +30766,18 @@ var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 357 */ +/* 353 */ /***/ (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__(166); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182); -/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(174); -/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(175); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(178); +/* harmony import */ var _util_tryCatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(170); +/* harmony import */ var _util_errorObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(171); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_Subject,_util_tryCatch,_util_errorObject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -31334,15 +30865,15 @@ var WindowSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 358 */ +/* 354 */ /***/ (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__(166); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(224); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(225); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(220); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(221); /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ @@ -31429,13 +30960,13 @@ var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) { /***/ }), -/* 359 */ +/* 355 */ /***/ (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__(260); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(256); /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ function zip() { @@ -31451,13 +30982,13 @@ function zip() { /***/ }), -/* 360 */ +/* 356 */ /***/ (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__(260); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(256); /** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ function zipAll(project) { @@ -31467,113 +30998,101 @@ function zipAll(project) { /***/ }), -/* 361 */ -/***/ (function(module, exports, __webpack_require__) { +/* 357 */ +/***/ (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 chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var indent_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(358); +/* harmony import */ var indent_string__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(indent_string__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var wrap_ansi__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(359); +/* harmony import */ var wrap_ansi__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(wrap_ansi__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(132); +/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(52); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(33); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(35); +/* harmony import */ var _utils_projects_tree__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(366); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.runCommand = undefined; - -let runCommand = exports.runCommand = (() => { - var _ref = _asyncToGenerator(function* (command, config) { - try { - _log.log.write(_chalk2.default.bold(`Running [${_chalk2.default.green(command.name)}] command from [${_chalk2.default.yellow(config.rootPath)}]:\n`)); - const projectPaths = (0, _config.getProjectPaths)(config.rootPath, config.options); - const projects = yield (0, _projects.getProjects)(config.rootPath, projectPaths, { - exclude: toArray(config.options.exclude), - include: toArray(config.options.include) - }); - if (projects.size === 0) { - _log.log.write(_chalk2.default.red(`There are no projects found. Double check project name(s) in '-i/--include' and '-e/--exclude' filters.\n`)); - return process.exit(1); - } - const projectGraph = (0, _projects.buildProjectGraph)(projects); - _log.log.write(_chalk2.default.bold(`Found [${_chalk2.default.green(projects.size.toString())}] projects:\n`)); - _log.log.write((0, _projects_tree.renderProjectsTree)(config.rootPath, projects)); - yield command.run(projects, projectGraph, config); - } catch (e) { - _log.log.write(_chalk2.default.bold.red(`\n[${command.name}] failed:\n`)); - if (e instanceof _errors.CliError) { - const msg = _chalk2.default.red(`CliError: ${e.message}\n`); - _log.log.write((0, _wrapAnsi2.default)(msg, 80)); - const keys = Object.keys(e.meta); - if (keys.length > 0) { - const metaOutput = keys.map(function (key) { - const value = e.meta[key]; - return `${key}: ${value}`; - }); - _log.log.write('Additional debugging info:\n'); - _log.log.write((0, _indentString2.default)(metaOutput.join('\n'), 3)); - } - } else { - _log.log.write(e.stack); - } - process.exit(1); - } - }); - - return function runCommand(_x, _x2) { - return _ref.apply(this, arguments); - }; -})(); - -var _chalk = __webpack_require__(2); - -var _chalk2 = _interopRequireDefault(_chalk); - -var _indentString = __webpack_require__(362); -var _indentString2 = _interopRequireDefault(_indentString); -var _wrapAnsi = __webpack_require__(363); -var _wrapAnsi2 = _interopRequireDefault(_wrapAnsi); -var _config = __webpack_require__(135); -var _errors = __webpack_require__(52); -var _log = __webpack_require__(33); +async function runCommand(command, config) { + try { + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold(`Running [${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(command.name)}] command from [${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.yellow(config.rootPath)}]:\n`)); + const projectPaths = Object(_config__WEBPACK_IMPORTED_MODULE_3__["getProjectPaths"])(config.rootPath, config.options); + const projects = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_6__["getProjects"])(config.rootPath, projectPaths, { + exclude: toArray(config.options.exclude), + include: toArray(config.options.include) + }); -var _projects = __webpack_require__(35); + if (projects.size === 0) { + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.red(`There are no projects found. Double check project name(s) in '-i/--include' and '-e/--exclude' filters.\n`)); + return process.exit(1); + } -var _projects_tree = __webpack_require__(370); + const projectGraph = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_6__["buildProjectGraph"])(projects); + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold(`Found [${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(projects.size.toString())}] projects:\n`)); + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(Object(_utils_projects_tree__WEBPACK_IMPORTED_MODULE_7__["renderProjectsTree"])(config.rootPath, projects)); + await command.run(projects, projectGraph, config); + } catch (e) { + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(chalk__WEBPACK_IMPORTED_MODULE_0___default.a.bold.red(`\n[${command.name}] failed:\n`)); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (e instanceof _utils_errors__WEBPACK_IMPORTED_MODULE_4__["CliError"]) { + const msg = chalk__WEBPACK_IMPORTED_MODULE_0___default.a.red(`CliError: ${e.message}\n`); + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(wrap_ansi__WEBPACK_IMPORTED_MODULE_2___default()(msg, 80)); + const keys = Object.keys(e.meta); -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + if (keys.length > 0) { + const metaOutput = keys.map(key => { + const value = e.meta[key]; + return `${key}: ${value}`; + }); + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write('Additional debugging info:\n'); + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(indent_string__WEBPACK_IMPORTED_MODULE_1___default()(metaOutput.join('\n'), 3)); + } + } else { + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(e.stack); + } + process.exit(1); + } +} function toArray(value) { - if (value == null) { - return []; - } - return Array.isArray(value) ? value : [value]; + if (value == null) { + return []; + } + + return Array.isArray(value) ? value : [value]; } /***/ }), -/* 362 */ +/* 358 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31607,13 +31126,13 @@ module.exports = (str, count, opts) => { /***/ }), -/* 363 */ +/* 359 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stringWidth = __webpack_require__(364); -const stripAnsi = __webpack_require__(368); +const stringWidth = __webpack_require__(360); +const stripAnsi = __webpack_require__(364); const ESCAPES = new Set([ '\u001B', @@ -31807,13 +31326,13 @@ module.exports = (str, cols, opts) => { /***/ }), -/* 364 */ +/* 360 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const stripAnsi = __webpack_require__(365); -const isFullwidthCodePoint = __webpack_require__(367); +const stripAnsi = __webpack_require__(361); +const isFullwidthCodePoint = __webpack_require__(363); module.exports = str => { if (typeof str !== 'string' || str.length === 0) { @@ -31850,18 +31369,18 @@ module.exports = str => { /***/ }), -/* 365 */ +/* 361 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiRegex = __webpack_require__(366); +const ansiRegex = __webpack_require__(362); module.exports = input => typeof input === 'string' ? input.replace(ansiRegex(), '') : input; /***/ }), -/* 366 */ +/* 362 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31878,7 +31397,7 @@ module.exports = () => { /***/ }), -/* 367 */ +/* 363 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31931,18 +31450,18 @@ module.exports = x => { /***/ }), -/* 368 */ +/* 364 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const ansiRegex = __webpack_require__(369); +const ansiRegex = __webpack_require__(365); module.exports = input => typeof input === 'string' ? input.replace(ansiRegex(), '') : input; /***/ }), -/* 369 */ +/* 365 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31959,27 +31478,16 @@ module.exports = () => { /***/ }), -/* 370 */ -/***/ (function(module, exports, __webpack_require__) { +/* 366 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.renderProjectsTree = renderProjectsTree; - -var _chalk = __webpack_require__(2); - -var _chalk2 = _interopRequireDefault(_chalk); - -var _path = __webpack_require__(16); - -var _path2 = _interopRequireDefault(_path); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderProjectsTree", function() { return renderProjectsTree; }); +/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); +/* 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__(16); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -31998,173 +31506,228 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * specific language governing permissions and limitations * under the License. */ + + const projectKey = Symbol('__project'); function renderProjectsTree(rootPath, projects) { - const projectsTree = buildProjectsTree(rootPath, projects); - return treeToString(createTreeStructure(projectsTree)); + const projectsTree = buildProjectsTree(rootPath, projects); + return treeToString(createTreeStructure(projectsTree)); } + function treeToString(tree) { - return [tree.name].concat(childrenToStrings(tree.children, '')).join('\n'); + return [tree.name].concat(childrenToStrings(tree.children, '')).join('\n'); } + function childrenToStrings(tree, treePrefix) { - if (tree === undefined) { - return []; - } - let strings = []; - tree.forEach((node, index) => { - const isLastNode = tree.length - 1 === index; - const nodePrefix = isLastNode ? '└── ' : '├── '; - const childPrefix = isLastNode ? ' ' : '│ '; - const childrenPrefix = treePrefix + childPrefix; - strings.push(`${treePrefix}${nodePrefix}${node.name}`); - strings = strings.concat(childrenToStrings(node.children, childrenPrefix)); - }); - return strings; + if (tree === undefined) { + return []; + } + + let strings = []; + tree.forEach((node, index) => { + const isLastNode = tree.length - 1 === index; + const nodePrefix = isLastNode ? '└── ' : '├── '; + const childPrefix = isLastNode ? ' ' : '│ '; + const childrenPrefix = treePrefix + childPrefix; + strings.push(`${treePrefix}${nodePrefix}${node.name}`); + strings = strings.concat(childrenToStrings(node.children, childrenPrefix)); + }); + return strings; } + function createTreeStructure(tree) { - let name; - const children = []; - for (const [dir, project] of tree.entries()) { - // This is a leaf node (aka a project) - if (typeof project === 'string') { - name = _chalk2.default.green(project); - continue; - } - // If there's only one project and the key indicates it's a leaf node, we - // know that we're at a package folder that contains a package.json, so we - // "inline it" so we don't get unnecessary levels, i.e. we'll just see - // `foo` instead of `foo -> foo`. - if (project.size === 1 && project.has(projectKey)) { - const projectName = project.get(projectKey); - children.push({ - children: [], - name: dirOrProjectName(dir, projectName) - }); - continue; - } - const subtree = createTreeStructure(project); - // If the name is specified, we know there's a package at the "root" of the - // subtree itself. - if (subtree.name !== undefined) { - const projectName = subtree.name; - children.push({ - children: subtree.children, - name: dirOrProjectName(dir, projectName) - }); - continue; - } - // Special-case whenever we have one child, so we don't get unnecessary - // folders in the output. E.g. instead of `foo -> bar -> baz` we get - // `foo/bar/baz` instead. - if (subtree.children && subtree.children.length === 1) { - const child = subtree.children[0]; - const newName = _chalk2.default.dim(_path2.default.join(dir.toString(), child.name)); - children.push({ - children: child.children, - name: newName - }); - continue; - } - children.push({ - children: subtree.children, - name: _chalk2.default.dim(dir.toString()) - }); + let name; + const children = []; + + for (const [dir, project] of tree.entries()) { + // This is a leaf node (aka a project) + if (typeof project === 'string') { + name = chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(project); + continue; + } // If there's only one project and the key indicates it's a leaf node, we + // know that we're at a package folder that contains a package.json, so we + // "inline it" so we don't get unnecessary levels, i.e. we'll just see + // `foo` instead of `foo -> foo`. + + + if (project.size === 1 && project.has(projectKey)) { + const projectName = project.get(projectKey); + children.push({ + children: [], + name: dirOrProjectName(dir, projectName) + }); + continue; + } + + const subtree = createTreeStructure(project); // If the name is specified, we know there's a package at the "root" of the + // subtree itself. + + if (subtree.name !== undefined) { + const projectName = subtree.name; + children.push({ + children: subtree.children, + name: dirOrProjectName(dir, projectName) + }); + continue; + } // Special-case whenever we have one child, so we don't get unnecessary + // folders in the output. E.g. instead of `foo -> bar -> baz` we get + // `foo/bar/baz` instead. + + + if (subtree.children && subtree.children.length === 1) { + const child = subtree.children[0]; + const newName = chalk__WEBPACK_IMPORTED_MODULE_0___default.a.dim(path__WEBPACK_IMPORTED_MODULE_1___default.a.join(dir.toString(), child.name)); + children.push({ + children: child.children, + name: newName + }); + continue; } - return { name, children }; + + children.push({ + children: subtree.children, + name: chalk__WEBPACK_IMPORTED_MODULE_0___default.a.dim(dir.toString()) + }); + } + + return { + name, + children + }; } + function dirOrProjectName(dir, projectName) { - return dir === projectName ? _chalk2.default.green(dir) : _chalk2.default`{dim ${dir.toString()} ({reset.green ${projectName}})}`; + return dir === projectName ? chalk__WEBPACK_IMPORTED_MODULE_0___default.a.green(dir) : chalk__WEBPACK_IMPORTED_MODULE_0___default.a`{dim ${dir.toString()} ({reset.green ${projectName}})}`; } + function buildProjectsTree(rootPath, projects) { - const tree = new Map(); - for (const project of projects.values()) { - if (rootPath === project.path) { - tree.set(projectKey, project.name); - } else { - const relativeProjectPath = _path2.default.relative(rootPath, project.path); - addProjectToTree(tree, relativeProjectPath.split(_path2.default.sep), project); - } + const tree = new Map(); + + for (const project of projects.values()) { + if (rootPath === project.path) { + tree.set(projectKey, project.name); + } else { + const relativeProjectPath = path__WEBPACK_IMPORTED_MODULE_1___default.a.relative(rootPath, project.path); + addProjectToTree(tree, relativeProjectPath.split(path__WEBPACK_IMPORTED_MODULE_1___default.a.sep), project); } - return tree; + } + + return tree; } + function addProjectToTree(tree, pathParts, project) { - if (pathParts.length === 0) { - tree.set(projectKey, project.name); - } else { - const [currentDir, ...rest] = pathParts; - if (!tree.has(currentDir)) { - tree.set(currentDir, new Map()); - } - const subtree = tree.get(currentDir); - addProjectToTree(subtree, rest, project); + if (pathParts.length === 0) { + tree.set(projectKey, project.name); + } else { + const [currentDir, ...rest] = pathParts; + + if (!tree.has(currentDir)) { + tree.set(currentDir, new Map()); } + + const subtree = tree.get(currentDir); + addProjectToTree(subtree, rest, project); + } } /***/ }), -/* 371 */ -/***/ (function(module, exports, __webpack_require__) { +/* 367 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _build_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(368); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildProductionProjects", function() { return _build_production_projects__WEBPACK_IMPORTED_MODULE_0__["buildProductionProjects"]; }); +/* harmony import */ var _prepare_project_dependencies__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(585); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "prepareExternalProjectDependencies", function() { return _prepare_project_dependencies__WEBPACK_IMPORTED_MODULE_1__["prepareExternalProjectDependencies"]; }); -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _build_production_projects = __webpack_require__(372); - -Object.defineProperty(exports, 'buildProductionProjects', { - enumerable: true, - get: function () { - return _build_production_projects.buildProductionProjects; - } -}); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -var _prepare_project_dependencies = __webpack_require__(591); -Object.defineProperty(exports, 'prepareExternalProjectDependencies', { - enumerable: true, - get: function () { - return _prepare_project_dependencies.prepareExternalProjectDependencies; - } -}); /***/ }), -/* 372 */ -/***/ (function(module, exports, __webpack_require__) { +/* 368 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildProductionProjects", function() { return buildProductionProjects; }); +/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(369); +/* 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__(134); +/* 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__(16); +/* 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__(132); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(33); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(54); +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(35); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.buildProductionProjects = undefined; - -let buildProductionProjects = exports.buildProductionProjects = (() => { - var _ref = _asyncToGenerator(function* ({ kibanaRoot, buildRoots }) { - const projects = yield getProductionProjects(kibanaRoot); - const projectGraph = (0, _projects.buildProjectGraph)(projects); - const batchedProjects = (0, _projects.topologicallyBatchProjects)(projects, projectGraph); - const projectNames = [...projects.values()].map(function (project) { - return project.name; - }); - _log.log.write(`Preparing production build for [${projectNames.join(', ')}]`); - for (const batch of batchedProjects) { - for (const project of batch) { - yield deleteTarget(project); - yield buildProject(project); - for (const buildRoot of buildRoots) { - yield copyToBuild(project, kibanaRoot, buildRoot); - } - } - } - }); - return function buildProductionProjects(_x) { - return _ref.apply(this, arguments); - }; -})(); + + + + + +async function buildProductionProjects({ + kibanaRoot, + buildRoots +}) { + const projects = await getProductionProjects(kibanaRoot); + const projectGraph = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__["buildProjectGraph"])(projects); + const batchedProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__["topologicallyBatchProjects"])(projects, projectGraph); + const projectNames = [...projects.values()].map(project => project.name); + _utils_log__WEBPACK_IMPORTED_MODULE_5__["log"].write(`Preparing production build for [${projectNames.join(', ')}]`); + + for (const batch of batchedProjects) { + for (const project of batch) { + await deleteTarget(project); + await buildProject(project); + + for (const buildRoot of buildRoots) { + await copyToBuild(project, kibanaRoot, buildRoot); + } + } + } +} /** * Returns the subset of projects that should be built into the production * bundle. As we copy these into Kibana's `node_modules` during the build step, @@ -32172,48 +31735,32 @@ let buildProductionProjects = exports.buildProductionProjects = (() => { * we only include Kibana's transitive _production_ dependencies. */ +async function getProductionProjects(rootPath) { + const projectPaths = Object(_config__WEBPACK_IMPORTED_MODULE_3__["getProjectPaths"])(rootPath, {}); + const projects = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__["getProjects"])(rootPath, projectPaths); + const productionProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__["includeTransitiveProjects"])([projects.get('kibana')], projects, { + onlyProductionDependencies: true + }); // We remove Kibana, as we're already building Kibana -let getProductionProjects = (() => { - var _ref2 = _asyncToGenerator(function* (rootPath) { - const projectPaths = (0, _config.getProjectPaths)(rootPath, {}); - const projects = yield (0, _projects.getProjects)(rootPath, projectPaths); - const productionProjects = (0, _projects.includeTransitiveProjects)([projects.get('kibana')], projects, { - onlyProductionDependencies: true - }); - // We remove Kibana, as we're already building Kibana - productionProjects.delete('kibana'); - return productionProjects; - }); + productionProjects.delete('kibana'); + return productionProjects; +} - return function getProductionProjects(_x2) { - return _ref2.apply(this, arguments); - }; -})(); +async function deleteTarget(project) { + const targetDir = project.targetLocation; -let deleteTarget = (() => { - var _ref3 = _asyncToGenerator(function* (project) { - const targetDir = project.targetLocation; - if (yield (0, _fs.isDirectory)(targetDir)) { - yield (0, _del2.default)(targetDir, { force: true }); - } - }); - - return function deleteTarget(_x3) { - return _ref3.apply(this, arguments); - }; -})(); - -let buildProject = (() => { - var _ref4 = _asyncToGenerator(function* (project) { - if (project.hasScript('build')) { - yield project.runScript('build'); - } + if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_4__["isDirectory"])(targetDir)) { + await del__WEBPACK_IMPORTED_MODULE_1___default()(targetDir, { + force: true }); + } +} - return function buildProject(_x4) { - return _ref4.apply(this, arguments); - }; -})(); +async function buildProject(project) { + if (project.hasScript('build')) { + await project.runScript('build'); + } +} /** * Copy all the project's files from its "intermediate build directory" and * into the build. The intermediate directory can either be the root of the @@ -32227,86 +31774,39 @@ let buildProject = (() => { */ -let copyToBuild = (() => { - var _ref5 = _asyncToGenerator(function* (project, kibanaRoot, buildRoot) { - // We want the package to have the same relative location within the build - const relativeProjectPath = (0, _path.relative)(kibanaRoot, project.path); - const buildProjectPath = (0, _path.resolve)(buildRoot, relativeProjectPath); - yield (0, _cpy2.default)(['**/*', '!node_modules/**'], buildProjectPath, { - cwd: project.getIntermediateBuildDirectory(), - dot: true, - nodir: true, - parents: true - }); - // If a project is using an intermediate build directory, we special-case our - // handling of `package.json`, as the project build process might have copied - // (a potentially modified) `package.json` into the intermediate build - // directory already. If so, we want to use that `package.json` as the basis - // for creating the production-ready `package.json`. If it's not present in - // the intermediate build, we fall back to using the project's already defined - // `package.json`. - const packageJson = (yield (0, _fs.isFile)((0, _path.join)(buildProjectPath, 'package.json'))) ? yield (0, _package_json.readPackageJson)(buildProjectPath) : project.json; - yield (0, _package_json.writePackageJson)(buildProjectPath, packageJson); - }); - - return function copyToBuild(_x5, _x6, _x7) { - return _ref5.apply(this, arguments); - }; -})(); - -var _cpy = __webpack_require__(373); - -var _cpy2 = _interopRequireDefault(_cpy); - -var _del = __webpack_require__(137); - -var _del2 = _interopRequireDefault(_del); - -var _path = __webpack_require__(16); - -var _config = __webpack_require__(135); +async function copyToBuild(project, kibanaRoot, buildRoot) { + // We want the package to have the same relative location within the build + const relativeProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["relative"])(kibanaRoot, project.path); + const buildProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["resolve"])(buildRoot, relativeProjectPath); + await cpy__WEBPACK_IMPORTED_MODULE_0___default()(['**/*', '!node_modules/**'], buildProjectPath, { + cwd: project.getIntermediateBuildDirectory(), + dot: true, + nodir: true, + parents: true + }); // If a project is using an intermediate build directory, we special-case our + // handling of `package.json`, as the project build process might have copied + // (a potentially modified) `package.json` into the intermediate build + // directory already. If so, we want to use that `package.json` as the basis + // for creating the production-ready `package.json`. If it's not present in + // the intermediate build, we fall back to using the project's already defined + // `package.json`. -var _fs = __webpack_require__(20); - -var _log = __webpack_require__(33); - -var _package_json = __webpack_require__(54); - -var _projects = __webpack_require__(35); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + const packageJson = (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_4__["isFile"])(Object(path__WEBPACK_IMPORTED_MODULE_2__["join"])(buildProjectPath, 'package.json'))) ? await Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_6__["readPackageJson"])(buildProjectPath) : project.json; + await Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_6__["writePackageJson"])(buildProjectPath, packageJson); +} /***/ }), -/* 373 */ +/* 369 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const EventEmitter = __webpack_require__(45); const path = __webpack_require__(16); -const arrify = __webpack_require__(374); -const globby = __webpack_require__(375); -const cpFile = __webpack_require__(582); -const CpyError = __webpack_require__(590); +const arrify = __webpack_require__(370); +const globby = __webpack_require__(371); +const cpFile = __webpack_require__(577); +const CpyError = __webpack_require__(584); const preprocessSrcPath = (srcPath, options) => options.cwd ? path.resolve(options.cwd, srcPath) : srcPath; @@ -32405,7 +31905,7 @@ module.exports = (src, dest, options = {}) => { /***/ }), -/* 374 */ +/* 370 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32420,16 +31920,16 @@ module.exports = function (val) { /***/ }), -/* 375 */ +/* 371 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const arrayUnion = __webpack_require__(141); +const arrayUnion = __webpack_require__(138); const glob = __webpack_require__(36); -const fastGlob = __webpack_require__(376); -const dirGlob = __webpack_require__(577); -const gitignore = __webpack_require__(578); +const fastGlob = __webpack_require__(372); +const dirGlob = __webpack_require__(573); +const gitignore = __webpack_require__(574); const DEFAULT_FILTER = () => false; @@ -32555,10 +32055,10 @@ module.exports.gitignore = gitignore; /***/ }), -/* 376 */ +/* 372 */ /***/ (function(module, exports, __webpack_require__) { -const pkg = __webpack_require__(377); +const pkg = __webpack_require__(373); module.exports = pkg.async; module.exports.default = pkg.async; @@ -32569,19 +32069,19 @@ module.exports.stream = pkg.stream; /***/ }), -/* 377 */ +/* 373 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var merge2 = __webpack_require__(378); -var optionsManager = __webpack_require__(379); -var taskManager = __webpack_require__(380); -var reader_async_1 = __webpack_require__(556); -var reader_stream_1 = __webpack_require__(575); -var reader_sync_1 = __webpack_require__(576); -var arrayUtils = __webpack_require__(572); +var merge2 = __webpack_require__(374); +var optionsManager = __webpack_require__(375); +var taskManager = __webpack_require__(376); +var reader_async_1 = __webpack_require__(552); +var reader_stream_1 = __webpack_require__(571); +var reader_sync_1 = __webpack_require__(572); +var arrayUtils = __webpack_require__(568); /** * Returns a set of works based on provided tasks and class of the reader. */ @@ -32619,7 +32119,7 @@ exports.stream = stream; /***/ }), -/* 378 */ +/* 374 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32733,7 +32233,7 @@ function pauseStreams (streams, options) { /***/ }), -/* 379 */ +/* 375 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32768,14 +32268,14 @@ exports.prepare = prepare; /***/ }), -/* 380 */ +/* 376 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var objectUtils = __webpack_require__(381); -var patternUtils = __webpack_require__(382); +var objectUtils = __webpack_require__(377); +var patternUtils = __webpack_require__(378); /** * Returns grouped patterns by base directory of each pattern. */ @@ -32887,7 +32387,7 @@ exports.generate = generate; /***/ }), -/* 381 */ +/* 377 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32900,7 +32400,7 @@ exports.values = values; /***/ }), -/* 382 */ +/* 378 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32916,8 +32416,8 @@ var __values = (this && this.__values) || function (o) { }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var globParent = __webpack_require__(383); -var micromatch = __webpack_require__(387); +var globParent = __webpack_require__(379); +var micromatch = __webpack_require__(383); var GLOBSTAR = '**'; /** * Convert a windows «path» to a unix-style «path». @@ -33050,15 +32550,15 @@ exports.match = match; /***/ }), -/* 383 */ +/* 379 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var path = __webpack_require__(16); -var isglob = __webpack_require__(384); -var pathDirname = __webpack_require__(386); +var isglob = __webpack_require__(380); +var pathDirname = __webpack_require__(382); var isWin32 = __webpack_require__(11).platform() === 'win32'; module.exports = function globParent(str) { @@ -33081,7 +32581,7 @@ module.exports = function globParent(str) { /***/ }), -/* 384 */ +/* 380 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -33091,7 +32591,7 @@ module.exports = function globParent(str) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(385); +var isExtglob = __webpack_require__(381); module.exports = function isGlob(str) { if (typeof str !== 'string' || str === '') { @@ -33112,7 +32612,7 @@ module.exports = function isGlob(str) { /***/ }), -/* 385 */ +/* 381 */ /***/ (function(module, exports) { /*! @@ -33138,7 +32638,7 @@ module.exports = function isExtglob(str) { /***/ }), -/* 386 */ +/* 382 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33288,7 +32788,7 @@ module.exports.win32 = win32; /***/ }), -/* 387 */ +/* 383 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33299,18 +32799,18 @@ module.exports.win32 = win32; */ var util = __webpack_require__(29); -var braces = __webpack_require__(388); -var toRegex = __webpack_require__(389); -var extend = __webpack_require__(398); +var braces = __webpack_require__(384); +var toRegex = __webpack_require__(385); +var extend = __webpack_require__(394); /** * Local dependencies */ -var compilers = __webpack_require__(524); -var parsers = __webpack_require__(552); -var cache = __webpack_require__(553); -var utils = __webpack_require__(554); +var compilers = __webpack_require__(520); +var parsers = __webpack_require__(548); +var cache = __webpack_require__(549); +var utils = __webpack_require__(550); var MAX_LENGTH = 1024 * 64; /** @@ -34174,7 +33674,7 @@ module.exports = micromatch; /***/ }), -/* 388 */ +/* 384 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34184,19 +33684,19 @@ module.exports = micromatch; * Module dependencies */ -var toRegex = __webpack_require__(389); -var unique = __webpack_require__(401); -var extend = __webpack_require__(398); -var define = __webpack_require__(402); +var toRegex = __webpack_require__(385); +var unique = __webpack_require__(397); +var extend = __webpack_require__(394); +var define = __webpack_require__(398); /** * Local dependencies */ -var compilers = __webpack_require__(409); -var parsers = __webpack_require__(424); -var Braces = __webpack_require__(427); -var utils = __webpack_require__(410); +var compilers = __webpack_require__(405); +var parsers = __webpack_require__(420); +var Braces = __webpack_require__(423); +var utils = __webpack_require__(406); var MAX_LENGTH = 1024 * 64; var cache = {}; @@ -34494,15 +33994,15 @@ module.exports = braces; /***/ }), -/* 389 */ +/* 385 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var define = __webpack_require__(390); -var extend = __webpack_require__(398); -var not = __webpack_require__(400); +var define = __webpack_require__(386); +var extend = __webpack_require__(394); +var not = __webpack_require__(396); var MAX_LENGTH = 1024 * 64; /** @@ -34649,7 +34149,7 @@ module.exports.makeRe = makeRe; /***/ }), -/* 390 */ +/* 386 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34662,7 +34162,7 @@ module.exports.makeRe = makeRe; -var isDescriptor = __webpack_require__(391); +var isDescriptor = __webpack_require__(387); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -34687,7 +34187,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 391 */ +/* 387 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34700,9 +34200,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(392); -var isAccessor = __webpack_require__(393); -var isData = __webpack_require__(396); +var typeOf = __webpack_require__(388); +var isAccessor = __webpack_require__(389); +var isData = __webpack_require__(392); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -34716,7 +34216,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 392 */ +/* 388 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -34869,7 +34369,7 @@ function isBuffer(val) { /***/ }), -/* 393 */ +/* 389 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34882,7 +34382,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(394); +var typeOf = __webpack_require__(390); // accessor descriptor properties var accessor = { @@ -34945,10 +34445,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 394 */ +/* 390 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -35067,7 +34567,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 395 */ +/* 391 */ /***/ (function(module, exports) { /*! @@ -35094,7 +34594,7 @@ function isSlowBuffer (obj) { /***/ }), -/* 396 */ +/* 392 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35107,7 +34607,7 @@ function isSlowBuffer (obj) { -var typeOf = __webpack_require__(397); +var typeOf = __webpack_require__(393); // data descriptor properties var data = { @@ -35156,10 +34656,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 397 */ +/* 393 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -35278,13 +34778,13 @@ module.exports = function kindOf(val) { /***/ }), -/* 398 */ +/* 394 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(399); +var isObject = __webpack_require__(395); module.exports = function extend(o/*, objects*/) { if (!isObject(o)) { o = {}; } @@ -35318,7 +34818,7 @@ function hasOwn(obj, key) { /***/ }), -/* 399 */ +/* 395 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35338,13 +34838,13 @@ module.exports = function isExtendable(val) { /***/ }), -/* 400 */ +/* 396 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extend = __webpack_require__(398); +var extend = __webpack_require__(394); /** * The main export is a function that takes a `pattern` string and an `options` object. @@ -35411,7 +34911,7 @@ module.exports = toRegex; /***/ }), -/* 401 */ +/* 397 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35461,7 +34961,7 @@ module.exports.immutable = function uniqueImmutable(arr) { /***/ }), -/* 402 */ +/* 398 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35474,7 +34974,7 @@ module.exports.immutable = function uniqueImmutable(arr) { -var isDescriptor = __webpack_require__(403); +var isDescriptor = __webpack_require__(399); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -35499,7 +34999,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 403 */ +/* 399 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35512,9 +35012,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(404); -var isAccessor = __webpack_require__(405); -var isData = __webpack_require__(407); +var typeOf = __webpack_require__(400); +var isAccessor = __webpack_require__(401); +var isData = __webpack_require__(403); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -35528,7 +35028,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 404 */ +/* 400 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -35663,7 +35163,7 @@ function isBuffer(val) { /***/ }), -/* 405 */ +/* 401 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35676,7 +35176,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(406); +var typeOf = __webpack_require__(402); // accessor descriptor properties var accessor = { @@ -35739,7 +35239,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 406 */ +/* 402 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -35874,7 +35374,7 @@ function isBuffer(val) { /***/ }), -/* 407 */ +/* 403 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35887,7 +35387,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(408); +var typeOf = __webpack_require__(404); module.exports = function isDataDescriptor(obj, prop) { // data descriptor properties @@ -35930,7 +35430,7 @@ module.exports = function isDataDescriptor(obj, prop) { /***/ }), -/* 408 */ +/* 404 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -36065,13 +35565,13 @@ function isBuffer(val) { /***/ }), -/* 409 */ +/* 405 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(410); +var utils = __webpack_require__(406); module.exports = function(braces, options) { braces.compiler @@ -36354,26 +35854,26 @@ function hasQueue(node) { /***/ }), -/* 410 */ +/* 406 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var splitString = __webpack_require__(411); +var splitString = __webpack_require__(407); var utils = module.exports; /** * Module dependencies */ -utils.define = __webpack_require__(402); -utils.extend = __webpack_require__(398); -utils.flatten = __webpack_require__(417); -utils.isObject = __webpack_require__(415); -utils.fillRange = __webpack_require__(418); -utils.repeat = __webpack_require__(423); -utils.unique = __webpack_require__(401); +utils.define = __webpack_require__(398); +utils.extend = __webpack_require__(394); +utils.flatten = __webpack_require__(413); +utils.isObject = __webpack_require__(411); +utils.fillRange = __webpack_require__(414); +utils.repeat = __webpack_require__(419); +utils.unique = __webpack_require__(397); /** * Returns true if the given string contains only empty brace sets. @@ -36696,7 +36196,7 @@ utils.escapeRegex = function(str) { /***/ }), -/* 411 */ +/* 407 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36709,7 +36209,7 @@ utils.escapeRegex = function(str) { -var extend = __webpack_require__(412); +var extend = __webpack_require__(408); module.exports = function(str, options, fn) { if (typeof str !== 'string') { @@ -36874,14 +36374,14 @@ function keepEscaping(opts, str, idx) { /***/ }), -/* 412 */ +/* 408 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(413); -var assignSymbols = __webpack_require__(416); +var isExtendable = __webpack_require__(409); +var assignSymbols = __webpack_require__(412); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { @@ -36941,7 +36441,7 @@ function isEnum(obj, key) { /***/ }), -/* 413 */ +/* 409 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36954,7 +36454,7 @@ function isEnum(obj, key) { -var isPlainObject = __webpack_require__(414); +var isPlainObject = __webpack_require__(410); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -36962,7 +36462,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 414 */ +/* 410 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36975,7 +36475,7 @@ module.exports = function isExtendable(val) { -var isObject = __webpack_require__(415); +var isObject = __webpack_require__(411); function isObjectObject(o) { return isObject(o) === true @@ -37006,7 +36506,7 @@ module.exports = function isPlainObject(o) { /***/ }), -/* 415 */ +/* 411 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37025,7 +36525,7 @@ module.exports = function isObject(val) { /***/ }), -/* 416 */ +/* 412 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37072,7 +36572,7 @@ module.exports = function(receiver, objects) { /***/ }), -/* 417 */ +/* 413 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37101,7 +36601,7 @@ function flat(arr, res) { /***/ }), -/* 418 */ +/* 414 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37115,10 +36615,10 @@ function flat(arr, res) { var util = __webpack_require__(29); -var isNumber = __webpack_require__(419); -var extend = __webpack_require__(398); -var repeat = __webpack_require__(421); -var toRegex = __webpack_require__(422); +var isNumber = __webpack_require__(415); +var extend = __webpack_require__(394); +var repeat = __webpack_require__(417); +var toRegex = __webpack_require__(418); /** * Return a range of numbers or letters. @@ -37316,7 +36816,7 @@ module.exports = fillRange; /***/ }), -/* 419 */ +/* 415 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37329,7 +36829,7 @@ module.exports = fillRange; -var typeOf = __webpack_require__(420); +var typeOf = __webpack_require__(416); module.exports = function isNumber(num) { var type = typeOf(num); @@ -37345,10 +36845,10 @@ module.exports = function isNumber(num) { /***/ }), -/* 420 */ +/* 416 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -37467,7 +36967,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 421 */ +/* 417 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37544,7 +37044,7 @@ function repeat(str, num) { /***/ }), -/* 422 */ +/* 418 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37557,8 +37057,8 @@ function repeat(str, num) { -var repeat = __webpack_require__(421); -var isNumber = __webpack_require__(419); +var repeat = __webpack_require__(417); +var isNumber = __webpack_require__(415); var cache = {}; function toRegexRange(min, max, options) { @@ -37845,7 +37345,7 @@ module.exports = toRegexRange; /***/ }), -/* 423 */ +/* 419 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37870,14 +37370,14 @@ module.exports = function repeat(ele, num) { /***/ }), -/* 424 */ +/* 420 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Node = __webpack_require__(425); -var utils = __webpack_require__(410); +var Node = __webpack_require__(421); +var utils = __webpack_require__(406); /** * Braces parsers @@ -38237,15 +37737,15 @@ function concatNodes(pos, node, parent, options) { /***/ }), -/* 425 */ +/* 421 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(415); -var define = __webpack_require__(402); -var utils = __webpack_require__(426); +var isObject = __webpack_require__(411); +var define = __webpack_require__(398); +var utils = __webpack_require__(422); var ownNames; /** @@ -38736,13 +38236,13 @@ exports = module.exports = Node; /***/ }), -/* 426 */ +/* 422 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(420); +var typeOf = __webpack_require__(416); var utils = module.exports; /** @@ -39762,16 +39262,16 @@ function assert(val, message) { /***/ }), -/* 427 */ +/* 423 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Snapdragon = __webpack_require__(428); -var compilers = __webpack_require__(409); -var parsers = __webpack_require__(424); -var utils = __webpack_require__(410); +var Snapdragon = __webpack_require__(424); +var compilers = __webpack_require__(405); +var parsers = __webpack_require__(420); +var utils = __webpack_require__(406); /** * Customize Snapdragon parser and renderer @@ -39882,17 +39382,17 @@ module.exports = Braces; /***/ }), -/* 428 */ +/* 424 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Base = __webpack_require__(429); -var define = __webpack_require__(477); -var Compiler = __webpack_require__(484); -var Parser = __webpack_require__(521); -var utils = __webpack_require__(501); +var Base = __webpack_require__(425); +var define = __webpack_require__(473); +var Compiler = __webpack_require__(480); +var Parser = __webpack_require__(517); +var utils = __webpack_require__(497); var regexCache = {}; var cache = {}; @@ -40063,20 +39563,20 @@ module.exports.Parser = Parser; /***/ }), -/* 429 */ +/* 425 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(29); -var define = __webpack_require__(402); -var CacheBase = __webpack_require__(430); -var Emitter = __webpack_require__(431); -var isObject = __webpack_require__(415); -var merge = __webpack_require__(449); -var pascal = __webpack_require__(452); -var cu = __webpack_require__(453); +var define = __webpack_require__(398); +var CacheBase = __webpack_require__(426); +var Emitter = __webpack_require__(427); +var isObject = __webpack_require__(411); +var merge = __webpack_require__(445); +var pascal = __webpack_require__(448); +var cu = __webpack_require__(449); /** * Optionally define a custom `cache` namespace to use. @@ -40505,21 +40005,21 @@ module.exports.namespace = namespace; /***/ }), -/* 430 */ +/* 426 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(415); -var Emitter = __webpack_require__(431); -var visit = __webpack_require__(432); -var toPath = __webpack_require__(435); -var union = __webpack_require__(436); -var del = __webpack_require__(440); -var get = __webpack_require__(438); -var has = __webpack_require__(445); -var set = __webpack_require__(448); +var isObject = __webpack_require__(411); +var Emitter = __webpack_require__(427); +var visit = __webpack_require__(428); +var toPath = __webpack_require__(431); +var union = __webpack_require__(432); +var del = __webpack_require__(436); +var get = __webpack_require__(434); +var has = __webpack_require__(441); +var set = __webpack_require__(444); /** * Create a `Cache` constructor that when instantiated will @@ -40773,7 +40273,7 @@ module.exports.namespace = namespace; /***/ }), -/* 431 */ +/* 427 */ /***/ (function(module, exports, __webpack_require__) { @@ -40942,7 +40442,7 @@ Emitter.prototype.hasListeners = function(event){ /***/ }), -/* 432 */ +/* 428 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40955,8 +40455,8 @@ Emitter.prototype.hasListeners = function(event){ -var visit = __webpack_require__(433); -var mapVisit = __webpack_require__(434); +var visit = __webpack_require__(429); +var mapVisit = __webpack_require__(430); module.exports = function(collection, method, val) { var result; @@ -40979,7 +40479,7 @@ module.exports = function(collection, method, val) { /***/ }), -/* 433 */ +/* 429 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40992,7 +40492,7 @@ module.exports = function(collection, method, val) { -var isObject = __webpack_require__(415); +var isObject = __webpack_require__(411); module.exports = function visit(thisArg, method, target, val) { if (!isObject(thisArg) && typeof thisArg !== 'function') { @@ -41019,14 +40519,14 @@ module.exports = function visit(thisArg, method, target, val) { /***/ }), -/* 434 */ +/* 430 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(29); -var visit = __webpack_require__(433); +var visit = __webpack_require__(429); /** * Map `visit` over an array of objects. @@ -41063,7 +40563,7 @@ function isObject(val) { /***/ }), -/* 435 */ +/* 431 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41076,7 +40576,7 @@ function isObject(val) { -var typeOf = __webpack_require__(420); +var typeOf = __webpack_require__(416); module.exports = function toPath(args) { if (typeOf(args) !== 'arguments') { @@ -41103,16 +40603,16 @@ function filter(arr) { /***/ }), -/* 436 */ +/* 432 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isObject = __webpack_require__(399); -var union = __webpack_require__(437); -var get = __webpack_require__(438); -var set = __webpack_require__(439); +var isObject = __webpack_require__(395); +var union = __webpack_require__(433); +var get = __webpack_require__(434); +var set = __webpack_require__(435); module.exports = function unionValue(obj, prop, value) { if (!isObject(obj)) { @@ -41140,7 +40640,7 @@ function arrayify(val) { /***/ }), -/* 437 */ +/* 433 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41176,7 +40676,7 @@ module.exports = function union(init) { /***/ }), -/* 438 */ +/* 434 */ /***/ (function(module, exports) { /*! @@ -41232,7 +40732,7 @@ function toString(val) { /***/ }), -/* 439 */ +/* 435 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41245,10 +40745,10 @@ function toString(val) { -var toPath = __webpack_require__(435); -var extend = __webpack_require__(398); -var isPlainObject = __webpack_require__(414); -var isObject = __webpack_require__(399); +var toPath = __webpack_require__(431); +var extend = __webpack_require__(394); +var isPlainObject = __webpack_require__(410); +var isObject = __webpack_require__(395); module.exports = function(obj, path, val) { if (!isObject(obj)) { @@ -41302,7 +40802,7 @@ module.exports = function(obj, path, val) { /***/ }), -/* 440 */ +/* 436 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41315,8 +40815,8 @@ module.exports = function(obj, path, val) { -var isObject = __webpack_require__(415); -var has = __webpack_require__(441); +var isObject = __webpack_require__(411); +var has = __webpack_require__(437); module.exports = function unset(obj, prop) { if (!isObject(obj)) { @@ -41341,7 +40841,7 @@ module.exports = function unset(obj, prop) { /***/ }), -/* 441 */ +/* 437 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41354,9 +40854,9 @@ module.exports = function unset(obj, prop) { -var isObject = __webpack_require__(442); -var hasValues = __webpack_require__(444); -var get = __webpack_require__(438); +var isObject = __webpack_require__(438); +var hasValues = __webpack_require__(440); +var get = __webpack_require__(434); module.exports = function(obj, prop, noZero) { if (isObject(obj)) { @@ -41367,7 +40867,7 @@ module.exports = function(obj, prop, noZero) { /***/ }), -/* 442 */ +/* 438 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41380,7 +40880,7 @@ module.exports = function(obj, prop, noZero) { -var isArray = __webpack_require__(443); +var isArray = __webpack_require__(439); module.exports = function isObject(val) { return val != null && typeof val === 'object' && isArray(val) === false; @@ -41388,7 +40888,7 @@ module.exports = function isObject(val) { /***/ }), -/* 443 */ +/* 439 */ /***/ (function(module, exports) { var toString = {}.toString; @@ -41399,7 +40899,7 @@ module.exports = Array.isArray || function (arr) { /***/ }), -/* 444 */ +/* 440 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41442,7 +40942,7 @@ module.exports = function hasValue(o, noZero) { /***/ }), -/* 445 */ +/* 441 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41455,9 +40955,9 @@ module.exports = function hasValue(o, noZero) { -var isObject = __webpack_require__(415); -var hasValues = __webpack_require__(446); -var get = __webpack_require__(438); +var isObject = __webpack_require__(411); +var hasValues = __webpack_require__(442); +var get = __webpack_require__(434); module.exports = function(val, prop) { return hasValues(isObject(val) && prop ? get(val, prop) : val); @@ -41465,7 +40965,7 @@ module.exports = function(val, prop) { /***/ }), -/* 446 */ +/* 442 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41478,8 +40978,8 @@ module.exports = function(val, prop) { -var typeOf = __webpack_require__(447); -var isNumber = __webpack_require__(419); +var typeOf = __webpack_require__(443); +var isNumber = __webpack_require__(415); module.exports = function hasValue(val) { // is-number checks for NaN and other edge cases @@ -41532,10 +41032,10 @@ module.exports = function hasValue(val) { /***/ }), -/* 447 */ +/* 443 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -41657,7 +41157,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 448 */ +/* 444 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41670,10 +41170,10 @@ module.exports = function kindOf(val) { -var split = __webpack_require__(411); -var extend = __webpack_require__(398); -var isPlainObject = __webpack_require__(414); -var isObject = __webpack_require__(399); +var split = __webpack_require__(407); +var extend = __webpack_require__(394); +var isPlainObject = __webpack_require__(410); +var isObject = __webpack_require__(395); module.exports = function(obj, prop, val) { if (!isObject(obj)) { @@ -41715,14 +41215,14 @@ module.exports = function(obj, prop, val) { /***/ }), -/* 449 */ +/* 445 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isExtendable = __webpack_require__(450); -var forIn = __webpack_require__(451); +var isExtendable = __webpack_require__(446); +var forIn = __webpack_require__(447); function mixinDeep(target, objects) { var len = arguments.length, i = 0; @@ -41771,7 +41271,7 @@ module.exports = mixinDeep; /***/ }), -/* 450 */ +/* 446 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41784,7 +41284,7 @@ module.exports = mixinDeep; -var isPlainObject = __webpack_require__(414); +var isPlainObject = __webpack_require__(410); module.exports = function isExtendable(val) { return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); @@ -41792,7 +41292,7 @@ module.exports = function isExtendable(val) { /***/ }), -/* 451 */ +/* 447 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -41815,7 +41315,7 @@ module.exports = function forIn(obj, fn, thisArg) { /***/ }), -/* 452 */ +/* 448 */ /***/ (function(module, exports) { /*! @@ -41842,14 +41342,14 @@ module.exports = pascalcase; /***/ }), -/* 453 */ +/* 449 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var util = __webpack_require__(29); -var utils = __webpack_require__(454); +var utils = __webpack_require__(450); /** * Expose class utils @@ -42214,7 +41714,7 @@ cu.bubble = function(Parent, events) { /***/ }), -/* 454 */ +/* 450 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42228,10 +41728,10 @@ var utils = {}; * Lazily required module dependencies */ -utils.union = __webpack_require__(437); -utils.define = __webpack_require__(455); -utils.isObj = __webpack_require__(415); -utils.staticExtend = __webpack_require__(462); +utils.union = __webpack_require__(433); +utils.define = __webpack_require__(451); +utils.isObj = __webpack_require__(411); +utils.staticExtend = __webpack_require__(458); /** @@ -42242,7 +41742,7 @@ module.exports = utils; /***/ }), -/* 455 */ +/* 451 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42255,7 +41755,7 @@ module.exports = utils; -var isDescriptor = __webpack_require__(456); +var isDescriptor = __webpack_require__(452); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -42280,7 +41780,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 456 */ +/* 452 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42293,9 +41793,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(457); -var isAccessor = __webpack_require__(458); -var isData = __webpack_require__(460); +var typeOf = __webpack_require__(453); +var isAccessor = __webpack_require__(454); +var isData = __webpack_require__(456); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -42309,7 +41809,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 457 */ +/* 453 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -42462,7 +41962,7 @@ function isBuffer(val) { /***/ }), -/* 458 */ +/* 454 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42475,7 +41975,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(459); +var typeOf = __webpack_require__(455); // accessor descriptor properties var accessor = { @@ -42538,10 +42038,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 459 */ +/* 455 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -42660,7 +42160,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 460 */ +/* 456 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42673,7 +42173,7 @@ module.exports = function kindOf(val) { -var typeOf = __webpack_require__(461); +var typeOf = __webpack_require__(457); // data descriptor properties var data = { @@ -42722,10 +42222,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 461 */ +/* 457 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -42844,7 +42344,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 462 */ +/* 458 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -42857,8 +42357,8 @@ module.exports = function kindOf(val) { -var copy = __webpack_require__(463); -var define = __webpack_require__(470); +var copy = __webpack_require__(459); +var define = __webpack_require__(466); var util = __webpack_require__(29); /** @@ -42941,15 +42441,15 @@ module.exports = extend; /***/ }), -/* 463 */ +/* 459 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var typeOf = __webpack_require__(420); -var copyDescriptor = __webpack_require__(464); -var define = __webpack_require__(465); +var typeOf = __webpack_require__(416); +var copyDescriptor = __webpack_require__(460); +var define = __webpack_require__(461); /** * Copy static properties, prototype properties, and descriptors from one object to another. @@ -43122,7 +42622,7 @@ module.exports.has = has; /***/ }), -/* 464 */ +/* 460 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43210,7 +42710,7 @@ function isObject(val) { /***/ }), -/* 465 */ +/* 461 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43223,7 +42723,7 @@ function isObject(val) { -var isDescriptor = __webpack_require__(466); +var isDescriptor = __webpack_require__(462); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -43248,7 +42748,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 466 */ +/* 462 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43261,9 +42761,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(467); -var isAccessor = __webpack_require__(468); -var isData = __webpack_require__(469); +var typeOf = __webpack_require__(463); +var isAccessor = __webpack_require__(464); +var isData = __webpack_require__(465); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -43277,7 +42777,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 467 */ +/* 463 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -43430,7 +42930,7 @@ function isBuffer(val) { /***/ }), -/* 468 */ +/* 464 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43443,7 +42943,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(420); +var typeOf = __webpack_require__(416); // accessor descriptor properties var accessor = { @@ -43506,7 +43006,7 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 469 */ +/* 465 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43519,7 +43019,7 @@ module.exports = isAccessorDescriptor; -var typeOf = __webpack_require__(420); +var typeOf = __webpack_require__(416); // data descriptor properties var data = { @@ -43568,7 +43068,7 @@ module.exports = isDataDescriptor; /***/ }), -/* 470 */ +/* 466 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43581,7 +43081,7 @@ module.exports = isDataDescriptor; -var isDescriptor = __webpack_require__(471); +var isDescriptor = __webpack_require__(467); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -43606,7 +43106,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 471 */ +/* 467 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43619,9 +43119,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(472); -var isAccessor = __webpack_require__(473); -var isData = __webpack_require__(475); +var typeOf = __webpack_require__(468); +var isAccessor = __webpack_require__(469); +var isData = __webpack_require__(471); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -43635,7 +43135,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 472 */ +/* 468 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -43788,7 +43288,7 @@ function isBuffer(val) { /***/ }), -/* 473 */ +/* 469 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43801,7 +43301,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(474); +var typeOf = __webpack_require__(470); // accessor descriptor properties var accessor = { @@ -43864,10 +43364,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 474 */ +/* 470 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -43986,7 +43486,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 475 */ +/* 471 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -43999,7 +43499,7 @@ module.exports = function kindOf(val) { -var typeOf = __webpack_require__(476); +var typeOf = __webpack_require__(472); // data descriptor properties var data = { @@ -44048,10 +43548,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 476 */ +/* 472 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -44170,7 +43670,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 477 */ +/* 473 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44183,7 +43683,7 @@ module.exports = function kindOf(val) { -var isDescriptor = __webpack_require__(478); +var isDescriptor = __webpack_require__(474); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -44208,7 +43708,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 478 */ +/* 474 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44221,9 +43721,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(479); -var isAccessor = __webpack_require__(480); -var isData = __webpack_require__(482); +var typeOf = __webpack_require__(475); +var isAccessor = __webpack_require__(476); +var isData = __webpack_require__(478); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -44237,7 +43737,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 479 */ +/* 475 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -44390,7 +43890,7 @@ function isBuffer(val) { /***/ }), -/* 480 */ +/* 476 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44403,7 +43903,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(481); +var typeOf = __webpack_require__(477); // accessor descriptor properties var accessor = { @@ -44466,10 +43966,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 481 */ +/* 477 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -44588,7 +44088,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 482 */ +/* 478 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44601,7 +44101,7 @@ module.exports = function kindOf(val) { -var typeOf = __webpack_require__(483); +var typeOf = __webpack_require__(479); // data descriptor properties var data = { @@ -44650,10 +44150,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 483 */ +/* 479 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -44772,16 +44272,16 @@ module.exports = function kindOf(val) { /***/ }), -/* 484 */ +/* 480 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(485); -var define = __webpack_require__(477); -var debug = __webpack_require__(494)('snapdragon:compiler'); -var utils = __webpack_require__(501); +var use = __webpack_require__(481); +var define = __webpack_require__(473); +var debug = __webpack_require__(490)('snapdragon:compiler'); +var utils = __webpack_require__(497); /** * Create a new `Compiler` with the given `options`. @@ -44935,7 +44435,7 @@ Compiler.prototype = { // source map support if (opts.sourcemap) { - var sourcemaps = __webpack_require__(520); + var sourcemaps = __webpack_require__(516); sourcemaps(this); this.mapVisit(this.ast.nodes); this.applySourceMaps(); @@ -44956,7 +44456,7 @@ module.exports = Compiler; /***/ }), -/* 485 */ +/* 481 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -44969,7 +44469,7 @@ module.exports = Compiler; -var utils = __webpack_require__(486); +var utils = __webpack_require__(482); module.exports = function base(app, opts) { if (!utils.isObject(app) && typeof app !== 'function') { @@ -45084,7 +44584,7 @@ module.exports = function base(app, opts) { /***/ }), -/* 486 */ +/* 482 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45098,8 +44598,8 @@ var utils = {}; * Lazily required module dependencies */ -utils.define = __webpack_require__(487); -utils.isObject = __webpack_require__(415); +utils.define = __webpack_require__(483); +utils.isObject = __webpack_require__(411); utils.isString = function(val) { @@ -45114,7 +44614,7 @@ module.exports = utils; /***/ }), -/* 487 */ +/* 483 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45127,7 +44627,7 @@ module.exports = utils; -var isDescriptor = __webpack_require__(488); +var isDescriptor = __webpack_require__(484); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -45152,7 +44652,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 488 */ +/* 484 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45165,9 +44665,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(489); -var isAccessor = __webpack_require__(490); -var isData = __webpack_require__(492); +var typeOf = __webpack_require__(485); +var isAccessor = __webpack_require__(486); +var isData = __webpack_require__(488); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -45181,7 +44681,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 489 */ +/* 485 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -45334,7 +44834,7 @@ function isBuffer(val) { /***/ }), -/* 490 */ +/* 486 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45347,7 +44847,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(491); +var typeOf = __webpack_require__(487); // accessor descriptor properties var accessor = { @@ -45410,10 +44910,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 491 */ +/* 487 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -45532,7 +45032,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 492 */ +/* 488 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45545,7 +45045,7 @@ module.exports = function kindOf(val) { -var typeOf = __webpack_require__(493); +var typeOf = __webpack_require__(489); // data descriptor properties var data = { @@ -45594,10 +45094,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 493 */ +/* 489 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -45716,7 +45216,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 494 */ +/* 490 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -45725,14 +45225,14 @@ module.exports = function kindOf(val) { */ if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__(495); + module.exports = __webpack_require__(491); } else { - module.exports = __webpack_require__(498); + module.exports = __webpack_require__(494); } /***/ }), -/* 495 */ +/* 491 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -45741,7 +45241,7 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(496); +exports = module.exports = __webpack_require__(492); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -45923,7 +45423,7 @@ function localstorage() { /***/ }), -/* 496 */ +/* 492 */ /***/ (function(module, exports, __webpack_require__) { @@ -45939,7 +45439,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(497); +exports.humanize = __webpack_require__(493); /** * The currently active debug mode names, and names to skip. @@ -46131,7 +45631,7 @@ function coerce(val) { /***/ }), -/* 497 */ +/* 493 */ /***/ (function(module, exports) { /** @@ -46289,14 +45789,14 @@ function plural(ms, n, name) { /***/ }), -/* 498 */ +/* 494 */ /***/ (function(module, exports, __webpack_require__) { /** * Module dependencies. */ -var tty = __webpack_require__(499); +var tty = __webpack_require__(495); var util = __webpack_require__(29); /** @@ -46305,7 +45805,7 @@ var util = __webpack_require__(29); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(496); +exports = module.exports = __webpack_require__(492); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -46484,7 +45984,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(500); + var net = __webpack_require__(496); stream = new net.Socket({ fd: fd, readable: false, @@ -46543,19 +46043,19 @@ exports.enable(load()); /***/ }), -/* 499 */ +/* 495 */ /***/ (function(module, exports) { module.exports = require("tty"); /***/ }), -/* 500 */ +/* 496 */ /***/ (function(module, exports) { module.exports = require("net"); /***/ }), -/* 501 */ +/* 497 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46565,9 +46065,9 @@ module.exports = require("net"); * Module dependencies */ -exports.extend = __webpack_require__(398); -exports.SourceMap = __webpack_require__(502); -exports.sourceMapResolve = __webpack_require__(513); +exports.extend = __webpack_require__(394); +exports.SourceMap = __webpack_require__(498); +exports.sourceMapResolve = __webpack_require__(509); /** * Convert backslash in the given string to forward slashes @@ -46610,7 +46110,7 @@ exports.last = function(arr, n) { /***/ }), -/* 502 */ +/* 498 */ /***/ (function(module, exports, __webpack_require__) { /* @@ -46618,13 +46118,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__(503).SourceMapGenerator; -exports.SourceMapConsumer = __webpack_require__(509).SourceMapConsumer; -exports.SourceNode = __webpack_require__(512).SourceNode; +exports.SourceMapGenerator = __webpack_require__(499).SourceMapGenerator; +exports.SourceMapConsumer = __webpack_require__(505).SourceMapConsumer; +exports.SourceNode = __webpack_require__(508).SourceNode; /***/ }), -/* 503 */ +/* 499 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -46634,10 +46134,10 @@ exports.SourceNode = __webpack_require__(512).SourceNode; * http://opensource.org/licenses/BSD-3-Clause */ -var base64VLQ = __webpack_require__(504); -var util = __webpack_require__(506); -var ArraySet = __webpack_require__(507).ArraySet; -var MappingList = __webpack_require__(508).MappingList; +var base64VLQ = __webpack_require__(500); +var util = __webpack_require__(502); +var ArraySet = __webpack_require__(503).ArraySet; +var MappingList = __webpack_require__(504).MappingList; /** * An instance of the SourceMapGenerator represents a source map which is @@ -47046,7 +46546,7 @@ exports.SourceMapGenerator = SourceMapGenerator; /***/ }), -/* 504 */ +/* 500 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -47086,7 +46586,7 @@ exports.SourceMapGenerator = SourceMapGenerator; * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -var base64 = __webpack_require__(505); +var base64 = __webpack_require__(501); // 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, @@ -47192,7 +46692,7 @@ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { /***/ }), -/* 505 */ +/* 501 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -47265,7 +46765,7 @@ exports.decode = function (charCode) { /***/ }), -/* 506 */ +/* 502 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -47688,7 +47188,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate /***/ }), -/* 507 */ +/* 503 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -47698,7 +47198,7 @@ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflate * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(506); +var util = __webpack_require__(502); var has = Object.prototype.hasOwnProperty; var hasNativeMap = typeof Map !== "undefined"; @@ -47815,7 +47315,7 @@ exports.ArraySet = ArraySet; /***/ }), -/* 508 */ +/* 504 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -47825,7 +47325,7 @@ exports.ArraySet = ArraySet; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(506); +var util = __webpack_require__(502); /** * Determine whether mappingB is after mappingA with respect to generated @@ -47900,7 +47400,7 @@ exports.MappingList = MappingList; /***/ }), -/* 509 */ +/* 505 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -47910,11 +47410,11 @@ exports.MappingList = MappingList; * http://opensource.org/licenses/BSD-3-Clause */ -var util = __webpack_require__(506); -var binarySearch = __webpack_require__(510); -var ArraySet = __webpack_require__(507).ArraySet; -var base64VLQ = __webpack_require__(504); -var quickSort = __webpack_require__(511).quickSort; +var util = __webpack_require__(502); +var binarySearch = __webpack_require__(506); +var ArraySet = __webpack_require__(503).ArraySet; +var base64VLQ = __webpack_require__(500); +var quickSort = __webpack_require__(507).quickSort; function SourceMapConsumer(aSourceMap) { var sourceMap = aSourceMap; @@ -48988,7 +48488,7 @@ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; /***/ }), -/* 510 */ +/* 506 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -49105,7 +48605,7 @@ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { /***/ }), -/* 511 */ +/* 507 */ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -49225,7 +48725,7 @@ exports.quickSort = function (ary, comparator) { /***/ }), -/* 512 */ +/* 508 */ /***/ (function(module, exports, __webpack_require__) { /* -*- Mode: js; js-indent-level: 2; -*- */ @@ -49235,8 +48735,8 @@ exports.quickSort = function (ary, comparator) { * http://opensource.org/licenses/BSD-3-Clause */ -var SourceMapGenerator = __webpack_require__(503).SourceMapGenerator; -var util = __webpack_require__(506); +var SourceMapGenerator = __webpack_require__(499).SourceMapGenerator; +var util = __webpack_require__(502); // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other // operating systems these days (capturing the result). @@ -49644,17 +49144,17 @@ exports.SourceNode = SourceNode; /***/ }), -/* 513 */ +/* 509 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014, 2015, 2016, 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var sourceMappingURL = __webpack_require__(514) -var resolveUrl = __webpack_require__(515) -var decodeUriComponent = __webpack_require__(516) -var urix = __webpack_require__(518) -var atob = __webpack_require__(519) +var sourceMappingURL = __webpack_require__(510) +var resolveUrl = __webpack_require__(511) +var decodeUriComponent = __webpack_require__(512) +var urix = __webpack_require__(514) +var atob = __webpack_require__(515) @@ -49952,7 +49452,7 @@ module.exports = { /***/ }), -/* 514 */ +/* 510 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright 2014 Simon Lydell @@ -50015,13 +49515,13 @@ void (function(root, factory) { /***/ }), -/* 515 */ +/* 511 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var url = __webpack_require__(74) +var url = __webpack_require__(73) function resolveUrl(/* ...urls */) { return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) { @@ -50033,13 +49533,13 @@ module.exports = resolveUrl /***/ }), -/* 516 */ +/* 512 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2017 Simon Lydell // X11 (“MIT”) Licensed. (See LICENSE.) -var decodeUriComponent = __webpack_require__(517) +var decodeUriComponent = __webpack_require__(513) function customDecodeUriComponent(string) { // `decodeUriComponent` turns `+` into ` `, but that's not wanted. @@ -50050,7 +49550,7 @@ module.exports = customDecodeUriComponent /***/ }), -/* 517 */ +/* 513 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50151,7 +49651,7 @@ module.exports = function (encodedURI) { /***/ }), -/* 518 */ +/* 514 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2014 Simon Lydell @@ -50174,7 +49674,7 @@ module.exports = urix /***/ }), -/* 519 */ +/* 515 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50188,7 +49688,7 @@ module.exports = atob.atob = atob; /***/ }), -/* 520 */ +/* 516 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50196,8 +49696,8 @@ module.exports = atob.atob = atob; var fs = __webpack_require__(23); var path = __webpack_require__(16); -var define = __webpack_require__(477); -var utils = __webpack_require__(501); +var define = __webpack_require__(473); +var utils = __webpack_require__(497); /** * Expose `mixin()`. @@ -50340,19 +49840,19 @@ exports.comment = function(node) { /***/ }), -/* 521 */ +/* 517 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var use = __webpack_require__(485); +var use = __webpack_require__(481); var util = __webpack_require__(29); -var Cache = __webpack_require__(522); -var define = __webpack_require__(477); -var debug = __webpack_require__(494)('snapdragon:parser'); -var Position = __webpack_require__(523); -var utils = __webpack_require__(501); +var Cache = __webpack_require__(518); +var define = __webpack_require__(473); +var debug = __webpack_require__(490)('snapdragon:parser'); +var Position = __webpack_require__(519); +var utils = __webpack_require__(497); /** * Create a new `Parser` with the given `input` and `options`. @@ -50880,7 +50380,7 @@ module.exports = Parser; /***/ }), -/* 522 */ +/* 518 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50987,13 +50487,13 @@ MapCache.prototype.del = function mapDelete(key) { /***/ }), -/* 523 */ +/* 519 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var define = __webpack_require__(477); +var define = __webpack_require__(473); /** * Store position for a node @@ -51008,14 +50508,14 @@ module.exports = function Position(start, parser) { /***/ }), -/* 524 */ +/* 520 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var nanomatch = __webpack_require__(525); -var extglob = __webpack_require__(535); +var nanomatch = __webpack_require__(521); +var extglob = __webpack_require__(531); module.exports = function(snapdragon) { var compilers = snapdragon.compiler.compilers; @@ -51092,7 +50592,7 @@ function escapeExtglobs(compiler) { /***/ }), -/* 525 */ +/* 521 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51103,17 +50603,17 @@ function escapeExtglobs(compiler) { */ var util = __webpack_require__(29); -var toRegex = __webpack_require__(389); -var extend = __webpack_require__(398); +var toRegex = __webpack_require__(385); +var extend = __webpack_require__(394); /** * Local dependencies */ -var compilers = __webpack_require__(526); -var parsers = __webpack_require__(527); -var cache = __webpack_require__(529); -var utils = __webpack_require__(531); +var compilers = __webpack_require__(522); +var parsers = __webpack_require__(523); +var cache = __webpack_require__(525); +var utils = __webpack_require__(527); var MAX_LENGTH = 1024 * 64; /** @@ -51942,7 +51442,7 @@ module.exports = nanomatch; /***/ }), -/* 526 */ +/* 522 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52268,15 +51768,15 @@ module.exports = function(nanomatch, options) { /***/ }), -/* 527 */ +/* 523 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regexNot = __webpack_require__(400); -var toRegex = __webpack_require__(389); -var isOdd = __webpack_require__(528); +var regexNot = __webpack_require__(396); +var toRegex = __webpack_require__(385); +var isOdd = __webpack_require__(524); /** * Characters to use in negation regex (we want to "not" match @@ -52663,7 +52163,7 @@ module.exports.not = NOT_REGEX; /***/ }), -/* 528 */ +/* 524 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52676,7 +52176,7 @@ module.exports.not = NOT_REGEX; -var isNumber = __webpack_require__(419); +var isNumber = __webpack_require__(415); module.exports = function isOdd(i) { if (!isNumber(i)) { @@ -52690,14 +52190,14 @@ module.exports = function isOdd(i) { /***/ }), -/* 529 */ +/* 525 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(530))(); +module.exports = new (__webpack_require__(526))(); /***/ }), -/* 530 */ +/* 526 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52710,7 +52210,7 @@ module.exports = new (__webpack_require__(530))(); -var MapCache = __webpack_require__(522); +var MapCache = __webpack_require__(518); /** * Create a new `FragmentCache` with an optional object to use for `caches`. @@ -52832,7 +52332,7 @@ exports = module.exports = FragmentCache; /***/ }), -/* 531 */ +/* 527 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52845,13 +52345,13 @@ var path = __webpack_require__(16); * Module dependencies */ -var Snapdragon = __webpack_require__(428); -utils.define = __webpack_require__(402); -utils.diff = __webpack_require__(532); -utils.extend = __webpack_require__(398); -utils.pick = __webpack_require__(533); -utils.typeOf = __webpack_require__(534); -utils.unique = __webpack_require__(401); +var Snapdragon = __webpack_require__(424); +utils.define = __webpack_require__(398); +utils.diff = __webpack_require__(528); +utils.extend = __webpack_require__(394); +utils.pick = __webpack_require__(529); +utils.typeOf = __webpack_require__(530); +utils.unique = __webpack_require__(397); /** * Returns true if the given value is effectively an empty string @@ -53217,7 +52717,7 @@ utils.unixify = function(options) { /***/ }), -/* 532 */ +/* 528 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53271,7 +52771,7 @@ function diffArray(one, two) { /***/ }), -/* 533 */ +/* 529 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53284,7 +52784,7 @@ function diffArray(one, two) { -var isObject = __webpack_require__(415); +var isObject = __webpack_require__(411); module.exports = function pick(obj, keys) { if (!isObject(obj) && typeof obj !== 'function') { @@ -53313,7 +52813,7 @@ module.exports = function pick(obj, keys) { /***/ }), -/* 534 */ +/* 530 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -53466,7 +52966,7 @@ function isBuffer(val) { /***/ }), -/* 535 */ +/* 531 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53476,18 +52976,18 @@ function isBuffer(val) { * Module dependencies */ -var extend = __webpack_require__(398); -var unique = __webpack_require__(401); -var toRegex = __webpack_require__(389); +var extend = __webpack_require__(394); +var unique = __webpack_require__(397); +var toRegex = __webpack_require__(385); /** * Local dependencies */ -var compilers = __webpack_require__(536); -var parsers = __webpack_require__(549); -var Extglob = __webpack_require__(551); -var utils = __webpack_require__(550); +var compilers = __webpack_require__(532); +var parsers = __webpack_require__(545); +var Extglob = __webpack_require__(547); +var utils = __webpack_require__(546); var MAX_LENGTH = 1024 * 64; /** @@ -53804,13 +53304,13 @@ module.exports = extglob; /***/ }), -/* 536 */ +/* 532 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(537); +var brackets = __webpack_require__(533); /** * Extglob compilers @@ -53980,7 +53480,7 @@ module.exports = function(extglob) { /***/ }), -/* 537 */ +/* 533 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53990,17 +53490,17 @@ module.exports = function(extglob) { * Local dependencies */ -var compilers = __webpack_require__(538); -var parsers = __webpack_require__(540); +var compilers = __webpack_require__(534); +var parsers = __webpack_require__(536); /** * Module dependencies */ -var debug = __webpack_require__(494)('expand-brackets'); -var extend = __webpack_require__(398); -var Snapdragon = __webpack_require__(428); -var toRegex = __webpack_require__(389); +var debug = __webpack_require__(490)('expand-brackets'); +var extend = __webpack_require__(394); +var Snapdragon = __webpack_require__(424); +var toRegex = __webpack_require__(385); /** * Parses the given POSIX character class `pattern` and returns a @@ -54198,13 +53698,13 @@ module.exports = brackets; /***/ }), -/* 538 */ +/* 534 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var posix = __webpack_require__(539); +var posix = __webpack_require__(535); module.exports = function(brackets) { brackets.compiler @@ -54292,7 +53792,7 @@ module.exports = function(brackets) { /***/ }), -/* 539 */ +/* 535 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54321,14 +53821,14 @@ module.exports = { /***/ }), -/* 540 */ +/* 536 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(541); -var define = __webpack_require__(542); +var utils = __webpack_require__(537); +var define = __webpack_require__(538); /** * Text regex @@ -54547,14 +54047,14 @@ module.exports.TEXT_REGEX = TEXT_REGEX; /***/ }), -/* 541 */ +/* 537 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var toRegex = __webpack_require__(389); -var regexNot = __webpack_require__(400); +var toRegex = __webpack_require__(385); +var regexNot = __webpack_require__(396); var cached; /** @@ -54588,7 +54088,7 @@ exports.createRegex = function(pattern, include) { /***/ }), -/* 542 */ +/* 538 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54601,7 +54101,7 @@ exports.createRegex = function(pattern, include) { -var isDescriptor = __webpack_require__(543); +var isDescriptor = __webpack_require__(539); module.exports = function defineProperty(obj, prop, val) { if (typeof obj !== 'object' && typeof obj !== 'function') { @@ -54626,7 +54126,7 @@ module.exports = function defineProperty(obj, prop, val) { /***/ }), -/* 543 */ +/* 539 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54639,9 +54139,9 @@ module.exports = function defineProperty(obj, prop, val) { -var typeOf = __webpack_require__(544); -var isAccessor = __webpack_require__(545); -var isData = __webpack_require__(547); +var typeOf = __webpack_require__(540); +var isAccessor = __webpack_require__(541); +var isData = __webpack_require__(543); module.exports = function isDescriptor(obj, key) { if (typeOf(obj) !== 'object') { @@ -54655,7 +54155,7 @@ module.exports = function isDescriptor(obj, key) { /***/ }), -/* 544 */ +/* 540 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -54808,7 +54308,7 @@ function isBuffer(val) { /***/ }), -/* 545 */ +/* 541 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54821,7 +54321,7 @@ function isBuffer(val) { -var typeOf = __webpack_require__(546); +var typeOf = __webpack_require__(542); // accessor descriptor properties var accessor = { @@ -54884,10 +54384,10 @@ module.exports = isAccessorDescriptor; /***/ }), -/* 546 */ +/* 542 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -55006,7 +54506,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 547 */ +/* 543 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55019,7 +54519,7 @@ module.exports = function kindOf(val) { -var typeOf = __webpack_require__(548); +var typeOf = __webpack_require__(544); // data descriptor properties var data = { @@ -55068,10 +54568,10 @@ module.exports = isDataDescriptor; /***/ }), -/* 548 */ +/* 544 */ /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__(395); +var isBuffer = __webpack_require__(391); var toString = Object.prototype.toString; /** @@ -55190,15 +54690,15 @@ module.exports = function kindOf(val) { /***/ }), -/* 549 */ +/* 545 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var brackets = __webpack_require__(537); -var define = __webpack_require__(402); -var utils = __webpack_require__(550); +var brackets = __webpack_require__(533); +var define = __webpack_require__(398); +var utils = __webpack_require__(546); /** * Characters to use in text regex (we want to "not" match @@ -55353,14 +54853,14 @@ module.exports = parsers; /***/ }), -/* 550 */ +/* 546 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var regex = __webpack_require__(400); -var Cache = __webpack_require__(530); +var regex = __webpack_require__(396); +var Cache = __webpack_require__(526); /** * Utils @@ -55429,7 +54929,7 @@ utils.createRegex = function(str) { /***/ }), -/* 551 */ +/* 547 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55439,16 +54939,16 @@ utils.createRegex = function(str) { * Module dependencies */ -var Snapdragon = __webpack_require__(428); -var define = __webpack_require__(402); -var extend = __webpack_require__(398); +var Snapdragon = __webpack_require__(424); +var define = __webpack_require__(398); +var extend = __webpack_require__(394); /** * Local dependencies */ -var compilers = __webpack_require__(536); -var parsers = __webpack_require__(549); +var compilers = __webpack_require__(532); +var parsers = __webpack_require__(545); /** * Customize Snapdragon parser and renderer @@ -55514,16 +55014,16 @@ module.exports = Extglob; /***/ }), -/* 552 */ +/* 548 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var extglob = __webpack_require__(535); -var nanomatch = __webpack_require__(525); -var regexNot = __webpack_require__(400); -var toRegex = __webpack_require__(389); +var extglob = __webpack_require__(531); +var nanomatch = __webpack_require__(521); +var regexNot = __webpack_require__(396); +var toRegex = __webpack_require__(385); var not; /** @@ -55604,14 +55104,14 @@ function textRegex(pattern) { /***/ }), -/* 553 */ +/* 549 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__(530))(); +module.exports = new (__webpack_require__(526))(); /***/ }), -/* 554 */ +/* 550 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55624,13 +55124,13 @@ var path = __webpack_require__(16); * Module dependencies */ -var Snapdragon = __webpack_require__(428); -utils.define = __webpack_require__(402); -utils.diff = __webpack_require__(532); -utils.extend = __webpack_require__(398); -utils.pick = __webpack_require__(533); -utils.typeOf = __webpack_require__(555); -utils.unique = __webpack_require__(401); +var Snapdragon = __webpack_require__(424); +utils.define = __webpack_require__(398); +utils.diff = __webpack_require__(528); +utils.extend = __webpack_require__(394); +utils.pick = __webpack_require__(529); +utils.typeOf = __webpack_require__(551); +utils.unique = __webpack_require__(397); /** * Returns true if the platform is windows, or `path.sep` is `\\`. @@ -55927,7 +55427,7 @@ utils.unixify = function(options) { /***/ }), -/* 555 */ +/* 551 */ /***/ (function(module, exports) { var toString = Object.prototype.toString; @@ -56062,7 +55562,7 @@ function isBuffer(val) { /***/ }), -/* 556 */ +/* 552 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56078,8 +55578,8 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(557); -var reader_1 = __webpack_require__(570); +var readdir = __webpack_require__(553); +var reader_1 = __webpack_require__(566); var ReaderAsync = /** @class */ (function (_super) { __extends(ReaderAsync, _super); function ReaderAsync() { @@ -56115,15 +55615,15 @@ exports.default = ReaderAsync; /***/ }), -/* 557 */ +/* 553 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const readdirSync = __webpack_require__(558); -const readdirAsync = __webpack_require__(566); -const readdirStream = __webpack_require__(569); +const readdirSync = __webpack_require__(554); +const readdirAsync = __webpack_require__(562); +const readdirStream = __webpack_require__(565); module.exports = exports = readdirAsyncPath; exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath; @@ -56207,7 +55707,7 @@ function readdirStreamStat (dir, options) { /***/ }), -/* 558 */ +/* 554 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56215,11 +55715,11 @@ function readdirStreamStat (dir, options) { module.exports = readdirSync; -const DirectoryReader = __webpack_require__(559); +const DirectoryReader = __webpack_require__(555); let syncFacade = { - fs: __webpack_require__(564), - forEach: __webpack_require__(565), + fs: __webpack_require__(560), + forEach: __webpack_require__(561), sync: true }; @@ -56248,7 +55748,7 @@ function readdirSync (dir, options, internalOptions) { /***/ }), -/* 559 */ +/* 555 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56257,9 +55757,9 @@ function readdirSync (dir, options, internalOptions) { const Readable = __webpack_require__(28).Readable; const EventEmitter = __webpack_require__(45).EventEmitter; const path = __webpack_require__(16); -const normalizeOptions = __webpack_require__(560); -const stat = __webpack_require__(562); -const call = __webpack_require__(563); +const normalizeOptions = __webpack_require__(556); +const stat = __webpack_require__(558); +const call = __webpack_require__(559); /** * Asynchronously reads the contents of a directory and streams the results @@ -56635,14 +56135,14 @@ module.exports = DirectoryReader; /***/ }), -/* 560 */ +/* 556 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const globToRegExp = __webpack_require__(561); +const globToRegExp = __webpack_require__(557); module.exports = normalizeOptions; @@ -56819,7 +56319,7 @@ function normalizeOptions (options, internalOptions) { /***/ }), -/* 561 */ +/* 557 */ /***/ (function(module, exports) { module.exports = function (glob, opts) { @@ -56956,13 +56456,13 @@ module.exports = function (glob, opts) { /***/ }), -/* 562 */ +/* 558 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const call = __webpack_require__(563); +const call = __webpack_require__(559); module.exports = stat; @@ -57037,7 +56537,7 @@ function symlinkStat (fs, path, lstats, callback) { /***/ }), -/* 563 */ +/* 559 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57098,14 +56598,14 @@ function callOnce (fn) { /***/ }), -/* 564 */ +/* 560 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(23); -const call = __webpack_require__(563); +const call = __webpack_require__(559); /** * A facade around {@link fs.readdirSync} that allows it to be called @@ -57169,7 +56669,7 @@ exports.lstat = function (path, callback) { /***/ }), -/* 565 */ +/* 561 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57198,7 +56698,7 @@ function syncForEach (array, iterator, done) { /***/ }), -/* 566 */ +/* 562 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57206,12 +56706,12 @@ function syncForEach (array, iterator, done) { module.exports = readdirAsync; -const maybe = __webpack_require__(567); -const DirectoryReader = __webpack_require__(559); +const maybe = __webpack_require__(563); +const DirectoryReader = __webpack_require__(555); let asyncFacade = { fs: __webpack_require__(23), - forEach: __webpack_require__(568), + forEach: __webpack_require__(564), async: true }; @@ -57253,7 +56753,7 @@ function readdirAsync (dir, options, callback, internalOptions) { /***/ }), -/* 567 */ +/* 563 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57280,7 +56780,7 @@ module.exports = function maybe (cb, promise) { /***/ }), -/* 568 */ +/* 564 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57316,7 +56816,7 @@ function asyncForEach (array, iterator, done) { /***/ }), -/* 569 */ +/* 565 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57324,11 +56824,11 @@ function asyncForEach (array, iterator, done) { module.exports = readdirStream; -const DirectoryReader = __webpack_require__(559); +const DirectoryReader = __webpack_require__(555); let streamFacade = { fs: __webpack_require__(23), - forEach: __webpack_require__(568), + forEach: __webpack_require__(564), async: true }; @@ -57348,15 +56848,15 @@ function readdirStream (dir, options, internalOptions) { /***/ }), -/* 570 */ +/* 566 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(16); -var deep_1 = __webpack_require__(571); -var entry_1 = __webpack_require__(574); +var deep_1 = __webpack_require__(567); +var entry_1 = __webpack_require__(570); var Reader = /** @class */ (function () { function Reader(options) { this.options = options; @@ -57422,15 +56922,15 @@ exports.default = Reader; /***/ }), -/* 571 */ +/* 567 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var arrayUtils = __webpack_require__(572); -var pathUtils = __webpack_require__(573); -var patternUtils = __webpack_require__(382); +var arrayUtils = __webpack_require__(568); +var pathUtils = __webpack_require__(569); +var patternUtils = __webpack_require__(378); var DeepFilter = /** @class */ (function () { function DeepFilter(options, micromatchOptions) { this.options = options; @@ -57505,7 +57005,7 @@ exports.default = DeepFilter; /***/ }), -/* 572 */ +/* 568 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57528,7 +57028,7 @@ exports.max = max; /***/ }), -/* 573 */ +/* 569 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57546,13 +57046,13 @@ exports.isDotDirectory = isDotDirectory; /***/ }), -/* 574 */ +/* 570 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var patternUtils = __webpack_require__(382); +var patternUtils = __webpack_require__(378); var DeepFilter = /** @class */ (function () { function DeepFilter(options, micromatchOptions) { this.options = options; @@ -57624,7 +57124,7 @@ exports.default = DeepFilter; /***/ }), -/* 575 */ +/* 571 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57641,8 +57141,8 @@ var __extends = (this && this.__extends) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); var stream = __webpack_require__(28); -var readdir = __webpack_require__(557); -var reader_1 = __webpack_require__(570); +var readdir = __webpack_require__(553); +var reader_1 = __webpack_require__(566); var TransformStream = /** @class */ (function (_super) { __extends(TransformStream, _super); function TransformStream(reader) { @@ -57685,7 +57185,7 @@ exports.default = ReaderStream; /***/ }), -/* 576 */ +/* 572 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57701,8 +57201,8 @@ var __extends = (this && this.__extends) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__(557); -var reader_1 = __webpack_require__(570); +var readdir = __webpack_require__(553); +var reader_1 = __webpack_require__(566); var ReaderSync = /** @class */ (function (_super) { __extends(ReaderSync, _super); function ReaderSync() { @@ -57737,13 +57237,13 @@ exports.default = ReaderSync; /***/ }), -/* 577 */ +/* 573 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); -const arrify = __webpack_require__(374); +const arrify = __webpack_require__(370); const pathType = __webpack_require__(63); const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; @@ -57792,17 +57292,17 @@ module.exports.sync = (input, opts) => { /***/ }), -/* 578 */ +/* 574 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(23); const path = __webpack_require__(16); -const fastGlob = __webpack_require__(376); -const gitIgnore = __webpack_require__(579); -const pify = __webpack_require__(580); -const slash = __webpack_require__(581); +const fastGlob = __webpack_require__(372); +const gitIgnore = __webpack_require__(575); +const pify = __webpack_require__(62); +const slash = __webpack_require__(576); const DEFAULT_IGNORE = [ '**/node_modules/**', @@ -57894,7 +57394,7 @@ module.exports.sync = o => { /***/ }), -/* 579 */ +/* 575 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58326,98 +57826,7 @@ typeof process !== 'undefined' && (process.env && process.env.IGNORE_TEST_WIN32 /***/ }), -/* 580 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const processFn = (fn, opts) => function () { - const P = opts.promiseModule; - const args = new Array(arguments.length); - - for (let i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P((resolve, reject) => { - if (opts.errorFirst) { - args.push(function (err, result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - if (err) { - results.unshift(err); - reject(results); - } else { - resolve(results); - } - } else if (err) { - reject(err); - } else { - resolve(result); - } - }); - } else { - args.push(function (result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 0; i < arguments.length; i++) { - results[i] = arguments[i]; - } - - resolve(results); - } else { - resolve(result); - } - }); - } - - fn.apply(this, args); - }); -}; - -module.exports = (obj, opts) => { - opts = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, opts); - - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - let ret; - if (typeof obj === 'function') { - ret = function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, opts).apply(this, arguments); - }; - } else { - ret = Object.create(Object.getPrototypeOf(obj)); - } - - for (const key in obj) { // eslint-disable-line guard-for-in - const x = obj[key]; - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x; - } - - return ret; -}; - - -/***/ }), -/* 581 */ +/* 576 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58435,17 +57844,17 @@ module.exports = function (str) { /***/ }), -/* 582 */ +/* 577 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const path = __webpack_require__(16); const fsConstants = __webpack_require__(23).constants; -const {Buffer} = __webpack_require__(583); -const CpFileError = __webpack_require__(585); -const fs = __webpack_require__(587); -const ProgressEmitter = __webpack_require__(589); +const {Buffer} = __webpack_require__(578); +const CpFileError = __webpack_require__(580); +const fs = __webpack_require__(582); +const ProgressEmitter = __webpack_require__(583); module.exports = (src, dest, opts) => { if (!src || !dest) { @@ -58595,11 +58004,11 @@ module.exports.sync = (src, dest, opts) => { /***/ }), -/* 583 */ +/* 578 */ /***/ (function(module, exports, __webpack_require__) { /* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(584) +var buffer = __webpack_require__(579) var Buffer = buffer.Buffer // alternative to using Object.keys for old browsers @@ -58663,18 +58072,18 @@ SafeBuffer.allocUnsafeSlow = function (size) { /***/ }), -/* 584 */ +/* 579 */ /***/ (function(module, exports) { module.exports = require("buffer"); /***/ }), -/* 585 */ +/* 580 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(586); +const NestedError = __webpack_require__(581); class CpFileError extends NestedError { constructor(message, nested) { @@ -58688,7 +58097,7 @@ module.exports = CpFileError; /***/ }), -/* 586 */ +/* 581 */ /***/ (function(module, exports, __webpack_require__) { var inherits = __webpack_require__(43); @@ -58742,15 +58151,15 @@ module.exports = NestedError; /***/ }), -/* 587 */ +/* 582 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; const fs = __webpack_require__(22); -const makeDir = __webpack_require__(91); -const pify = __webpack_require__(588); -const CpFileError = __webpack_require__(585); +const makeDir = __webpack_require__(90); +const pify = __webpack_require__(62); +const CpFileError = __webpack_require__(580); const fsP = pify(fs); @@ -58895,98 +58304,7 @@ if (fs.copyFileSync) { /***/ }), -/* 588 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const processFn = (fn, opts) => function () { - const P = opts.promiseModule; - const args = new Array(arguments.length); - - for (let i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P((resolve, reject) => { - if (opts.errorFirst) { - args.push(function (err, result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - if (err) { - results.unshift(err); - reject(results); - } else { - resolve(results); - } - } else if (err) { - reject(err); - } else { - resolve(result); - } - }); - } else { - args.push(function (result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 0; i < arguments.length; i++) { - results[i] = arguments[i]; - } - - resolve(results); - } else { - resolve(result); - } - }); - } - - fn.apply(this, args); - }); -}; - -module.exports = (obj, opts) => { - opts = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, opts); - - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - let ret; - if (typeof obj === 'function') { - ret = function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, opts).apply(this, arguments); - }; - } else { - ret = Object.create(Object.getPrototypeOf(obj)); - } - - for (const key in obj) { // eslint-disable-line guard-for-in - const x = obj[key]; - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x; - } - - return ret; -}; - - -/***/ }), -/* 589 */ +/* 583 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59027,12 +58345,12 @@ module.exports = ProgressEmitter; /***/ }), -/* 590 */ +/* 584 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -const NestedError = __webpack_require__(586); +const NestedError = __webpack_require__(581); class CpyError extends NestedError { constructor(message, nested) { @@ -59046,75 +58364,67 @@ module.exports = CpyError; /***/ }), -/* 591 */ -/***/ (function(module, exports, __webpack_require__) { +/* 585 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prepareExternalProjectDependencies", function() { return prepareExternalProjectDependencies; }); +/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); +/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53); +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.prepareExternalProjectDependencies = undefined; +/** + * All external projects are located within `../kibana-extra/{plugin}` relative + * to Kibana itself. + */ +const isKibanaDep = depVersion => depVersion.includes('../../kibana/'); /** * This prepares the dependencies for an _external_ project. */ -let prepareExternalProjectDependencies = exports.prepareExternalProjectDependencies = (() => { - var _ref = _asyncToGenerator(function* (projectPath) { - const project = yield _project.Project.fromPath(projectPath); - if (!project.hasDependencies()) { - return; - } - const deps = project.allDependencies; - for (const depName of Object.keys(deps)) { - const depVersion = deps[depName]; - // Kibana currently only supports `link:` dependencies on Kibana's own - // packages, as these are packaged into the `node_modules` folder when - // Kibana is built, so we don't need to take any action to enable - // `require(...)` to resolve for these packages. - if ((0, _package_json.isLinkDependency)(depVersion) && !isKibanaDep(depVersion)) { - // For non-Kibana packages we need to set up symlinks during the - // installation process, but this is not something we support yet. - throw new Error('This plugin is using `link:` dependencies for non-Kibana packages'); - } - } - }); - return function prepareExternalProjectDependencies(_x) { - return _ref.apply(this, arguments); - }; -})(); -var _package_json = __webpack_require__(54); +async function prepareExternalProjectDependencies(projectPath) { + const project = await _utils_project__WEBPACK_IMPORTED_MODULE_1__["Project"].fromPath(projectPath); -var _project = __webpack_require__(53); + if (!project.hasDependencies()) { + return; + } -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + const deps = project.allDependencies; + for (const depName of Object.keys(deps)) { + const depVersion = deps[depName]; // Kibana currently only supports `link:` dependencies on Kibana's own + // packages, as these are packaged into the `node_modules` folder when + // Kibana is built, so we don't need to take any action to enable + // `require(...)` to resolve for these packages. -/** - * All external projects are located within `../kibana-extra/{plugin}` relative - * to Kibana itself. - */ -const isKibanaDep = depVersion => depVersion.includes('../../kibana/'); + if (Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_0__["isLinkDependency"])(depVersion) && !isKibanaDep(depVersion)) { + // For non-Kibana packages we need to set up symlinks during the + // installation process, but this is not something we support yet. + throw new Error('This plugin is using `link:` dependencies for non-Kibana packages'); + } + } +} /***/ }) /******/ ]); \ No newline at end of file diff --git a/packages/kbn-pm/package.json b/packages/kbn-pm/package.json index 69830ad22b4bf2..f8f075bcf12fc1 100644 --- a/packages/kbn-pm/package.json +++ b/packages/kbn-pm/package.json @@ -10,6 +10,11 @@ "prettier": "prettier --write './src/**/*.ts'" }, "devDependencies": { + "@babel/core": "^7.3.4", + "@babel/plugin-proposal-class-properties": "^7.3.4", + "@babel/plugin-proposal-object-rest-spread": "^7.3.4", + "@babel/preset-env": "^7.3.4", + "@babel/preset-typescript": "^7.3.3", "@types/cmd-shim": "^2.0.0", "@types/cpy": "^5.1.0", "@types/dedent": "^0.7.0", @@ -33,10 +38,7 @@ "@types/tempy": "^0.1.0", "@types/wrap-ansi": "^2.0.14", "@types/write-pkg": "^3.1.0", - "babel-core": "^6.26.3", - "babel-loader": "^7.1.5", - "babel-preset-env": "^1.7.0", - "babel-preset-stage-3": "^6.24.1", + "babel-loader": "^8.0.5", "chalk": "^2.4.1", "cmd-shim": "^2.0.2", "cpy": "^7.0.1", @@ -61,7 +63,6 @@ "strip-ansi": "^4.0.0", "strong-log-transformer": "^2.1.0", "tempy": "^0.2.1", - "ts-loader": "^5.2.2", "typescript": "^3.0.3", "unlazy-loader": "^0.1.3", "webpack": "^4.23.1", diff --git a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json index df6ad1d3d6d9b9..6a843c14263417 100644 --- a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json +++ b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json @@ -4,8 +4,8 @@ "private": true, "main": "./target/index.js", "devDependencies": { - "babel-cli": "^6.26.0", - "babel-preset-env": "^1.6.1" + "@babel/cli": "^7.2.3", + "@babel/preset-env": "^7.3.4" }, "scripts": { "build": "babel --presets env --out-dir target src" diff --git a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json index 385aa59bffc7a0..f80357f2d6e525 100644 --- a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json +++ b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json @@ -7,8 +7,8 @@ "@elastic/bar": "link:../bar" }, "devDependencies": { - "babel-cli": "^6.26.0", - "babel-preset-env": "^1.6.1", + "@babel/cli": "^7.2.3", + "@babel/preset-env": "^7.3.4", "moment": "2.20.1" }, "scripts": { diff --git a/packages/kbn-pm/tsconfig.json b/packages/kbn-pm/tsconfig.json index c9c3344a1df3a4..b05dd70f9d5c81 100644 --- a/packages/kbn-pm/tsconfig.json +++ b/packages/kbn-pm/tsconfig.json @@ -1,16 +1,16 @@ -{ - "extends": "../../tsconfig.json", - "exclude": [ - "dist" - ], - "include": [ - "./src/**/*.ts", - "./types/index.d.ts" - ], - "compilerOptions": { - "types": [ - "jest", - "node" - ] - } -} +{ + "extends": "../../tsconfig.json", + "exclude": [ + "dist" + ], + "include": [ + "./src/**/*.ts", + "./types/index.d.ts" + ], + "compilerOptions": { + "types": [ + "jest", + "node" + ] + } +} diff --git a/packages/kbn-pm/webpack.config.js b/packages/kbn-pm/webpack.config.js index 1424850265e072..ff77d3cfb7e9ce 100644 --- a/packages/kbn-pm/webpack.config.js +++ b/packages/kbn-pm/webpack.config.js @@ -44,15 +44,6 @@ module.exports = { { loader: 'babel-loader', }, - { - loader: 'ts-loader', - options: { - compilerOptions: { - // enable esnext modules so webpack can do its thing better - module: 'esnext', - }, - }, - }, ], exclude: /node_modules/, }, diff --git a/packages/kbn-test/package.json b/packages/kbn-test/package.json index 22eb066751a13f..124064d8cd9e31 100644 --- a/packages/kbn-test/package.json +++ b/packages/kbn-test/package.json @@ -10,9 +10,9 @@ "kbn:watch": "yarn build --watch" }, "devDependencies": { + "@babel/cli": "^7.2.3", "@kbn/babel-preset": "1.0.0", - "@kbn/dev-utils": "1.0.0", - "babel-cli": "^6.26.0" + "@kbn/dev-utils": "1.0.0" }, "dependencies": { "chalk": "^2.4.1", diff --git a/packages/kbn-ui-framework/package.json b/packages/kbn-ui-framework/package.json index 87e586e90ec2f5..f2b9c2f7e71390 100644 --- a/packages/kbn-ui-framework/package.json +++ b/packages/kbn-ui-framework/package.json @@ -26,16 +26,16 @@ "uuid": "3.0.1" }, "peerDependencies": { - "enzyme": "3.2.0", - "enzyme-adapter-react-16": "^1.1.1" + "enzyme": "^3.8.0", + "enzyme-adapter-react-16": "^1.9.1" }, "devDependencies": { + "@babel/core": "^7.3.4", + "@babel/polyfill": "^7.2.5", "@elastic/eui": "0.0.23", "@kbn/babel-preset": "1.0.0", "autoprefixer": "6.5.4", - "babel-core": "^6.26.3", - "babel-loader": "^7.1.5", - "babel-polyfill": "^6.26.0", + "babel-loader": "^8.0.5", "brace": "0.10.0", "chalk": "^2.4.1", "chokidar": "1.6.0", @@ -43,7 +43,7 @@ "expose-loader": "^0.7.5", "file-loader": "^2.0.0", "grunt": "1.0.3", - "grunt-babel": "^7.0.0", + "grunt-babel": "^8.0.0", "grunt-contrib-clean": "^1.1.0", "grunt-contrib-copy": "^1.0.0", "highlight.js": "9.0.0", diff --git a/src/dev/jest/setup/babel_polyfill.js b/src/dev/jest/setup/babel_polyfill.js index 38e1cfbcdd7216..58325c1a67f94f 100644 --- a/src/dev/jest/setup/babel_polyfill.js +++ b/src/dev/jest/setup/babel_polyfill.js @@ -18,6 +18,6 @@ */ // Note: In theory importing the polyfill should not be needed, as Babel should -// include the necessary polyfills when using `babel-preset-env`, but for some +// include the necessary polyfills when using `@babel/preset-env`, but for some // reason it did not work. See https://github.com/elastic/kibana/issues/14506 import '../../../setup_node_env/babel_register/polyfill'; diff --git a/src/functional_test_runner/cli.js b/src/functional_test_runner/cli.js index 94892451155f86..9414dcfe1cfd93 100644 --- a/src/functional_test_runner/cli.js +++ b/src/functional_test_runner/cli.js @@ -75,7 +75,6 @@ const functionalTestRunner = createFunctionalTestRunner({ bail: cmd.bail, grep: cmd.grep, invert: cmd.invert, - require: `ts-node/register --project tests/tsconfig.json -r tsconfig-paths/register -T "test/**/*.{ts,js}"` }, suiteTags: { include: cmd.includeTag, diff --git a/src/legacy/ui/ui_bundles/app_entry_template.js b/src/legacy/ui/ui_bundles/app_entry_template.js index b568f0c0e97219..a4e6509b427ead 100644 --- a/src/legacy/ui/ui_bundles/app_entry_template.js +++ b/src/legacy/ui/ui_bundles/app_entry_template.js @@ -33,7 +33,7 @@ import 'dll/set_csp_nonce'; __webpack_nonce__ = window.__kbnNonce__; // import global polyfills -import 'babel-polyfill'; +import '@babel/polyfill'; import 'custom-event-polyfill'; import 'whatwg-fetch'; import 'abortcontroller-polyfill'; diff --git a/src/optimize/base_optimizer.js b/src/optimize/base_optimizer.js index 0e4d90904ae996..6f3c053ef2eeec 100644 --- a/src/optimize/base_optimizer.js +++ b/src/optimize/base_optimizer.js @@ -122,10 +122,6 @@ export default class BaseOptimizer { BABEL_PRESET_PATH ]; - const nonDistributableOnlyModules = !IS_KIBANA_DISTRIBUTABLE - ? ['ts-loader'] - : []; - threadLoader.warmup( // pool options, like passed to loader options // must match loader options to boot the correct pool @@ -133,7 +129,6 @@ export default class BaseOptimizer { [ // modules to load on the pool ...baseModules, - ...nonDistributableOnlyModules ] ); } @@ -390,7 +385,7 @@ export default class BaseOptimizer { }, resolve: { - extensions: ['.js', '.json'], + extensions: ['.js', '.ts', '.tsx', '.json'], mainFields: ['browser', 'browserify', 'main'], modules: [ 'webpackShims', @@ -425,47 +420,6 @@ export default class BaseOptimizer { ] }; - // when running from source transpile TypeScript automatically - const getSourceConfig = () => { - // dev/typescript is deleted from the distributable, so only require it if we actually need the source config - const { Project } = require('../dev/typescript'); - const browserProject = new Project(fromRoot('tsconfig.browser.json')); - - return { - module: { - rules: [ - { - resource: createSourceFileResourceSelector(/\.tsx?$/), - use: maybeAddCacheLoader('typescript', [ - { - loader: 'thread-loader', - options: this.getThreadLoaderPoolConfig() - }, - { - loader: 'ts-loader', - options: { - happyPackMode: true, - transpileOnly: true, - experimentalWatchApi: true, - onlyCompileBundledFiles: true, - configFile: fromRoot('tsconfig.json'), - compilerOptions: { - ...browserProject.config.compilerOptions, - sourceMap: Boolean(this.sourceMaps), - } - } - } - ]), - } - ] - }, - - resolve: { - extensions: ['.ts', '.tsx'], - }, - }; - }; - // We need to add react-addons (and a few other bits) for enzyme to work. // https://github.com/airbnb/enzyme/blob/master/docs/guides/webpack.md const supportEnzymeConfig = { @@ -512,7 +466,7 @@ export default class BaseOptimizer { commonConfig, IS_KIBANA_DISTRIBUTABLE ? isDistributableConfig - : getSourceConfig(), + : {}, this.uiBundles.isDevMode() ? webpackMerge(watchingConfig, supportEnzymeConfig) : productionConfig diff --git a/src/optimize/watch/watch_cache.ts b/src/optimize/watch/watch_cache.ts index 5b594b30e9f8f3..2b614aae67ebf4 100644 --- a/src/optimize/watch/watch_cache.ts +++ b/src/optimize/watch/watch_cache.ts @@ -95,16 +95,7 @@ export class WatchCache { await del(this.statePath); // delete everything in optimize/.cache directory - // except ts-node - await del( - await globby( - [ - normalizePosixPath(this.cachePath), - `${normalizePosixPath(`!${this.cachePath}/ts-node/**`)}`, - ], - { dot: true } - ) - ); + await del(await globby([normalizePosixPath(this.cachePath)], { dot: true })); // delete some empty folder that could be left // from the previous cache path reset action diff --git a/src/setup_node_env/babel_register/index.js b/src/setup_node_env/babel_register/index.js index 44b9427ed8e3e2..1574be8937a29e 100644 --- a/src/setup_node_env/babel_register/index.js +++ b/src/setup_node_env/babel_register/index.js @@ -17,16 +17,6 @@ * under the License. */ -// unless we are running a prebuilt/distributable version of -// kibana, automatically transpile typescript to js before babel -if (!global.__BUILT_WITH_BABEL__) { - var resolve = require('path').resolve; - require('ts-node').register({ - transpileOnly: true, - cacheDirectory: resolve(__dirname, '../../../optimize/.cache/ts-node') - }); -} - // register and polyfill need to happen in this // order and in separate files. Checkout each file // for a much more detailed explanation diff --git a/src/setup_node_env/babel_register/polyfill.js b/src/setup_node_env/babel_register/polyfill.js index e72a2eff001ad3..0318b4af45dc6f 100644 --- a/src/setup_node_env/babel_register/polyfill.js +++ b/src/setup_node_env/babel_register/polyfill.js @@ -17,13 +17,13 @@ * under the License. */ -// `babel-preset-env` looks for and rewrites the following import +// `@babel/preset-env` looks for and rewrites the following import // statement into a list of import statements based on the polyfills // necessary for our target environment (the current version of node) -// but since it does that during compilation, `import 'babel-polyfill'` +// but since it does that during compilation, `import '@babel/polyfill'` // must be in a file that is loaded with `require()` AFTER `babel-register` // is configured. // // This is why we have this single statement in it's own file and require // it from ./index.js -require('babel-polyfill'); +require('@babel/polyfill'); diff --git a/x-pack/package.json b/x-pack/package.json index f36208bde6eb42..f80af3e9d00f1d 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -70,11 +70,11 @@ "ansi-colors": "^3.0.5", "ansicolors": "0.3.2", "axios": "^0.18.0", - "babel-jest": "^23.6.0", - "babel-plugin-inline-react-svg": "^0.5.4", - "babel-plugin-mock-imports": "^0.0.5", - "babel-plugin-require-context-hook": "^1.0.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.14", + "babel-jest": "^24.1.0", + "babel-plugin-inline-react-svg": "^1.0.1", + "babel-plugin-mock-imports": "^1.0.1", + "babel-plugin-require-context-hook-babel7": "^1.0.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "chalk": "^2.4.1", "chance": "1.0.10", "checksum": "0.1.1", @@ -125,7 +125,6 @@ "supertest-as-promised": "^4.0.2", "tmp": "0.0.31", "tree-kill": "^1.1.0", - "ts-loader": "^5.2.2", "typescript": "^3.0.3", "vinyl-fs": "^3.0.2", "xml-crypto": "^0.10.1", @@ -133,6 +132,10 @@ "yargs": "4.8.1" }, "dependencies": { + "@babel/core": "^7.3.4", + "@babel/polyfill": "^7.2.5", + "@babel/register": "^7.0.0", + "@babel/runtime": "^7.3.4", "@elastic/datemath": "5.0.2", "@elastic/eui": "7.1.0", "@elastic/node-crypto": "0.1.2", @@ -159,11 +162,6 @@ "apollo-server-errors": "^2.0.2", "apollo-server-hapi": "^1.3.6", "axios": "^0.18.0", - "babel-core": "^6.26.3", - "babel-polyfill": "6.20.0", - "babel-preset-es2015": "^6.24.1", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", "base64-js": "^1.2.1", "bluebird": "3.5.3", "boom": "^7.2.0", diff --git a/x-pack/plugins/canvas/.storybook/webpack.config.js b/x-pack/plugins/canvas/.storybook/webpack.config.js index b52a4020c59231..39e33c9613e445 100644 --- a/x-pack/plugins/canvas/.storybook/webpack.config.js +++ b/x-pack/plugins/canvas/.storybook/webpack.config.js @@ -17,7 +17,7 @@ module.exports = (_baseConfig, _env, config) => { include: /\.storybook/, loaders: 'babel-loader', options: { - presets: [require.resolve('babel-preset-react')], + presets: [require.resolve('@babel/preset-react')], }, }, ); diff --git a/x-pack/plugins/infra/scripts/generate_types_from_graphql.js b/x-pack/plugins/infra/scripts/generate_types_from_graphql.js index 091e692d0bbd47..caeb73c3bf797c 100644 --- a/x-pack/plugins/infra/scripts/generate_types_from_graphql.js +++ b/x-pack/plugins/infra/scripts/generate_types_from_graphql.js @@ -28,7 +28,6 @@ async function main() { config: SERVER_CONFIG_PATH, out: OUTPUT_INTROSPECTION_PATH, overwrite: true, - require: ['ts-node/register'], schema: SCHEMA_PATH, template: 'graphql-codegen-introspection-template', }, diff --git a/x-pack/plugins/uptime/scripts/infer_graphql_types.js b/x-pack/plugins/uptime/scripts/infer_graphql_types.js index c4b87c9ea93399..104fd5b66b5d6b 100644 --- a/x-pack/plugins/uptime/scripts/infer_graphql_types.js +++ b/x-pack/plugins/uptime/scripts/infer_graphql_types.js @@ -20,7 +20,6 @@ async function main() { config: CONFIG_PATH, out: OUTPUT_INTROSPECTION_PATH, overwrite: true, - require: ['ts-node/register'], schema: SCHEMA_PATH, template: 'graphql-codegen-introspection-template', }, diff --git a/yarn.lock b/yarn.lock index 11bf51e204793a..c6eb0d5d4dca0f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,7 +35,7 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/core@^7.3.4": +"@babel/core@7.3.4", "@babel/core@^7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b" integrity sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA== @@ -55,7 +55,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.3.4": +"@babel/generator@^7.0.0", "@babel/generator@^7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e" integrity sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg== @@ -259,7 +259,7 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.3", "@babel/parser@^7.2.2", "@babel/parser@^7.3.4": +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.3", "@babel/parser@^7.2.2", "@babel/parser@^7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ== @@ -342,7 +342,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.2.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== @@ -596,6 +596,16 @@ resolve "^1.8.1" semver "^5.5.1" +"@babel/plugin-transform-runtime@^7.3.4": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.3.4.tgz#57805ac8c1798d102ecd75c03b024a5b3ea9b431" + integrity sha512-PaoARuztAdd5MgeVjAxnIDAIUet5KpogqaefQvPOmPYCxYoaPhautxDh3aO8a4xHsKgT/b9gSxR0BKK1MIewPA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" @@ -650,6 +660,14 @@ "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" +"@babel/polyfill@7.2.5", "@babel/polyfill@^7.2.5": + version "7.2.5" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d" + integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug== + dependencies: + core-js "^2.5.7" + regenerator-runtime "^0.12.0" + "@babel/preset-env@^7.1.0", "@babel/preset-env@^7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1" @@ -726,6 +744,19 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript" "^7.3.2" +"@babel/register@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" + integrity sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g== + dependencies: + core-js "^2.5.7" + find-cache-dir "^1.0.0" + home-or-tmp "^3.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + pirates "^4.0.0" + source-map-support "^0.5.9" + "@babel/runtime@7.0.0-beta.54": version "7.0.0-beta.54" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.54.tgz#39ebb42723fe7ca4b3e1b00e967e80138d47cadf" @@ -741,7 +772,14 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": +"@babel/runtime@^7.3.4": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.4.tgz#73d12ba819e365fcf7fd152aed56d6df97d21c83" + integrity sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== @@ -1578,45 +1616,45 @@ resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.49.tgz#92e33d13f74c895cb9a7f38ba97db8431ed14bc0" integrity sha512-Benr3i5odUkvpFkOpzGqrltGdbSs+EVCkEBGXbuR7uT0VzhXKIkhem6PDzHdx5EonA+rfbB3QvP6aDOw5+zp5Q== -"@types/babel-core@^6.25.5": - version "6.25.5" - resolved "https://registry.yarnpkg.com/@types/babel-core/-/babel-core-6.25.5.tgz#7598b1287c2cb5a8e9150d60e4d4a8f2dbe29982" - integrity sha512-pecvyMrc46zY0AFYXVZWNmm/gekr7f32OBYCd9baOiIpOTFtNN0ormeWpJaG7p+MEzncUvNtJdYql94dZYZGsw== - dependencies: - "@types/babel-generator" "*" - "@types/babel-template" "*" - "@types/babel-traverse" "*" - "@types/babel-types" "*" - "@types/babylon" "*" +"@types/babel-types@*", "@types/babel-types@^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.4.tgz#bfd5b0d0d1ba13e351dff65b6e52783b816826c8" + integrity sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw== -"@types/babel-generator@*": - version "6.25.2" - resolved "https://registry.yarnpkg.com/@types/babel-generator/-/babel-generator-6.25.2.tgz#fa13653ec2d34a4037be9c34dec32ae75bea04cc" - integrity sha512-W7PQkeDlYOqJblfNeqZARwj4W8nO+ZhQQZksU8+wbaKuHeUdIVUAdREO/Qb0FfNr3CY5Sq1gNtqsyFeZfS3iSw== +"@types/babel__core@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.0.tgz#710f2487dda4dcfd010ca6abb2b4dc7394365c51" + integrity sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA== dependencies: - "@types/babel-types" "*" + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" -"@types/babel-template@*": - version "6.25.1" - resolved "https://registry.yarnpkg.com/@types/babel-template/-/babel-template-6.25.1.tgz#03e23a893c16bab2ec00200ab51feccf488cae78" - integrity sha512-teJYxh35PbBaf9OY6YwLSQ7pRiWRnHCHmlqwfVSfexOsqHUf6hpNZ4FG9PfgnpBM1VRzRJVQF3SqqOtkcNrBZQ== +"@types/babel__generator@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" + integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== dependencies: - "@types/babel-types" "*" - "@types/babylon" "*" + "@babel/types" "^7.0.0" -"@types/babel-traverse@*": - version "6.25.4" - resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.25.4.tgz#269af6a25c80419b635c8fa29ae42b0d5ce2418c" - integrity sha512-+/670NaZE7qPvdh8EtGds32/2uHFKE5JeS+7ePH6nGwF8Wj8r671/RkTiJQP2k22nFntWEb9xQ11MFj7xEqI0g== +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== dependencies: - "@types/babel-types" "*" + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" -"@types/babel-types@*", "@types/babel-types@^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.4.tgz#bfd5b0d0d1ba13e351dff65b6e52783b816826c8" - integrity sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw== +"@types/babel__traverse@*": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" + integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== + dependencies: + "@babel/types" "^7.3.0" -"@types/babylon@*", "@types/babylon@6.16.3", "@types/babylon@^6.16.2": +"@types/babylon@6.16.3", "@types/babylon@^6.16.2": version "6.16.3" resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.3.tgz#c2937813a89fcb5e79a00062fc4a8b143e7237bb" integrity sha512-lyJ8sW1PbY3uwuvpOBZ9zMYKshMnQpXmeDHh8dj9j2nJm/xrW0FgB5gLSYOArj5X0IfaXnmhFoJnhS4KbqIMug== @@ -2795,19 +2833,17 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn-jsx@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" - integrity sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw== - dependencies: - acorn "^5.0.3" +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== acorn-walk@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.0.1.tgz#c7827bdbb8e21aa97b609adfa225400d9ae348ba" integrity sha512-PqVQ8c6a3kyqdsUZlC7nljp3FFuxipBRHKu+7C1h8QygBFlzTaDX5HD383jej3Peed+1aDG8HwkfB1Z1HMNPkw== -acorn@5.X, acorn@^5.0.3, acorn@^5.5.0, acorn@^5.6.0, acorn@^5.6.2, acorn@^5.7.1: +acorn@5.X, acorn@^5.0.3, acorn@^5.5.0, acorn@^5.6.2, acorn@^5.7.1: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== @@ -2832,6 +2868,11 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" integrity sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg== +acorn@^6.0.7: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + address@1.0.3, address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" @@ -2914,7 +2955,7 @@ ajv-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= -ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: +ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= @@ -2937,7 +2978,7 @@ ajv@^5.0.0, ajv@^5.1.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.0.1, ajv@^6.1.0, ajv@^6.1.1, ajv@^6.5.3, ajv@^6.5.5: +ajv@^6.1.0, ajv@^6.1.1, ajv@^6.5.5: version "6.5.5" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== @@ -2947,6 +2988,16 @@ ajv@^6.0.1, ajv@^6.1.0, ajv@^6.1.1, ajv@^6.5.3, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.9.1: + version "6.9.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.2.tgz#4927adb83e7f48e5a32b45729744c71ec39c9c7b" + integrity sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -3061,6 +3112,11 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" integrity sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ== +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" @@ -3102,6 +3158,11 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" @@ -3668,7 +3729,7 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-each@^1.0.0: +async-each@^1.0.0, async-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" integrity sha1-GdOGodntxufByF04iu28xW0zYC0= @@ -3854,7 +3915,7 @@ axios@^0.18.0: follow-redirects "^1.3.0" is-buffer "^1.1.5" -axobject-query@^2.0.1: +axobject-query@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== @@ -3866,28 +3927,6 @@ b64@4.x.x: resolved "https://registry.yarnpkg.com/b64/-/b64-4.0.0.tgz#c37f587f0a383c7019e821120e8c3f58f0d22772" integrity sha512-EhmUQodKB0sdzPPrbIWbGqA5cQeTWxYrAgNeeT1rLZWtD3tbNTnphz8J4vkXI3cPgBNlXBjzEbzDzq0Nwi4f9A== -babel-cli@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" - integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= - dependencies: - babel-core "^6.26.0" - babel-polyfill "^6.26.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - commander "^2.11.0" - convert-source-map "^1.5.0" - fs-readdir-recursive "^1.0.0" - glob "^7.1.2" - lodash "^4.17.4" - output-file-sync "^1.1.2" - path-is-absolute "^1.0.1" - slash "^1.0.0" - source-map "^0.5.6" - v8flags "^2.1.1" - optionalDependencies: - chokidar "^1.6.1" - babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -3897,31 +3936,6 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@6.26.3, babel-core@^6.26.3: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - babel-core@^6.0.0, babel-core@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" @@ -3947,10 +3961,10 @@ babel-core@^6.0.0, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.6" -babel-eslint@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== +babel-eslint@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -3987,90 +4001,16 @@ babel-generator@^6.26.0: source-map "^0.5.6" trim-right "^1.0.1" -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - integrity sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - babel-helper-evaluate-path@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz#a62fa9c4e64ff7ea5cea9353174ef023a900a67c" integrity sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA== -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babel-helper-flip-expressions@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz#3696736a128ac18bc25254b5f40a22ceb3c1d3fd" integrity sha1-NpZzahKKwYvCUlS19AoizrPB0/0= -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - babel-helper-is-nodes-equiv@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" @@ -4086,51 +4026,11 @@ babel-helper-mark-eval-scopes@^0.4.3: resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz#d244a3bef9844872603ffb46e22ce8acdf551562" integrity sha1-0kSjvvmESHJgP/tG4izorN9VFWI= -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babel-helper-remove-or-void@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz#a4f03b40077a0ffe88e45d07010dee241ff5ae60" integrity sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA= -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babel-helper-to-multiple-sequence-expressions@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" @@ -4152,14 +4052,25 @@ babel-jest@^23.6.0: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" -babel-loader@7.1.5, babel-loader@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" - integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== +babel-jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190" + integrity sha512-MLcagnVrO9ybQGLEfZUqnOzv36iQzU7Bj4elm39vCukumLVSfoX+tRy3/jW7lUKc7XdpRmB/jech6L/UCsSZjw== dependencies: - find-cache-dir "^1.0.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.1.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.0.5, babel-loader@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" + integrity sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw== + dependencies: + find-cache-dir "^2.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" + util.promisify "^1.0.0" babel-messages@^6.23.0: version "6.23.0" @@ -4168,26 +4079,20 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-add-module-exports@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25" - integrity sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU= - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" +babel-plugin-add-module-exports@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.0.tgz#72b5424d941a336c6a35357f373d8b8366263031" + integrity sha512-m0sMxPL4FaN2K69GQgaRJa4Ny15qKSdoknIcpN+gz+NaJlAW9pge/povs13tPYsKDboflrEQC+/3kfIsONBTaw== + optionalDependencies: + chokidar "^2.0.4" -babel-plugin-inline-react-svg@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-0.5.4.tgz#bc818f351cd9d78f5b3bfa7cc1da5f83e7b4010a" - integrity sha512-Pr/J5kicFEpIvwooR3mytJWXfyGXoP4gp4QzTdN0jLoa7lU2OJVyhHMm17ekA3okxwbLaQehSc0kV/UVrj343w== +babel-plugin-inline-react-svg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-1.0.1.tgz#1457edae1035a12b3c5026ef28a1239edc71d2a2" + integrity sha512-vTsG/L2cUN4XRJdJ1scYXMSBlgAxkZm/tgo1Lo/FulbPADztEtVOPUNuNDeEoRHZCz9RC0ZHXdVSJ/GaqahF/Q== dependencies: - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babylon "^6.18.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/parser" "^7.0.0" lodash.isplainobject "^4.0.6" resolve "^1.8.1" svgo "^0.7.2" @@ -4202,11 +4107,25 @@ babel-plugin-istanbul@^4.1.6: istanbul-lib-instrument "^1.10.1" test-exclude "^4.2.1" +babel-plugin-istanbul@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz#7981590f1956d75d67630ba46f0c22493588c893" + integrity sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ== + dependencies: + find-up "^3.0.0" + istanbul-lib-instrument "^3.0.0" + test-exclude "^5.0.0" + babel-plugin-jest-hoist@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= +babel-plugin-jest-hoist@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8" + integrity sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw== + babel-plugin-macros@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.2.tgz#21b1a2e82e2130403c5ff785cba6548e9b644b28" @@ -4289,10 +4208,10 @@ babel-plugin-minify-type-constructors@^0.4.3: dependencies: babel-helper-is-void-0 "^0.4.3" -babel-plugin-mock-imports@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/babel-plugin-mock-imports/-/babel-plugin-mock-imports-0.0.5.tgz#caa865f017d8972fe47772e0fb57f2924e5ce3c5" - integrity sha1-yqhl8BfYly/kd3Lg+1fykk5c48U= +babel-plugin-mock-imports@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-mock-imports/-/babel-plugin-mock-imports-1.0.1.tgz#1476ed4de911347d344fc81caab4beced80804b1" + integrity sha512-Nu4unCGKeqOfLlfnLPnv/pEHancdAGTqFqyArZ27gsKIiKxeZvMr87IHB8BxhMu3Bfc8fA8bx7hWt32aZbEwpQ== babel-plugin-react-docgen@^2.0.0: version "2.0.0" @@ -4302,294 +4221,24 @@ babel-plugin-react-docgen@^2.0.0: lodash "^4.17.10" react-docgen "^3.0.0-rc.1" -babel-plugin-require-context-hook@^1.0.0: +babel-plugin-require-context-hook-babel7@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-require-context-hook/-/babel-plugin-require-context-hook-1.0.0.tgz#3f0e7cce87c338f53639b948632fd4e73834632d" - integrity sha512-EMZD1563QUqLhzrqcThk759RhuNVX/ZJdrtGK6drwzgvnR+ARjWyXIHPbu+tUNaMGtPz/gQeAM2M6VUw2UiUeA== - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + resolved "https://registry.yarnpkg.com/babel-plugin-require-context-hook-babel7/-/babel-plugin-require-context-hook-babel7-1.0.0.tgz#1273d4cee7e343d0860966653759a45d727e815d" + integrity sha512-kez0BAN/cQoyO1Yu1nre1bQSYZEF93Fg7VQiBHFfMWuaZTy7vJSTT4FY68FwHTYG53Nyt0A7vpSObSVxwweQeQ== -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0= - -babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - -babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: +babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-generator-functions@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" - integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-define@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-define/-/babel-plugin-transform-define-1.3.0.tgz#94c5f9459c810c738cc7c50cbd44a31829d6f319" - integrity sha1-lMX5RZyBDHOMx8UMvUSjGCnW8xk= +babel-plugin-transform-define@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-define/-/babel-plugin-transform-define-1.3.1.tgz#b21b7bad3b84cf8e3f07cdc8c660b99cbbc01213" + integrity sha512-JXZ1xE9jIbKCGYZ4wbSMPSI5mdS4DRLi5+SkTHgZqWn5YIf/EucykkzUsPmzJlpkX8fsMVdLnA5vt/LvT97Zbg== dependencies: - lodash "4.17.4" + lodash "^4.17.11" traverse "0.6.6" -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - integrity sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo= - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988= - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - babel-plugin-transform-inline-consecutive-adds@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz#323d47a3ea63a83a7ac3c811ae8e6941faf2b0d1" @@ -4610,14 +4259,6 @@ babel-plugin-transform-minify-booleans@^6.9.4: resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198" integrity sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg= -babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - babel-plugin-transform-property-literals@^6.9.4: version "6.9.4" resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39" @@ -4625,49 +4266,10 @@ babel-plugin-transform-property-literals@^6.9.4: dependencies: esutils "^2.0.2" -babel-plugin-transform-react-display-name@^6.23.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" - integrity sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-self@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" - integrity sha1-322AqdomEqEh5t3XVYvL7PBuY24= - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - integrity sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY= - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - integrity sha1-hAoCjn30YN/DotKfDA2R9jduZqM= - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-remove-prop-types@^0.4.14: - version "0.4.15" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.15.tgz#7ba830e77276a0e788cd58ea527b5f70396e12a7" - integrity sha512-bFxxYdkZBwTjTgtZEPTLqu9g8Ajz8x8uEP/O1iVuaZIz2RuxJ2gtx0EXDJRonC++KGsgsW/4Hqvk4KViEtE2nw== - -babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - dependencies: - regenerator-transform "^0.10.0" +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== babel-plugin-transform-regexp-constructors@^0.4.3: version "0.4.3" @@ -4691,41 +4293,17 @@ babel-plugin-transform-remove-undefined@^0.5.0: dependencies: babel-helper-evaluate-path "^0.5.0" -babel-plugin-transform-runtime@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - integrity sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4= - dependencies: - babel-runtime "^6.22.0" - babel-plugin-transform-simplify-comparison-operators@^6.9.4: version "6.9.4" resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9" integrity sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk= -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - babel-plugin-transform-undefined-to-void@^6.9.4: version "6.9.4" resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= -babel-polyfill@6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7" - integrity sha1-3ko3EAYTniCZCqwL42fTmDMSBOc= - dependencies: - babel-runtime "^6.20.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-polyfill@6.26.0, babel-polyfill@^6.26.0: +babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= @@ -4734,79 +4312,6 @@ babel-polyfill@6.26.0, babel-polyfill@^6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-es2015@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-preset-flow@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0= - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - babel-preset-jest@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" @@ -4815,6 +4320,14 @@ babel-preset-jest@^23.2.0: babel-plugin-jest-hoist "^23.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" +babel-preset-jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz#83bc564fdcd4903641af65ec63f2f5de6b04132e" + integrity sha512-FfNLDxFWsNX9lUmtwY7NheGlANnagvxq8LZdl5PKnVG3umP+S/g0XbVBfwtA4Ai3Ri/IMkWabBz3Tyk9wdspcw== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.1.0" + babel-preset-minify@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.5.0.tgz#e25bb8d3590087af02b650967159a77c19bfb96b" @@ -4844,30 +4357,7 @@ babel-preset-minify@^0.5.0: babel-plugin-transform-undefined-to-void "^6.9.4" lodash.isplainobject "^4.0.6" -babel-preset-react@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" - integrity sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A= - dependencies: - babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-react-display-name "^6.23.0" - babel-plugin-transform-react-jsx "^6.24.1" - babel-plugin-transform-react-jsx-self "^6.22.0" - babel-plugin-transform-react-jsx-source "^6.22.0" - babel-preset-flow "^6.23.0" - -babel-preset-stage-3@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" - integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U= - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.24.1" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-plugin-transform-exponentiation-operator "^6.24.1" - babel-plugin-transform-object-rest-spread "^6.22.0" - -babel-register@6.26.0, babel-register@^6.26.0: +babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= @@ -4880,7 +4370,7 @@ babel-register@6.26.0, babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.5.0: +babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.5.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -4904,7 +4394,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= @@ -4928,7 +4418,7 @@ babel-types@7.0.0-beta.3: lodash "^4.2.0" to-fast-properties "^2.0.0" -babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= @@ -5354,11 +4844,27 @@ braces@^2.3.1: dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" - define-property "^1.0.0" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + kind-of "^6.0.2" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" extend-shallow "^2.0.1" fill-range "^4.0.0" isobject "^3.0.1" - kind-of "^6.0.2" repeat-element "^1.1.2" snapdragon "^0.8.1" snapdragon-node "^2.0.1" @@ -5487,14 +4993,6 @@ browserslist@4.1.1: electron-to-chromium "^1.3.62" node-releases "^1.0.0-alpha.11" -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - browserslist@^4.0.1, browserslist@^4.3.4: version "4.4.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.1.tgz#42e828954b6b29a7a53e352277be429478a69062" @@ -5570,7 +5068,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0, buffer-from@^1.1.0: +buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -5804,6 +5302,11 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +callsites@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" + integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== + camel-case@3.0.x, camel-case@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -5867,7 +5370,7 @@ caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000597: resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000813.tgz#e0a1c603f8880ad787b2a35652b2733f32a5e29a" integrity sha1-4KHGA/iICteHsqNWUrJzPzKl4po= -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000872, caniuse-lite@^1.0.30000929: +caniuse-lite@^1.0.30000872, caniuse-lite@^1.0.30000929: version "1.0.30000932" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000932.tgz#d01763e9ce77810962ca7391ff827b5949ce4272" integrity sha512-4bghJFItvzz8m0T3lLZbacmEY9X1Z2AtIzTr7s7byqZIOumASfr4ynDx7rtm0J85nDmx8vsgR6vnaSoeU8Oh0A== @@ -6013,7 +5516,7 @@ chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^5.2.0" -chalk@^2.3.2, chalk@~2.4.1: +chalk@^2.3.2, chalk@^2.4.2, chalk@~2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -6104,6 +5607,11 @@ chardet@^0.5.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.5.0.tgz#fe3ac73c00c3d865ffcc02a0682e2c20b6a06029" integrity sha512-9ZTaoBaePSCFvNlNGrsyI8ZVACP2svUtq0DkM7t4K2ClAa96sqOIRjAzDTc8zXzFt1cZR46rRzLTiHFSJ+Qw0g== +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + checksum@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/checksum/-/checksum-0.1.1.tgz#dc6527d4c90be8560dbd1ed4cecf3297d528e9e9" @@ -6161,22 +5669,6 @@ chokidar@1.6.0: optionalDependencies: fsevents "^1.0.0" -chokidar@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chokidar@^2.0.0, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" @@ -6216,6 +5708,25 @@ chokidar@^2.0.2: optionalDependencies: fsevents "^1.0.0" +chokidar@^2.0.4: + version "2.1.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058" + integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.0" + optionalDependencies: + fsevents "^1.2.7" + chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" @@ -6501,11 +6012,6 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -closest-file-data@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/closest-file-data/-/closest-file-data-0.1.4.tgz#975f87c132f299d24a0375b9f63ca3fb88f72b3a" - integrity sha1-l1+HwTLymdJKA3W59jyj+4j3Kzo= - cmd-shim@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" @@ -6987,13 +6493,6 @@ convert-source-map@1.X, convert-source-map@^1.1.0, convert-source-map@^1.4.0, co resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= -convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - convex-hull@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/convex-hull/-/convex-hull-1.0.3.tgz#20a3aa6ce87f4adea2ff7d17971c9fc1c67e1fff" @@ -7857,7 +7356,7 @@ debug@3.X, debug@^3.1.0, debug@^3.2.5: dependencies: ms "^2.1.1" -debug@^4.1.0: +debug@^4.0.1, debug@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -8293,6 +7792,13 @@ doctrine@^2.0.0, doctrine@^2.1.0: dependencies: esutils "^2.0.2" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + doctypes@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" @@ -8616,11 +8122,6 @@ electron-to-chromium@^1.3.103: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.108.tgz#2e79a6fcaa4b3e7c75abf871505bda8e268c910e" integrity sha512-/QI4hMpAh48a1Sea6PALGv+kuVne9A2EWGd8HrWHMdYhIzGtbhVVHh6heL5fAzGaDnZuPyrlWJRl8WPm4RyiQQ== -electron-to-chromium@^1.3.47: - version "1.3.82" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.82.tgz#7d13ae4437d2a783de3f4efba96b186c540b67b1" - integrity sha512-NI4nB2IWGcU4JVT1AE8kBb/dFor4zjLHMLsOROPahppeHrR0FG5uslxMmkp/thO1MvPjM2xhlKoY29/I60s0ew== - electron-to-chromium@^1.3.62: version "1.3.67" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.67.tgz#5e8f3ffac89b4b0402c7e1a565be06f3a109abbc" @@ -8656,10 +8157,10 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -emoji-regex@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" - integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== emojis-list@^2.0.0: version "2.1.0" @@ -8744,7 +8245,7 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: +enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== @@ -9103,14 +8604,14 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-config-prettier@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-3.1.0.tgz#2c26d2cdcfa3a05f0642cd7e6e4ef3316cdabfa2" - integrity sha512-QYGfmzuc4q4J6XIhlp8vRKdI/fI0tQfQPy1dME3UOLprE+v4ssH/3W9LM2Q7h5qBcy5m0ehCrBDU2YF8q6OY8w== +eslint-config-prettier@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.1.0.tgz#181364895899fff9fd3605fecb5c4f20e7d5f395" + integrity sha512-zILwX9/Ocz4SV2vX7ox85AsrAgXV3f2o2gpIicdMIOra48WYqgUnWNH/cR/iHtmD2Vb3dLSC3LiEJnS05Gkw7w== dependencies: get-stdin "^6.0.0" -eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: +eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== @@ -9134,62 +8635,62 @@ eslint-import-resolver-webpack@^0.10.1: resolve "^1.4.0" semver "^5.3.0" -eslint-module-utils@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" - integrity sha1-snA2LNiLGkitMIl2zn+lTphBF0Y= +eslint-module-utils@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49" + integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w== dependencies: debug "^2.6.8" - pkg-dir "^1.0.0" + pkg-dir "^2.0.0" -eslint-plugin-babel@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.2.0.tgz#3041a0c26aa3ca4a0e0f2aa11591f0396790d981" - integrity sha512-9pNH/e214SN3r2nEwwTLRI27jUN4+nuLMv1+qxfDv8Za9cJ3F+aPkNinYiVeUmAmiEtOttbS32yuwRG2DREvJg== +eslint-plugin-babel@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz#2e7f251ccc249326da760c1a4c948a91c32d0023" + integrity sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w== dependencies: eslint-rule-composer "^0.3.0" -eslint-plugin-import@^2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" - integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== +eslint-plugin-import@^2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f" + integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A== dependencies: contains-path "^0.1.0" - debug "^2.6.8" + debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.2.0" - has "^1.0.1" - lodash "^4.17.4" - minimatch "^3.0.3" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.3.0" + has "^1.0.3" + lodash "^4.17.11" + minimatch "^3.0.4" read-pkg-up "^2.0.0" - resolve "^1.6.0" + resolve "^1.9.0" -eslint-plugin-jest@^21.26.2: - version "21.27.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.27.2.tgz#2a795b7c3b5e707df48a953d651042bd01d7b0a8" - integrity sha512-0E4OIgBJVlAmf1KfYFtZ3gYxgUzC5Eb3Jzmrc9ikI1OY+/cM8Kh72Ti7KfpeHNeD3HJNf9SmEfmvQLIz44Hrhw== +eslint-plugin-jest@^22.3.0: + version "22.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.3.0.tgz#a10f10dedfc92def774ec9bb5bfbd2fb8e1c96d2" + integrity sha512-P1mYVRNlOEoO5T9yTqOfucjOYf1ktmJ26NjwjH8sxpCFQa6IhBGr5TpKl3hcAAT29hOsRJVuMWmTsHoUVo9FoA== -eslint-plugin-jsx-a11y@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz#69bca4890b36dcf0fe16dd2129d2d88b98f33f88" - integrity sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw== +eslint-plugin-jsx-a11y@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c" + integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w== dependencies: aria-query "^3.0.0" array-includes "^3.0.3" ast-types-flow "^0.0.7" - axobject-query "^2.0.1" + axobject-query "^2.0.2" damerau-levenshtein "^1.0.4" - emoji-regex "^6.5.1" + emoji-regex "^7.0.2" has "^1.0.3" jsx-ast-utils "^2.0.1" -eslint-plugin-mocha@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-5.2.0.tgz#d8786d9fff8cb8b5f6e4b61e40395d6568a5c4e2" - integrity sha512-4VTX/qIoxUFRnXLNm6bEhEJyfGnGagmQzV4TWXKzkZgIYyP2FSubEdCjEFTyS/dGwSVRWCWGX7jO7BK8R0kppg== +eslint-plugin-mocha@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz#cf3eb18ae0e44e433aef7159637095a7cb19b15b" + integrity sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A== dependencies: - ramda "^0.25.0" + ramda "^0.26.1" eslint-plugin-no-unsanitized@^3.0.2: version "3.0.2" @@ -9209,24 +8710,25 @@ eslint-plugin-prettier@^2.2.0: fast-diff "^1.1.1" jest-docblock "^21.0.0" -eslint-plugin-prettier@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz#71998c60aedfa2141f7bfcbf9d1c459bf98b4fad" - integrity sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og== +eslint-plugin-prettier@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz#19d521e3981f69dd6d14f64aec8c6a6ac6eb0b0d" + integrity sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ== dependencies: - fast-diff "^1.1.1" - jest-docblock "^21.0.0" + prettier-linter-helpers "^1.0.0" -eslint-plugin-react@^7.11.1: - version "7.11.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" - integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== +eslint-plugin-react@^7.12.4: + version "7.12.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c" + integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" has "^1.0.3" jsx-ast-utils "^2.0.1" + object.fromentries "^2.0.0" prop-types "^15.6.2" + resolve "^1.9.0" eslint-rule-composer@^0.3.0: version "0.3.0" @@ -9298,48 +8800,46 @@ eslint@^2.7.0: text-table "~0.2.0" user-home "^2.0.0" -eslint@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.6.0.tgz#b6f7806041af01f71b3f1895cbb20971ea4b6223" - integrity sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA== +eslint@^5.14.0: + version "5.14.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.14.1.tgz#490a28906be313685c55ccd43a39e8d22efc04ba" + integrity sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.5.3" + ajv "^6.9.1" chalk "^2.1.0" cross-spawn "^6.0.5" - debug "^3.1.0" - doctrine "^2.1.0" + debug "^4.0.1" + doctrine "^3.0.0" eslint-scope "^4.0.0" eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^4.0.0" + espree "^5.0.1" esquery "^1.0.1" esutils "^2.0.2" - file-entry-cache "^2.0.0" + file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob "^7.1.2" globals "^11.7.0" ignore "^4.0.6" + import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.1.0" - is-resolvable "^1.1.0" + inquirer "^6.2.2" js-yaml "^3.12.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.5" + lodash "^4.17.11" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" path-is-inside "^1.0.2" - pluralize "^7.0.0" progress "^2.0.0" - regexpp "^2.0.0" - require-uncached "^1.0.3" + regexpp "^2.0.1" semver "^5.5.1" strip-ansi "^4.0.0" strip-json-comments "^2.0.1" - table "^4.0.3" + table "^5.2.3" text-table "^0.2.0" esm@^3.0.84: @@ -9355,13 +8855,14 @@ espree@^3.1.6: acorn "^5.5.0" acorn-jsx "^3.0.0" -espree@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" - integrity sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg== +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== dependencies: - acorn "^5.6.0" - acorn-jsx "^4.1.1" + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" @@ -9809,6 +9310,15 @@ external-editor@^3.0.0: iconv-lite "^0.4.22" tmp "^0.0.33" +external-editor@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -9922,6 +9432,11 @@ fast-diff@^1.1.1: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.0.4.tgz#a4b9f49e36175f5ef1a3456f580226a6e7abcc9e" @@ -10056,13 +9571,12 @@ file-entry-cache@^1.1.1: flat-cache "^1.2.1" object-assign "^4.0.1" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" + flat-cache "^2.0.1" file-loader@1.1.11: version "1.1.11" @@ -10329,6 +9843,15 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + flatted@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" @@ -10529,15 +10052,6 @@ fs-extra@5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" - integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -10582,7 +10096,7 @@ fs-mkdirp-stream@^1.0.0: graceful-fs "^4.1.11" through2 "^2.0.3" -fs-readdir-recursive@^1.0.0, fs-readdir-recursive@^1.1.0: +fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== @@ -10610,6 +10124,14 @@ fsevents@^1.0.0, fsevents@^1.2.2, fsevents@^1.2.3: nan "^2.9.2" node-pre-gyp "^0.10.0" +fsevents@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" @@ -11535,10 +11057,10 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -grunt-babel@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/grunt-babel/-/grunt-babel-7.0.0.tgz#13c90c01f154dec214e0eeb5d66ac7c70cedf2d3" - integrity sha512-AFilvH/iPbnIYhL4Wx36AJQCaVEvK55xh0tujAt1DIM5tuxYxRsgUPEpwijBU147B+as/ssGuY9/6JYfTiAWpw== +grunt-babel@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/grunt-babel/-/grunt-babel-8.0.0.tgz#92ef63aafadf938c488dc2f926ac9846e0c93d1b" + integrity sha512-WuiZFvGzcyzlEoPIcY1snI234ydDWeWWV5bpnB7PZsOLHcDsxWKnrR1rMWEUsbdVPPjvIirwFNsuo4CbJmsdFQ== grunt-cli@^1.2.0, grunt-cli@~1.2.0: version "1.2.0" @@ -11657,13 +11179,13 @@ grunt@1.0.3: path-is-absolute "~1.0.0" rimraf "~2.6.2" -gulp-babel@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/gulp-babel/-/gulp-babel-7.0.1.tgz#b9c8e29fa376b36c57989db820fc1c1715bb47cb" - integrity sha512-UqHS3AdxZyJCRxqnAX603Dj3k/Wx6hzcgmav3QcxvsIFq3Y8ZkU7iXd0O+JwD5ivqCc6o0r1S7tCB/xxLnuSNw== +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 "0.0.1" + replace-ext "^1.0.0" through2 "^2.0.0" vinyl-sourcemaps-apply "^0.2.0" @@ -12159,6 +11681,11 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" +home-or-tmp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" + integrity sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs= + homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" @@ -12375,7 +11902,7 @@ icalendar@0.7.1: resolved "https://registry.yarnpkg.com/icalendar/-/icalendar-0.7.1.tgz#d0d3486795f8f1c5cf4f8cafac081b4b4e7a32ae" integrity sha1-0NNIZ5X48cXPT4yvrAgbS056Mq4= -iconv-lite@0.4, iconv-lite@^0.4.17, iconv-lite@^0.4.19, iconv-lite@^0.4.22, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4, iconv-lite@^0.4.17, iconv-lite@^0.4.19, iconv-lite@^0.4.22, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -12480,6 +12007,14 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" + integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -12616,7 +12151,7 @@ inline-style@^2.0.0: dependencies: dashify "^0.1.0" -inquirer@6.2.0, inquirer@^6.1.0, inquirer@^6.2.0: +inquirer@6.2.0, inquirer@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== @@ -12751,6 +12286,25 @@ inquirer@^6.0.0: strip-ansi "^4.0.0" through "^2.3.6" +inquirer@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" + integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.11" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.0.0" + through "^2.3.6" + insane@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/insane/-/insane-2.5.0.tgz#3252baec85c53b108cdf731e7962b7ce9c5cff1f" @@ -13331,7 +12885,7 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.0.0, is-resolvable@^1.1.0: +is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== @@ -13535,6 +13089,11 @@ istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== +istanbul-lib-coverage@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" + integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== + istanbul-lib-hook@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" @@ -13568,6 +13127,19 @@ istanbul-lib-instrument@^1.7.3: istanbul-lib-coverage "^1.2.0" semver "^5.3.0" +istanbul-lib-instrument@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" + integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA== + dependencies: + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + istanbul-lib-coverage "^2.0.3" + semver "^5.5.0" + istanbul-lib-report@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" @@ -15346,11 +14918,6 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= -lodash@4.17.4, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= - lodash@^3.10.0, lodash@^3.10.1, lodash@^3.3.1, lodash@^3.8.0, lodash@~3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -15361,6 +14928,11 @@ lodash@^4.0.0, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@~4.17.10: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== +lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= + lodash@^4.11.1, lodash@^4.17.2, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1, lodash@^4.8.2, lodash@~4.17.5: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -15582,11 +15154,6 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-error@^1.1.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" - integrity sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g== - make-error@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" @@ -15894,7 +15461,7 @@ micromatch@^2.1.5, micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -16629,6 +16196,11 @@ node-int64@^0.4.0: util "^0.10.3" vm-browserify "0.0.4" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + node-notifier@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" @@ -17287,15 +16859,6 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - output-file-sync@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" @@ -17477,6 +17040,13 @@ param-case@2.1.x, param-case@^2.1.0: dependencies: no-case "^2.2.0" +parent-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" + integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== + dependencies: + callsites "^3.0.0" + parse-asn1@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" @@ -17688,6 +17258,11 @@ path-parse@^1.0.5: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -17851,6 +17426,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pirates@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pixelmatch@4.0.2, pixelmatch@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" @@ -17858,13 +17440,6 @@ pixelmatch@4.0.2, pixelmatch@^4.0.0: dependencies: pngjs "^3.0.0" -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -17941,11 +17516,6 @@ pluralize@^1.2.1: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - pn@^1.0.0, pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -18141,6 +17711,13 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier@1.14.3: version "1.14.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.3.tgz#90238dd4c0684b7edce5f83b0fb7328e48bd0895" @@ -18177,7 +17754,7 @@ pretty-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -private@^0.1.6, private@^0.1.7, private@^0.1.8, private@~0.1.5: +private@^0.1.6, private@^0.1.7, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -18649,10 +18226,10 @@ ramda@^0.21.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU= -ramda@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" - integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== +ramda@^0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" + integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== randexp@0.4.6: version "0.4.6" @@ -19556,6 +19133,15 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + readline2@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" @@ -19727,7 +19313,7 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.10.0, regenerator-runtime@^0.10.5: +regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= @@ -19742,15 +19328,6 @@ regenerator-runtime@^0.12.0, regenerator-runtime@^0.12.1: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - regenerator-transform@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" @@ -19803,10 +19380,10 @@ regexp.prototype.flags@^1.2.0: dependencies: define-properties "^1.1.2" -regexpp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365" - integrity sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA== +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== regexpu-core@^1.0.0: version "1.0.0" @@ -19817,15 +19394,6 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - regexpu-core@^4.1.3, regexpu-core@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" @@ -20139,7 +19707,7 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -require-uncached@^1.0.2, require-uncached@^1.0.3: +require-uncached@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= @@ -20240,7 +19808,7 @@ resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: dependencies: path-parse "^1.0.5" -resolve@^1.3.2, resolve@^1.4.0, resolve@^1.6.0, resolve@^1.8.1: +resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== @@ -20254,6 +19822,13 @@ resolve@^1.5.0, resolve@^1.7.1: dependencies: path-parse "^1.0.5" +resolve@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -20320,18 +19895,18 @@ rimraf@2.4.3: dependencies: glob "^5.0.14" -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= - -rimraf@~2.6.2: +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" @@ -20482,6 +20057,13 @@ rxjs@^6.2.1: dependencies: tslib "^1.9.0" +rxjs@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" + integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -21075,11 +20657,13 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" slide@^1.1.5, slide@~1.1.3: @@ -21263,6 +20847,14 @@ source-map-support@^0.5.6, source-map-support@~0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.5.9: + version "0.5.10" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" + integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -21686,6 +21278,15 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.0.0.tgz#5a1690a57cc78211fffd9bf24bbe24d090604eb1" + integrity sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.0.0" + string.prototype.matchall@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-3.0.0.tgz#66f4d8dd5c6c6cea4dffb55ec5f3184a8dd0dd59" @@ -21776,6 +21377,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + strip-bom-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" @@ -22111,17 +21719,15 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" -table@^4.0.3: - version "4.0.3" - resolved "http://registry.npmjs.org/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" - integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== +table@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" + integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== dependencies: - ajv "^6.0.1" - ajv-keywords "^3.0.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" tabtab@^1.3.2: version "1.3.2" @@ -22304,6 +21910,16 @@ test-exclude@^4.2.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" +test-exclude@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1" + integrity sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA== + dependencies: + arrify "^1.0.1" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^1.0.1" + text-encoding@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -22736,46 +22352,11 @@ trunc-text@1.0.2: resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.2.tgz#b582bb3ddea9c9adc25017d737c48ebdd2157406" integrity sha1-tYK7Pd6pya3CUBfXN8SOvdIVdAY= -ts-jest@^23.1.4: - version "23.1.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.1.4.tgz#66ac1d8d3fbf8f9a98432b11aa377aa850664b2b" - integrity sha512-9rCSxbWfoZxxeXnSoEIzRNr9hDIQ8iEJAWmSRsWhDHDT8OeuGfURhJQUE8jtJlkyEygs6rngH8RYtHz9cfjmEA== - dependencies: - closest-file-data "^0.1.4" - fs-extra "6.0.1" - json5 "^0.5.0" - lodash "^4.17.10" - -ts-loader@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.2.2.tgz#a707849b08ca754cc46f5c7053e79fe1c84caf0e" - integrity sha512-vM/TrEKXBqRYq5yLatsXyKFnYSpv53klmGtrILGlNqcMsxPVi8+e4yr1Agbu9oMZepx/4szDVn5QpFo83IQdQg== - dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" - micromatch "^3.1.4" - semver "^5.0.1" - ts-log@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.3.tgz#9e30aca1baffe7693a2e4142b8f07ecb01cb8340" integrity sha512-VIk9+hzE80UjhJcSANst8LGRBpfNh32y9d3LVDMtEqcEb1x0hB71IO0aObNcLJ5VpK5tKeF9uI4pwEco03SkwA== -ts-node@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" - integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== - dependencies: - arrify "^1.0.0" - buffer-from "^1.1.0" - diff "^3.1.0" - make-error "^1.1.1" - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map-support "^0.5.6" - yn "^2.0.0" - tsconfig-paths@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.8.0.tgz#4e34202d5b41958f269cf56b01ed95b853d59f72" @@ -23674,7 +23255,7 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -upath@^1.0.0, upath@^1.0.5: +upath@^1.0.0, upath@^1.0.5, upath@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== @@ -23897,7 +23478,7 @@ v8-compile-cache@^2.0.2: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== -v8flags@^2.0.2, v8flags@^2.1.1: +v8flags@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= @@ -24940,6 +24521,13 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -25422,11 +25010,6 @@ yeoman-generator@1.1.1: user-home "^2.0.0" yeoman-environment "^1.1.0" -yn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" - integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= - yo@2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/yo/-/yo-2.0.5.tgz#2f747f5d279ab777e0167b0aa63d7b607507d73d" From 8e8a4f6a39c8277bcd8d3952a7d11454d2340ea7 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 28 Feb 2019 05:47:15 +0000 Subject: [PATCH 02/56] chore(NA): patch babel register to load typescrit --- packages/kbn-babel-preset/common_preset.js | 38 +++++++------ packages/kbn-babel-preset/node_preset.js | 56 ++++++++++--------- packages/kbn-babel-preset/webpack_preset.js | 34 +++++------ packages/kbn-interpreter/.babelrc | 1 - .../tasks/build/server_code_transformer.js | 2 +- src/setup_node_env/babel_register/register.js | 9 +-- 6 files changed, 73 insertions(+), 67 deletions(-) diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index eed591affcc642..4e96c3b92d29c8 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -17,23 +17,25 @@ * under the License. */ -module.exports = { - presets: [ - require.resolve('@babel/preset-react'), - require.resolve('@babel/preset-typescript'), - ], - plugins: [ - require.resolve('babel-plugin-add-module-exports'), - // stage 3 - require.resolve('@babel/plugin-proposal-object-rest-spread'), - require.resolve('@babel/plugin-transform-async-to-generator'), +module.exports = () => { + return { + presets: [ + require.resolve('@babel/preset-typescript'), + require.resolve('@babel/preset-react'), + ], + plugins: [ + require.resolve('babel-plugin-add-module-exports'), + // stage 3 + require.resolve('@babel/plugin-proposal-object-rest-spread'), + require.resolve('@babel/plugin-transform-async-to-generator'), - // the class properties proposal was merged with the private fields proposal - // into the "class fields" proposal. Babel doesn't support this combined - // proposal yet, which includes private field, so this transform is - // TECHNICALLY stage 2, but for all intents and purposes it's stage 3 - // - // See https://github.com/babel/proposals/issues/12 for progress - require.resolve('@babel/plugin-proposal-class-properties'), - ], + // the class properties proposal was merged with the private fields proposal + // into the "class fields" proposal. Babel doesn't support this combined + // proposal yet, which includes private field, so this transform is + // TECHNICALLY stage 2, but for all intents and purposes it's stage 3 + // + // See https://github.com/babel/proposals/issues/12 for progress + require.resolve('@babel/plugin-proposal-class-properties'), + ], + }; }; diff --git a/packages/kbn-babel-preset/node_preset.js b/packages/kbn-babel-preset/node_preset.js index 2b11e17f78d3d6..de5a533bac0696 100644 --- a/packages/kbn-babel-preset/node_preset.js +++ b/packages/kbn-babel-preset/node_preset.js @@ -17,34 +17,36 @@ * under the License. */ -module.exports = { - presets: [ - [ - require.resolve('@babel/preset-env'), - { - targets: { - // only applies the necessary transformations based on the - // current node.js processes version. For example: running - // `nvm install 8 && node ./src/cli` will run kibana in node - // version 8 and babel will stop transpiling async/await - // because they are supported in the "current" version of node - node: 'current', - }, +module.exports = () => { + return { + presets: [ + [ + require.resolve('@babel/preset-env'), + { + targets: { + // only applies the necessary transformations based on the + // current node.js processes version. For example: running + // `nvm install 8 && node ./src/cli` will run kibana in node + // version 8 and babel will stop transpiling async/await + // because they are supported in the "current" version of node + node: 'current', + }, - // replaces `import "@babel/polyfill"` with a list of require statements - // for just the polyfills that the target versions don't already supply - // on their own - useBuiltIns: true, - }, + // replaces `import "@babel/polyfill"` with a list of require statements + // for just the polyfills that the target versions don't already supply + // on their own + useBuiltIns: 'entry', + }, + ], + require('./common_preset'), ], - require('./common_preset'), - ], - plugins: [ - [ - require.resolve('babel-plugin-transform-define'), - { - 'global.__BUILT_WITH_BABEL__': 'true' - } + plugins: [ + [ + require.resolve('babel-plugin-transform-define'), + { + 'global.__BUILT_WITH_BABEL__': 'true' + } + ] ] - ] + }; }; diff --git a/packages/kbn-babel-preset/webpack_preset.js b/packages/kbn-babel-preset/webpack_preset.js index 61ff21a2e13115..f8342af62d928f 100644 --- a/packages/kbn-babel-preset/webpack_preset.js +++ b/packages/kbn-babel-preset/webpack_preset.js @@ -17,21 +17,23 @@ * under the License. */ -module.exports = { - presets: [ - [ - require.resolve('@babel/preset-env'), - { - targets: { - browsers: [ - 'last 2 versions', - '> 5%', - 'Safari 7', // for PhantomJS support: https://github.com/elastic/kibana/issues/27136 - ], +module.exports = () => { + return { + presets: [ + [ + require.resolve('@babel/preset-env'), + { + targets: { + browsers: [ + 'last 2 versions', + '> 5%', + 'Safari 7', // for PhantomJS support: https://github.com/elastic/kibana/issues/27136 + ], + }, + useBuiltIns: 'entry', }, - useBuiltIns: true, - }, - ], - require('./common_preset'), - ] + ], + require('./common_preset'), + ] + }; }; diff --git a/packages/kbn-interpreter/.babelrc b/packages/kbn-interpreter/.babelrc index 8472361bfa3a05..875cbcde9d0e1d 100644 --- a/packages/kbn-interpreter/.babelrc +++ b/packages/kbn-interpreter/.babelrc @@ -2,7 +2,6 @@ "presets": ["@kbn/babel-preset/webpack_preset"], "plugins": [ ["@babel/plugin-transform-runtime", { - "polyfill": false, "regenerator": true }] ] diff --git a/packages/kbn-interpreter/tasks/build/server_code_transformer.js b/packages/kbn-interpreter/tasks/build/server_code_transformer.js index 5db4dc13640cb1..b1185f47521965 100644 --- a/packages/kbn-interpreter/tasks/build/server_code_transformer.js +++ b/packages/kbn-interpreter/tasks/build/server_code_transformer.js @@ -19,7 +19,7 @@ const { extname } = require('path'); -const { transform } = require('babel-core'); +const { transform } = require('@babel/core'); exports.createServerCodeTransformer = (sourceMaps) => { return (content, path) => { diff --git a/src/setup_node_env/babel_register/register.js b/src/setup_node_env/babel_register/register.js index f0898b245fb0e7..148d263e095c5e 100644 --- a/src/setup_node_env/babel_register/register.js +++ b/src/setup_node_env/babel_register/register.js @@ -19,7 +19,7 @@ var resolve = require('path').resolve; -// this must happen before `require('babel-register')` and can't be changed +// this must happen before `require('@babel/register')` and can't be changed // once the module has been loaded if (!process.env.BABEL_CACHE_PATH) { process.env.BABEL_CACHE_PATH = resolve(__dirname, '../../../optimize/.babelcache.json'); @@ -48,10 +48,10 @@ var ignore = [ if (global.__BUILT_WITH_BABEL__) { // when building the Kibana source we replace the statement // `global.__BUILT_WITH_BABEL__` with the value `true` so that - // when babel-register is required for the first time by users + // when @babel/register is required for the first time by users // it will exclude kibana's `src` directory. // - // We still need babel-register for plugins though, we've been + // We still need @babel/register for plugins though, we've been // building their server code at require-time since version 4.2 // TODO: the plugin install process could transpile plugin server code... ignore.push(resolve(__dirname, '../../../src')); @@ -66,10 +66,11 @@ if (global.__BUILT_WITH_BABEL__) { // modifies all future calls to require() to automatically // compile the required source with babel -require('babel-register')({ +require('@babel/register')({ ignore, babelrc: false, presets: [ require.resolve('@kbn/babel-preset/node_preset') ], + extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx'], }); From 5f46073166acc8a455cab6fd58e5cd0e1a6323b5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 28 Feb 2019 17:47:15 +0000 Subject: [PATCH 03/56] chore(NA): first working version with babel 7 replacing typescript compiler. --- packages/kbn-babel-preset/common_preset.js | 7 +++ packages/kbn-babel-preset/package.json | 5 ++- packages/kbn-config-schema/tsconfig.json | 43 ++++++++++--------- packages/kbn-i18n/tsconfig.json | 41 +++++++++--------- src/optimize/base_optimizer.js | 17 ++++++-- tsconfig.json | 4 +- tsconfig.types.json | 35 +++++++-------- .../public/components/report_listing.tsx | 5 --- .../components/reporting_panel_content.tsx | 2 +- .../server/lib/reindexing/worker.ts | 2 +- yarn.lock | 20 +++++++++ 11 files changed, 111 insertions(+), 70 deletions(-) diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index 4e96c3b92d29c8..3caabbd87fc5fb 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -36,6 +36,13 @@ module.exports = () => { // // See https://github.com/babel/proposals/issues/12 for progress require.resolve('@babel/plugin-proposal-class-properties'), + + // Babel 7 don't support the namespace feature on typescript code. + // With namespaces only used for type declarations, we can securely + // strip them off for babel + // + // See https://github.com/babel/babel/issues/8244#issuecomment-466548733 + require.resolve('babel-plugin-typescript-strip-namespaces'), ], }; }; diff --git a/packages/kbn-babel-preset/package.json b/packages/kbn-babel-preset/package.json index 75fd4faca899a9..3c55330a8b156d 100644 --- a/packages/kbn-babel-preset/package.json +++ b/packages/kbn-babel-preset/package.json @@ -11,6 +11,9 @@ "@babel/preset-react":"^7.0.0", "@babel/preset-typescript": "^7.3.3", "babel-plugin-add-module-exports": "^1.0.0", - "babel-plugin-transform-define": "^1.3.1" + "babel-plugin-transform-define": "^1.3.1", + "babel-plugin-typescript-strip-namespaces": "^1.1.1", + "@babel/plugin-proposal-export-default-from":"^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0" } } diff --git a/packages/kbn-config-schema/tsconfig.json b/packages/kbn-config-schema/tsconfig.json index 3b1982520da06e..0912316e75f49f 100644 --- a/packages/kbn-config-schema/tsconfig.json +++ b/packages/kbn-config-schema/tsconfig.json @@ -1,21 +1,22 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "declaration": true, - "declarationDir": "./target/types", - "outDir": "./target/out", - "stripInternal": true, - "declarationMap": true, - "types": [ - "jest", - "node" - ] - }, - "include": [ - "./types/joi.d.ts", - "./src/**/*.ts" - ], - "exclude": [ - "target" - ] -} +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "isolatedModules": false, + "declaration": true, + "declarationDir": "./target/types", + "outDir": "./target/out", + "stripInternal": true, + "declarationMap": true, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "./types/joi.d.ts", + "./src/**/*.ts" + ], + "exclude": [ + "target" + ] +} diff --git a/packages/kbn-i18n/tsconfig.json b/packages/kbn-i18n/tsconfig.json index 3b757d1240bdc6..17ba373635b136 100644 --- a/packages/kbn-i18n/tsconfig.json +++ b/packages/kbn-i18n/tsconfig.json @@ -1,20 +1,21 @@ -{ - "extends": "../../tsconfig.json", - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - "types/intl_format_cache.d.ts", - "types/intl_relativeformat.d.ts" - ], - "exclude": [ - "target" - ], - "compilerOptions": { - "declaration": true, - "declarationDir": "./target/types", - "types": [ - "jest", - "node" - ] - } -} +{ + "extends": "../../tsconfig.json", + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "types/intl_format_cache.d.ts", + "types/intl_relativeformat.d.ts" + ], + "exclude": [ + "target" + ], + "compilerOptions": { + "isolatedModules": false, + "declaration": true, + "declarationDir": "./target/types", + "types": [ + "jest", + "node" + ] + } +} diff --git a/src/optimize/base_optimizer.js b/src/optimize/base_optimizer.js index 6f3c053ef2eeec..b751f8c68de91b 100644 --- a/src/optimize/base_optimizer.js +++ b/src/optimize/base_optimizer.js @@ -359,7 +359,7 @@ export default class BaseOptimizer { loader: 'file-loader' }, { - resource: createSourceFileResourceSelector(/\.js$/), + resource: createSourceFileResourceSelector(/\.(js|jsx|ts|tsx)$/), use: maybeAddCacheLoader('babel', [ { loader: 'thread-loader', @@ -370,8 +370,19 @@ export default class BaseOptimizer { options: { babelrc: false, presets: [ - BABEL_PRESET_PATH, + '@babel/preset-env', + '@babel/preset-typescript', + '@babel/preset-react' ], + plugins: [ + '@babel/plugin-proposal-object-rest-spread', + 'babel-plugin-add-module-exports', + '@babel/plugin-transform-async-to-generator', + '@babel/plugin-proposal-class-properties', + 'babel-plugin-typescript-strip-namespaces', + '@babel/plugin-transform-modules-commonjs', + '@babel/plugin-proposal-export-default-from' + ] }, } ]), @@ -385,7 +396,7 @@ export default class BaseOptimizer { }, resolve: { - extensions: ['.js', '.ts', '.tsx', '.json'], + extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], mainFields: ['browser', 'browserify', 'main'], modules: [ 'webpackShims', diff --git a/tsconfig.json b/tsconfig.json index 5c1204a99208c4..e8969404237e66 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -47,7 +47,9 @@ "downlevelIteration": true, // import tslib helpers rather than inlining helpers for iteration or spreading, for instance "importHelpers": true, - "skipLibCheck": true + "skipLibCheck": true, + // Disallow features that require cross-file information for emit. + "isolatedModules": true }, "include": [ "kibana.d.ts", diff --git a/tsconfig.types.json b/tsconfig.types.json index c50629931ddcb6..3d7e2607218d38 100644 --- a/tsconfig.types.json +++ b/tsconfig.types.json @@ -1,17 +1,18 @@ -{ - "extends": "./tsconfig", - "compilerOptions": { - "declaration": true, - "declarationDir": "./target/types", - "stripInternal": true, - "emitDeclarationOnly": true, - "declarationMap": true, - "types": [ - "node", - "jest" - ] - }, - "include": [ - "./src/type_exports.ts" - ] -} +{ + "extends": "./tsconfig", + "compilerOptions": { + "isolatedModules": false, + "declaration": true, + "declarationDir": "./target/types", + "stripInternal": true, + "emitDeclarationOnly": true, + "declarationMap": true, + "types": [ + "node", + "jest" + ] + }, + "include": [ + "./src/type_exports.ts" + ] +} diff --git a/x-pack/plugins/reporting/public/components/report_listing.tsx b/x-pack/plugins/reporting/public/components/report_listing.tsx index 262362a1e5a518..c6e93429b6600c 100644 --- a/x-pack/plugins/reporting/public/components/report_listing.tsx +++ b/x-pack/plugins/reporting/public/components/report_listing.tsx @@ -4,11 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -// TODO: Remove once typescript definitions are in EUI -declare module '@elastic/eui' { - export const EuiBasicTable: React.SFC; -} - import { i18n } from '@kbn/i18n'; import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n/react'; import moment from 'moment'; diff --git a/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx b/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx index d8a184b56c4202..700a86d2c94720 100644 --- a/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx +++ b/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx @@ -9,7 +9,7 @@ declare module '@elastic/eui' { export const EuiCopy: React.SFC; } -import { EuiButton, EuiCopy, EuiForm, EuiFormRow, EuiSpacer, EuiText } from '@elastic/eui'; +import { EuiButton, EuiForm, EuiFormRow, EuiSpacer, EuiText } from '@elastic/eui'; import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n/react'; import React, { Component, ReactElement } from 'react'; import { KFetchError } from 'ui/kfetch/kfetch_error'; diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/worker.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/worker.ts index aec66f865fc18f..3485d43dc9a2b9 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/worker.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/worker.ts @@ -7,7 +7,7 @@ import { CallCluster, CallClusterWithRequest } from 'src/legacy/core_plugins/ela import { Request, Server } from 'src/legacy/server/kbn_server'; import { SavedObjectsClient } from 'src/legacy/server/saved_objects'; -import moment = require('moment'); +import moment from 'moment'; import { XPackInfo } from 'x-pack/plugins/xpack_main/server/lib/xpack_info'; import { ReindexSavedObject, ReindexStatus } from '../../../common/types'; import { CredentialStore } from './credential_store'; diff --git a/yarn.lock b/yarn.lock index c6eb0d5d4dca0f..393f67cb140c28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -281,6 +281,14 @@ "@babel/helper-create-class-features-plugin" "^7.3.4" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-proposal-export-default-from@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz#737b0da44b9254b6152fe29bb99c64e5691f6f68" + integrity sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.2.0" + "@babel/plugin-proposal-json-strings@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" @@ -321,6 +329,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-export-default-from@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz#edd83b7adc2e0d059e2467ca96c650ab6d2f3820" + integrity sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" @@ -4303,6 +4318,11 @@ babel-plugin-transform-undefined-to-void@^6.9.4: resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= +babel-plugin-typescript-strip-namespaces@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-typescript-strip-namespaces/-/babel-plugin-typescript-strip-namespaces-1.1.1.tgz#160433b17e424b57cf72e3b4d8f08195ad28d7fd" + integrity sha512-dVB9caEANbEVwUylL8g3lsYU5JjaXE2KNIVLib3KVcGJF32QunxvQqP6kf+lzW/fyDed/zWD/e/hdyimyc/79Q== + babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" From 12e320a46e07fde60fa7d4a037f5ce3c2a2ac479 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 28 Feb 2019 18:49:34 +0000 Subject: [PATCH 04/56] fix(NA): common preset declaration in order to make it work with babel-loader. --- packages/kbn-babel-preset/common_preset.js | 54 ++++++++++--------- src/optimize/base_optimizer.js | 15 +----- .../public/components/report_listing.tsx | 6 ++- 3 files changed, 35 insertions(+), 40 deletions(-) diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index 3caabbd87fc5fb..deac8848db39b3 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -17,32 +17,34 @@ * under the License. */ -module.exports = () => { - return { - presets: [ - require.resolve('@babel/preset-typescript'), - require.resolve('@babel/preset-react'), - ], - plugins: [ - require.resolve('babel-plugin-add-module-exports'), - // stage 3 - require.resolve('@babel/plugin-proposal-object-rest-spread'), - require.resolve('@babel/plugin-transform-async-to-generator'), +module.exports = { + presets: [ + require.resolve('@babel/preset-typescript'), + require.resolve('@babel/preset-react') + ], + plugins: [ + require.resolve('babel-plugin-add-module-exports'), + // stage 3 + require.resolve('@babel/plugin-proposal-export-default-from'), + require.resolve('@babel/plugin-proposal-object-rest-spread'), + require.resolve('@babel/plugin-transform-async-to-generator'), + require.resolve('@babel/plugin-transform-modules-commonjs'), - // the class properties proposal was merged with the private fields proposal - // into the "class fields" proposal. Babel doesn't support this combined - // proposal yet, which includes private field, so this transform is - // TECHNICALLY stage 2, but for all intents and purposes it's stage 3 - // - // See https://github.com/babel/proposals/issues/12 for progress - require.resolve('@babel/plugin-proposal-class-properties'), + // the class properties proposal was merged with the private fields proposal + // into the "class fields" proposal. Babel doesn't support this combined + // proposal yet, which includes private field, so this transform is + // TECHNICALLY stage 2, but for all intents and purposes it's stage 3 + // + // See https://github.com/babel/proposals/issues/12 for progress + require.resolve('@babel/plugin-proposal-class-properties'), - // Babel 7 don't support the namespace feature on typescript code. - // With namespaces only used for type declarations, we can securely - // strip them off for babel - // - // See https://github.com/babel/babel/issues/8244#issuecomment-466548733 - require.resolve('babel-plugin-typescript-strip-namespaces'), - ], - }; + // Babel 7 don't support the namespace feature on typescript code. + // With namespaces only used for type declarations, we can securely + // strip them off for babel + // + // See https://github.com/babel/babel/issues/8244#issuecomment-466548733 + // TODO: we should only apply this to the autogenerated file + // on x-pack infra plugin which uses namespaces + require.resolve('babel-plugin-typescript-strip-namespaces'), + ], }; diff --git a/src/optimize/base_optimizer.js b/src/optimize/base_optimizer.js index b751f8c68de91b..4afa85aa2f855d 100644 --- a/src/optimize/base_optimizer.js +++ b/src/optimize/base_optimizer.js @@ -359,7 +359,7 @@ export default class BaseOptimizer { loader: 'file-loader' }, { - resource: createSourceFileResourceSelector(/\.(js|jsx|ts|tsx)$/), + resource: createSourceFileResourceSelector(/\.(js|jsx|tsx|ts)$/), use: maybeAddCacheLoader('babel', [ { loader: 'thread-loader', @@ -370,19 +370,8 @@ export default class BaseOptimizer { options: { babelrc: false, presets: [ - '@babel/preset-env', - '@babel/preset-typescript', - '@babel/preset-react' + BABEL_PRESET_PATH, ], - plugins: [ - '@babel/plugin-proposal-object-rest-spread', - 'babel-plugin-add-module-exports', - '@babel/plugin-transform-async-to-generator', - '@babel/plugin-proposal-class-properties', - 'babel-plugin-typescript-strip-namespaces', - '@babel/plugin-transform-modules-commonjs', - '@babel/plugin-proposal-export-default-from' - ] }, } ]), diff --git a/x-pack/plugins/reporting/public/components/report_listing.tsx b/x-pack/plugins/reporting/public/components/report_listing.tsx index c6e93429b6600c..e336eae3f26a19 100644 --- a/x-pack/plugins/reporting/public/components/report_listing.tsx +++ b/x-pack/plugins/reporting/public/components/report_listing.tsx @@ -4,6 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ +// TODO: Remove once typescript definitions are in EUI +declare module '@elastic/eui' { + export const EuiBasicTable: React.SFC; +} + import { i18n } from '@kbn/i18n'; import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n/react'; import moment from 'moment'; @@ -18,7 +23,6 @@ import { ReportErrorButton } from './report_error_button'; import { ReportInfoButton } from './report_info_button'; import { - EuiBasicTable, EuiButtonIcon, EuiPageContent, EuiSpacer, From 1005dbb308adcd99442c5573dcd5fa9e6494560f Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 28 Feb 2019 18:52:48 +0000 Subject: [PATCH 05/56] chore(na): organizing babel preset env package json. --- packages/kbn-babel-preset/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kbn-babel-preset/package.json b/packages/kbn-babel-preset/package.json index 3c55330a8b156d..5d7de6428c58e6 100644 --- a/packages/kbn-babel-preset/package.json +++ b/packages/kbn-babel-preset/package.json @@ -5,15 +5,15 @@ "license": "Apache-2.0", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.3.4", + "@babel/plugin-proposal-export-default-from":"^7.2.0", "@babel/plugin-proposal-object-rest-spread": "^7.3.4", "@babel/plugin-transform-async-to-generator": "^7.3.4", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", "@babel/preset-env": "^7.3.4", "@babel/preset-react":"^7.0.0", "@babel/preset-typescript": "^7.3.3", "babel-plugin-add-module-exports": "^1.0.0", "babel-plugin-transform-define": "^1.3.1", - "babel-plugin-typescript-strip-namespaces": "^1.1.1", - "@babel/plugin-proposal-export-default-from":"^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0" + "babel-plugin-typescript-strip-namespaces": "^1.1.1" } } From 5c652e33b226990a7a9a4561a5fe77990fae2c30 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 1 Mar 2019 02:50:14 +0000 Subject: [PATCH 06/56] chore(NA): mocha tests enabled. --- package.json | 1 + packages/kbn-config-schema/tsconfig.json | 1 - packages/kbn-i18n/tsconfig.json | 1 - src/core/server/legacy/legacy_service.test.ts | 10 +-- src/dev/jest/ts_transform.ts | 7 +- src/dev/mocha/run_mocha_cli.js | 2 +- tsconfig.json | 5 +- tsconfig.types.json | 1 - .../public/components/report_listing.tsx | 3 +- .../components/reporting_panel_content.tsx | 13 +++- .../common/services/es.js | 3 +- yarn.lock | 70 ++++++++++++------- 12 files changed, 74 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 236689d5310bad..8a195aa7a45d5d 100644 --- a/package.json +++ b/package.json @@ -398,6 +398,7 @@ "supertest": "^3.1.0", "supertest-as-promised": "^4.0.2", "tree-kill": "^1.1.0", + "ts-jest": "^23.10.4", "tsconfig-paths": "^3.8.0", "tslint": "^5.11.0", "tslint-config-prettier": "^1.15.0", diff --git a/packages/kbn-config-schema/tsconfig.json b/packages/kbn-config-schema/tsconfig.json index 0912316e75f49f..f6c61268da17c9 100644 --- a/packages/kbn-config-schema/tsconfig.json +++ b/packages/kbn-config-schema/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "isolatedModules": false, "declaration": true, "declarationDir": "./target/types", "outDir": "./target/out", diff --git a/packages/kbn-i18n/tsconfig.json b/packages/kbn-i18n/tsconfig.json index 17ba373635b136..d3dae3078c1d7d 100644 --- a/packages/kbn-i18n/tsconfig.json +++ b/packages/kbn-i18n/tsconfig.json @@ -10,7 +10,6 @@ "target" ], "compilerOptions": { - "isolatedModules": false, "declaration": true, "declarationDir": "./target/types", "types": [ diff --git a/src/core/server/legacy/legacy_service.test.ts b/src/core/server/legacy/legacy_service.test.ts index 8829be572f4961..0c53df447189d1 100644 --- a/src/core/server/legacy/legacy_service.test.ts +++ b/src/core/server/legacy/legacy_service.test.ts @@ -18,6 +18,7 @@ */ import { BehaviorSubject, Subject, throwError } from 'rxjs'; +import { mocked } from 'ts-jest/utils'; jest.mock('./legacy_platform_proxy'); jest.mock('../../../legacy/server/kbn_server'); @@ -36,6 +37,7 @@ import { LegacyPlatformProxy } from './legacy_platform_proxy'; const MockKbnServer: jest.Mock = KbnServer as any; const MockLegacyPlatformProxy: jest.Mock = LegacyPlatformProxy as any; +const MockedClusterManager = mocked(MockClusterManager, true); let legacyService: LegacyService; let configService: jest.Mocked; @@ -72,7 +74,7 @@ beforeEach(() => { afterEach(() => { MockLegacyPlatformProxy.mockClear(); MockKbnServer.mockClear(); - MockClusterManager.create.mockClear(); + MockedClusterManager.create.mockClear(); logger.mockClear(); }); @@ -205,7 +207,7 @@ describe('once LegacyService is started with connection info', () => { await expect(legacyService.start(startDeps)).rejects.toThrowErrorMatchingSnapshot(); expect(MockKbnServer).not.toHaveBeenCalled(); - expect(MockClusterManager).not.toHaveBeenCalled(); + expect(MockedClusterManager).not.toHaveBeenCalled(); }); test('reconfigures logging configuration if new config is received.', async () => { @@ -326,7 +328,7 @@ describe('once LegacyService is started in `devClusterMaster` mode', () => { await devClusterLegacyService.start({ plugins: new Map() }); - expect(MockClusterManager.create.mock.calls).toMatchSnapshot( + expect(MockedClusterManager.create.mock.calls).toMatchSnapshot( 'cluster manager without base path proxy' ); }); @@ -345,7 +347,7 @@ describe('once LegacyService is started in `devClusterMaster` mode', () => { await devClusterLegacyService.start({ plugins: new Map() }); - expect(MockClusterManager.create.mock.calls).toMatchSnapshot( + expect(MockedClusterManager.create.mock.calls).toMatchSnapshot( 'cluster manager with base path proxy' ); }); diff --git a/src/dev/jest/ts_transform.ts b/src/dev/jest/ts_transform.ts index ed366bcd091a0b..82c03d4d9f6588 100644 --- a/src/dev/jest/ts_transform.ts +++ b/src/dev/jest/ts_transform.ts @@ -17,7 +17,8 @@ * under the License. */ -import TsJest from 'ts-jest'; +// @ts-ignore +import { getCacheKey, process } from 'ts-jest'; import { getTsProjectForAbsolutePath } from '../typescript'; @@ -59,7 +60,7 @@ module.exports = { transformOptions: jest.TransformOptions ) { const extendedConfig = extendJestConfig(jestConfig, filePath); - return TsJest.process(src, filePath, extendedConfig, transformOptions); + return process(src, filePath, extendedConfig, transformOptions); }, getCacheKey( @@ -69,6 +70,6 @@ module.exports = { transformOptions: jest.TransformOptions ) { const extendedConfigJSON = extendJestConfigJSON(jestConfigJSON, filePath); - return TsJest.getCacheKey!(src, filePath, extendedConfigJSON, transformOptions); + return getCacheKey!(src, filePath, extendedConfigJSON, transformOptions); }, }; diff --git a/src/dev/mocha/run_mocha_cli.js b/src/dev/mocha/run_mocha_cli.js index d24f9a06eafdde..299a910127d40d 100644 --- a/src/dev/mocha/run_mocha_cli.js +++ b/src/dev/mocha/run_mocha_cli.js @@ -43,7 +43,7 @@ export function runMochaCli() { // check that we aren't leaking any globals process.argv.push('--check-leaks'); // prevent globals injected from canvas plugins from triggering leak check - process.argv.push('--globals', 'core,regeneratorRuntime,_'); + process.argv.push('--globals', '__core-js_shared__,core,_, '); // ensure that mocha requires the setup_node_env script process.argv.push('--require', require.resolve('../../setup_node_env')); diff --git a/tsconfig.json b/tsconfig.json index e8969404237e66..1c908986b80ef5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -49,7 +49,8 @@ "importHelpers": true, "skipLibCheck": true, // Disallow features that require cross-file information for emit. - "isolatedModules": true + // TODO: Maybe is more secure to just enable this + "isolatedModules": false }, "include": [ "kibana.d.ts", @@ -58,7 +59,7 @@ "test_utils/**/*" ], "exclude": [ - "src/**/__fixtures__/**/*", + "src/**/__fixtures__/**/*" // In the build we actually exclude **/public/**/* from this config so that // we can run the TSC on both this and the .browser version of this config // file, but if we did it during development IDEs would not be able to find diff --git a/tsconfig.types.json b/tsconfig.types.json index 3d7e2607218d38..ce11da4e4100b9 100644 --- a/tsconfig.types.json +++ b/tsconfig.types.json @@ -1,7 +1,6 @@ { "extends": "./tsconfig", "compilerOptions": { - "isolatedModules": false, "declaration": true, "declarationDir": "./target/types", "stripInternal": true, diff --git a/x-pack/plugins/reporting/public/components/report_listing.tsx b/x-pack/plugins/reporting/public/components/report_listing.tsx index e336eae3f26a19..56f0e382d23a6e 100644 --- a/x-pack/plugins/reporting/public/components/report_listing.tsx +++ b/x-pack/plugins/reporting/public/components/report_listing.tsx @@ -23,6 +23,7 @@ import { ReportErrorButton } from './report_error_button'; import { ReportInfoButton } from './report_info_button'; import { + EuiBasicTable as EuiBasicTableTyped, EuiButtonIcon, EuiPageContent, EuiSpacer, @@ -295,7 +296,7 @@ class ReportListingUi extends Component { }; return ( - ; } -import { EuiButton, EuiForm, EuiFormRow, EuiSpacer, EuiText } from '@elastic/eui'; +import { + EuiButton, + EuiCopy as EuiCopyTyped, + EuiForm, + EuiFormRow, + EuiSpacer, + uiText, +} from '@elastic/eui'; import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n/react'; import React, { Component, ReactElement } from 'react'; import { KFetchError } from 'ui/kfetch/kfetch_error'; @@ -131,7 +138,7 @@ class ReportingPanelContentUi extends Component { - @@ -143,7 +150,7 @@ class ReportingPanelContentUi extends Component { /> )} - + ); } diff --git a/x-pack/test/saved_object_api_integration/common/services/es.js b/x-pack/test/saved_object_api_integration/common/services/es.js index f5ef3be4b4bde2..af188ca5e39716 100644 --- a/x-pack/test/saved_object_api_integration/common/services/es.js +++ b/x-pack/test/saved_object_api_integration/common/services/es.js @@ -8,9 +8,8 @@ import { format as formatUrl } from 'url'; import elasticsearch from 'elasticsearch'; import shieldPlugin from '../../../../server/lib/esjs_shield_plugin'; -import { TestInvoker } from '../lib/types'; -export function EsProvider({ getService }: TestInvoker) { +export function EsProvider({ getService }) { const config = getService('config'); return new elasticsearch.Client({ diff --git a/yarn.lock b/yarn.lock index 393f67cb140c28..acc3f284259d21 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5038,6 +5038,13 @@ browserslist@~1.4.0: dependencies: caniuse-db "^1.0.30000539" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -5088,7 +5095,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -9467,7 +9474,7 @@ fast-glob@^2.0.2: merge2 "1.2.1" micromatch "3.1.5" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= @@ -13864,6 +13871,13 @@ json3@3.3.2, json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= +json5@2.x, json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -13876,13 +13890,6 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -15174,7 +15181,7 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-error@^1.3.5: +make-error@1.x, make-error@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== @@ -15749,7 +15756,7 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -19821,6 +19828,13 @@ resolve@1.1.7, resolve@1.1.x, resolve@~1.1.0, resolve@~1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +resolve@1.x, resolve@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" @@ -19842,13 +19856,6 @@ resolve@^1.5.0, resolve@^1.7.1: dependencies: path-parse "^1.0.5" -resolve@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - dependencies: - path-parse "^1.0.6" - responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -20339,16 +20346,16 @@ semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== +semver@^5.5, semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== -semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -22372,6 +22379,21 @@ trunc-text@1.0.2: resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.2.tgz#b582bb3ddea9c9adc25017d737c48ebdd2157406" integrity sha1-tYK7Pd6pya3CUBfXN8SOvdIVdAY= +ts-jest@^23.10.4: + version "23.10.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.5.tgz#cdb550df4466a30489bf70ba867615799f388dd5" + integrity sha512-MRCs9qnGoyKgFc8adDEntAOP64fWK1vZKnOYU1o2HxaqjdJvGqmkLCPCnVq1/If4zkUmEjKPnCiUisTrlX2p2A== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + ts-log@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.3.tgz#9e30aca1baffe7693a2e4142b8f07ecb01cb8340" @@ -24715,7 +24737,7 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs-parser@^10.1.0: +yargs-parser@10.x, yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== From d4865f08ffe3cbeff19c35176f8319e8e72f502f Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 1 Mar 2019 02:52:10 +0000 Subject: [PATCH 07/56] fix(NA): typo on importing --- .../reporting/public/components/reporting_panel_content.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx b/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx index 7e9fddbaa57245..ac645f1f7d2ac7 100644 --- a/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx +++ b/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx @@ -15,7 +15,7 @@ import { EuiForm, EuiFormRow, EuiSpacer, - uiText, + EuiText, } from '@elastic/eui'; import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n/react'; import React, { Component, ReactElement } from 'react'; From 916e67054e0d9a1c7cd63bd7df26780841a6ffde Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 1 Mar 2019 20:14:30 +0000 Subject: [PATCH 08/56] test(NA): majority of x-pack tests ported to use babel-jest --- package.json | 1 - src/core/server/legacy/legacy_service.test.ts | 10 +-- src/dev/jest/config.js | 8 +- src/dev/jest/ts_transform.js | 21 ------ src/dev/jest/ts_transform.ts | 75 ------------------- x-pack/dev-tools/jest/create_jest_config.js | 3 +- x-pack/package.json | 2 +- .../__snapshots__/upload_license.test.js.snap | 4 +- .../__snapshots__/form_label.test.js.snap | 4 +- .../collection_enabled.test.js.snap | 4 +- .../collection_interval.test.js.snap | 8 +- .../report_info_button.test.tsx.snap | 8 +- .../privilege_callout_warning.test.tsx.snap | 8 +- .../space_aware_privilege_form.test.tsx.snap | 7 +- .../lib/authorization/privileges.test.js | 2 +- .../__snapshots__/space_avatar.test.tsx.snap | 4 +- .../advanced_settings_title.test.tsx.snap | 2 +- .../space_identifier.test.tsx.snap | 3 +- .../spaces_grid_pages.test.tsx.snap | 14 ++-- .../nav_control_popover.test.tsx.snap | 4 +- .../__snapshots__/checkup_tab.test.tsx.snap | 4 +- .../checklist_step.test.tsx.snap | 8 +- .../__snapshots__/warning_step.test.tsx.snap | 8 +- .../reindex/flyout/progress.test.tsx | 4 +- .../__snapshots__/snapshot.test.tsx.snap | 2 +- .../__snapshots__/empty_state.test.tsx.snap | 24 +++--- .../server/lib/file_integrity.test.ts | 6 +- x-pack/test_utils/jest/config.js | 8 +- yarn.lock | 2 +- 29 files changed, 66 insertions(+), 192 deletions(-) delete mode 100644 src/dev/jest/ts_transform.js delete mode 100644 src/dev/jest/ts_transform.ts diff --git a/package.json b/package.json index 8d4fe7045f840d..8c934ab206bc53 100644 --- a/package.json +++ b/package.json @@ -398,7 +398,6 @@ "supertest": "^3.1.0", "supertest-as-promised": "^4.0.2", "tree-kill": "^1.1.0", - "ts-jest": "^24.0.0", "tsconfig-paths": "^3.8.0", "tslint": "^5.11.0", "tslint-config-prettier": "^1.15.0", diff --git a/src/core/server/legacy/legacy_service.test.ts b/src/core/server/legacy/legacy_service.test.ts index f8f793f4360676..8d083808f9a4c8 100644 --- a/src/core/server/legacy/legacy_service.test.ts +++ b/src/core/server/legacy/legacy_service.test.ts @@ -18,7 +18,6 @@ */ import { BehaviorSubject, Subject, throwError } from 'rxjs'; -import { mocked } from 'ts-jest/utils'; jest.mock('./legacy_platform_proxy'); jest.mock('../../../legacy/server/kbn_server'); @@ -38,7 +37,6 @@ import { LegacyPlatformProxy } from './legacy_platform_proxy'; const MockKbnServer: jest.Mock = KbnServer as any; const MockLegacyPlatformProxy: jest.Mock = LegacyPlatformProxy as any; -const MockedClusterManager = mocked(MockClusterManager, true); let legacyService: LegacyService; let configService: jest.Mocked; @@ -81,7 +79,7 @@ beforeEach(() => { afterEach(() => { MockLegacyPlatformProxy.mockClear(); MockKbnServer.mockClear(); - MockedClusterManager.create.mockClear(); + MockClusterManager.create.mockClear(); logger.mockClear(); }); @@ -216,7 +214,7 @@ describe('once LegacyService is started with connection info', () => { await expect(legacyService.start(startDeps)).rejects.toThrowErrorMatchingSnapshot(); expect(MockKbnServer).not.toHaveBeenCalled(); - expect(MockedClusterManager).not.toHaveBeenCalled(); + expect(MockClusterManager).not.toHaveBeenCalled(); }); test('reconfigures logging configuration if new config is received.', async () => { @@ -347,7 +345,7 @@ describe('once LegacyService is started in `devClusterMaster` mode', () => { plugins: new Map(), }); - expect(MockedClusterManager.create.mock.calls).toMatchSnapshot( + expect(MockClusterManager.create.mock.calls).toMatchSnapshot( 'cluster manager without base path proxy' ); }); @@ -369,7 +367,7 @@ describe('once LegacyService is started in `devClusterMaster` mode', () => { plugins: new Map(), }); - expect(MockedClusterManager.create.mock.calls).toMatchSnapshot( + expect(MockClusterManager.create.mock.calls).toMatchSnapshot( 'cluster manager with base path proxy' ); }); diff --git a/src/dev/jest/config.js b/src/dev/jest/config.js index a20a2a2f7f84cf..754e2cdb27c9dd 100644 --- a/src/dev/jest/config.js +++ b/src/dev/jest/config.js @@ -58,11 +58,6 @@ export default { coverageReporters: [ 'html', ], - globals: { - 'ts-jest': { - babelConfig: true, - }, - }, moduleFileExtensions: [ 'js', 'json', @@ -82,8 +77,7 @@ export default { 'integration_tests/' ], transform: { - '^.+\\.js$': '/src/dev/jest/babel_transform.js', - '^.+\\.tsx?$': '/src/dev/jest/ts_transform.js', + '^.+\\.(js|tsx?)$': '/src/dev/jest/babel_transform.js', '^.+\\.txt?$': 'jest-raw-loader', '^.+\\.html?$': 'jest-raw-loader', }, diff --git a/src/dev/jest/ts_transform.js b/src/dev/jest/ts_transform.js deleted file mode 100644 index f097ed2f8076ae..00000000000000 --- a/src/dev/jest/ts_transform.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -require('../../setup_node_env'); -module.exports = require('./ts_transform.ts'); diff --git a/src/dev/jest/ts_transform.ts b/src/dev/jest/ts_transform.ts deleted file mode 100644 index e6f700fe827df5..00000000000000 --- a/src/dev/jest/ts_transform.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// @ts-ignore -import { getCacheKey, process } from 'ts-jest'; - -import { getTsProjectForAbsolutePath } from '../typescript'; - -const DEFAULT_TS_CONFIG_PATH = require.resolve('../../../tsconfig.json'); -const DEFAULT_BROWSER_TS_CONFIG_PATH = require.resolve('../../../tsconfig.browser.json'); - -function extendJestConfigJSON(jestConfigJSON: string, filePath: string) { - const jestConfig = JSON.parse(jestConfigJSON) as jest.ProjectConfig; - return JSON.stringify(extendJestConfig(jestConfig, filePath)); -} - -function extendJestConfig(jestConfig: jest.ProjectConfig, filePath: string) { - let tsConfig = getTsProjectForAbsolutePath(filePath).tsConfigPath; - - // swap ts config file for jest tests - if (tsConfig === DEFAULT_BROWSER_TS_CONFIG_PATH) { - tsConfig = DEFAULT_TS_CONFIG_PATH; - } - - return { - ...jestConfig, - globals: { - ...(jestConfig.globals || {}), - 'ts-jest': { - babelConfig: true, - tsConfig, - }, - }, - }; -} - -module.exports = { - canInstrument: true, - - process( - src: string, - filePath: jest.Path, - jestConfig: jest.ProjectConfig, - transformOptions: jest.TransformOptions - ) { - const extendedConfig = extendJestConfig(jestConfig, filePath as string); - return process(src, filePath, extendedConfig, transformOptions); - }, - - getCacheKey( - src: string, - filePath: string, - jestConfigJSON: string, - transformOptions: jest.TransformOptions - ) { - const extendedConfigJSON = extendJestConfigJSON(jestConfigJSON, filePath); - return getCacheKey!(src, filePath, extendedConfigJSON, transformOptions); - }, -}; diff --git a/x-pack/dev-tools/jest/create_jest_config.js b/x-pack/dev-tools/jest/create_jest_config.js index cd4d6a68ef912e..5d94b111761a7b 100644 --- a/x-pack/dev-tools/jest/create_jest_config.js +++ b/x-pack/dev-tools/jest/create_jest_config.js @@ -37,8 +37,7 @@ export function createJestConfig({ '**/*.test.{js,ts,tsx}' ], transform: { - '^.+\\.js$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, - '^.+\\.tsx?$': `${kibanaDirectory}/src/dev/jest/ts_transform.js`, + '^.+\\.(js|tsx?)$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, }, transformIgnorePatterns: [ '[/\\\\]node_modules[/\\\\].+\\.js$' diff --git a/x-pack/package.json b/x-pack/package.json index ec9e163d97b1ca..ba3d901d057664 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -74,7 +74,7 @@ "babel-jest": "^24.1.0", "babel-plugin-inline-react-svg": "^1.0.1", "babel-plugin-mock-imports": "^1.0.1", - "babel-plugin-require-context-hook-babel7": "^1.0.0", + "babel-plugin-require-context-hook": "npm:babel-plugin-require-context-hook-babel7@^1.0.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "chalk": "^2.4.1", "chance": "1.0.10", diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.js.snap b/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.js.snap index 79085acb0b2f5d..defb44bcf31986 100644 --- a/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.js.snap +++ b/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.js.snap @@ -313,7 +313,7 @@ exports[`UploadLicense should display a modal when license requires acknowledgem maxWidth={true} onClose={[Function]} > - - + diff --git a/x-pack/plugins/ml/public/components/form_label/__snapshots__/form_label.test.js.snap b/x-pack/plugins/ml/public/components/form_label/__snapshots__/form_label.test.js.snap index 8b7d26d3c7551b..327a8dc4fee4e1 100644 --- a/x-pack/plugins/ml/public/components/form_label/__snapshots__/form_label.test.js.snap +++ b/x-pack/plugins/ml/public/components/form_label/__snapshots__/form_label.test.js.snap @@ -6,7 +6,7 @@ exports[`FormLabel Basic initialization 1`] = ` className="euiFormLabel" id="ml_aria_label_undefined" /> - @@ -20,7 +20,7 @@ exports[`FormLabel Full initialization 1`] = ` > Label Text - diff --git a/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__tests__/__snapshots__/collection_enabled.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__tests__/__snapshots__/collection_enabled.test.js.snap index 9d22bac8b99fd8..42e111a13bdb31 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__tests__/__snapshots__/collection_enabled.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__tests__/__snapshots__/collection_enabled.test.js.snap @@ -113,7 +113,7 @@ exports[`ExplainCollectionEnabled should explain about xpack.monitoring.collecti } property="xpack.monitoring.collection.enabled" > - + - + - + - + - + - + - - + ,
-
-
+ ,

- grants full access to all - spaces. To customize privileges for individual spaces, the minimum privilege must be - either + grants full access to all spaces. To customize privileges for individual spaces, the minimum privilege must be either renders without crashing 1`] = ` >

with user profile disabling "manageSpaces" re

{ const subject = buildPrivilegeMap; it('should produce an object of the expected form', () => { - const getSavedObjectAction = sinon.fake((t: any, a: any) => { + const getSavedObjectAction = sinon.fake((t, a) => { if (!t || !isString(t)) { throw new Error('type is required and must be a string'); } diff --git a/x-pack/plugins/spaces/public/components/__snapshots__/space_avatar.test.tsx.snap b/x-pack/plugins/spaces/public/components/__snapshots__/space_avatar.test.tsx.snap index da0f3ed3558e22..9b6336ad644471 100644 --- a/x-pack/plugins/spaces/public/components/__snapshots__/space_avatar.test.tsx.snap +++ b/x-pack/plugins/spaces/public/components/__snapshots__/space_avatar.test.tsx.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`removes aria-label when instructed not to announce the space name 1`] = ` - - + `; exports[`renders with a space name entirely made of whitespace 1`] = ` diff --git a/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap b/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap index 49cb9fedf69b59..e9582243766326 100644 --- a/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap +++ b/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap @@ -14,7 +14,7 @@ exports[`AdvancedSettingsTitle renders as expected 1`] = ` component="div" grow={false} > - -

-
, - , + - , - , + - , + , ] `; diff --git a/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap b/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap index 00c49341ce0e7e..265dcc349e1b98 100644 --- a/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap +++ b/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap @@ -6,7 +6,7 @@ exports[`NavControlPopover renders without crashing 1`] = ` button={ - - - diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap index 6f87d85dead850..a670ba19a10a12 100644 --- a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap +++ b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap @@ -17,16 +17,14 @@ exports[`ChecklistFlyout renders 1`] = ` >

@@ -47,7 +45,7 @@ exports[`ChecklistFlyout renders 1`] = ` /> - { ); expect(wrapper).toMatchInlineSnapshot(` - { ); expect(wrapper).toMatchInlineSnapshot(` - - - + @@ -246,8 +246,8 @@ exports[`EmptyState component doesn't render child components when count is fals - - + + `; exports[`EmptyState component renders child components when count is truthy 1`] = ` @@ -265,7 +265,7 @@ exports[`EmptyState component renders child components when count is truthy 1`] `; exports[`EmptyState component renders message while loading 1`] = ` - - + - - + + `; exports[`EmptyState component renders the message when an error occurs 1`] = ` - - - - + + `; diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts index 5e554cd77d849e..52112c9016ddc4 100644 --- a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts +++ b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts @@ -4,14 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import { Readable } from 'stream'; +import { Readable as mockReadable } from 'stream'; jest.mock('fs', () => ({ - createReadStream(filepath: string): Readable { + createReadStream(filepath: string): mockReadable { if (filepath === 'ERROR') { throw new Error('MOCK ERROR - Invalid Path'); } - const readableStream = new Readable(); + const readableStream = new mockReadable(); const streamData = filepath.split(''); let cursor = 0; diff --git a/x-pack/test_utils/jest/config.js b/x-pack/test_utils/jest/config.js index e9d85e775792ff..04b112254ab3bb 100644 --- a/x-pack/test_utils/jest/config.js +++ b/x-pack/test_utils/jest/config.js @@ -32,11 +32,6 @@ export default { coverageReporters: [ 'html', ], - globals: { - 'ts-jest': { - skipBabel: true, - }, - }, moduleFileExtensions: [ 'js', 'json', @@ -56,8 +51,7 @@ export default { 'integration_tests/' ], transform: { - '^.+\\.js$': '/../src/dev/jest/babel_transform.js', - '^.+\\.tsx?$': '/../src/dev/jest/ts_transform.js', + '^.+\\.(js|tsx?)$': '/../src/dev/jest/babel_transform.js', '^.+\\.txt?$': 'jest-raw-loader', '^.+\\.html?$': 'jest-raw-loader', }, diff --git a/yarn.lock b/yarn.lock index a831c0b0f4ea07..b3ebde6855ef2f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4168,7 +4168,7 @@ babel-plugin-react-docgen@^2.0.0: lodash "^4.17.10" react-docgen "^3.0.0-rc.1" -babel-plugin-require-context-hook-babel7@^1.0.0: +"babel-plugin-require-context-hook@npm:babel-plugin-require-context-hook-babel7@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-require-context-hook-babel7/-/babel-plugin-require-context-hook-babel7-1.0.0.tgz#1273d4cee7e343d0860966653759a45d727e815d" integrity sha512-kez0BAN/cQoyO1Yu1nre1bQSYZEF93Fg7VQiBHFfMWuaZTy7vJSTT4FY68FwHTYG53Nyt0A7vpSObSVxwweQeQ== From d0cd8bba5ce62300e65a081693aba07c3748bdcf Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sat, 2 Mar 2019 04:35:12 +0000 Subject: [PATCH 09/56] fix(NA): report info button test with babel-jest. --- .../public/components/report_info_button.test.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx index 93ceed0f64a0e2..2b46d062297c1a 100644 --- a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx +++ b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx @@ -4,16 +4,17 @@ * you may not use this file except in compliance with the Elastic License. */ -const mockJobQueueClient = { getInfo: jest.fn() }; -jest.mock('../lib/job_queue_client', () => ({ jobQueueClient: mockJobQueueClient })); - import React from 'react'; import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import { jobQueueClient } from '../lib/job_queue_client'; import { ReportInfoButton } from './report_info_button'; +const mockJobQueueClient = jobQueueClient; +jest.mock('../lib/job_queue_client', () => ({ jobQueueClient: { getInfo: jest.fn() } })); + describe('ReportInfoButton', () => { beforeEach(() => { - mockJobQueueClient.getInfo = jest.fn(() => ({ + (mockJobQueueClient.getInfo as jest.Mock).mockImplementation(() => ({ payload: { title: 'Test Job' }, })); }); From 09138143da113883d9b75a460aaadec63a91bb46 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sat, 2 Mar 2019 05:29:47 +0000 Subject: [PATCH 10/56] fix(NA): polling service tests. --- .../reindex/polling_service.test.ts | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts index f15927c0d6a3b0..8d0b04b702b512 100644 --- a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts +++ b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts @@ -4,26 +4,30 @@ * you may not use this file except in compliance with the Elastic License. */ +import axios from 'axios'; import { ReindexStatus, ReindexStep } from '../../../../../../common/types'; +import { ReindexPollingService } from './polling_service'; -const mockClient = { - post: jest.fn().mockResolvedValue({ - lastCompletedStep: ReindexStep.created, - status: ReindexStatus.inProgress, +jest.mock('axios', () => ({ + create: jest.fn().mockReturnValue({ + post: jest.fn(), + get: jest.fn(), }), - get: jest.fn().mockResolvedValue({ +})); + +const mockClient = { + get: (axios.create().get as jest.Mock).mockResolvedValue({ status: 200, data: { warnings: [], reindexOp: null, }, }), + post: (axios.create().post as jest.Mock).mockResolvedValue({ + lastCompletedStep: 0, + status: 0, + }), }; -jest.mock('axios', () => ({ - create: jest.fn().mockReturnValue(mockClient), -})); - -import { ReindexPollingService } from './polling_service'; describe('ReindexPollingService', () => { beforeEach(() => { From d981ab5aa350953f684ceb839ec41c7501e01feb Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 4 Mar 2019 11:34:23 +0000 Subject: [PATCH 11/56] test(na): fix server plugins plugin tests. --- src/core/server/plugins/plugin.test.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/core/server/plugins/plugin.test.ts b/src/core/server/plugins/plugin.test.ts index 83e4db82d42459..2bf70c5e35a667 100644 --- a/src/core/server/plugins/plugin.test.ts +++ b/src/core/server/plugins/plugin.test.ts @@ -17,7 +17,6 @@ * under the License. */ -import { join } from 'path'; import { BehaviorSubject } from 'rxjs'; import { CoreContext } from '../../types'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; @@ -28,15 +27,11 @@ import { Plugin, PluginManifest } from './plugin'; import { createPluginInitializerContext, createPluginStartContext } from './plugin_context'; const mockPluginInitializer = jest.fn(); -jest.mock( - join('plugin-with-initializer-path', 'server'), - () => ({ plugin: mockPluginInitializer }), - { virtual: true } -); -jest.mock(join('plugin-without-initializer-path', 'server'), () => ({}), { +jest.mock('plugin-with-initializer-path/server', () => ({ plugin: mockPluginInitializer }), { virtual: true, }); -jest.mock(join('plugin-with-wrong-initializer-path', 'server'), () => ({ plugin: {} }), { +jest.mock('plugin-without-initializer-path/server', () => ({}), { virtual: true }); +jest.mock('plugin-with-wrong-initializer-path/server', () => ({ plugin: {} }), { virtual: true, }); From a2ba6de076915b59ebb128e8033354f26db5c173 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 5 Mar 2019 17:56:46 +0000 Subject: [PATCH 12/56] test(NA): batch of test fixs for jest tests under babel-jest hoisting. --- .../fatal_errors/fatal_errors_service.test.ts | 16 ++++++++------ .../toasts/toasts_service.test.tsx | 10 +++++---- .../ui_settings/ui_settings_service.test.ts | 9 ++++---- src/core/server/config/config_service.test.ts | 9 +++++--- src/core/server/config/env.test.ts | 8 +++++-- .../server/config/raw_config_service.test.ts | 6 ++--- .../elasticsearch/cluster_client.test.ts | 21 ++++++++++-------- .../elasticsearch_client_config.test.ts | 6 +++-- .../elasticsearch_service.test.ts | 8 ++++--- src/core/server/http/http_service.test.ts | 7 +++--- .../logging/appenders/appenders.test.ts | 6 +++-- .../appenders/file/file_appender.test.ts | 5 +++-- .../discovery/plugin_discovery.test.ts | 22 +++++++++++-------- .../discovery/plugin_manifest_parser.test.ts | 10 ++++----- .../server/plugins/plugins_service.test.ts | 20 +++++++++-------- .../server/plugins/plugins_system.test.ts | 10 +++++---- src/dev/i18n/integrate_locale_files.test.ts | 11 +++++----- .../public/utils/subscribe_with_scope.test.ts | 6 +++-- 18 files changed, 112 insertions(+), 78 deletions(-) diff --git a/src/core/public/fatal_errors/fatal_errors_service.test.ts b/src/core/public/fatal_errors/fatal_errors_service.test.ts index 23895c8ce85cd7..c58476fdf6aa67 100644 --- a/src/core/public/fatal_errors/fatal_errors_service.test.ts +++ b/src/core/public/fatal_errors/fatal_errors_service.test.ts @@ -17,6 +17,13 @@ * under the License. */ +jest.mock('react-dom', () => { + return { + render: jest.fn(), + }; +}); + +import ReactDOM from 'react-dom'; import * as Rx from 'rxjs'; expect.addSnapshotSerializer({ @@ -24,15 +31,10 @@ expect.addSnapshotSerializer({ print: () => `Rx.Observable`, }); -const mockRender = jest.fn(); -jest.mock('react-dom', () => { - return { - render: mockRender, - }; -}); - import { FatalErrorsService } from './fatal_errors_service'; +const mockRender = ReactDOM.render as jest.Mock; + function setup() { const rootDomElement = document.createElement('div'); diff --git a/src/core/public/notifications/toasts/toasts_service.test.tsx b/src/core/public/notifications/toasts/toasts_service.test.tsx index f9ab322f07d30e..fb45509aa472c2 100644 --- a/src/core/public/notifications/toasts/toasts_service.test.tsx +++ b/src/core/public/notifications/toasts/toasts_service.test.tsx @@ -17,13 +17,12 @@ * under the License. */ -const mockReactDomRender = jest.fn(); -const mockReactDomUnmount = jest.fn(); jest.mock('react-dom', () => ({ - render: mockReactDomRender, - unmountComponentAtNode: mockReactDomUnmount, + render: jest.fn(), + unmountComponentAtNode: jest.fn(), })); +import ReactDOM from 'react-dom'; import { ToastsService } from './toasts_service'; import { ToastsStart } from './toasts_start'; @@ -33,6 +32,9 @@ const mockI18n: any = { }, }; +const mockReactDomRender = ReactDOM.render as jest.Mock; +const mockReactDomUnmount = ReactDOM.unmountComponentAtNode as jest.Mock; + describe('#start()', () => { it('renders the GlobalToastList into the targetDomElement param', async () => { const targetDomElement = document.createElement('div'); diff --git a/src/core/public/ui_settings/ui_settings_service.test.ts b/src/core/public/ui_settings/ui_settings_service.test.ts index b28003b131a059..f60b27fe00d9ea 100644 --- a/src/core/public/ui_settings/ui_settings_service.test.ts +++ b/src/core/public/ui_settings/ui_settings_service.test.ts @@ -25,17 +25,18 @@ function mockClass( const MockClass = jest.fn(function(this: any, ...args: any[]) { setup(this, args); }); + const mockClassName = Class.name; // define the mock name which is used in some snapshots - MockClass.mockName(`Mock${Class.name}`); + MockClass.mockName(`Mock${mockClassName}`); // define the class name for the MockClass which is used in other snapshots Object.defineProperty(MockClass, 'name', { - value: `Mock${Class.name}`, + value: `Mock${mockClassName}`, }); - jest.doMock(module, () => ({ - [Class.name]: MockClass, + jest.mock(module, () => ({ + [mockClassName]: MockClass, })); return MockClass; diff --git a/src/core/server/config/config_service.test.ts b/src/core/server/config/config_service.test.ts index f51989ef980871..681afac7770853 100644 --- a/src/core/server/config/config_service.test.ts +++ b/src/core/server/config/config_service.test.ts @@ -19,20 +19,23 @@ /* tslint:disable max-classes-per-file */ +jest.mock('../../../legacy/utils/package_json', () => ({ + pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), +})); + import { BehaviorSubject } from 'rxjs'; import { first } from 'rxjs/operators'; -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); - import { schema, Type, TypeOf } from '@kbn/config-schema'; import { ConfigService, Env, ObjectToConfigAdapter } from '.'; +import { pkg } from '../../../legacy/utils/package_json'; import { logger } from '../logging/__mocks__'; import { getEnvOptions } from './__mocks__/env'; const emptyArgv = getEnvOptions(); const defaultEnv = new Env('/kibana', emptyArgv); +const mockPackage = pkg; test('returns config at path as observable', async () => { const config$ = new BehaviorSubject(new ObjectToConfigAdapter({ key: 'foo' })); diff --git a/src/core/server/config/env.test.ts b/src/core/server/config/env.test.ts index 34d37509db4560..e2b6474692706c 100644 --- a/src/core/server/config/env.test.ts +++ b/src/core/server/config/env.test.ts @@ -29,12 +29,16 @@ jest.mock('path', () => ({ }, })); -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); +jest.mock('../../../legacy/utils/package_json', () => ({ + pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), +})); import { Env } from '.'; +import { pkg } from '../../../legacy/utils/package_json'; import { getEnvOptions } from './__mocks__/env'; +const mockPackage = pkg; + test('correctly creates default environment in dev mode.', () => { mockPackage.raw = { branch: 'some-branch', diff --git a/src/core/server/config/raw_config_service.test.ts b/src/core/server/config/raw_config_service.test.ts index 0cd0dc45cd9392..2f424f197ede78 100644 --- a/src/core/server/config/raw_config_service.test.ts +++ b/src/core/server/config/raw_config_service.test.ts @@ -17,17 +17,17 @@ * under the License. */ -const mockGetConfigFromFiles = jest.fn(); - jest.mock('./read_config', () => ({ - getConfigFromFiles: mockGetConfigFromFiles, + getConfigFromFiles: jest.fn(), })); import { first } from 'rxjs/operators'; import { RawConfigService } from '.'; +import { getConfigFromFiles } from './read_config'; const configFile = '/config/kibana.yml'; const anotherConfigFile = '/config/kibana.dev.yml'; +const mockGetConfigFromFiles = getConfigFromFiles as jest.Mock; beforeEach(() => { mockGetConfigFromFiles.mockReset(); diff --git a/src/core/server/elasticsearch/cluster_client.test.ts b/src/core/server/elasticsearch/cluster_client.test.ts index 5516b19ccbd512..7d445f3193cbb4 100644 --- a/src/core/server/elasticsearch/cluster_client.test.ts +++ b/src/core/server/elasticsearch/cluster_client.test.ts @@ -17,30 +17,33 @@ * under the License. */ -import { ElasticsearchConfig } from './elasticsearch_config'; - -const MockClient = jest.fn(); jest.mock('elasticsearch', () => ({ // Jest types don't include `requireActual` right now. ...(jest as any).requireActual('elasticsearch'), - Client: MockClient, + Client: jest.fn(), })); -const MockScopedClusterClient = jest.fn(); jest.mock('./scoped_cluster_client', () => ({ - ScopedClusterClient: MockScopedClusterClient, + ScopedClusterClient: jest.fn(), })); -const mockParseElasticsearchClientConfig = jest.fn(); jest.mock('./elasticsearch_client_config', () => ({ - parseElasticsearchClientConfig: mockParseElasticsearchClientConfig, + parseElasticsearchClientConfig: jest.fn(), })); -import { errors } from 'elasticsearch'; +import { ElasticsearchConfig } from './elasticsearch_config'; + +import { Client, errors } from 'elasticsearch'; import { get } from 'lodash'; import { Logger } from '../logging'; import { logger } from '../logging/__mocks__'; import { ClusterClient } from './cluster_client'; +import { parseElasticsearchClientConfig } from './elasticsearch_client_config'; +import { ScopedClusterClient } from './scoped_cluster_client'; + +const MockClient = Client as jest.Mock; +const MockScopedClusterClient = ScopedClusterClient as jest.Mock; +const mockParseElasticsearchClientConfig = parseElasticsearchClientConfig as jest.Mock; afterEach(() => jest.clearAllMocks()); diff --git a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts index 9b7dcd37a74826..31484676ace275 100644 --- a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts @@ -17,9 +17,9 @@ * under the License. */ -const mockReadFileSync = jest.fn(); -jest.mock('fs', () => ({ readFileSync: mockReadFileSync })); +jest.mock('fs', () => ({ readFileSync: jest.fn() })); +import { readFileSync } from 'fs'; import { duration } from 'moment'; import { logger } from '../logging/__mocks__'; import { @@ -27,6 +27,8 @@ import { parseElasticsearchClientConfig, } from './elasticsearch_client_config'; +const mockReadFileSync = readFileSync as jest.Mock; + afterEach(() => jest.clearAllMocks()); test('parses minimally specified config', () => { diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts index a7559cc2687f78..676689a4dfc656 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts @@ -17,19 +17,21 @@ * under the License. */ -import { first } from 'rxjs/operators'; +jest.mock('./cluster_client', () => ({ ClusterClient: jest.fn() })); -const MockClusterClient = jest.fn(); -jest.mock('./cluster_client', () => ({ ClusterClient: MockClusterClient })); +import { first } from 'rxjs/operators'; import { BehaviorSubject, combineLatest } from 'rxjs'; import { CoreContext } from '../../types'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; import { getEnvOptions } from '../config/__mocks__/env'; import { logger } from '../logging/__mocks__'; +import { ClusterClient } from './cluster_client'; import { ElasticsearchConfig } from './elasticsearch_config'; import { ElasticsearchService } from './elasticsearch_service'; +const MockClusterClient = ClusterClient as jest.Mock; + let elasticsearchService: ElasticsearchService; let configService: ConfigService; let env: Env; diff --git a/src/core/server/http/http_service.test.ts b/src/core/server/http/http_service.test.ts index e9f1abb0b94dba..f81d86ed8908c9 100644 --- a/src/core/server/http/http_service.test.ts +++ b/src/core/server/http/http_service.test.ts @@ -17,16 +17,17 @@ * under the License. */ -const mockHttpServer = jest.fn(); - jest.mock('./http_server', () => ({ - HttpServer: mockHttpServer, + HttpServer: jest.fn(), })); import { noop } from 'lodash'; import { BehaviorSubject } from 'rxjs'; import { HttpConfig, HttpService, Router } from '.'; import { logger } from '../logging/__mocks__'; +import { HttpServer } from './http_server'; + +const mockHttpServer = HttpServer as jest.Mock; beforeEach(() => { logger.mockClear(); diff --git a/src/core/server/logging/appenders/appenders.test.ts b/src/core/server/logging/appenders/appenders.test.ts index df528f4c58cd5a..f6db9b72e00c86 100644 --- a/src/core/server/logging/appenders/appenders.test.ts +++ b/src/core/server/logging/appenders/appenders.test.ts @@ -17,22 +17,24 @@ * under the License. */ -const mockCreateLayout = jest.fn(); jest.mock('../layouts/layouts', () => { const { schema } = require('@kbn/config-schema'); return { Layouts: { configSchema: schema.object({ kind: schema.literal('mock') }), - create: mockCreateLayout, + create: jest.fn(), }, }; }); import { LegacyAppender } from '../../legacy/logging/appenders/legacy_appender'; +import { Layouts } from '../layouts/layouts'; import { Appenders } from './appenders'; import { ConsoleAppender } from './console/console_appender'; import { FileAppender } from './file/file_appender'; +const mockCreateLayout = Layouts.create as jest.Mock; + beforeEach(() => { mockCreateLayout.mockReset(); }); diff --git a/src/core/server/logging/appenders/file/file_appender.test.ts b/src/core/server/logging/appenders/file/file_appender.test.ts index 1d9ef33995955a..8b9bbb734c231f 100644 --- a/src/core/server/logging/appenders/file/file_appender.test.ts +++ b/src/core/server/logging/appenders/file/file_appender.test.ts @@ -28,13 +28,14 @@ jest.mock('../../layouts/layouts', () => { }; }); -const mockCreateWriteStream = jest.fn(); -jest.mock('fs', () => ({ createWriteStream: mockCreateWriteStream })); +jest.mock('fs', () => ({ createWriteStream: jest.fn() })); +import { createWriteStream } from 'fs'; import { LogLevel } from '../../log_level'; import { LogRecord } from '../../log_record'; import { FileAppender } from './file_appender'; +const mockCreateWriteStream = createWriteStream as jest.Mock; const tickMs = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); beforeEach(() => { diff --git a/src/core/server/plugins/discovery/plugin_discovery.test.ts b/src/core/server/plugins/discovery/plugin_discovery.test.ts index e7a54ccce7fee0..399ec42ef80bef 100644 --- a/src/core/server/plugins/discovery/plugin_discovery.test.ts +++ b/src/core/server/plugins/discovery/plugin_discovery.test.ts @@ -17,21 +17,20 @@ * under the License. */ -const mockReaddir = jest.fn(); -const mockReadFile = jest.fn(); -const mockStat = jest.fn(); jest.mock('fs', () => ({ - readdir: mockReaddir, - readFile: mockReadFile, - stat: mockStat, + readdir: jest.fn(), + readFile: jest.fn(), + stat: jest.fn(), +})); +jest.mock('../../../../legacy/utils/package_json', () => ({ + pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), })); -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); - +import { readdir, readFile, stat } from 'fs'; import { resolve } from 'path'; import { BehaviorSubject } from 'rxjs'; import { first, map, toArray } from 'rxjs/operators'; +import { pkg } from '../../../../legacy/utils/package_json'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../../config'; import { getEnvOptions } from '../../config/__mocks__/env'; import { logger } from '../../logging/__mocks__'; @@ -45,6 +44,11 @@ const TEST_PLUGIN_SEARCH_PATHS = { nonExistentKibanaExtra: resolve(process.cwd(), '..', 'kibana-extra'), }; +const mockPackage = pkg; +const mockReaddir = (readdir as unknown) as jest.Mock; +const mockReadFile = (readFile as unknown) as jest.Mock; +const mockStat = (stat as unknown) as jest.Mock; + beforeEach(() => { mockReaddir.mockImplementation((path, cb) => { if (path === TEST_PLUGIN_SEARCH_PATHS.nonEmptySrcPlugins) { diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts index d6012e4a5e2e43..ffea157dba6091 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts @@ -17,13 +17,11 @@ * under the License. */ -import { PluginDiscoveryErrorType } from './plugin_discovery_error'; - -const mockReadFile = jest.fn(); -const mockStat = jest.fn(); -jest.mock('fs', () => ({ readFile: mockReadFile, stat: mockStat })); +jest.mock('fs', () => ({ readFile: jest.fn(), stat: jest.fn() })); +import { readFile } from 'fs'; import { resolve } from 'path'; +import { PluginDiscoveryErrorType } from './plugin_discovery_error'; import { parseManifest } from './plugin_manifest_parser'; const pluginPath = resolve('path', 'existent-dir'); @@ -35,6 +33,8 @@ const packageInfo = { version: '7.0.0-alpha1', }; +const mockReadFile = (readFile as unknown) as jest.Mock; + afterEach(() => { jest.clearAllMocks(); }); diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index 3b4d459a3175d9..8b9f2c4399bef3 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -17,28 +17,30 @@ * under the License. */ -import { ElasticsearchServiceStart } from '../elasticsearch'; - -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); - -const mockDiscover = jest.fn(); -jest.mock('./discovery/plugins_discovery', () => ({ discover: mockDiscover })); - +jest.mock('./discovery/plugins_discovery', () => ({ discover: jest.fn() })); jest.mock('./plugins_system'); +jest.mock('../../../legacy/utils/package_json', () => ({ + pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), +})); import { resolve } from 'path'; import { BehaviorSubject, from } from 'rxjs'; +import { pkg } from '../../../legacy/utils/package_json'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; import { getEnvOptions } from '../config/__mocks__/env'; -import { logger } from '../logging/__mocks__'; import { PluginDiscoveryError } from './discovery'; +import { discover } from './discovery/plugins_discovery'; + +import { ElasticsearchServiceStart } from '../elasticsearch'; +import { logger } from '../logging/__mocks__'; import { Plugin } from './plugin'; import { PluginsService } from './plugins_service'; import { PluginsSystem } from './plugins_system'; +const mockDiscover = discover as jest.Mock; const MockPluginsSystem: jest.Mock = PluginsSystem as any; +const mockPackage = pkg; let pluginsService: PluginsService; let configService: ConfigService; diff --git a/src/core/server/plugins/plugins_system.test.ts b/src/core/server/plugins/plugins_system.test.ts index e594d4eda3a53d..a00cbb2dc4b757 100644 --- a/src/core/server/plugins/plugins_system.test.ts +++ b/src/core/server/plugins/plugins_system.test.ts @@ -17,21 +17,23 @@ * under the License. */ -import { CoreContext } from '../../types'; - -const mockCreatePluginStartContext = jest.fn(); jest.mock('./plugin_context', () => ({ - createPluginStartContext: mockCreatePluginStartContext, + createPluginStartContext: jest.fn(), })); +import { CoreContext } from '../../types'; + import { BehaviorSubject } from 'rxjs'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; import { getEnvOptions } from '../config/__mocks__/env'; import { ElasticsearchServiceStart } from '../elasticsearch'; import { logger } from '../logging/__mocks__'; import { Plugin, PluginName } from './plugin'; +import { createPluginStartContext } from './plugin_context'; import { PluginsSystem } from './plugins_system'; +const mockCreatePluginStartContext = createPluginStartContext as jest.Mock; + function createPlugin( id: string, { diff --git a/src/dev/i18n/integrate_locale_files.test.ts b/src/dev/i18n/integrate_locale_files.test.ts index 050f16f3d33447..b2a84a81fd1160 100644 --- a/src/dev/i18n/integrate_locale_files.test.ts +++ b/src/dev/i18n/integrate_locale_files.test.ts @@ -17,19 +17,20 @@ * under the License. */ -const mockWriteFileAsync = jest.fn(); -const mockMakeDirAsync = jest.fn(); jest.mock('./utils', () => ({ // Jest typings don't define `requireActual` for some reason. ...(jest as any).requireActual('./utils'), - writeFileAsync: mockWriteFileAsync, - makeDirAsync: mockMakeDirAsync, + writeFileAsync: jest.fn(), + makeDirAsync: jest.fn(), })); import path from 'path'; import { integrateLocaleFiles, verifyMessages } from './integrate_locale_files'; // @ts-ignore -import { normalizePath } from './utils'; +import { makeDirAsync, normalizePath, writeFileAsync } from './utils'; + +const mockWriteFileAsync = writeFileAsync; +const mockMakeDirAsync = makeDirAsync; const localePath = path.resolve(__dirname, '__fixtures__', 'integrate_locale_files', 'fr.json'); diff --git a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts index a5a3312bad4bfb..825190cd31faad 100644 --- a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts +++ b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts @@ -17,14 +17,16 @@ * under the License. */ -const mockFatalError = jest.fn(); jest.mock('ui/notify/fatal_error', () => ({ - fatalError: mockFatalError, + fatalError: jest.fn(), })); import * as Rx from 'rxjs'; +import { fatalError } from 'ui/notify/fatal_error'; import { subscribeWithScope } from './subscribe_with_scope'; +const mockFatalError = fatalError as jest.Mock; + let $rootScope: Scope; class Scope { From 84acbf5fb2f614edf0b41907c201c62af9a45a8d Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 7 Mar 2019 16:22:54 +0000 Subject: [PATCH 13/56] chore(NA): add babel plugin to hoist mock prefixed vars on jest tests. --- src/dev/jest/babel_test.js | 56 +++++++++++++++++++ src/dev/jest/babel_transform.js | 5 +- .../query_bar/components/query_bar.test.tsx | 14 ++--- 3 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 src/dev/jest/babel_test.js diff --git a/src/dev/jest/babel_test.js b/src/dev/jest/babel_test.js new file mode 100644 index 00000000000000..17e461aecd5a66 --- /dev/null +++ b/src/dev/jest/babel_test.js @@ -0,0 +1,56 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const visitor = { + // Babel-jest hoisting to the top very `jest.mock` call so make it + // impossible to reuse variables defined outside of them, even the ones + // prefixed with `mock` contrary to what is described in the documentation. + // The idea behind this plugin is to hoist the `mock` prefixed variables + // found in the babel-jest parsed tests in order to be able to use them + // along with the jest.mock calls. + VariableDeclaration(path) { + const varNode = path && path.node; + const kind = varNode && varNode.kind; + const declarations = varNode && varNode.declarations; + + if (!kind || !declarations) { + return; + } + + // Return as soon as we found a mock prefixed var + const foundMockVarDeclaration = declarations.some((decl) => { + const declName = decl && decl.id && decl.id.name; + return /^mock/i.test(declName); + }); + + // If none mock prefixed var was found, just return + if (!foundMockVarDeclaration) { + return; + } + + // If a mock prefixed var was found, hoist it with Infinity + // The same behaviour is found on babel-plugin-jest-hoist + // https://github.com/facebook/jest/blob/master/packages/babel-plugin-jest-hoist/src/index.ts#L180 + path.node._blockHoist = Infinity; + }, +}; + +module.exports = () => { + return { visitor }; +}; diff --git a/src/dev/jest/babel_transform.js b/src/dev/jest/babel_transform.js index 7bdba8ae7fa152..17733e6bea0df7 100644 --- a/src/dev/jest/babel_transform.js +++ b/src/dev/jest/babel_transform.js @@ -22,5 +22,8 @@ const babelJest = require('babel-jest'); module.exports = babelJest.createTransformer({ presets: [ require.resolve('@kbn/babel-preset/node_preset') - ] + ], + plugins: [ + require.resolve('./babel_test') + ], }); diff --git a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx index fdcfb770439193..faaa8ffd70afaa 100644 --- a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx +++ b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx @@ -48,6 +48,13 @@ const mockGetAutocompleteSuggestions = jest.fn(() => Promise.resolve([])); const mockAutocompleteProvider = jest.fn(() => mockGetAutocompleteSuggestions); const mockGetAutocompleteProvider = jest.fn(() => mockAutocompleteProvider); +jest.mock('lodash', () => { + const _ = require.requireActual('lodash'); + return { + ..._, + debounce: (func: () => any) => func, + }; +}); jest.mock('ui/chrome', () => mockChromeFactory()); jest.mock('../../chrome', () => mockChromeFactory()); jest.mock('ui/persisted_log', () => ({ @@ -62,13 +69,6 @@ jest.mock('../../autocomplete_providers', () => ({ getAutocompleteProvider: mockGetAutocompleteProvider, })); -import _ from 'lodash'; -// Using doMock to avoid hoisting so that I can override only the debounce method in lodash -jest.doMock('lodash', () => ({ - ..._, - debounce: (func: () => any) => func, -})); - import { EuiFieldText } from '@elastic/eui'; import React from 'react'; import { mountWithIntl, shallowWithIntl } from 'test_utils/enzyme_helpers'; From 55c8ede6f34221e3f4a3523e89fbd1d88e7ceacf Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 7 Mar 2019 18:00:48 +0000 Subject: [PATCH 14/56] chore(NA): update yarn.lock file. --- yarn.lock | 70 +++++++++++++++++++------------------------------------ 1 file changed, 24 insertions(+), 46 deletions(-) diff --git a/yarn.lock b/yarn.lock index b3ebde6855ef2f..083c25ab312774 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4909,13 +4909,6 @@ browserslist@~1.4.0: dependencies: caniuse-db "^1.0.30000539" -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -4966,7 +4959,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@1.x, buffer-from@^1.0.0: +buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -9320,7 +9313,7 @@ fast-glob@^2.0.2: merge2 "1.2.1" micromatch "3.1.5" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= @@ -13771,13 +13764,6 @@ json3@3.3.2, json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= -json5@2.x, json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -13790,6 +13776,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -15066,7 +15059,7 @@ make-dir@^1.0.0, make-dir@^1.3.0: dependencies: pify "^3.0.0" -make-error@1.x, make-error@^1.3.5: +make-error@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== @@ -15641,7 +15634,7 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -19730,13 +19723,6 @@ resolve@1.1.7, resolve@1.1.x, resolve@~1.1.0, resolve@~1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - dependencies: - path-parse "^1.0.6" - resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" @@ -19758,6 +19744,13 @@ resolve@^1.5.0, resolve@^1.7.1: dependencies: path-parse "^1.0.5" +resolve@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -20249,16 +20242,16 @@ semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@^5.5, semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== +semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -22264,21 +22257,6 @@ trunc-text@1.0.2: resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.2.tgz#b582bb3ddea9c9adc25017d737c48ebdd2157406" integrity sha1-tYK7Pd6pya3CUBfXN8SOvdIVdAY= -ts-jest@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.0.tgz#3f26bf2ec1fa584863a5a9c29bd8717d549efbf6" - integrity sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw== - dependencies: - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - json5 "2.x" - make-error "1.x" - mkdirp "0.x" - resolve "1.x" - semver "^5.5" - yargs-parser "10.x" - ts-log@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.3.tgz#9e30aca1baffe7693a2e4142b8f07ecb01cb8340" @@ -24631,7 +24609,7 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs-parser@10.x, yargs-parser@^10.1.0: +yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== From e436b539e2a290426321a343b397b1371fd8d1cb Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 8 Mar 2019 08:22:32 +0000 Subject: [PATCH 15/56] chore(NA): tests passing. --- package.json | 1 + .../fatal_errors/fatal_errors_service.test.ts | 16 ++-- .../toasts/toasts_service.test.tsx | 10 +-- src/core/server/config/config_service.test.ts | 9 +-- src/core/server/config/env.test.ts | 8 +- .../server/config/raw_config_service.test.ts | 6 +- .../elasticsearch/cluster_client.test.ts | 21 +++--- .../elasticsearch_client_config.test.ts | 6 +- .../elasticsearch_service.test.ts | 8 +- .../logging/appenders/appenders.test.ts | 6 +- .../appenders/file/file_appender.test.ts | 5 +- .../discovery/plugin_discovery.test.ts | 22 +++--- .../discovery/plugin_manifest_parser.test.ts | 10 +-- src/core/server/plugins/plugin.test.ts | 11 ++- .../server/plugins/plugins_service.test.ts | 20 +++-- .../server/plugins/plugins_system.test.ts | 10 +-- src/dev/i18n/integrate_locale_files.test.ts | 11 ++- src/dev/jest/babel_transform.js | 3 - src/dev/jest/config.js | 8 +- ...test.js => ts_babel_jest_disable_hoist.js} | 50 ++++++------- src/dev/jest/ts_transform.js | 21 ++++++ src/dev/jest/ts_transform.ts | 74 +++++++++++++++++++ .../query_bar/components/query_bar.test.tsx | 14 ++-- .../public/utils/subscribe_with_scope.test.ts | 6 +- x-pack/dev-tools/jest/create_jest_config.js | 3 +- .../components/report_info_button.test.tsx | 9 +-- .../privilege_callout_warning.test.tsx.snap | 8 +- .../space_aware_privilege_form.test.tsx.snap | 7 +- .../__snapshots__/space_avatar.test.tsx.snap | 4 +- .../advanced_settings_title.test.tsx.snap | 2 +- .../space_identifier.test.tsx.snap | 3 +- .../spaces_grid_pages.test.tsx.snap | 14 ++-- .../nav_control_popover.test.tsx.snap | 4 +- .../__snapshots__/checkup_tab.test.tsx.snap | 4 +- .../checklist_step.test.tsx.snap | 8 +- .../__snapshots__/warning_step.test.tsx.snap | 8 +- .../reindex/flyout/progress.test.tsx | 4 +- .../reindex/polling_service.test.ts | 24 +++--- .../__snapshots__/snapshot.test.tsx.snap | 2 +- .../__snapshots__/empty_state.test.tsx.snap | 24 +++--- .../server/lib/file_integrity.test.ts | 8 +- x-pack/tasks/build.js | 25 ------- x-pack/test_utils/jest/config.js | 8 +- yarn.lock | 70 ++++++++++++------ 44 files changed, 340 insertions(+), 255 deletions(-) rename src/dev/jest/{babel_test.js => ts_babel_jest_disable_hoist.js} (58%) create mode 100644 src/dev/jest/ts_transform.js create mode 100644 src/dev/jest/ts_transform.ts diff --git a/package.json b/package.json index 8c934ab206bc53..8d4fe7045f840d 100644 --- a/package.json +++ b/package.json @@ -398,6 +398,7 @@ "supertest": "^3.1.0", "supertest-as-promised": "^4.0.2", "tree-kill": "^1.1.0", + "ts-jest": "^24.0.0", "tsconfig-paths": "^3.8.0", "tslint": "^5.11.0", "tslint-config-prettier": "^1.15.0", diff --git a/src/core/public/fatal_errors/fatal_errors_service.test.ts b/src/core/public/fatal_errors/fatal_errors_service.test.ts index c58476fdf6aa67..23895c8ce85cd7 100644 --- a/src/core/public/fatal_errors/fatal_errors_service.test.ts +++ b/src/core/public/fatal_errors/fatal_errors_service.test.ts @@ -17,13 +17,6 @@ * under the License. */ -jest.mock('react-dom', () => { - return { - render: jest.fn(), - }; -}); - -import ReactDOM from 'react-dom'; import * as Rx from 'rxjs'; expect.addSnapshotSerializer({ @@ -31,9 +24,14 @@ expect.addSnapshotSerializer({ print: () => `Rx.Observable`, }); -import { FatalErrorsService } from './fatal_errors_service'; +const mockRender = jest.fn(); +jest.mock('react-dom', () => { + return { + render: mockRender, + }; +}); -const mockRender = ReactDOM.render as jest.Mock; +import { FatalErrorsService } from './fatal_errors_service'; function setup() { const rootDomElement = document.createElement('div'); diff --git a/src/core/public/notifications/toasts/toasts_service.test.tsx b/src/core/public/notifications/toasts/toasts_service.test.tsx index fb45509aa472c2..f9ab322f07d30e 100644 --- a/src/core/public/notifications/toasts/toasts_service.test.tsx +++ b/src/core/public/notifications/toasts/toasts_service.test.tsx @@ -17,12 +17,13 @@ * under the License. */ +const mockReactDomRender = jest.fn(); +const mockReactDomUnmount = jest.fn(); jest.mock('react-dom', () => ({ - render: jest.fn(), - unmountComponentAtNode: jest.fn(), + render: mockReactDomRender, + unmountComponentAtNode: mockReactDomUnmount, })); -import ReactDOM from 'react-dom'; import { ToastsService } from './toasts_service'; import { ToastsStart } from './toasts_start'; @@ -32,9 +33,6 @@ const mockI18n: any = { }, }; -const mockReactDomRender = ReactDOM.render as jest.Mock; -const mockReactDomUnmount = ReactDOM.unmountComponentAtNode as jest.Mock; - describe('#start()', () => { it('renders the GlobalToastList into the targetDomElement param', async () => { const targetDomElement = document.createElement('div'); diff --git a/src/core/server/config/config_service.test.ts b/src/core/server/config/config_service.test.ts index 681afac7770853..f51989ef980871 100644 --- a/src/core/server/config/config_service.test.ts +++ b/src/core/server/config/config_service.test.ts @@ -19,23 +19,20 @@ /* tslint:disable max-classes-per-file */ -jest.mock('../../../legacy/utils/package_json', () => ({ - pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), -})); - import { BehaviorSubject } from 'rxjs'; import { first } from 'rxjs/operators'; +const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); + import { schema, Type, TypeOf } from '@kbn/config-schema'; import { ConfigService, Env, ObjectToConfigAdapter } from '.'; -import { pkg } from '../../../legacy/utils/package_json'; import { logger } from '../logging/__mocks__'; import { getEnvOptions } from './__mocks__/env'; const emptyArgv = getEnvOptions(); const defaultEnv = new Env('/kibana', emptyArgv); -const mockPackage = pkg; test('returns config at path as observable', async () => { const config$ = new BehaviorSubject(new ObjectToConfigAdapter({ key: 'foo' })); diff --git a/src/core/server/config/env.test.ts b/src/core/server/config/env.test.ts index e2b6474692706c..34d37509db4560 100644 --- a/src/core/server/config/env.test.ts +++ b/src/core/server/config/env.test.ts @@ -29,16 +29,12 @@ jest.mock('path', () => ({ }, })); -jest.mock('../../../legacy/utils/package_json', () => ({ - pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), -})); +const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); import { Env } from '.'; -import { pkg } from '../../../legacy/utils/package_json'; import { getEnvOptions } from './__mocks__/env'; -const mockPackage = pkg; - test('correctly creates default environment in dev mode.', () => { mockPackage.raw = { branch: 'some-branch', diff --git a/src/core/server/config/raw_config_service.test.ts b/src/core/server/config/raw_config_service.test.ts index 2f424f197ede78..0cd0dc45cd9392 100644 --- a/src/core/server/config/raw_config_service.test.ts +++ b/src/core/server/config/raw_config_service.test.ts @@ -17,17 +17,17 @@ * under the License. */ +const mockGetConfigFromFiles = jest.fn(); + jest.mock('./read_config', () => ({ - getConfigFromFiles: jest.fn(), + getConfigFromFiles: mockGetConfigFromFiles, })); import { first } from 'rxjs/operators'; import { RawConfigService } from '.'; -import { getConfigFromFiles } from './read_config'; const configFile = '/config/kibana.yml'; const anotherConfigFile = '/config/kibana.dev.yml'; -const mockGetConfigFromFiles = getConfigFromFiles as jest.Mock; beforeEach(() => { mockGetConfigFromFiles.mockReset(); diff --git a/src/core/server/elasticsearch/cluster_client.test.ts b/src/core/server/elasticsearch/cluster_client.test.ts index 7d445f3193cbb4..5516b19ccbd512 100644 --- a/src/core/server/elasticsearch/cluster_client.test.ts +++ b/src/core/server/elasticsearch/cluster_client.test.ts @@ -17,33 +17,30 @@ * under the License. */ +import { ElasticsearchConfig } from './elasticsearch_config'; + +const MockClient = jest.fn(); jest.mock('elasticsearch', () => ({ // Jest types don't include `requireActual` right now. ...(jest as any).requireActual('elasticsearch'), - Client: jest.fn(), + Client: MockClient, })); +const MockScopedClusterClient = jest.fn(); jest.mock('./scoped_cluster_client', () => ({ - ScopedClusterClient: jest.fn(), + ScopedClusterClient: MockScopedClusterClient, })); +const mockParseElasticsearchClientConfig = jest.fn(); jest.mock('./elasticsearch_client_config', () => ({ - parseElasticsearchClientConfig: jest.fn(), + parseElasticsearchClientConfig: mockParseElasticsearchClientConfig, })); -import { ElasticsearchConfig } from './elasticsearch_config'; - -import { Client, errors } from 'elasticsearch'; +import { errors } from 'elasticsearch'; import { get } from 'lodash'; import { Logger } from '../logging'; import { logger } from '../logging/__mocks__'; import { ClusterClient } from './cluster_client'; -import { parseElasticsearchClientConfig } from './elasticsearch_client_config'; -import { ScopedClusterClient } from './scoped_cluster_client'; - -const MockClient = Client as jest.Mock; -const MockScopedClusterClient = ScopedClusterClient as jest.Mock; -const mockParseElasticsearchClientConfig = parseElasticsearchClientConfig as jest.Mock; afterEach(() => jest.clearAllMocks()); diff --git a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts index 31484676ace275..9b7dcd37a74826 100644 --- a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts @@ -17,9 +17,9 @@ * under the License. */ -jest.mock('fs', () => ({ readFileSync: jest.fn() })); +const mockReadFileSync = jest.fn(); +jest.mock('fs', () => ({ readFileSync: mockReadFileSync })); -import { readFileSync } from 'fs'; import { duration } from 'moment'; import { logger } from '../logging/__mocks__'; import { @@ -27,8 +27,6 @@ import { parseElasticsearchClientConfig, } from './elasticsearch_client_config'; -const mockReadFileSync = readFileSync as jest.Mock; - afterEach(() => jest.clearAllMocks()); test('parses minimally specified config', () => { diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts index 676689a4dfc656..a7559cc2687f78 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts @@ -17,21 +17,19 @@ * under the License. */ -jest.mock('./cluster_client', () => ({ ClusterClient: jest.fn() })); - import { first } from 'rxjs/operators'; +const MockClusterClient = jest.fn(); +jest.mock('./cluster_client', () => ({ ClusterClient: MockClusterClient })); + import { BehaviorSubject, combineLatest } from 'rxjs'; import { CoreContext } from '../../types'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; import { getEnvOptions } from '../config/__mocks__/env'; import { logger } from '../logging/__mocks__'; -import { ClusterClient } from './cluster_client'; import { ElasticsearchConfig } from './elasticsearch_config'; import { ElasticsearchService } from './elasticsearch_service'; -const MockClusterClient = ClusterClient as jest.Mock; - let elasticsearchService: ElasticsearchService; let configService: ConfigService; let env: Env; diff --git a/src/core/server/logging/appenders/appenders.test.ts b/src/core/server/logging/appenders/appenders.test.ts index f6db9b72e00c86..df528f4c58cd5a 100644 --- a/src/core/server/logging/appenders/appenders.test.ts +++ b/src/core/server/logging/appenders/appenders.test.ts @@ -17,24 +17,22 @@ * under the License. */ +const mockCreateLayout = jest.fn(); jest.mock('../layouts/layouts', () => { const { schema } = require('@kbn/config-schema'); return { Layouts: { configSchema: schema.object({ kind: schema.literal('mock') }), - create: jest.fn(), + create: mockCreateLayout, }, }; }); import { LegacyAppender } from '../../legacy/logging/appenders/legacy_appender'; -import { Layouts } from '../layouts/layouts'; import { Appenders } from './appenders'; import { ConsoleAppender } from './console/console_appender'; import { FileAppender } from './file/file_appender'; -const mockCreateLayout = Layouts.create as jest.Mock; - beforeEach(() => { mockCreateLayout.mockReset(); }); diff --git a/src/core/server/logging/appenders/file/file_appender.test.ts b/src/core/server/logging/appenders/file/file_appender.test.ts index 8b9bbb734c231f..1d9ef33995955a 100644 --- a/src/core/server/logging/appenders/file/file_appender.test.ts +++ b/src/core/server/logging/appenders/file/file_appender.test.ts @@ -28,14 +28,13 @@ jest.mock('../../layouts/layouts', () => { }; }); -jest.mock('fs', () => ({ createWriteStream: jest.fn() })); +const mockCreateWriteStream = jest.fn(); +jest.mock('fs', () => ({ createWriteStream: mockCreateWriteStream })); -import { createWriteStream } from 'fs'; import { LogLevel } from '../../log_level'; import { LogRecord } from '../../log_record'; import { FileAppender } from './file_appender'; -const mockCreateWriteStream = createWriteStream as jest.Mock; const tickMs = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); beforeEach(() => { diff --git a/src/core/server/plugins/discovery/plugin_discovery.test.ts b/src/core/server/plugins/discovery/plugin_discovery.test.ts index 399ec42ef80bef..e7a54ccce7fee0 100644 --- a/src/core/server/plugins/discovery/plugin_discovery.test.ts +++ b/src/core/server/plugins/discovery/plugin_discovery.test.ts @@ -17,20 +17,21 @@ * under the License. */ +const mockReaddir = jest.fn(); +const mockReadFile = jest.fn(); +const mockStat = jest.fn(); jest.mock('fs', () => ({ - readdir: jest.fn(), - readFile: jest.fn(), - stat: jest.fn(), -})); -jest.mock('../../../../legacy/utils/package_json', () => ({ - pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), + readdir: mockReaddir, + readFile: mockReadFile, + stat: mockStat, })); -import { readdir, readFile, stat } from 'fs'; +const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); + import { resolve } from 'path'; import { BehaviorSubject } from 'rxjs'; import { first, map, toArray } from 'rxjs/operators'; -import { pkg } from '../../../../legacy/utils/package_json'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../../config'; import { getEnvOptions } from '../../config/__mocks__/env'; import { logger } from '../../logging/__mocks__'; @@ -44,11 +45,6 @@ const TEST_PLUGIN_SEARCH_PATHS = { nonExistentKibanaExtra: resolve(process.cwd(), '..', 'kibana-extra'), }; -const mockPackage = pkg; -const mockReaddir = (readdir as unknown) as jest.Mock; -const mockReadFile = (readFile as unknown) as jest.Mock; -const mockStat = (stat as unknown) as jest.Mock; - beforeEach(() => { mockReaddir.mockImplementation((path, cb) => { if (path === TEST_PLUGIN_SEARCH_PATHS.nonEmptySrcPlugins) { diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts index ffea157dba6091..d6012e4a5e2e43 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts @@ -17,11 +17,13 @@ * under the License. */ -jest.mock('fs', () => ({ readFile: jest.fn(), stat: jest.fn() })); +import { PluginDiscoveryErrorType } from './plugin_discovery_error'; + +const mockReadFile = jest.fn(); +const mockStat = jest.fn(); +jest.mock('fs', () => ({ readFile: mockReadFile, stat: mockStat })); -import { readFile } from 'fs'; import { resolve } from 'path'; -import { PluginDiscoveryErrorType } from './plugin_discovery_error'; import { parseManifest } from './plugin_manifest_parser'; const pluginPath = resolve('path', 'existent-dir'); @@ -33,8 +35,6 @@ const packageInfo = { version: '7.0.0-alpha1', }; -const mockReadFile = (readFile as unknown) as jest.Mock; - afterEach(() => { jest.clearAllMocks(); }); diff --git a/src/core/server/plugins/plugin.test.ts b/src/core/server/plugins/plugin.test.ts index 2bf70c5e35a667..39b4dd4221522b 100644 --- a/src/core/server/plugins/plugin.test.ts +++ b/src/core/server/plugins/plugin.test.ts @@ -17,6 +17,7 @@ * under the License. */ +import { join } from 'path'; import { BehaviorSubject } from 'rxjs'; import { CoreContext } from '../../types'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; @@ -27,11 +28,15 @@ import { Plugin, PluginManifest } from './plugin'; import { createPluginInitializerContext, createPluginStartContext } from './plugin_context'; const mockPluginInitializer = jest.fn(); -jest.mock('plugin-with-initializer-path/server', () => ({ plugin: mockPluginInitializer }), { +jest.doMock( + join('plugin-with-initializer-path', 'server'), + () => ({ plugin: mockPluginInitializer }), + { virtual: true } +); +jest.doMock(join('plugin-without-initializer-path', 'server'), () => ({}), { virtual: true, }); -jest.mock('plugin-without-initializer-path/server', () => ({}), { virtual: true }); -jest.mock('plugin-with-wrong-initializer-path/server', () => ({ plugin: {} }), { +jest.doMock(join('plugin-with-wrong-initializer-path', 'server'), () => ({ plugin: {} }), { virtual: true, }); diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index 8b9f2c4399bef3..3b4d459a3175d9 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -17,30 +17,28 @@ * under the License. */ -jest.mock('./discovery/plugins_discovery', () => ({ discover: jest.fn() })); +import { ElasticsearchServiceStart } from '../elasticsearch'; + +const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); + +const mockDiscover = jest.fn(); +jest.mock('./discovery/plugins_discovery', () => ({ discover: mockDiscover })); + jest.mock('./plugins_system'); -jest.mock('../../../legacy/utils/package_json', () => ({ - pkg: new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }), -})); import { resolve } from 'path'; import { BehaviorSubject, from } from 'rxjs'; -import { pkg } from '../../../legacy/utils/package_json'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; import { getEnvOptions } from '../config/__mocks__/env'; -import { PluginDiscoveryError } from './discovery'; -import { discover } from './discovery/plugins_discovery'; - -import { ElasticsearchServiceStart } from '../elasticsearch'; import { logger } from '../logging/__mocks__'; +import { PluginDiscoveryError } from './discovery'; import { Plugin } from './plugin'; import { PluginsService } from './plugins_service'; import { PluginsSystem } from './plugins_system'; -const mockDiscover = discover as jest.Mock; const MockPluginsSystem: jest.Mock = PluginsSystem as any; -const mockPackage = pkg; let pluginsService: PluginsService; let configService: ConfigService; diff --git a/src/core/server/plugins/plugins_system.test.ts b/src/core/server/plugins/plugins_system.test.ts index a00cbb2dc4b757..e594d4eda3a53d 100644 --- a/src/core/server/plugins/plugins_system.test.ts +++ b/src/core/server/plugins/plugins_system.test.ts @@ -17,23 +17,21 @@ * under the License. */ +import { CoreContext } from '../../types'; + +const mockCreatePluginStartContext = jest.fn(); jest.mock('./plugin_context', () => ({ - createPluginStartContext: jest.fn(), + createPluginStartContext: mockCreatePluginStartContext, })); -import { CoreContext } from '../../types'; - import { BehaviorSubject } from 'rxjs'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; import { getEnvOptions } from '../config/__mocks__/env'; import { ElasticsearchServiceStart } from '../elasticsearch'; import { logger } from '../logging/__mocks__'; import { Plugin, PluginName } from './plugin'; -import { createPluginStartContext } from './plugin_context'; import { PluginsSystem } from './plugins_system'; -const mockCreatePluginStartContext = createPluginStartContext as jest.Mock; - function createPlugin( id: string, { diff --git a/src/dev/i18n/integrate_locale_files.test.ts b/src/dev/i18n/integrate_locale_files.test.ts index b2a84a81fd1160..050f16f3d33447 100644 --- a/src/dev/i18n/integrate_locale_files.test.ts +++ b/src/dev/i18n/integrate_locale_files.test.ts @@ -17,20 +17,19 @@ * under the License. */ +const mockWriteFileAsync = jest.fn(); +const mockMakeDirAsync = jest.fn(); jest.mock('./utils', () => ({ // Jest typings don't define `requireActual` for some reason. ...(jest as any).requireActual('./utils'), - writeFileAsync: jest.fn(), - makeDirAsync: jest.fn(), + writeFileAsync: mockWriteFileAsync, + makeDirAsync: mockMakeDirAsync, })); import path from 'path'; import { integrateLocaleFiles, verifyMessages } from './integrate_locale_files'; // @ts-ignore -import { makeDirAsync, normalizePath, writeFileAsync } from './utils'; - -const mockWriteFileAsync = writeFileAsync; -const mockMakeDirAsync = makeDirAsync; +import { normalizePath } from './utils'; const localePath = path.resolve(__dirname, '__fixtures__', 'integrate_locale_files', 'fr.json'); diff --git a/src/dev/jest/babel_transform.js b/src/dev/jest/babel_transform.js index 17733e6bea0df7..0796cf859d4ef0 100644 --- a/src/dev/jest/babel_transform.js +++ b/src/dev/jest/babel_transform.js @@ -23,7 +23,4 @@ module.exports = babelJest.createTransformer({ presets: [ require.resolve('@kbn/babel-preset/node_preset') ], - plugins: [ - require.resolve('./babel_test') - ], }); diff --git a/src/dev/jest/config.js b/src/dev/jest/config.js index 754e2cdb27c9dd..3db4f8170e19c0 100644 --- a/src/dev/jest/config.js +++ b/src/dev/jest/config.js @@ -58,6 +58,11 @@ export default { coverageReporters: [ 'html', ], + globals: { + 'ts-jest': { + skipBabel: true, + }, + }, moduleFileExtensions: [ 'js', 'json', @@ -77,7 +82,8 @@ export default { 'integration_tests/' ], transform: { - '^.+\\.(js|tsx?)$': '/src/dev/jest/babel_transform.js', + '^.+\\.jsx?$': '/src/dev/jest/babel_transform.js', + '^.+\\.tsx?$': '/src/dev/jest/ts_transform.js', '^.+\\.txt?$': 'jest-raw-loader', '^.+\\.html?$': 'jest-raw-loader', }, diff --git a/src/dev/jest/babel_test.js b/src/dev/jest/ts_babel_jest_disable_hoist.js similarity index 58% rename from src/dev/jest/babel_test.js rename to src/dev/jest/ts_babel_jest_disable_hoist.js index 17e461aecd5a66..afae0945a2414d 100644 --- a/src/dev/jest/babel_test.js +++ b/src/dev/jest/ts_babel_jest_disable_hoist.js @@ -24,31 +24,31 @@ const visitor = { // The idea behind this plugin is to hoist the `mock` prefixed variables // found in the babel-jest parsed tests in order to be able to use them // along with the jest.mock calls. - VariableDeclaration(path) { - const varNode = path && path.node; - const kind = varNode && varNode.kind; - const declarations = varNode && varNode.declarations; - - if (!kind || !declarations) { - return; - } - - // Return as soon as we found a mock prefixed var - const foundMockVarDeclaration = declarations.some((decl) => { - const declName = decl && decl.id && decl.id.name; - return /^mock/i.test(declName); - }); - - // If none mock prefixed var was found, just return - if (!foundMockVarDeclaration) { - return; - } - - // If a mock prefixed var was found, hoist it with Infinity - // The same behaviour is found on babel-plugin-jest-hoist - // https://github.com/facebook/jest/blob/master/packages/babel-plugin-jest-hoist/src/index.ts#L180 - path.node._blockHoist = Infinity; - }, + // VariableDeclaration(path) { + // const varNode = path && path.node; + // const kind = varNode && varNode.kind; + // const declarations = varNode && varNode.declarations; + // + // if (!kind || !declarations) { + // return; + // } + // + // // Return as soon as we found a mock prefixed var + // const foundMockVarDeclaration = declarations.some((decl) => { + // const declName = decl && decl.id && decl.id.name; + // return /^mock/i.test(declName); + // }); + // + // // If none mock prefixed var was found, just return + // if (!foundMockVarDeclaration) { + // return; + // } + // + // // If a mock prefixed var was found, hoist it with Infinity + // // The same behaviour is found on babel-plugin-jest-hoist + // // https://github.com/facebook/jest/blob/master/packages/babel-plugin-jest-hoist/src/index.ts#L180 + // path.node._blockHoist = Infinity; + // }, }; module.exports = () => { diff --git a/src/dev/jest/ts_transform.js b/src/dev/jest/ts_transform.js new file mode 100644 index 00000000000000..f097ed2f8076ae --- /dev/null +++ b/src/dev/jest/ts_transform.js @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +require('../../setup_node_env'); +module.exports = require('./ts_transform.ts'); diff --git a/src/dev/jest/ts_transform.ts b/src/dev/jest/ts_transform.ts new file mode 100644 index 00000000000000..2213a96c7c1586 --- /dev/null +++ b/src/dev/jest/ts_transform.ts @@ -0,0 +1,74 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +// @ts-ignore +import { getCacheKey, process } from 'ts-jest'; + +import { getTsProjectForAbsolutePath } from '../typescript'; + +const DEFAULT_TS_CONFIG_PATH = require.resolve('../../../tsconfig.json'); +const DEFAULT_BROWSER_TS_CONFIG_PATH = require.resolve('../../../tsconfig.browser.json'); + +function extendJestConfigJSON(jestConfigJSON: string, filePath: string) { + const jestConfig = JSON.parse(jestConfigJSON) as jest.ProjectConfig; + return JSON.stringify(extendJestConfig(jestConfig, filePath)); +} + +function extendJestConfig(jestConfig: jest.ProjectConfig, filePath: string) { + let tsConfig = getTsProjectForAbsolutePath(filePath).tsConfigPath; + + // swap ts config file for jest tests + if (tsConfig === DEFAULT_BROWSER_TS_CONFIG_PATH) { + tsConfig = DEFAULT_TS_CONFIG_PATH; + } + + return { + ...jestConfig, + globals: { + ...(jestConfig.globals || {}), + 'ts-jest': { + babelConfig: true, + tsConfig, + }, + }, + }; +} + +module.exports = { + canInstrument: true, + + process( + src: string, + filePath: jest.Path, + jestConfig: jest.ProjectConfig, + transformOptions: jest.TransformOptions + ) { + const extendedConfig = extendJestConfig(jestConfig, filePath); + return process(src, filePath, extendedConfig, transformOptions); + }, + + getCacheKey( + src: string, + filePath: string, + jestConfigJSON: string, + transformOptions: jest.TransformOptions + ) { + const extendedConfigJSON = extendJestConfigJSON(jestConfigJSON, filePath as string); + return getCacheKey!(src, filePath, extendedConfigJSON, transformOptions); + }, +}; diff --git a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx index faaa8ffd70afaa..fdcfb770439193 100644 --- a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx +++ b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx @@ -48,13 +48,6 @@ const mockGetAutocompleteSuggestions = jest.fn(() => Promise.resolve([])); const mockAutocompleteProvider = jest.fn(() => mockGetAutocompleteSuggestions); const mockGetAutocompleteProvider = jest.fn(() => mockAutocompleteProvider); -jest.mock('lodash', () => { - const _ = require.requireActual('lodash'); - return { - ..._, - debounce: (func: () => any) => func, - }; -}); jest.mock('ui/chrome', () => mockChromeFactory()); jest.mock('../../chrome', () => mockChromeFactory()); jest.mock('ui/persisted_log', () => ({ @@ -69,6 +62,13 @@ jest.mock('../../autocomplete_providers', () => ({ getAutocompleteProvider: mockGetAutocompleteProvider, })); +import _ from 'lodash'; +// Using doMock to avoid hoisting so that I can override only the debounce method in lodash +jest.doMock('lodash', () => ({ + ..._, + debounce: (func: () => any) => func, +})); + import { EuiFieldText } from '@elastic/eui'; import React from 'react'; import { mountWithIntl, shallowWithIntl } from 'test_utils/enzyme_helpers'; diff --git a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts index 825190cd31faad..a5a3312bad4bfb 100644 --- a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts +++ b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts @@ -17,16 +17,14 @@ * under the License. */ +const mockFatalError = jest.fn(); jest.mock('ui/notify/fatal_error', () => ({ - fatalError: jest.fn(), + fatalError: mockFatalError, })); import * as Rx from 'rxjs'; -import { fatalError } from 'ui/notify/fatal_error'; import { subscribeWithScope } from './subscribe_with_scope'; -const mockFatalError = fatalError as jest.Mock; - let $rootScope: Scope; class Scope { diff --git a/x-pack/dev-tools/jest/create_jest_config.js b/x-pack/dev-tools/jest/create_jest_config.js index 5d94b111761a7b..fea701d5eff60e 100644 --- a/x-pack/dev-tools/jest/create_jest_config.js +++ b/x-pack/dev-tools/jest/create_jest_config.js @@ -37,7 +37,8 @@ export function createJestConfig({ '**/*.test.{js,ts,tsx}' ], transform: { - '^.+\\.(js|tsx?)$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, + '^.+\\.jsx?$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, + '^.+\\.tsx?$': `${kibanaDirectory}/src/dev/jest/ts_transform.js`, }, transformIgnorePatterns: [ '[/\\\\]node_modules[/\\\\].+\\.js$' diff --git a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx index 2b46d062297c1a..93ceed0f64a0e2 100644 --- a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx +++ b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx @@ -4,17 +4,16 @@ * you may not use this file except in compliance with the Elastic License. */ +const mockJobQueueClient = { getInfo: jest.fn() }; +jest.mock('../lib/job_queue_client', () => ({ jobQueueClient: mockJobQueueClient })); + import React from 'react'; import { mountWithIntl } from 'test_utils/enzyme_helpers'; -import { jobQueueClient } from '../lib/job_queue_client'; import { ReportInfoButton } from './report_info_button'; -const mockJobQueueClient = jobQueueClient; -jest.mock('../lib/job_queue_client', () => ({ jobQueueClient: { getInfo: jest.fn() } })); - describe('ReportInfoButton', () => { beforeEach(() => { - (mockJobQueueClient.getInfo as jest.Mock).mockImplementation(() => ({ + mockJobQueueClient.getInfo = jest.fn(() => ({ payload: { title: 'Test Job' }, })); }); diff --git a/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap b/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap index 19dacf984f5dce..5c38e3f28c4d06 100644 --- a/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap +++ b/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap @@ -179,7 +179,9 @@ exports[`PrivilegeCalloutWarning renders without crashing 1`] = ` >

- grants full access to all spaces. To customize privileges for individual spaces, the minimum privilege must be either + grants full access to all + spaces. To customize privileges for individual spaces, the minimum privilege must be + either renders without crashing 1`] = ` >

with user profile disabling "manageSpaces" re

- + `; exports[`renders with a space name entirely made of whitespace 1`] = ` diff --git a/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap b/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap index e9582243766326..49cb9fedf69b59 100644 --- a/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap +++ b/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap @@ -14,7 +14,7 @@ exports[`AdvancedSettingsTitle renders as expected 1`] = ` component="div" grow={false} > - - - , - , + - , - , + - , + , ] `; diff --git a/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap b/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap index 265dcc349e1b98..00c49341ce0e7e 100644 --- a/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap +++ b/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap @@ -6,7 +6,7 @@ exports[`NavControlPopover renders without crashing 1`] = ` button={ - - - diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap index a670ba19a10a12..6f87d85dead850 100644 --- a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap +++ b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap @@ -17,14 +17,16 @@ exports[`ChecklistFlyout renders 1`] = ` >

@@ -45,7 +47,7 @@ exports[`ChecklistFlyout renders 1`] = ` /> - { ); expect(wrapper).toMatchInlineSnapshot(` - { ); expect(wrapper).toMatchInlineSnapshot(` - ({ - create: jest.fn().mockReturnValue({ - post: jest.fn(), - get: jest.fn(), - }), -})); const mockClient = { - get: (axios.create().get as jest.Mock).mockResolvedValue({ + post: jest.fn().mockResolvedValue({ + lastCompletedStep: ReindexStep.created, + status: ReindexStatus.inProgress, + }), + get: jest.fn().mockResolvedValue({ status: 200, data: { warnings: [], reindexOp: null, }, }), - post: (axios.create().post as jest.Mock).mockResolvedValue({ - lastCompletedStep: 0, - status: 0, - }), }; +jest.mock('axios', () => ({ + create: jest.fn().mockReturnValue(mockClient), +})); + +import { ReindexPollingService } from './polling_service'; describe('ReindexPollingService', () => { beforeEach(() => { diff --git a/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap b/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap index 2cb7bcd86900d5..e3aad97f6b7505 100644 --- a/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap @@ -132,7 +132,7 @@ exports[`Snapshot component renders without errors 1`] = ` } } > - - + @@ -246,8 +246,8 @@ exports[`EmptyState component doesn't render child components when count is fals - - + + `; exports[`EmptyState component renders child components when count is truthy 1`] = ` @@ -265,7 +265,7 @@ exports[`EmptyState component renders child components when count is truthy 1`] `; exports[`EmptyState component renders message while loading 1`] = ` - - + - - + + `; exports[`EmptyState component renders the message when an error occurs 1`] = ` - - - - + + `; diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts index 52112c9016ddc4..acc5e4b8fb4bdf 100644 --- a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts +++ b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts @@ -4,14 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import { Readable as mockReadable } from 'stream'; +import { Readable } from 'stream'; -jest.mock('fs', () => ({ - createReadStream(filepath: string): mockReadable { +jest.doMock('fs', () => ({ + createReadStream(filepath: string): Readable { if (filepath === 'ERROR') { throw new Error('MOCK ERROR - Invalid Path'); } - const readableStream = new mockReadable(); + const readableStream = new Readable(); const streamData = filepath.split(''); let cursor = 0; diff --git a/x-pack/tasks/build.js b/x-pack/tasks/build.js index 82ccc9c75bd6fb..3b1e77e3664074 100644 --- a/x-pack/tasks/build.js +++ b/x-pack/tasks/build.js @@ -4,22 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -import del from 'del'; import { resolve } from 'path'; import { writeFileSync } from 'fs'; import pluginHelpers from '@kbn/plugin-helpers'; import { ToolingLog } from '@kbn/dev-utils'; import { generateNoticeFromSource } from '../../src/dev'; -async function moveFiles(gulp, src, dest) { - return new Promise((resolve, reject) => { - gulp.src(src) - .pipe(gulp.dest(dest)) - .on('finish', resolve) - .on('error', reject); - }); -} - export default (gulp, { buildTarget }) => { gulp.task('build', ['clean', 'report', 'prepare:build'], async () => { const buildRoot = resolve(buildTarget, 'kibana/x-pack'); @@ -28,21 +18,6 @@ export default (gulp, { buildTarget }) => { buildDestination: buildTarget, }); - // NOTE: In order to prevent ending up with transpiled js files - // in the repository, we have set the outDir on x-pack tsconfig file - // to be the same as the intermediateBuildDirectory defined on the package.json - // As result of it, we need to move the transpiled js files for the correct folder - // and in the end deleting the generated outDir from the intermediateBuildDirectory. - // - //# TODO: This might be able to go away with the upgrade to babel 7 - await moveFiles( - gulp, - resolve(buildRoot, 'x-pack/build/plugin/kibana/x-pack/**/!(*.test).js'), - buildRoot - ); - await del(resolve(buildRoot, 'x-pack')); - //# - const log = new ToolingLog({ level: 'info', writeTo: process.stdout diff --git a/x-pack/test_utils/jest/config.js b/x-pack/test_utils/jest/config.js index 04b112254ab3bb..65e827e3a79fd4 100644 --- a/x-pack/test_utils/jest/config.js +++ b/x-pack/test_utils/jest/config.js @@ -32,6 +32,11 @@ export default { coverageReporters: [ 'html', ], + globals: { + 'ts-jest': { + skipBabel: true, + }, + }, moduleFileExtensions: [ 'js', 'json', @@ -51,7 +56,8 @@ export default { 'integration_tests/' ], transform: { - '^.+\\.(js|tsx?)$': '/../src/dev/jest/babel_transform.js', + '^.+\\.jsx?$': '/../src/dev/jest/babel_transform.js', + '^.+\\.tsx?$': '/../src/dev/jest/ts_transform.js', '^.+\\.txt?$': 'jest-raw-loader', '^.+\\.html?$': 'jest-raw-loader', }, diff --git a/yarn.lock b/yarn.lock index 083c25ab312774..b3ebde6855ef2f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4909,6 +4909,13 @@ browserslist@~1.4.0: dependencies: caniuse-db "^1.0.30000539" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -4959,7 +4966,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -9313,7 +9320,7 @@ fast-glob@^2.0.2: merge2 "1.2.1" micromatch "3.1.5" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= @@ -13764,6 +13771,13 @@ json3@3.3.2, json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= +json5@2.x, json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -13776,13 +13790,6 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -15059,7 +15066,7 @@ make-dir@^1.0.0, make-dir@^1.3.0: dependencies: pify "^3.0.0" -make-error@^1.3.5: +make-error@1.x, make-error@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== @@ -15634,7 +15641,7 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -19723,6 +19730,13 @@ resolve@1.1.7, resolve@1.1.x, resolve@~1.1.0, resolve@~1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +resolve@1.x, resolve@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" @@ -19744,13 +19758,6 @@ resolve@^1.5.0, resolve@^1.7.1: dependencies: path-parse "^1.0.5" -resolve@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - dependencies: - path-parse "^1.0.6" - responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -20242,16 +20249,16 @@ semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== +semver@^5.5, semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== -semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -22257,6 +22264,21 @@ trunc-text@1.0.2: resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.2.tgz#b582bb3ddea9c9adc25017d737c48ebdd2157406" integrity sha1-tYK7Pd6pya3CUBfXN8SOvdIVdAY= +ts-jest@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.0.tgz#3f26bf2ec1fa584863a5a9c29bd8717d549efbf6" + integrity sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + ts-log@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.3.tgz#9e30aca1baffe7693a2e4142b8f07ecb01cb8340" @@ -24609,7 +24631,7 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs-parser@^10.1.0: +yargs-parser@10.x, yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== From 9d6ee23850f1ec9ffb3d61bdf795282dd587f643 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 8 Mar 2019 08:25:05 +0000 Subject: [PATCH 16/56] chore(NA): remove wrong dep --- package.json | 1 - yarn.lock | 18 +----------------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/package.json b/package.json index 8d4fe7045f840d..7cd79daf8d4fc1 100644 --- a/package.json +++ b/package.json @@ -399,7 +399,6 @@ "supertest-as-promised": "^4.0.2", "tree-kill": "^1.1.0", "ts-jest": "^24.0.0", - "tsconfig-paths": "^3.8.0", "tslint": "^5.11.0", "tslint-config-prettier": "^1.15.0", "tslint-microsoft-contrib": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index b3ebde6855ef2f..ad6464f8216bbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2010,11 +2010,6 @@ resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" integrity sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw== -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - "@types/json5@^0.0.30": version "0.0.30" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.30.tgz#44cb52f32a809734ca562e685c6473b5754a7818" @@ -7346,7 +7341,7 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@2.2.1, deepmerge@^2.0.1: +deepmerge@2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== @@ -22284,17 +22279,6 @@ ts-log@2.1.3: resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.3.tgz#9e30aca1baffe7693a2e4142b8f07ecb01cb8340" integrity sha512-VIk9+hzE80UjhJcSANst8LGRBpfNh32y9d3LVDMtEqcEb1x0hB71IO0aObNcLJ5VpK5tKeF9uI4pwEco03SkwA== -tsconfig-paths@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.8.0.tgz#4e34202d5b41958f269cf56b01ed95b853d59f72" - integrity sha512-zZEYFo4sjORK8W58ENkRn9s+HmQFkkwydDG7My5s/fnfr2YYCaiyXe/HBUcIgU8epEKOXwiahOO+KZYjiXlWyQ== - dependencies: - "@types/json5" "^0.0.29" - deepmerge "^2.0.1" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - tslib@1.9.3, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.2, tslib@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" From 47468e8a01a4392b3556c8ce0d4b7ee7ac9607e5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 8 Mar 2019 08:27:09 +0000 Subject: [PATCH 17/56] chore(NA): fix tsconfig --- tsconfig.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 930ef30b19244f..0f4454606682cf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -56,10 +56,7 @@ "jest", "react", "@kbn/test/types/expect.js" - ], - // Disallow features that require cross-file information for emit. - // TODO: Maybe is more secure to just enable this - "isolatedModules": false + ] }, "include": [ "kibana.d.ts", From bd02df21807cb8f173b2ed9d6f64e8357c71eba5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 8 Mar 2019 16:14:28 +0000 Subject: [PATCH 18/56] chore(NA): skip babel for ts-jest. --- src/dev/jest/ts_transform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dev/jest/ts_transform.ts b/src/dev/jest/ts_transform.ts index 2213a96c7c1586..986c3930aec622 100644 --- a/src/dev/jest/ts_transform.ts +++ b/src/dev/jest/ts_transform.ts @@ -42,7 +42,7 @@ function extendJestConfig(jestConfig: jest.ProjectConfig, filePath: string) { globals: { ...(jestConfig.globals || {}), 'ts-jest': { - babelConfig: true, + babelConfig: false, tsConfig, }, }, From cdc09b7e432293e43b852ffa08219d5787822fa5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 8 Mar 2019 18:42:40 +0000 Subject: [PATCH 19/56] chore(NA): selectively apply the plugin to strip off namespace from ts files. --- packages/kbn-babel-preset/common_preset.js | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index 98f04b4d76a8ea..35b57eed7ba55d 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -28,7 +28,6 @@ module.exports = { require.resolve('@babel/plugin-proposal-async-generator-functions'), require.resolve('@babel/plugin-proposal-export-default-from'), require.resolve('@babel/plugin-proposal-object-rest-spread'), - // require.resolve('@babel/plugin-transform-async-to-generator'), require.resolve('@babel/plugin-transform-modules-commonjs'), // the class properties proposal was merged with the private fields proposal @@ -38,14 +37,20 @@ module.exports = { // // See https://github.com/babel/proposals/issues/12 for progress require.resolve('@babel/plugin-proposal-class-properties'), - - // Babel 7 don't support the namespace feature on typescript code. - // With namespaces only used for type declarations, we can securely - // strip them off for babel - // - // See https://github.com/babel/babel/issues/8244#issuecomment-466548733 - // TODO: we should only apply this to the autogenerated file - // on x-pack infra plugin which uses namespaces - require.resolve('babel-plugin-typescript-strip-namespaces'), ], + overrides: [ + { + // Babel 7 don't support the namespace feature on typescript code. + // With namespaces only used for type declarations, we can securely + // strip them off for babel on x-pack infra plugin + // + // See https://github.com/babel/babel/issues/8244#issuecomment-466548733 + test: /x-pack[\/\\]plugins[\/\\]infra[\/\\].*[\/\\]graphql/, + plugins: [ + [ + require.resolve('babel-plugin-typescript-strip-namespaces'), + ], + ] + } + ] }; From bf633c6cd5ed7072a95c14be20e4559e2685c1ff Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 8 Mar 2019 18:59:09 +0000 Subject: [PATCH 20/56] chore(NA): remove not needed changes from ts tests --- src/core/public/ui_settings/ui_settings_service.test.ts | 7 +++---- .../kibana/public/visualize/wizard/new_vis_modal.test.tsx | 2 +- .../plugins/xpack_main/server/lib/file_integrity.test.ts | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/core/public/ui_settings/ui_settings_service.test.ts b/src/core/public/ui_settings/ui_settings_service.test.ts index f60b27fe00d9ea..b21fa4a4d144ac 100644 --- a/src/core/public/ui_settings/ui_settings_service.test.ts +++ b/src/core/public/ui_settings/ui_settings_service.test.ts @@ -25,18 +25,17 @@ function mockClass( const MockClass = jest.fn(function(this: any, ...args: any[]) { setup(this, args); }); - const mockClassName = Class.name; // define the mock name which is used in some snapshots - MockClass.mockName(`Mock${mockClassName}`); + MockClass.mockName(`Mock${Class.name}`); // define the class name for the MockClass which is used in other snapshots Object.defineProperty(MockClass, 'name', { - value: `Mock${mockClassName}`, + value: `Mock${Class.name}`, }); jest.mock(module, () => ({ - [mockClassName]: MockClass, + [Class.name]: MockClass, })); return MockClass; diff --git a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx index fc6091f03fa95a..dd357d70f8a0ac 100644 --- a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx +++ b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx @@ -22,7 +22,7 @@ import { mountWithIntl } from 'test_utils/enzyme_helpers'; const settingsGet = jest.fn(); -jest.doMock('ui/chrome', () => ({ +jest.mock('ui/chrome', () => ({ getUiSettingsClient: () => ({ get: settingsGet, }), diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts index acc5e4b8fb4bdf..5e554cd77d849e 100644 --- a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts +++ b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts @@ -6,7 +6,7 @@ import { Readable } from 'stream'; -jest.doMock('fs', () => ({ +jest.mock('fs', () => ({ createReadStream(filepath: string): Readable { if (filepath === 'ERROR') { throw new Error('MOCK ERROR - Invalid Path'); From f919236ed8f868d855d26aae9bd62b1b6409d92e Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 02:13:10 +0000 Subject: [PATCH 21/56] chore(NA): removed ts-jest dependency. chore(NA): migrate ts tests on x-pack to use babel-jest with the new pattern. --- package.json | 1 - .../fatal_errors_screen.test.tsx.snap | 3 +- .../__snapshots__/legacy_service.test.ts.snap | 2 + src/dev/jest/config.js | 8 +- src/dev/jest/ts_transform.js | 21 ------ src/dev/jest/ts_transform.ts | 74 ------------------- .../data/__snapshots__/data_view.test.js.snap | 2 + .../language_switcher.test.tsx.snap | 8 +- .../suggestions_component.test.tsx.snap | 8 +- .../url_panel_content.test.js.snap | 16 +--- x-pack/dev-tools/jest/create_jest_config.js | 3 +- .../DiscoverLinks.integration.test.tsx | 2 - .../report_info_button.test.mocks.ts.tsx | 8 ++ .../components/report_info_button.test.tsx | 3 +- .../privilege_callout_warning.test.tsx.snap | 8 +- .../space_aware_privilege_form.test.tsx.snap | 7 +- .../__snapshots__/space_avatar.test.tsx.snap | 4 +- .../advanced_settings_title.test.tsx.snap | 2 +- .../space_identifier.test.tsx.snap | 3 +- .../spaces_grid_pages.test.tsx.snap | 14 ++-- .../nav_control_popover.test.tsx.snap | 4 +- .../__snapshots__/checkup_tab.test.tsx.snap | 4 +- .../checklist_step.test.tsx.snap | 8 +- .../__snapshots__/warning_step.test.tsx.snap | 8 +- .../reindex/flyout/progress.test.tsx | 4 +- .../reindex/polling_service.test.mocks.ts | 24 ++++++ .../reindex/polling_service.test.ts | 20 +---- .../__snapshots__/snapshot.test.tsx.snap | 2 +- .../__snapshots__/empty_state.test.tsx.snap | 24 +++--- .../server/lib/file_integrity.test.mocks.ts | 28 +++++++ .../server/lib/file_integrity.test.ts | 23 +----- x-pack/test_utils/jest/config.js | 5 -- yarn.lock | 70 ++++++------------ 33 files changed, 144 insertions(+), 277 deletions(-) delete mode 100644 src/dev/jest/ts_transform.js delete mode 100644 src/dev/jest/ts_transform.ts create mode 100644 x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts.tsx create mode 100644 x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.mocks.ts create mode 100644 x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts diff --git a/package.json b/package.json index 3ab349912d26df..47854374857e0b 100644 --- a/package.json +++ b/package.json @@ -401,7 +401,6 @@ "supertest": "^3.1.0", "supertest-as-promised": "^4.0.2", "tree-kill": "^1.1.0", - "ts-jest": "^24.0.0", "tslint": "^5.11.0", "tslint-config-prettier": "^1.15.0", "tslint-microsoft-contrib": "^6.0.0", diff --git a/src/core/public/fatal_errors/__snapshots__/fatal_errors_screen.test.tsx.snap b/src/core/public/fatal_errors/__snapshots__/fatal_errors_screen.test.tsx.snap index 531ce175cfd611..2b4066f4d91236 100644 --- a/src/core/public/fatal_errors/__snapshots__/fatal_errors_screen.test.tsx.snap +++ b/src/core/public/fatal_errors/__snapshots__/fatal_errors_screen.test.tsx.snap @@ -52,8 +52,7 @@ exports[`rendering render matches snapshot 1`] = ` body={

diff --git a/src/core/server/legacy/__snapshots__/legacy_service.test.ts.snap b/src/core/server/legacy/__snapshots__/legacy_service.test.ts.snap index 06fd32f2dfa9f6..dd65e068d22a76 100644 --- a/src/core/server/legacy/__snapshots__/legacy_service.test.ts.snap +++ b/src/core/server/legacy/__snapshots__/legacy_service.test.ts.snap @@ -28,6 +28,7 @@ Array [ "valueInBytes": 1073741824, }, }, + "httpsAgent": undefined, "log": Object { "context": Array [ "server", @@ -52,6 +53,7 @@ Array [ "trace": [MockFunction], "warn": [MockFunction], }, + "server": undefined, }, ], ] diff --git a/src/dev/jest/config.js b/src/dev/jest/config.js index baf5cd0393a405..bae765d5129610 100644 --- a/src/dev/jest/config.js +++ b/src/dev/jest/config.js @@ -58,11 +58,6 @@ export default { coverageReporters: [ 'html', ], - globals: { - 'ts-jest': { - skipBabel: true, - }, - }, moduleFileExtensions: [ 'js', 'json', @@ -82,8 +77,7 @@ export default { 'integration_tests/' ], transform: { - '^.+\\.jsx?$': '/src/dev/jest/babel_transform.js', - '^.+\\.tsx?$': '/src/dev/jest/ts_transform.js', + '^.+\\.(jsx?|tsx?)$': '/src/dev/jest/babel_transform.js', '^.+\\.txt?$': 'jest-raw-loader', '^.+\\.html?$': 'jest-raw-loader', }, diff --git a/src/dev/jest/ts_transform.js b/src/dev/jest/ts_transform.js deleted file mode 100644 index f097ed2f8076ae..00000000000000 --- a/src/dev/jest/ts_transform.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -require('../../setup_node_env'); -module.exports = require('./ts_transform.ts'); diff --git a/src/dev/jest/ts_transform.ts b/src/dev/jest/ts_transform.ts deleted file mode 100644 index 986c3930aec622..00000000000000 --- a/src/dev/jest/ts_transform.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -// @ts-ignore -import { getCacheKey, process } from 'ts-jest'; - -import { getTsProjectForAbsolutePath } from '../typescript'; - -const DEFAULT_TS_CONFIG_PATH = require.resolve('../../../tsconfig.json'); -const DEFAULT_BROWSER_TS_CONFIG_PATH = require.resolve('../../../tsconfig.browser.json'); - -function extendJestConfigJSON(jestConfigJSON: string, filePath: string) { - const jestConfig = JSON.parse(jestConfigJSON) as jest.ProjectConfig; - return JSON.stringify(extendJestConfig(jestConfig, filePath)); -} - -function extendJestConfig(jestConfig: jest.ProjectConfig, filePath: string) { - let tsConfig = getTsProjectForAbsolutePath(filePath).tsConfigPath; - - // swap ts config file for jest tests - if (tsConfig === DEFAULT_BROWSER_TS_CONFIG_PATH) { - tsConfig = DEFAULT_TS_CONFIG_PATH; - } - - return { - ...jestConfig, - globals: { - ...(jestConfig.globals || {}), - 'ts-jest': { - babelConfig: false, - tsConfig, - }, - }, - }; -} - -module.exports = { - canInstrument: true, - - process( - src: string, - filePath: jest.Path, - jestConfig: jest.ProjectConfig, - transformOptions: jest.TransformOptions - ) { - const extendedConfig = extendJestConfig(jestConfig, filePath); - return process(src, filePath, extendedConfig, transformOptions); - }, - - getCacheKey( - src: string, - filePath: string, - jestConfigJSON: string, - transformOptions: jest.TransformOptions - ) { - const extendedConfigJSON = extendJestConfigJSON(jestConfigJSON, filePath as string); - return getCacheKey!(src, filePath, extendedConfigJSON, transformOptions); - }, -}; diff --git a/src/legacy/core_plugins/inspector_views/public/data/__snapshots__/data_view.test.js.snap b/src/legacy/core_plugins/inspector_views/public/data/__snapshots__/data_view.test.js.snap index 08615a90c9aa7e..16fc4bec61c68c 100644 --- a/src/legacy/core_plugins/inspector_views/public/data/__snapshots__/data_view.test.js.snap +++ b/src/legacy/core_plugins/inspector_views/public/data/__snapshots__/data_view.test.js.snap @@ -222,6 +222,8 @@ exports[`Inspector Data View component should render loading state 1`] = ` }, "_eventsCount": 1, "_maxListeners": undefined, + "tabular": undefined, + "tabularOptions": undefined, }, } } diff --git a/src/legacy/ui/public/query_bar/components/__snapshots__/language_switcher.test.tsx.snap b/src/legacy/ui/public/query_bar/components/__snapshots__/language_switcher.test.tsx.snap index c58cab79fdc4e4..0f078899987683 100644 --- a/src/legacy/ui/public/query_bar/components/__snapshots__/language_switcher.test.tsx.snap +++ b/src/legacy/ui/public/query_bar/components/__snapshots__/language_switcher.test.tsx.snap @@ -47,9 +47,7 @@ exports[`LanguageSwitcher should toggle off if language is lucene 1`] = ` >

- - - - @@ -247,8 +243,7 @@ exports[`should enable saved object export option when objectId is provided 1`] aria-label="Info" content={ diff --git a/x-pack/dev-tools/jest/create_jest_config.js b/x-pack/dev-tools/jest/create_jest_config.js index 3c0f693795624e..aab74301c76318 100644 --- a/x-pack/dev-tools/jest/create_jest_config.js +++ b/x-pack/dev-tools/jest/create_jest_config.js @@ -37,8 +37,7 @@ export function createJestConfig({ '**/*.test.{js,ts,tsx}' ], transform: { - '^.+\\.jsx?$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, - '^.+\\.tsx?$': `${kibanaDirectory}/src/dev/jest/ts_transform.js`, + '^.+\\.(jsx?|tsx?)$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, }, transformIgnorePatterns: [ '[/\\\\]node_modules[/\\\\].+\\.js$' diff --git a/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/__test__/DiscoverLinks.integration.test.tsx b/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/__test__/DiscoverLinks.integration.test.tsx index 430d094380dc49..bd47eb7d479483 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/__test__/DiscoverLinks.integration.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/__test__/DiscoverLinks.integration.test.tsx @@ -15,8 +15,6 @@ import { DiscoverErrorLink } from '../DiscoverErrorLink'; import { DiscoverSpanLink } from '../DiscoverSpanLink'; import { DiscoverTransactionLink } from '../DiscoverTransactionLink'; -// NOTE: jest.mock() is broken in TS test files (b/c of ts-jest, I think) -// but using jest's "spies can be stubbed" feature, this works: jest .spyOn(savedObjects, 'getAPMIndexPattern') .mockReturnValue( diff --git a/x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts.tsx b/x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts.tsx new file mode 100644 index 00000000000000..7f1392cb2a49a3 --- /dev/null +++ b/x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +export const mockJobQueueClient = { getInfo: jest.fn() }; +jest.mock('../lib/job_queue_client', () => ({ jobQueueClient: mockJobQueueClient })); diff --git a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx index 93ceed0f64a0e2..ebf9c3dacfe161 100644 --- a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx +++ b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx @@ -4,8 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -const mockJobQueueClient = { getInfo: jest.fn() }; -jest.mock('../lib/job_queue_client', () => ({ jobQueueClient: mockJobQueueClient })); +import { mockJobQueueClient } from './report_info_button.test.mocks.ts'; import React from 'react'; import { mountWithIntl } from 'test_utils/enzyme_helpers'; diff --git a/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap b/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap index 5c38e3f28c4d06..19dacf984f5dce 100644 --- a/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap +++ b/x-pack/plugins/security/public/views/management/edit_role/components/privileges/kibana/__snapshots__/privilege_callout_warning.test.tsx.snap @@ -179,9 +179,7 @@ exports[`PrivilegeCalloutWarning renders without crashing 1`] = ` >

- grants full access to all - spaces. To customize privileges for individual spaces, the minimum privilege must be - either + grants full access to all spaces. To customize privileges for individual spaces, the minimum privilege must be either renders without crashing 1`] = ` >

with user profile disabling "manageSpaces" re

- + `; exports[`renders with a space name entirely made of whitespace 1`] = ` diff --git a/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap b/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap index 49cb9fedf69b59..e9582243766326 100644 --- a/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap +++ b/x-pack/plugins/spaces/public/views/management/components/advanced_settings_title/__snapshots__/advanced_settings_title.test.tsx.snap @@ -14,7 +14,7 @@ exports[`AdvancedSettingsTitle renders as expected 1`] = ` component="div" grow={false} > - - - , - , + - , - , + - , + , ] `; diff --git a/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap b/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap index 00c49341ce0e7e..265dcc349e1b98 100644 --- a/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap +++ b/x-pack/plugins/spaces/public/views/nav_control/__snapshots__/nav_control_popover.test.tsx.snap @@ -6,7 +6,7 @@ exports[`NavControlPopover renders without crashing 1`] = ` button={ - - - diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap index 28dfa6b130b91c..062419e2a893f8 100644 --- a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap +++ b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap @@ -17,16 +17,14 @@ exports[`ChecklistFlyout renders 1`] = ` >

@@ -45,7 +43,7 @@ exports[`ChecklistFlyout renders 1`] = ` /> - { ); expect(wrapper).toMatchInlineSnapshot(` - { ); expect(wrapper).toMatchInlineSnapshot(` - ({ + create: jest.fn().mockReturnValue(mockClient), +})); diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts index f15927c0d6a3b0..9f47f51bc8cde6 100644 --- a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts +++ b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts @@ -4,25 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ReindexStatus, ReindexStep } from '../../../../../../common/types'; - -const mockClient = { - post: jest.fn().mockResolvedValue({ - lastCompletedStep: ReindexStep.created, - status: ReindexStatus.inProgress, - }), - get: jest.fn().mockResolvedValue({ - status: 200, - data: { - warnings: [], - reindexOp: null, - }, - }), -}; -jest.mock('axios', () => ({ - create: jest.fn().mockReturnValue(mockClient), -})); +import { mockClient } from './polling_service.test.mocks'; +import { ReindexStatus, ReindexStep } from '../../../../../../common/types'; import { ReindexPollingService } from './polling_service'; describe('ReindexPollingService', () => { diff --git a/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap b/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap index e3aad97f6b7505..2cb7bcd86900d5 100644 --- a/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/functional/__tests__/__snapshots__/snapshot.test.tsx.snap @@ -132,7 +132,7 @@ exports[`Snapshot component renders without errors 1`] = ` } } > - - + @@ -246,8 +246,8 @@ exports[`EmptyState component doesn't render child components when count is fals - - + + `; exports[`EmptyState component renders child components when count is truthy 1`] = ` @@ -265,7 +265,7 @@ exports[`EmptyState component renders child components when count is truthy 1`] `; exports[`EmptyState component renders message while loading 1`] = ` - - + - - + + `; exports[`EmptyState component renders the message when an error occurs 1`] = ` - - - - + + `; diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts new file mode 100644 index 00000000000000..36f76516e188be --- /dev/null +++ b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Readable } from 'stream'; + +jest.doMock('fs', () => ({ + createReadStream(filepath: string): Readable { + if (filepath === 'ERROR') { + throw new Error('MOCK ERROR - Invalid Path'); + } + const readableStream = new Readable(); + const streamData = filepath.split(''); + let cursor = 0; + + readableStream._read = function(size) { + const current = streamData[cursor++]; + if (typeof current === 'undefined') { + return this.push(null); + } + this.push(current); + }; + + return readableStream; + }, +})); diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts index 5e554cd77d849e..668b0d0c21088b 100644 --- a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts +++ b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts @@ -4,28 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { Readable } from 'stream'; - -jest.mock('fs', () => ({ - createReadStream(filepath: string): Readable { - if (filepath === 'ERROR') { - throw new Error('MOCK ERROR - Invalid Path'); - } - const readableStream = new Readable(); - const streamData = filepath.split(''); - let cursor = 0; - - readableStream._read = function(size) { - const current = streamData[cursor++]; - if (typeof current === 'undefined') { - return this.push(null); - } - this.push(current); - }; - - return readableStream; - }, -})); +import './file_integrity.test.mocks'; import { getIntegrityHash, getIntegrityHashes } from './file_integrity'; diff --git a/x-pack/test_utils/jest/config.js b/x-pack/test_utils/jest/config.js index 8f0af052be526e..a5a1010f8d27b1 100644 --- a/x-pack/test_utils/jest/config.js +++ b/x-pack/test_utils/jest/config.js @@ -31,11 +31,6 @@ export default { coverageReporters: [ 'html', ], - globals: { - 'ts-jest': { - skipBabel: true, - }, - }, moduleFileExtensions: [ 'js', 'json', diff --git a/yarn.lock b/yarn.lock index 3f515e030efb5f..152816c3b6b3e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4902,13 +4902,6 @@ browserslist@~1.4.0: dependencies: caniuse-db "^1.0.30000539" -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -4959,7 +4952,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@1.x, buffer-from@^1.0.0: +buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -9321,7 +9314,7 @@ fast-glob@^2.0.2: merge2 "1.2.1" micromatch "3.1.5" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= @@ -13782,13 +13775,6 @@ json3@3.3.2, json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= -json5@2.x, json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -13801,6 +13787,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -15079,7 +15072,7 @@ make-dir@^1.0.0, make-dir@^1.3.0: dependencies: pify "^3.0.0" -make-error@1.x, make-error@^1.3.5: +make-error@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== @@ -15654,7 +15647,7 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -19766,13 +19759,6 @@ resolve@1.1.7, resolve@1.1.x, resolve@~1.1.0, resolve@~1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - dependencies: - path-parse "^1.0.6" - resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" @@ -19794,6 +19780,13 @@ resolve@^1.5.0, resolve@^1.7.1: dependencies: path-parse "^1.0.5" +resolve@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -20295,16 +20288,16 @@ semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@^5.5, semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== +semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -22317,21 +22310,6 @@ trunc-text@1.0.2: resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.2.tgz#b582bb3ddea9c9adc25017d737c48ebdd2157406" integrity sha1-tYK7Pd6pya3CUBfXN8SOvdIVdAY= -ts-jest@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.0.tgz#3f26bf2ec1fa584863a5a9c29bd8717d549efbf6" - integrity sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw== - dependencies: - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - json5 "2.x" - make-error "1.x" - mkdirp "0.x" - resolve "1.x" - semver "^5.5" - yargs-parser "10.x" - ts-log@2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.1.3.tgz#9e30aca1baffe7693a2e4142b8f07ecb01cb8340" @@ -24673,7 +24651,7 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs-parser@10.x, yargs-parser@^10.1.0: +yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== From aabbf135bc9e1973d4bf97df85c95a55eb4f16bc Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 03:57:20 +0000 Subject: [PATCH 22/56] chore(NA): migrate kibana default distribution typescript tests to run with babel-jest and the new test mock pattern. --- src/core/public/core_system.mock.ts | 134 ++++++++++++++++++ src/core/public/core_system.test.ts | 130 +++-------------- .../fatal_errors/fatal_errors_service.mock.ts | 25 ++++ .../fatal_errors/fatal_errors_service.test.ts | 7 +- .../toasts/toasts_service.mock.ts | 25 ++++ .../toasts/toasts_service.test.tsx | 7 +- .../ui_settings/ui_settings_service.mock.ts | 57 ++++++++ .../ui_settings/ui_settings_service.test.ts | 39 +---- src/core/server/config/config_service.mock.ts | 3 + src/core/server/config/config_service.test.ts | 3 +- src/core/server/config/env.mock.ts | 33 +++++ src/core/server/config/env.test.ts | 15 +- .../server/config/raw_config_service.mock.ts | 24 ++++ .../server/config/raw_config_service.test.ts | 6 +- .../elasticsearch/cluster_client.mock.ts | 35 +++++ .../elasticsearch/cluster_client.test.ts | 21 +-- .../elasticsearch_client_config.mock.ts | 21 +++ .../elasticsearch_client_config.test.ts | 7 +- .../elasticsearch_service.mock.ts | 4 + .../elasticsearch_service.test.ts | 3 +- src/core/server/http/http_service.mock.ts | 7 + src/core/server/http/http_service.test.ts | 6 +- src/core/server/index.mock.ts | 40 ++++++ src/core/server/index.test.ts | 28 +--- .../logging/appenders/appenders.mock.ts | 29 ++++ .../logging/appenders/appenders.test.ts | 11 +- .../appenders/file/file_appender.mock.ts | 32 +++++ .../appenders/file/file_appender.test.ts | 14 +- .../discovery/plugin_discovery.mock.ts | 30 ++++ .../discovery/plugin_discovery.test.ts | 12 +- .../discovery/plugin_manifest_parser.mock.ts | 22 +++ .../discovery/plugin_manifest_parser.test.ts | 4 +- .../server/plugins/plugins_service.mock.ts | 26 ++++ .../server/plugins/plugins_service.test.ts | 8 +- .../server/plugins/plugins_system.mock.ts | 23 +++ .../server/plugins/plugins_system.test.ts | 8 +- src/core/server/root/index.mock.ts | 33 +++++ src/core/server/root/index.test.ts | 15 +- src/dev/i18n/integrate_locale_files.mock.ts | 27 ++++ src/dev/i18n/integrate_locale_files.test.ts | 9 +- .../__snapshots__/new_vis_modal.test.tsx.snap | 29 ++-- .../visualize/wizard/new_vis_modal.mock.ts | 26 ++++ .../visualize/wizard/new_vis_modal.test.tsx | 8 +- .../query_bar/components/query_bar.mock.ts | 70 +++++++++ .../query_bar/components/query_bar.test.tsx | 57 +------- .../public/utils/subscribe_with_scope.mock.ts | 23 +++ .../public/utils/subscribe_with_scope.test.ts | 6 +- tsconfig.json | 3 - ...ocks.ts.tsx => report_info_button.mock.ts} | 0 .../components/report_info_button.test.tsx | 2 +- ....test.mocks.ts => polling_service.mock.ts} | 0 .../reindex/polling_service.test.ts | 2 +- ...y.test.mocks.ts => file_integrity.mock.ts} | 0 .../server/lib/file_integrity.test.ts | 2 +- 54 files changed, 822 insertions(+), 389 deletions(-) create mode 100644 src/core/public/core_system.mock.ts create mode 100644 src/core/public/fatal_errors/fatal_errors_service.mock.ts create mode 100644 src/core/public/notifications/toasts/toasts_service.mock.ts create mode 100644 src/core/public/ui_settings/ui_settings_service.mock.ts create mode 100644 src/core/server/config/env.mock.ts create mode 100644 src/core/server/config/raw_config_service.mock.ts create mode 100644 src/core/server/elasticsearch/cluster_client.mock.ts create mode 100644 src/core/server/elasticsearch/elasticsearch_client_config.mock.ts create mode 100644 src/core/server/index.mock.ts create mode 100644 src/core/server/logging/appenders/appenders.mock.ts create mode 100644 src/core/server/logging/appenders/file/file_appender.mock.ts create mode 100644 src/core/server/plugins/discovery/plugin_discovery.mock.ts create mode 100644 src/core/server/plugins/discovery/plugin_manifest_parser.mock.ts create mode 100644 src/core/server/plugins/plugins_service.mock.ts create mode 100644 src/core/server/plugins/plugins_system.mock.ts create mode 100644 src/core/server/root/index.mock.ts create mode 100644 src/dev/i18n/integrate_locale_files.mock.ts create mode 100644 src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.mock.ts create mode 100644 src/legacy/ui/public/query_bar/components/query_bar.mock.ts create mode 100644 src/legacy/ui/public/utils/subscribe_with_scope.mock.ts rename x-pack/plugins/reporting/public/components/{report_info_button.test.mocks.ts.tsx => report_info_button.mock.ts} (100%) rename x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/{polling_service.test.mocks.ts => polling_service.mock.ts} (100%) rename x-pack/plugins/xpack_main/server/lib/{file_integrity.test.mocks.ts => file_integrity.mock.ts} (100%) diff --git a/src/core/public/core_system.mock.ts b/src/core/public/core_system.mock.ts new file mode 100644 index 00000000000000..715ecb32bff15e --- /dev/null +++ b/src/core/public/core_system.mock.ts @@ -0,0 +1,134 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { BasePathService } from './base_path'; +import { ChromeService } from './chrome'; +import { FatalErrorsService } from './fatal_errors'; +import { HttpService } from './http'; +import { I18nService } from './i18n'; +import { InjectedMetadataService } from './injected_metadata'; +import { LegacyPlatformService } from './legacy'; +import { NotificationsService } from './notifications'; +import { UiSettingsService } from './ui_settings'; + +export const MockLegacyPlatformService = jest.fn( + function _MockLegacyPlatformService(this: any) { + this.start = jest.fn(); + this.stop = jest.fn(); + return this; + } +); + +jest.mock('./legacy', () => ({ + LegacyPlatformService: MockLegacyPlatformService, +})); + +export const mockInjectedMetadataStart = {}; +export const MockInjectedMetadataService = jest.fn( + function _MockInjectedMetadataService(this: any) { + this.start = jest.fn().mockReturnValue(mockInjectedMetadataStart); + return this; + } +); +jest.mock('./injected_metadata', () => ({ + InjectedMetadataService: MockInjectedMetadataService, +})); + +export const mockFatalErrorsStart = {}; +export const MockFatalErrorsService = jest.fn( + function _MockFatalErrorsService(this: any) { + this.start = jest.fn().mockReturnValue(mockFatalErrorsStart); + this.add = jest.fn(); + return this; + } +); +jest.mock('./fatal_errors', () => ({ + FatalErrorsService: MockFatalErrorsService, +})); + +export const mockI18nStart = {}; +export const MockI18nService = jest.fn(function _MockI18nService(this: any) { + this.start = jest.fn().mockReturnValue(mockI18nStart); + this.stop = jest.fn(); + return this; +}); +jest.mock('./i18n', () => ({ + I18nService: MockI18nService, +})); + +export const mockNotificationStart = {}; +export const MockNotificationsService = jest.fn( + function _MockNotificationsService(this: any) { + this.start = jest.fn().mockReturnValue(mockNotificationStart); + this.add = jest.fn(); + this.stop = jest.fn(); + return this; + } +); + +jest.mock('./notifications', () => ({ + NotificationsService: MockNotificationsService, +})); + +export const mockHttp = {}; +export const MockHttpService = jest.fn(function _MockNotificationsService( + this: any +) { + this.start = jest.fn().mockReturnValue(mockHttp); + this.stop = jest.fn(); + return this; +}); +jest.mock('./http', () => ({ + HttpService: MockHttpService, +})); + +export const mockBasePathStart = {}; +export const MockBasePathService = jest.fn(function _MockNotificationsService( + this: any +) { + this.start = jest.fn().mockReturnValue(mockBasePathStart); + return this; +}); +jest.mock('./base_path', () => ({ + BasePathService: MockBasePathService, +})); + +const mockUiSettings = {}; +export const MockUiSettingsService = jest.fn( + function _MockNotificationsService(this: any) { + this.start = jest.fn().mockReturnValue(mockUiSettings); + this.stop = jest.fn(); + return this; + } +); +jest.mock('./ui_settings', () => ({ + UiSettingsService: MockUiSettingsService, +})); + +const mockChromeStart = {}; +export const MockChromeService = jest.fn(function _MockNotificationsService( + this: any +) { + this.start = jest.fn().mockReturnValue(mockChromeStart); + this.stop = jest.fn(); + return this; +}); +jest.mock('./chrome', () => ({ + ChromeService: MockChromeService, +})); diff --git a/src/core/public/core_system.test.ts b/src/core/public/core_system.test.ts index ffda17e340e110..a381632529b353 100644 --- a/src/core/public/core_system.test.ts +++ b/src/core/public/core_system.test.ts @@ -17,119 +17,23 @@ * under the License. */ -import { BasePathService } from './base_path'; -import { ChromeService } from './chrome'; -import { FatalErrorsService } from './fatal_errors'; -import { HttpService } from './http'; -import { I18nService } from './i18n'; -import { InjectedMetadataService } from './injected_metadata'; -import { LegacyPlatformService } from './legacy'; -import { NotificationsService } from './notifications'; -import { UiSettingsService } from './ui_settings'; - -const MockLegacyPlatformService = jest.fn( - function _MockLegacyPlatformService(this: any) { - this.start = jest.fn(); - this.stop = jest.fn(); - return this; - } -); - -jest.mock('./legacy', () => ({ - LegacyPlatformService: MockLegacyPlatformService, -})); - -const mockInjectedMetadataStart = {}; -const MockInjectedMetadataService = jest.fn( - function _MockInjectedMetadataService(this: any) { - this.start = jest.fn().mockReturnValue(mockInjectedMetadataStart); - return this; - } -); -jest.mock('./injected_metadata', () => ({ - InjectedMetadataService: MockInjectedMetadataService, -})); - -const mockFatalErrorsStart = {}; -const MockFatalErrorsService = jest.fn(function _MockFatalErrorsService( - this: any -) { - this.start = jest.fn().mockReturnValue(mockFatalErrorsStart); - this.add = jest.fn(); - return this; -}); -jest.mock('./fatal_errors', () => ({ - FatalErrorsService: MockFatalErrorsService, -})); - -const mockI18nStart = {}; -const MockI18nService = jest.fn(function _MockI18nService(this: any) { - this.start = jest.fn().mockReturnValue(mockI18nStart); - this.stop = jest.fn(); - return this; -}); -jest.mock('./i18n', () => ({ - I18nService: MockI18nService, -})); - -const mockNotificationStart = {}; -const MockNotificationsService = jest.fn( - function _MockNotificationsService(this: any) { - this.start = jest.fn().mockReturnValue(mockNotificationStart); - this.add = jest.fn(); - this.stop = jest.fn(); - return this; - } -); - -jest.mock('./notifications', () => ({ - NotificationsService: MockNotificationsService, -})); - -const mockHttp = {}; -const MockHttpService = jest.fn(function _MockNotificationsService(this: any) { - this.start = jest.fn().mockReturnValue(mockHttp); - this.stop = jest.fn(); - return this; -}); -jest.mock('./http', () => ({ - HttpService: MockHttpService, -})); - -const mockBasePathStart = {}; -const MockBasePathService = jest.fn(function _MockNotificationsService( - this: any -) { - this.start = jest.fn().mockReturnValue(mockBasePathStart); - return this; -}); -jest.mock('./base_path', () => ({ - BasePathService: MockBasePathService, -})); - -const mockUiSettings = {}; -const MockUiSettingsService = jest.fn(function _MockNotificationsService( - this: any -) { - this.start = jest.fn().mockReturnValue(mockUiSettings); - this.stop = jest.fn(); - return this; -}); -jest.mock('./ui_settings', () => ({ - UiSettingsService: MockUiSettingsService, -})); - -const mockChromeStart = {}; -const MockChromeService = jest.fn(function _MockNotificationsService( - this: any -) { - this.start = jest.fn().mockReturnValue(mockChromeStart); - this.stop = jest.fn(); - return this; -}); -jest.mock('./chrome', () => ({ - ChromeService: MockChromeService, -})); +import { + MockBasePathService, + mockBasePathStart, + MockChromeService, + MockFatalErrorsService, + mockFatalErrorsStart, + mockHttp, + MockHttpService, + MockI18nService, + mockI18nStart, + MockInjectedMetadataService, + mockInjectedMetadataStart, + MockLegacyPlatformService, + MockNotificationsService, + mockNotificationStart, + MockUiSettingsService, +} from './core_system.mock'; import { CoreSystem } from './core_system'; jest.spyOn(CoreSystem.prototype, 'stop'); diff --git a/src/core/public/fatal_errors/fatal_errors_service.mock.ts b/src/core/public/fatal_errors/fatal_errors_service.mock.ts new file mode 100644 index 00000000000000..b998817a1bfcc3 --- /dev/null +++ b/src/core/public/fatal_errors/fatal_errors_service.mock.ts @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockRender = jest.fn(); +jest.mock('react-dom', () => { + return { + render: mockRender, + }; +}); diff --git a/src/core/public/fatal_errors/fatal_errors_service.test.ts b/src/core/public/fatal_errors/fatal_errors_service.test.ts index 23895c8ce85cd7..2008334c97ea8b 100644 --- a/src/core/public/fatal_errors/fatal_errors_service.test.ts +++ b/src/core/public/fatal_errors/fatal_errors_service.test.ts @@ -24,12 +24,7 @@ expect.addSnapshotSerializer({ print: () => `Rx.Observable`, }); -const mockRender = jest.fn(); -jest.mock('react-dom', () => { - return { - render: mockRender, - }; -}); +import { mockRender } from './fatal_errors_service.mock'; import { FatalErrorsService } from './fatal_errors_service'; diff --git a/src/core/public/notifications/toasts/toasts_service.mock.ts b/src/core/public/notifications/toasts/toasts_service.mock.ts new file mode 100644 index 00000000000000..90ea76c5515645 --- /dev/null +++ b/src/core/public/notifications/toasts/toasts_service.mock.ts @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockReactDomRender = jest.fn(); +export const mockReactDomUnmount = jest.fn(); +jest.mock('react-dom', () => ({ + render: mockReactDomRender, + unmountComponentAtNode: mockReactDomUnmount, +})); diff --git a/src/core/public/notifications/toasts/toasts_service.test.tsx b/src/core/public/notifications/toasts/toasts_service.test.tsx index f9ab322f07d30e..e3ebe05bf74de6 100644 --- a/src/core/public/notifications/toasts/toasts_service.test.tsx +++ b/src/core/public/notifications/toasts/toasts_service.test.tsx @@ -17,12 +17,7 @@ * under the License. */ -const mockReactDomRender = jest.fn(); -const mockReactDomUnmount = jest.fn(); -jest.mock('react-dom', () => ({ - render: mockReactDomRender, - unmountComponentAtNode: mockReactDomUnmount, -})); +import { mockReactDomRender, mockReactDomUnmount } from './toasts_service.mock'; import { ToastsService } from './toasts_service'; import { ToastsStart } from './toasts_start'; diff --git a/src/core/public/ui_settings/ui_settings_service.mock.ts b/src/core/public/ui_settings/ui_settings_service.mock.ts new file mode 100644 index 00000000000000..458a9efdea4694 --- /dev/null +++ b/src/core/public/ui_settings/ui_settings_service.mock.ts @@ -0,0 +1,57 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +function mockClass( + module: string, + Class: { new (...args: any[]): T }, + setup: (instance: any, args: any[]) => void +) { + const MockClass = jest.fn(function(this: any, ...args: any[]) { + setup(this, args); + }); + + // define the mock name which is used in some snapshots + MockClass.mockName(`Mock${Class.name}`); + + // define the class name for the MockClass which is used in other snapshots + Object.defineProperty(MockClass, 'name', { + value: `Mock${Class.name}`, + }); + + jest.doMock(module, () => ({ + [Class.name]: MockClass, + })); + + return MockClass; +} + +// Mock the UiSettingsApi class +import { UiSettingsApi } from './ui_settings_api'; +export const MockUiSettingsApi = mockClass('./ui_settings_api', UiSettingsApi, inst => { + inst.stop = jest.fn(); + inst.getLoadingCount$ = jest.fn().mockReturnValue({ + loadingCountObservable: true, + }); +}); + +// Mock the UiSettingsClient class +import { UiSettingsClient } from './ui_settings_client'; +export const MockUiSettingsClient = mockClass('./ui_settings_client', UiSettingsClient, inst => { + inst.stop = jest.fn(); +}); diff --git a/src/core/public/ui_settings/ui_settings_service.test.ts b/src/core/public/ui_settings/ui_settings_service.test.ts index b21fa4a4d144ac..a77096af7516ae 100644 --- a/src/core/public/ui_settings/ui_settings_service.test.ts +++ b/src/core/public/ui_settings/ui_settings_service.test.ts @@ -17,44 +17,7 @@ * under the License. */ -function mockClass( - module: string, - Class: { new (...args: any[]): T }, - setup: (instance: any, args: any[]) => void -) { - const MockClass = jest.fn(function(this: any, ...args: any[]) { - setup(this, args); - }); - - // define the mock name which is used in some snapshots - MockClass.mockName(`Mock${Class.name}`); - - // define the class name for the MockClass which is used in other snapshots - Object.defineProperty(MockClass, 'name', { - value: `Mock${Class.name}`, - }); - - jest.mock(module, () => ({ - [Class.name]: MockClass, - })); - - return MockClass; -} - -// Mock the UiSettingsApi class -import { UiSettingsApi } from './ui_settings_api'; -const MockUiSettingsApi = mockClass('./ui_settings_api', UiSettingsApi, inst => { - inst.stop = jest.fn(); - inst.getLoadingCount$ = jest.fn().mockReturnValue({ - loadingCountObservable: true, - }); -}); - -// Mock the UiSettingsClient class -import { UiSettingsClient } from './ui_settings_client'; -const MockUiSettingsClient = mockClass('./ui_settings_client', UiSettingsClient, inst => { - inst.stop = jest.fn(); -}); +import { MockUiSettingsApi, MockUiSettingsClient } from './ui_settings_service.mock'; // Load the service import { UiSettingsService } from './ui_settings_service'; diff --git a/src/core/server/config/config_service.mock.ts b/src/core/server/config/config_service.mock.ts index 30a9f8961a0ce0..dabe7a7810fff1 100644 --- a/src/core/server/config/config_service.mock.ts +++ b/src/core/server/config/config_service.mock.ts @@ -16,6 +16,9 @@ * specific language governing permissions and limitations * under the License. */ +export const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../../package.json', () => mockPackage); + import { BehaviorSubject } from 'rxjs'; import { ObjectToConfigAdapter } from './object_to_config_adapter'; diff --git a/src/core/server/config/config_service.test.ts b/src/core/server/config/config_service.test.ts index 7a10d4992e2c2a..447959a079814f 100644 --- a/src/core/server/config/config_service.test.ts +++ b/src/core/server/config/config_service.test.ts @@ -22,8 +22,7 @@ import { BehaviorSubject } from 'rxjs'; import { first } from 'rxjs/operators'; -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../../package.json', () => mockPackage); +import { mockPackage } from './config_service.mock'; import { schema, Type, TypeOf } from '@kbn/config-schema'; diff --git a/src/core/server/config/env.mock.ts b/src/core/server/config/env.mock.ts new file mode 100644 index 00000000000000..be65aa17270765 --- /dev/null +++ b/src/core/server/config/env.mock.ts @@ -0,0 +1,33 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +jest.mock('process', () => ({ + cwd() { + return '/test/cwd'; + }, +})); + +jest.mock('path', () => ({ + resolve(...pathSegments: string[]) { + return pathSegments.join('/'); + }, +})); + +export const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../../package.json', () => mockPackage); diff --git a/src/core/server/config/env.test.ts b/src/core/server/config/env.test.ts index 3c251b7339e49e..4bfb1bced1d082 100644 --- a/src/core/server/config/env.test.ts +++ b/src/core/server/config/env.test.ts @@ -17,20 +17,7 @@ * under the License. */ -jest.mock('process', () => ({ - cwd() { - return '/test/cwd'; - }, -})); - -jest.mock('path', () => ({ - resolve(...pathSegments: string[]) { - return pathSegments.join('/'); - }, -})); - -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../../package.json', () => mockPackage); +import { mockPackage } from './env.mock'; import { Env } from '.'; import { getEnvOptions } from './__mocks__/env'; diff --git a/src/core/server/config/raw_config_service.mock.ts b/src/core/server/config/raw_config_service.mock.ts new file mode 100644 index 00000000000000..be43b0f64e6583 --- /dev/null +++ b/src/core/server/config/raw_config_service.mock.ts @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockGetConfigFromFiles = jest.fn(); + +jest.mock('./read_config', () => ({ + getConfigFromFiles: mockGetConfigFromFiles, +})); diff --git a/src/core/server/config/raw_config_service.test.ts b/src/core/server/config/raw_config_service.test.ts index 0cd0dc45cd9392..87c541d75f77ef 100644 --- a/src/core/server/config/raw_config_service.test.ts +++ b/src/core/server/config/raw_config_service.test.ts @@ -17,11 +17,7 @@ * under the License. */ -const mockGetConfigFromFiles = jest.fn(); - -jest.mock('./read_config', () => ({ - getConfigFromFiles: mockGetConfigFromFiles, -})); +import { mockGetConfigFromFiles } from './raw_config_service.mock'; import { first } from 'rxjs/operators'; import { RawConfigService } from '.'; diff --git a/src/core/server/elasticsearch/cluster_client.mock.ts b/src/core/server/elasticsearch/cluster_client.mock.ts new file mode 100644 index 00000000000000..e725cb35066b58 --- /dev/null +++ b/src/core/server/elasticsearch/cluster_client.mock.ts @@ -0,0 +1,35 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const MockClient = jest.fn(); +jest.mock('elasticsearch', () => ({ + // Jest types don't include `requireActual` right now. + ...(jest as any).requireActual('elasticsearch'), + Client: MockClient, +})); + +export const MockScopedClusterClient = jest.fn(); +jest.mock('./scoped_cluster_client', () => ({ + ScopedClusterClient: MockScopedClusterClient, +})); + +export const mockParseElasticsearchClientConfig = jest.fn(); +jest.mock('./elasticsearch_client_config', () => ({ + parseElasticsearchClientConfig: mockParseElasticsearchClientConfig, +})); diff --git a/src/core/server/elasticsearch/cluster_client.test.ts b/src/core/server/elasticsearch/cluster_client.test.ts index da511c282981ef..459153d3ded7e6 100644 --- a/src/core/server/elasticsearch/cluster_client.test.ts +++ b/src/core/server/elasticsearch/cluster_client.test.ts @@ -19,22 +19,11 @@ import { ElasticsearchConfig } from './elasticsearch_config'; -const MockClient = jest.fn(); -jest.mock('elasticsearch', () => ({ - // Jest types don't include `requireActual` right now. - ...(jest as any).requireActual('elasticsearch'), - Client: MockClient, -})); - -const MockScopedClusterClient = jest.fn(); -jest.mock('./scoped_cluster_client', () => ({ - ScopedClusterClient: MockScopedClusterClient, -})); - -const mockParseElasticsearchClientConfig = jest.fn(); -jest.mock('./elasticsearch_client_config', () => ({ - parseElasticsearchClientConfig: mockParseElasticsearchClientConfig, -})); +import { + MockClient, + mockParseElasticsearchClientConfig, + MockScopedClusterClient, +} from './cluster_client.mock'; import { errors } from 'elasticsearch'; import { get } from 'lodash'; diff --git a/src/core/server/elasticsearch/elasticsearch_client_config.mock.ts b/src/core/server/elasticsearch/elasticsearch_client_config.mock.ts new file mode 100644 index 00000000000000..f6c6079822cb5e --- /dev/null +++ b/src/core/server/elasticsearch/elasticsearch_client_config.mock.ts @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockReadFileSync = jest.fn(); +jest.mock('fs', () => ({ readFileSync: mockReadFileSync })); diff --git a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts index f2eb30f736403b..306feedd8649ca 100644 --- a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts @@ -17,8 +17,7 @@ * under the License. */ -const mockReadFileSync = jest.fn(); -jest.mock('fs', () => ({ readFileSync: mockReadFileSync })); +import { mockReadFileSync } from './elasticsearch_client_config.mock'; import { duration } from 'moment'; import { loggingServiceMock } from '../logging/logging_service.mock'; @@ -67,7 +66,7 @@ Object { }); test('parses fully specified config', () => { - mockReadFileSync.mockImplementation(path => `content-of-${path}`); + mockReadFileSync.mockImplementation((path: string) => `content-of-${path}`); const elasticsearchConfig: ElasticsearchClientConfig = { apiVersion: 'v7.0.0', @@ -607,7 +606,7 @@ Object { }); test('#ignoreCertAndKey = true', () => { - mockReadFileSync.mockImplementation(path => `content-of-${path}`); + mockReadFileSync.mockImplementation((path: string) => `content-of-${path}`); expect( parseElasticsearchClientConfig( diff --git a/src/core/server/elasticsearch/elasticsearch_service.mock.ts b/src/core/server/elasticsearch/elasticsearch_service.mock.ts index d26bd342e91634..0a2b0821a6ddc0 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.mock.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.mock.ts @@ -16,6 +16,10 @@ * specific language governing permissions and limitations * under the License. */ + +export const MockClusterClient = jest.fn(); +jest.mock('./cluster_client', () => ({ ClusterClient: MockClusterClient })); + import { BehaviorSubject } from 'rxjs'; import { ClusterClient } from './cluster_client'; import { ElasticsearchConfig } from './elasticsearch_config'; diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts index 286d815fe5c2de..00404582db56cf 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts @@ -19,8 +19,7 @@ import { first } from 'rxjs/operators'; -const MockClusterClient = jest.fn(); -jest.mock('./cluster_client', () => ({ ClusterClient: MockClusterClient })); +import { MockClusterClient } from './elasticsearch_service.mock'; import { BehaviorSubject, combineLatest } from 'rxjs'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; diff --git a/src/core/server/http/http_service.mock.ts b/src/core/server/http/http_service.mock.ts index 024ff3a0307c95..c91b6deed8b4a9 100644 --- a/src/core/server/http/http_service.mock.ts +++ b/src/core/server/http/http_service.mock.ts @@ -16,6 +16,13 @@ * specific language governing permissions and limitations * under the License. */ + +export const mockHttpServer = jest.fn(); + +jest.mock('./http_server', () => ({ + HttpServer: mockHttpServer, +})); + import { Server, ServerOptions } from 'hapi'; import { HttpService } from './http_service'; diff --git a/src/core/server/http/http_service.test.ts b/src/core/server/http/http_service.test.ts index 3930db1e177a8d..20c0d6b30c2f02 100644 --- a/src/core/server/http/http_service.test.ts +++ b/src/core/server/http/http_service.test.ts @@ -17,11 +17,7 @@ * under the License. */ -const mockHttpServer = jest.fn(); - -jest.mock('./http_server', () => ({ - HttpServer: mockHttpServer, -})); +import { mockHttpServer } from './http_service.mock'; import { noop } from 'lodash'; import { BehaviorSubject } from 'rxjs'; diff --git a/src/core/server/index.mock.ts b/src/core/server/index.mock.ts new file mode 100644 index 00000000000000..b3c006791668ca --- /dev/null +++ b/src/core/server/index.mock.ts @@ -0,0 +1,40 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { httpServiceMock } from './http/http_service.mock'; +export const httpService = httpServiceMock.create(); +jest.doMock('./http/http_service', () => ({ + HttpService: jest.fn(() => httpService), +})); + +export const mockPluginsService = { start: jest.fn(), stop: jest.fn() }; +jest.doMock('./plugins/plugins_service', () => ({ + PluginsService: jest.fn(() => mockPluginsService), +})); + +import { elasticsearchServiceMock } from './elasticsearch/elasticsearch_service.mock'; +export const elasticsearchService = elasticsearchServiceMock.create(); +jest.doMock('./elasticsearch/elasticsearch_service', () => ({ + ElasticsearchService: jest.fn(() => elasticsearchService), +})); + +export const mockLegacyService = { start: jest.fn(), stop: jest.fn() }; +jest.mock('./legacy/legacy_service', () => ({ + LegacyService: jest.fn(() => mockLegacyService), +})); diff --git a/src/core/server/index.test.ts b/src/core/server/index.test.ts index a07a8c2d4fed21..bc1cba5b90e5f0 100644 --- a/src/core/server/index.test.ts +++ b/src/core/server/index.test.ts @@ -16,27 +16,13 @@ * specific language governing permissions and limitations * under the License. */ -import { httpServiceMock } from './http/http_service.mock'; -const httpService = httpServiceMock.create(); -jest.mock('./http/http_service', () => ({ - HttpService: jest.fn(() => httpService), -})); - -const mockPluginsService = { start: jest.fn(), stop: jest.fn() }; -jest.mock('./plugins/plugins_service', () => ({ - PluginsService: jest.fn(() => mockPluginsService), -})); - -import { elasticsearchServiceMock } from './elasticsearch/elasticsearch_service.mock'; -const elasticsearchService = elasticsearchServiceMock.create(); -jest.mock('./elasticsearch/elasticsearch_service', () => ({ - ElasticsearchService: jest.fn(() => elasticsearchService), -})); - -const mockLegacyService = { start: jest.fn(), stop: jest.fn() }; -jest.mock('./legacy/legacy_service', () => ({ - LegacyService: jest.fn(() => mockLegacyService), -})); + +import { + elasticsearchService, + httpService, + mockLegacyService, + mockPluginsService, +} from './index.mock'; import { BehaviorSubject } from 'rxjs'; import { Server } from '.'; diff --git a/src/core/server/logging/appenders/appenders.mock.ts b/src/core/server/logging/appenders/appenders.mock.ts new file mode 100644 index 00000000000000..551a4ac1bedc34 --- /dev/null +++ b/src/core/server/logging/appenders/appenders.mock.ts @@ -0,0 +1,29 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockCreateLayout = jest.fn(); +jest.mock('../layouts/layouts', () => { + const { schema } = require('@kbn/config-schema'); + return { + Layouts: { + configSchema: schema.object({ kind: schema.literal('mock') }), + create: mockCreateLayout, + }, + }; +}); diff --git a/src/core/server/logging/appenders/appenders.test.ts b/src/core/server/logging/appenders/appenders.test.ts index df528f4c58cd5a..cbb10ee2b4acdc 100644 --- a/src/core/server/logging/appenders/appenders.test.ts +++ b/src/core/server/logging/appenders/appenders.test.ts @@ -17,16 +17,7 @@ * under the License. */ -const mockCreateLayout = jest.fn(); -jest.mock('../layouts/layouts', () => { - const { schema } = require('@kbn/config-schema'); - return { - Layouts: { - configSchema: schema.object({ kind: schema.literal('mock') }), - create: mockCreateLayout, - }, - }; -}); +import { mockCreateLayout } from './appenders.mock'; import { LegacyAppender } from '../../legacy/logging/appenders/legacy_appender'; import { Appenders } from './appenders'; diff --git a/src/core/server/logging/appenders/file/file_appender.mock.ts b/src/core/server/logging/appenders/file/file_appender.mock.ts new file mode 100644 index 00000000000000..a4e4532882f520 --- /dev/null +++ b/src/core/server/logging/appenders/file/file_appender.mock.ts @@ -0,0 +1,32 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +jest.mock('../../layouts/layouts', () => { + const { schema } = require('@kbn/config-schema'); + return { + Layouts: { + configSchema: schema.object({ + kind: schema.literal('mock'), + }), + }, + }; +}); + +export const mockCreateWriteStream = jest.fn(); +jest.mock('fs', () => ({ createWriteStream: mockCreateWriteStream })); diff --git a/src/core/server/logging/appenders/file/file_appender.test.ts b/src/core/server/logging/appenders/file/file_appender.test.ts index 1d9ef33995955a..6ae31649e736cf 100644 --- a/src/core/server/logging/appenders/file/file_appender.test.ts +++ b/src/core/server/logging/appenders/file/file_appender.test.ts @@ -17,19 +17,7 @@ * under the License. */ -jest.mock('../../layouts/layouts', () => { - const { schema } = require('@kbn/config-schema'); - return { - Layouts: { - configSchema: schema.object({ - kind: schema.literal('mock'), - }), - }, - }; -}); - -const mockCreateWriteStream = jest.fn(); -jest.mock('fs', () => ({ createWriteStream: mockCreateWriteStream })); +import { mockCreateWriteStream } from './file_appender.mock'; import { LogLevel } from '../../log_level'; import { LogRecord } from '../../log_record'; diff --git a/src/core/server/plugins/discovery/plugin_discovery.mock.ts b/src/core/server/plugins/discovery/plugin_discovery.mock.ts new file mode 100644 index 00000000000000..d92465e4dd4971 --- /dev/null +++ b/src/core/server/plugins/discovery/plugin_discovery.mock.ts @@ -0,0 +1,30 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockReaddir = jest.fn(); +export const mockReadFile = jest.fn(); +export const mockStat = jest.fn(); +jest.mock('fs', () => ({ + readdir: mockReaddir, + readFile: mockReadFile, + stat: mockStat, +})); + +export const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../../../package.json', () => mockPackage); diff --git a/src/core/server/plugins/discovery/plugin_discovery.test.ts b/src/core/server/plugins/discovery/plugin_discovery.test.ts index 266ad1780d47f7..15f8992f171204 100644 --- a/src/core/server/plugins/discovery/plugin_discovery.test.ts +++ b/src/core/server/plugins/discovery/plugin_discovery.test.ts @@ -17,17 +17,7 @@ * under the License. */ -const mockReaddir = jest.fn(); -const mockReadFile = jest.fn(); -const mockStat = jest.fn(); -jest.mock('fs', () => ({ - readdir: mockReaddir, - readFile: mockReadFile, - stat: mockStat, -})); - -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../../../package.json', () => mockPackage); +import { mockPackage, mockReaddir, mockReadFile, mockStat } from './plugin_discovery.mock'; import { resolve } from 'path'; import { BehaviorSubject } from 'rxjs'; diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.mock.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.mock.ts new file mode 100644 index 00000000000000..eb8dc1e6095826 --- /dev/null +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.mock.ts @@ -0,0 +1,22 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockReadFile = jest.fn(); +const mockStat = jest.fn(); +jest.mock('fs', () => ({ readFile: mockReadFile, stat: mockStat })); diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts index d6012e4a5e2e43..ea6423ffdfbc3e 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts @@ -19,9 +19,7 @@ import { PluginDiscoveryErrorType } from './plugin_discovery_error'; -const mockReadFile = jest.fn(); -const mockStat = jest.fn(); -jest.mock('fs', () => ({ readFile: mockReadFile, stat: mockStat })); +import { mockReadFile } from './plugin_manifest_parser.mock'; import { resolve } from 'path'; import { parseManifest } from './plugin_manifest_parser'; diff --git a/src/core/server/plugins/plugins_service.mock.ts b/src/core/server/plugins/plugins_service.mock.ts new file mode 100644 index 00000000000000..13b492e382d676 --- /dev/null +++ b/src/core/server/plugins/plugins_service.mock.ts @@ -0,0 +1,26 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); + +export const mockDiscover = jest.fn(); +jest.mock('./discovery/plugins_discovery', () => ({ discover: mockDiscover })); + +jest.mock('./plugins_system'); diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index 7b8a300492b95d..0dfa79784b3934 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -17,13 +17,7 @@ * under the License. */ -const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../legacy/utils/package_json', () => ({ pkg: mockPackage })); - -const mockDiscover = jest.fn(); -jest.mock('./discovery/plugins_discovery', () => ({ discover: mockDiscover })); - -jest.mock('./plugins_system'); +import { mockDiscover, mockPackage } from './plugins_service.mock'; import { resolve } from 'path'; import { BehaviorSubject, from } from 'rxjs'; diff --git a/src/core/server/plugins/plugins_system.mock.ts b/src/core/server/plugins/plugins_system.mock.ts new file mode 100644 index 00000000000000..86d67a98d572fd --- /dev/null +++ b/src/core/server/plugins/plugins_system.mock.ts @@ -0,0 +1,23 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockCreatePluginStartContext = jest.fn(); +jest.mock('./plugin_context', () => ({ + createPluginStartContext: mockCreatePluginStartContext, +})); diff --git a/src/core/server/plugins/plugins_system.test.ts b/src/core/server/plugins/plugins_system.test.ts index b2aa20e541b7b5..46ae6b40411d68 100644 --- a/src/core/server/plugins/plugins_system.test.ts +++ b/src/core/server/plugins/plugins_system.test.ts @@ -17,16 +17,12 @@ * under the License. */ -import { CoreContext } from '../core_context'; - -const mockCreatePluginStartContext = jest.fn(); -jest.mock('./plugin_context', () => ({ - createPluginStartContext: mockCreatePluginStartContext, -})); +import { mockCreatePluginStartContext } from './plugins_system.mock'; import { BehaviorSubject } from 'rxjs'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; import { getEnvOptions } from '../config/__mocks__/env'; +import { CoreContext } from '../core_context'; import { elasticsearchServiceMock } from '../elasticsearch/elasticsearch_service.mock'; import { loggingServiceMock } from '../logging/logging_service.mock'; import { Plugin, PluginName } from './plugin'; diff --git a/src/core/server/root/index.mock.ts b/src/core/server/root/index.mock.ts new file mode 100644 index 00000000000000..fe001a1d348b9e --- /dev/null +++ b/src/core/server/root/index.mock.ts @@ -0,0 +1,33 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { loggingServiceMock } from '../logging/logging_service.mock'; +export const logger = loggingServiceMock.create(); +jest.doMock('../logging', () => ({ + LoggingService: jest.fn(() => logger), +})); + +import { configServiceMock } from '../config/config_service.mock'; +export const configService = configServiceMock.create(); +jest.doMock('../config/config_service', () => ({ + ConfigService: jest.fn(() => configService), +})); + +export const mockServer = { start: jest.fn(), stop: jest.fn() }; +jest.mock('../', () => ({ Server: jest.fn(() => mockServer) })); diff --git a/src/core/server/root/index.test.ts b/src/core/server/root/index.test.ts index b190715cdfe7cd..809461fc4283de 100644 --- a/src/core/server/root/index.test.ts +++ b/src/core/server/root/index.test.ts @@ -17,20 +17,7 @@ * under the License. */ -import { loggingServiceMock } from '../logging/logging_service.mock'; -const logger = loggingServiceMock.create(); -jest.mock('../logging', () => ({ - LoggingService: jest.fn(() => logger), -})); - -import { configServiceMock } from '../config/config_service.mock'; -const configService = configServiceMock.create(); -jest.mock('../config/config_service', () => ({ - ConfigService: jest.fn(() => configService), -})); - -const mockServer = { start: jest.fn(), stop: jest.fn() }; -jest.mock('../', () => ({ Server: jest.fn(() => mockServer) })); +import { configService, logger, mockServer } from './index.mock'; import { BehaviorSubject } from 'rxjs'; import { filter, first } from 'rxjs/operators'; diff --git a/src/dev/i18n/integrate_locale_files.mock.ts b/src/dev/i18n/integrate_locale_files.mock.ts new file mode 100644 index 00000000000000..e84ca068c067ee --- /dev/null +++ b/src/dev/i18n/integrate_locale_files.mock.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockWriteFileAsync = jest.fn(); +export const mockMakeDirAsync = jest.fn(); +jest.mock('./utils', () => ({ + // Jest typings don't define `requireActual` for some reason. + ...(jest as any).requireActual('./utils'), + writeFileAsync: mockWriteFileAsync, + makeDirAsync: mockMakeDirAsync, +})); diff --git a/src/dev/i18n/integrate_locale_files.test.ts b/src/dev/i18n/integrate_locale_files.test.ts index 050f16f3d33447..3621e028a979d1 100644 --- a/src/dev/i18n/integrate_locale_files.test.ts +++ b/src/dev/i18n/integrate_locale_files.test.ts @@ -17,14 +17,7 @@ * under the License. */ -const mockWriteFileAsync = jest.fn(); -const mockMakeDirAsync = jest.fn(); -jest.mock('./utils', () => ({ - // Jest typings don't define `requireActual` for some reason. - ...(jest as any).requireActual('./utils'), - writeFileAsync: mockWriteFileAsync, - makeDirAsync: mockMakeDirAsync, -})); +import { mockMakeDirAsync, mockWriteFileAsync } from './integrate_locale_files.mock'; import path from 'path'; import { integrateLocaleFiles, verifyMessages } from './integrate_locale_files'; diff --git a/src/legacy/core_plugins/kibana/public/visualize/wizard/__snapshots__/new_vis_modal.test.tsx.snap b/src/legacy/core_plugins/kibana/public/visualize/wizard/__snapshots__/new_vis_modal.test.tsx.snap index df2a7d729db902..ed6e64d18c986e 100644 --- a/src/legacy/core_plugins/kibana/public/visualize/wizard/__snapshots__/new_vis_modal.test.tsx.snap +++ b/src/legacy/core_plugins/kibana/public/visualize/wizard/__snapshots__/new_vis_modal.test.tsx.snap @@ -1140,10 +1140,7 @@ exports[`NewVisModal filter for visualization types should render as expected 1` className="euiScreenReaderOnly" > - - +

- - +

- + - + @@ -2626,7 +2623,7 @@ exports[`NewVisModal should render as expected 1`] = `

- - +

- - +

- + - + diff --git a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.mock.ts b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.mock.ts new file mode 100644 index 00000000000000..04c99a1547ba93 --- /dev/null +++ b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.mock.ts @@ -0,0 +1,26 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const settingsGet = jest.fn(); + +jest.doMock('ui/chrome', () => ({ + getUiSettingsClient: () => ({ + get: settingsGet, + }), +})); diff --git a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx index dd357d70f8a0ac..f05cc3a2d75d03 100644 --- a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx +++ b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx @@ -20,13 +20,7 @@ import React from 'react'; import { mountWithIntl } from 'test_utils/enzyme_helpers'; -const settingsGet = jest.fn(); - -jest.mock('ui/chrome', () => ({ - getUiSettingsClient: () => ({ - get: settingsGet, - }), -})); +import { settingsGet } from './new_vis_modal.mock'; import { NewVisModal } from './new_vis_modal'; diff --git a/src/legacy/ui/public/query_bar/components/query_bar.mock.ts b/src/legacy/ui/public/query_bar/components/query_bar.mock.ts new file mode 100644 index 00000000000000..7f0dae53a88132 --- /dev/null +++ b/src/legacy/ui/public/query_bar/components/query_bar.mock.ts @@ -0,0 +1,70 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const mockChromeFactory = jest.fn(() => { + return { + getBasePath: () => `foo`, + getUiSettingsClient: () => { + return { + get: (key: string) => { + switch (key) { + case 'history:limit': + return 10; + default: + throw new Error(`Unexpected config key: ${key}`); + } + }, + }; + }, + }; +}); + +export const mockPersistedLog = { + add: jest.fn(), + get: jest.fn(() => ['response:200']), +}; + +export const mockPersistedLogFactory = jest.fn, any>(() => { + return mockPersistedLog; +}); + +export const mockGetAutocompleteSuggestions = jest.fn(() => Promise.resolve([])); +const mockAutocompleteProvider = jest.fn(() => mockGetAutocompleteSuggestions); +export const mockGetAutocompleteProvider = jest.fn(() => mockAutocompleteProvider); + +jest.mock('ui/chrome', () => mockChromeFactory()); +jest.mock('../../chrome', () => mockChromeFactory()); +jest.mock('ui/persisted_log', () => ({ + PersistedLog: mockPersistedLogFactory, +})); +jest.mock('../../metadata', () => ({ + metadata: { + branch: 'foo', + }, +})); +jest.mock('../../autocomplete_providers', () => ({ + getAutocompleteProvider: mockGetAutocompleteProvider, +})); + +import _ from 'lodash'; +// Using doMock to avoid hoisting so that I can override only the debounce method in lodash +jest.doMock('lodash', () => ({ + ..._, + debounce: (func: () => any) => func, +})); diff --git a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx index fdcfb770439193..bb395bc5eb41b0 100644 --- a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx +++ b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx @@ -17,57 +17,12 @@ * under the License. */ -const mockChromeFactory = jest.fn(() => { - return { - getBasePath: () => `foo`, - getUiSettingsClient: () => { - return { - get: (key: string) => { - switch (key) { - case 'history:limit': - return 10; - default: - throw new Error(`Unexpected config key: ${key}`); - } - }, - }; - }, - }; -}); - -const mockPersistedLog = { - add: jest.fn(), - get: jest.fn(() => ['response:200']), -}; - -const mockPersistedLogFactory = jest.fn, any>(() => { - return mockPersistedLog; -}); - -const mockGetAutocompleteSuggestions = jest.fn(() => Promise.resolve([])); -const mockAutocompleteProvider = jest.fn(() => mockGetAutocompleteSuggestions); -const mockGetAutocompleteProvider = jest.fn(() => mockAutocompleteProvider); - -jest.mock('ui/chrome', () => mockChromeFactory()); -jest.mock('../../chrome', () => mockChromeFactory()); -jest.mock('ui/persisted_log', () => ({ - PersistedLog: mockPersistedLogFactory, -})); -jest.mock('../../metadata', () => ({ - metadata: { - branch: 'foo', - }, -})); -jest.mock('../../autocomplete_providers', () => ({ - getAutocompleteProvider: mockGetAutocompleteProvider, -})); - -import _ from 'lodash'; -// Using doMock to avoid hoisting so that I can override only the debounce method in lodash -jest.doMock('lodash', () => ({ - ..._, - debounce: (func: () => any) => func, -})); +import { + mockGetAutocompleteProvider, + mockGetAutocompleteSuggestions, + mockPersistedLog, + mockPersistedLogFactory, +} from 'ui/query_bar/components/query_bar.mock'; import { EuiFieldText } from '@elastic/eui'; import React from 'react'; diff --git a/src/legacy/ui/public/utils/subscribe_with_scope.mock.ts b/src/legacy/ui/public/utils/subscribe_with_scope.mock.ts new file mode 100644 index 00000000000000..815d2f09150c7a --- /dev/null +++ b/src/legacy/ui/public/utils/subscribe_with_scope.mock.ts @@ -0,0 +1,23 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockFatalError = jest.fn(); +jest.mock('ui/notify/fatal_error', () => ({ + fatalError: mockFatalError, +})); diff --git a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts index a5a3312bad4bfb..19f1d24a8e121d 100644 --- a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts +++ b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts @@ -16,11 +16,7 @@ * specific language governing permissions and limitations * under the License. */ - -const mockFatalError = jest.fn(); -jest.mock('ui/notify/fatal_error', () => ({ - fatalError: mockFatalError, -})); +import { mockFatalError } from './subscribe_with_scope.mock'; import * as Rx from 'rxjs'; import { subscribeWithScope } from './subscribe_with_scope'; diff --git a/tsconfig.json b/tsconfig.json index 0f4454606682cf..46569f474db7ac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -47,9 +47,6 @@ "downlevelIteration": true, // import tslib helpers rather than inlining helpers for iteration or spreading, for instance "importHelpers": true, - // TODO: we can remove this after the ts-jest bug fix - // https://github.com/kulshekhar/ts-jest/issues/991 - "skipLibCheck": true, // adding global typings "types": [ "node", diff --git a/x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts.tsx b/x-pack/plugins/reporting/public/components/report_info_button.mock.ts similarity index 100% rename from x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts.tsx rename to x-pack/plugins/reporting/public/components/report_info_button.mock.ts diff --git a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx index ebf9c3dacfe161..edfe6d8ff22572 100644 --- a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx +++ b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { mockJobQueueClient } from './report_info_button.test.mocks.ts'; +import { mockJobQueueClient } from './report_info_button.mock'; import React from 'react'; import { mountWithIntl } from 'test_utils/enzyme_helpers'; diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.mocks.ts b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.mock.ts similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.mocks.ts rename to x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.mock.ts diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts index 9f47f51bc8cde6..1f8fcebb17d90c 100644 --- a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts +++ b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { mockClient } from './polling_service.test.mocks'; +import { mockClient } from './polling_service.mock'; import { ReindexStatus, ReindexStep } from '../../../../../../common/types'; import { ReindexPollingService } from './polling_service'; diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.mock.ts similarity index 100% rename from x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts rename to x-pack/plugins/xpack_main/server/lib/file_integrity.mock.ts diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts index 668b0d0c21088b..81fd5a61490b37 100644 --- a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts +++ b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import './file_integrity.test.mocks'; +import './file_integrity.mock'; import { getIntegrityHash, getIntegrityHashes } from './file_integrity'; From 4ccc57e08f0ac6046ca0a066865f2ec8d7714012 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 05:40:30 +0000 Subject: [PATCH 23/56] chore(NA): merge and solve conflicts with master. --- .../loader/embedded_visualize_handler.mock.ts | 67 ++++++++++ .../loader/embedded_visualize_handler.test.ts | 50 +------- .../__test__/tabConfig.test.tsx | 59 ++++----- .../shared/PropertiesTable/tabConfig.ts | 117 ++--------------- .../shared/PropertiesTable/tabConfigConst.ts | 119 ++++++++++++++++++ 5 files changed, 217 insertions(+), 195 deletions(-) create mode 100644 src/legacy/ui/public/visualize/loader/embedded_visualize_handler.mock.ts create mode 100644 x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts diff --git a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.mock.ts b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.mock.ts new file mode 100644 index 00000000000000..6adea30c94fb49 --- /dev/null +++ b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.mock.ts @@ -0,0 +1,67 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +jest.useFakeTimers(); + +import { EventEmitter } from 'events'; + +jest.mock('ui/notify', () => ({ + toastNotifications: jest.fn(), +})); + +jest.mock('./utils', () => ({ + queryGeohashBounds: jest.fn(), +})); + +jest.mock('./pipeline_helpers/utilities', () => ({ + getFormat: jest.fn(), + getTableAggs: jest.fn(), +})); + +export const timefilter = new EventEmitter(); +jest.doMock('../../timefilter', () => ({ timefilter })); + +jest.mock('../../inspector', () => ({ + Inspector: { + open: jest.fn(), + isAvailable: jest.fn(), + }, +})); + +export const mockDataLoaderFetch = jest.fn().mockReturnValue({ + as: 'visualization', + value: { + visType: 'histogram', + visData: {}, + visConfig: {}, + params: {}, + }, +}); +const MockDataLoader = class { + public async fetch(data: any) { + return await mockDataLoaderFetch(data); + } +}; + +jest.mock('./pipeline_data_loader', () => ({ + PipelineDataLoader: MockDataLoader, +})); +jest.mock('./visualize_data_loader', () => ({ + VisualizeDataLoader: MockDataLoader, +})); diff --git a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts index 3dc39ba7e2a905..2046a72a34baa2 100644 --- a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts +++ b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts @@ -16,61 +16,13 @@ * specific language governing permissions and limitations * under the License. */ - -jest.useFakeTimers(); - -import { EventEmitter } from 'events'; +import { mockDataLoaderFetch, timefilter } from './embedded_visualize_handler.mock'; // @ts-ignore import MockState from '../../../../../fixtures/mock_state'; import { RequestHandlerParams, Vis } from '../../vis'; import { VisResponseData } from './types'; -jest.mock('ui/notify', () => ({ - toastNotifications: jest.fn(), -})); - -jest.mock('./utils', () => ({ - queryGeohashBounds: jest.fn(), -})); - -jest.mock('./pipeline_helpers/utilities', () => ({ - getFormat: jest.fn(), - getTableAggs: jest.fn(), -})); - -const timefilter = new EventEmitter(); -jest.mock('../../timefilter', () => ({ timefilter })); - -jest.mock('../../inspector', () => ({ - Inspector: { - open: jest.fn(), - isAvailable: jest.fn(), - }, -})); - -const mockDataLoaderFetch = jest.fn().mockReturnValue({ - as: 'visualization', - value: { - visType: 'histogram', - visData: {}, - visConfig: {}, - params: {}, - }, -}); -const MockDataLoader = class { - public async fetch(data: any) { - return await mockDataLoaderFetch(data); - } -}; - -jest.mock('./pipeline_data_loader', () => ({ - PipelineDataLoader: MockDataLoader, -})); -jest.mock('./visualize_data_loader', () => ({ - VisualizeDataLoader: MockDataLoader, -})); - import { Inspector } from '../../inspector'; import { EmbeddedVisualizeHandler } from './embedded_visualize_handler'; diff --git a/x-pack/plugins/apm/public/components/shared/PropertiesTable/__test__/tabConfig.test.tsx b/x-pack/plugins/apm/public/components/shared/PropertiesTable/__test__/tabConfig.test.tsx index 47cffde62612e0..61d2fcf026652b 100644 --- a/x-pack/plugins/apm/public/components/shared/PropertiesTable/__test__/tabConfig.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/PropertiesTable/__test__/tabConfig.test.tsx @@ -4,18 +4,33 @@ * you may not use this file except in compliance with the Elastic License. */ +jest.mock('../tabConfigConst', () => { + return { + TAB_CONFIG: [ + { + key: 'testProperty', + label: 'testPropertyLabel', + required: false, + presortedKeys: ['name', 'age'] + }, + { + key: 'optionalProperty', + label: 'optionalPropertyLabel', + required: false + }, + { + key: 'requiredProperty', + label: 'requiredPropertyLabel', + required: true + } + ] + }; +}); + import * as propertyConfig from '../tabConfig'; const { getTabsFromObject, sortKeysByConfig } = propertyConfig; describe('tabConfig', () => { - beforeEach(() => { - mockPropertyConfig(); - }); - - afterEach(() => { - unMockPropertyConfig(); - }); - describe('getTabsFromObject', () => { it('should return selected and required keys only', () => { const expectedTabs = [ @@ -64,31 +79,3 @@ describe('tabConfig', () => { }); }); }); - -function mockPropertyConfig() { - // @ts-ignore - propertyConfig.TAB_CONFIG = [ - { - key: 'testProperty', - label: 'testPropertyLabel', - required: false, - presortedKeys: ['name', 'age'] - }, - { - key: 'optionalProperty', - label: 'optionalPropertyLabel', - required: false - }, - { - key: 'requiredProperty', - label: 'requiredPropertyLabel', - required: true - } - ]; -} - -const originalPropertyConfig = propertyConfig.TAB_CONFIG; -function unMockPropertyConfig() { - // @ts-ignore - propertyConfig.TAB_CONFIG = originalPropertyConfig; -} diff --git a/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfig.ts b/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfig.ts index f4d843d96f34eb..92a2de44f74410 100644 --- a/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfig.ts +++ b/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfig.ts @@ -4,28 +4,17 @@ * you may not use this file except in compliance with the Elastic License. */ -import { i18n } from '@kbn/i18n'; import { get, indexBy, uniq } from 'lodash'; import { first, has } from 'lodash'; import { StringMap } from 'x-pack/plugins/apm/typings/common'; import { APMError } from 'x-pack/plugins/apm/typings/es_schemas/Error'; import { Transaction } from 'x-pack/plugins/apm/typings/es_schemas/Transaction'; - -export type PropertyTabKey = - | keyof Transaction - | keyof APMError - | 'transaction.custom' - | 'error.custom'; - -export interface PropertyTab { - key: PropertyTabKey; - label: string; -} - -interface TabConfig extends PropertyTab { - required: boolean; - presortedKeys: string[]; -} +import { + PropertyTab, + PropertyTabKey, + TAB_CONFIG, + TabConfig +} from './tabConfigConst'; export function getTabsFromObject(obj: Transaction | APMError): PropertyTab[] { return TAB_CONFIG.filter( @@ -53,96 +42,4 @@ export function getCurrentTab( return selectedTab ? selectedTab : first(tabs) || {}; } -export const TAB_CONFIG: TabConfig[] = [ - { - key: 'http', - label: i18n.translate('xpack.apm.propertiesTable.tabs.httpLabel', { - defaultMessage: 'HTTP' - }), - required: false, - presortedKeys: [] - }, - { - key: 'host', - label: i18n.translate('xpack.apm.propertiesTable.tabs.hostLabel', { - defaultMessage: 'Host' - }), - required: false, - presortedKeys: ['hostname', 'architecture', 'platform'] - }, - { - key: 'service', - label: i18n.translate('xpack.apm.propertiesTable.tabs.serviceLabel', { - defaultMessage: 'Service' - }), - required: false, - presortedKeys: ['runtime', 'framework', 'version'] - }, - { - key: 'process', - label: i18n.translate('xpack.apm.propertiesTable.tabs.processLabel', { - defaultMessage: 'Process' - }), - required: false, - presortedKeys: ['pid', 'title', 'args'] - }, - { - key: 'agent', - label: i18n.translate('xpack.apm.propertiesTable.tabs.agentLabel', { - defaultMessage: 'Agent' - }), - required: false, - presortedKeys: [] - }, - { - key: 'url', - label: i18n.translate('xpack.apm.propertiesTable.tabs.urlLabel', { - defaultMessage: 'URL' - }), - required: false, - presortedKeys: [] - }, - { - key: 'container', - label: i18n.translate('xpack.apm.propertiesTable.tabs.containerLabel', { - defaultMessage: 'Container' - }), - required: false, - presortedKeys: [] - }, - { - key: 'user', - label: i18n.translate('xpack.apm.propertiesTable.tabs.userLabel', { - defaultMessage: 'User' - }), - required: true, - presortedKeys: ['id', 'username', 'email'] - }, - { - key: 'labels', - label: i18n.translate('xpack.apm.propertiesTable.tabs.labelsLabel', { - defaultMessage: 'Labels' - }), - required: true, - presortedKeys: [] - }, - { - key: 'transaction.custom', - label: i18n.translate( - 'xpack.apm.propertiesTable.tabs.transactionCustomLabel', - { - defaultMessage: 'Custom' - } - ), - required: false, - presortedKeys: [] - }, - { - key: 'error.custom', - label: i18n.translate('xpack.apm.propertiesTable.tabs.errorCustomLabel', { - defaultMessage: 'Custom' - }), - required: false, - presortedKeys: [] - } -]; +export { TAB_CONFIG, TabConfig, PropertyTab, PropertyTabKey }; diff --git a/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts b/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts new file mode 100644 index 00000000000000..a75c264b0df3d8 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { APMError } from '../../../../typings/es_schemas/Error'; +import { Transaction } from '../../../../typings/es_schemas/Transaction'; + +export type PropertyTabKey = + | keyof Transaction + | keyof APMError + | 'transaction.custom' + | 'error.custom'; + +export interface PropertyTab { + key: PropertyTabKey; + label: string; +} + +export interface TabConfig extends PropertyTab { + required: boolean; + presortedKeys: string[]; +} + +export const TAB_CONFIG: TabConfig[] = [ + { + key: 'http', + label: i18n.translate('xpack.apm.propertiesTable.tabs.httpLabel', { + defaultMessage: 'HTTP' + }), + required: false, + presortedKeys: [] + }, + { + key: 'host', + label: i18n.translate('xpack.apm.propertiesTable.tabs.hostLabel', { + defaultMessage: 'Host' + }), + required: false, + presortedKeys: ['hostname', 'architecture', 'platform'] + }, + { + key: 'service', + label: i18n.translate('xpack.apm.propertiesTable.tabs.serviceLabel', { + defaultMessage: 'Service' + }), + required: false, + presortedKeys: ['runtime', 'framework', 'version'] + }, + { + key: 'process', + label: i18n.translate('xpack.apm.propertiesTable.tabs.processLabel', { + defaultMessage: 'Process' + }), + required: false, + presortedKeys: ['pid', 'title', 'args'] + }, + { + key: 'agent', + label: i18n.translate('xpack.apm.propertiesTable.tabs.agentLabel', { + defaultMessage: 'Agent' + }), + required: false, + presortedKeys: [] + }, + { + key: 'url', + label: i18n.translate('xpack.apm.propertiesTable.tabs.urlLabel', { + defaultMessage: 'URL' + }), + required: false, + presortedKeys: [] + }, + { + key: 'container', + label: i18n.translate('xpack.apm.propertiesTable.tabs.containerLabel', { + defaultMessage: 'Container' + }), + required: false, + presortedKeys: [] + }, + { + key: 'user', + label: i18n.translate('xpack.apm.propertiesTable.tabs.userLabel', { + defaultMessage: 'User' + }), + required: true, + presortedKeys: ['id', 'username', 'email'] + }, + { + key: 'labels', + label: i18n.translate('xpack.apm.propertiesTable.tabs.labelsLabel', { + defaultMessage: 'Labels' + }), + required: true, + presortedKeys: [] + }, + { + key: 'transaction.custom', + label: i18n.translate( + 'xpack.apm.propertiesTable.tabs.transactionCustomLabel', + { + defaultMessage: 'Custom' + } + ), + required: false, + presortedKeys: [] + }, + { + key: 'error.custom', + label: i18n.translate('xpack.apm.propertiesTable.tabs.errorCustomLabel', { + defaultMessage: 'Custom' + }), + required: false, + presortedKeys: [] + } +]; From 9bef9527384d18c49d4c0414f7260dd90d1b3985 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 16:52:25 +0000 Subject: [PATCH 24/56] chore(NA): fix problems reported by eslint --- package.json | 3 ++- packages/kbn-ui-framework/doc_site/src/index.js | 2 +- .../canvas/public/components/workpad_page/index.js | 1 + .../canvas/public/lib/aeroelastic/layout_functions.js | 1 + x-pack/plugins/canvas/tasks/helpers/babelhook.js | 2 +- .../plugins/task_manager/package.json | 10 +++++++++- 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f1686283a80ea4..171aad06ff8906 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,8 @@ "url": "https://github.com/elastic/kibana.git" }, "resolutions": { - "**/@types/node": "10.12.27" + "**/@types/node": "10.12.27", + "**/typescript": "^3.3.3333" }, "workspaces": { "packages": [ diff --git a/packages/kbn-ui-framework/doc_site/src/index.js b/packages/kbn-ui-framework/doc_site/src/index.js index 094437d85e6b64..f53e8a608e1a11 100644 --- a/packages/kbn-ui-framework/doc_site/src/index.js +++ b/packages/kbn-ui-framework/doc_site/src/index.js @@ -19,7 +19,7 @@ require('./main.scss'); -import 'babel-polyfill'; +import '@babel/polyfill'; import React from 'react'; import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; diff --git a/x-pack/plugins/canvas/public/components/workpad_page/index.js b/x-pack/plugins/canvas/public/components/workpad_page/index.js index b3c84781b79ba6..20691458beab18 100644 --- a/x-pack/plugins/canvas/public/components/workpad_page/index.js +++ b/x-pack/plugins/canvas/public/components/workpad_page/index.js @@ -41,6 +41,7 @@ const mapDispatchToProps = dispatch => { }; }; +// eslint-disable-next-line const getRootElementId = (lookup, id) => { if (!lookup.has(id)) { return null; diff --git a/x-pack/plugins/canvas/public/lib/aeroelastic/layout_functions.js b/x-pack/plugins/canvas/public/lib/aeroelastic/layout_functions.js index 3e2a030ff38da1..99801857f13103 100644 --- a/x-pack/plugins/canvas/public/lib/aeroelastic/layout_functions.js +++ b/x-pack/plugins/canvas/public/lib/aeroelastic/layout_functions.js @@ -426,6 +426,7 @@ export const applyLocalTransforms = (shapes, transformIntents) => { return shapes.map(shapeApplyLocalTransforms(transformIntents)); }; +// eslint-disable-next-line const getUpstreamTransforms = (shapes, shape) => shape.parent ? getUpstreamTransforms(shapes, shapes.find(s => s.id === shape.parent)).concat([ diff --git a/x-pack/plugins/canvas/tasks/helpers/babelhook.js b/x-pack/plugins/canvas/tasks/helpers/babelhook.js index 4a48d09449b208..dea18db918fcd5 100644 --- a/x-pack/plugins/canvas/tasks/helpers/babelhook.js +++ b/x-pack/plugins/canvas/tasks/helpers/babelhook.js @@ -5,7 +5,7 @@ */ const { resolve } = require('path'); -const register = require('babel-register'); +const register = require('@babel/register'); const options = { babelrc: false, presets: [require.resolve('@kbn/babel-preset/node_preset')], diff --git a/x-pack/test/plugin_api_integration/plugins/task_manager/package.json b/x-pack/test/plugin_api_integration/plugins/task_manager/package.json index ede03a08a2721d..ec63c512e9cd79 100644 --- a/x-pack/test/plugin_api_integration/plugins/task_manager/package.json +++ b/x-pack/test/plugin_api_integration/plugins/task_manager/package.json @@ -1,4 +1,12 @@ { "name": "sample_task_plugin", - "version": "kibana" + "version": "1.0.0", + "kibana": { + "version": "kibana", + "templateVersion": "1.0.0" + }, + "license": "Apache-2.0", + "dependencies": { + "joi": "^13.5.2" + } } From f4d0fc4ee5a6b4673baa8d54b28d257ec8bedb9f Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 17:43:10 +0000 Subject: [PATCH 25/56] chore(NA): fix license ovveride for babel-plugin-mock-imports --- src/dev/license_checker/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dev/license_checker/config.js b/src/dev/license_checker/config.js index 9c6fa7767ee1e9..879c2147ccb11b 100644 --- a/src/dev/license_checker/config.js +++ b/src/dev/license_checker/config.js @@ -105,5 +105,5 @@ export const LICENSE_OVERRIDES = { 'walk@2.3.9': ['MIT'], // TODO remove this once we upgrade past or equal to v1.0.2 - 'babel-plugin-mock-imports@0.0.5': ['MIT'] + 'babel-plugin-mock-imports@1.0.1': ['MIT'] }; From 4f0908aca4bed757ecbe38f9018ce0bd1974e214 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 18:39:53 +0000 Subject: [PATCH 26/56] chore(NA): update jest integration tests for kbn pm --- .../integration_tests/__fixtures__/packages/bar/package.json | 1 + .../integration_tests/__fixtures__/packages/foo/package.json | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json index 6a843c14263417..5271e6ae303f59 100644 --- a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json +++ b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json @@ -5,6 +5,7 @@ "main": "./target/index.js", "devDependencies": { "@babel/cli": "^7.2.3", + "@babel/core": "^7.3.4", "@babel/preset-env": "^7.3.4" }, "scripts": { diff --git a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json index f80357f2d6e525..3f2103cc71c6e4 100644 --- a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json +++ b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json @@ -7,6 +7,7 @@ "@elastic/bar": "link:../bar" }, "devDependencies": { + "@babel/core": "^7.3.4", "@babel/cli": "^7.2.3", "@babel/preset-env": "^7.3.4", "moment": "2.20.1" From 3af1ad1c2b441bdb97761c0033fd16b17998f855 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 19:09:41 +0000 Subject: [PATCH 27/56] chore(NA): update babel jest integration tests for kbn pm. --- .../integration_tests/__fixtures__/packages/bar/package.json | 2 +- .../integration_tests/__fixtures__/packages/foo/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json index 5271e6ae303f59..c1269fc7c037b4 100644 --- a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json +++ b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/bar/package.json @@ -9,6 +9,6 @@ "@babel/preset-env": "^7.3.4" }, "scripts": { - "build": "babel --presets env --out-dir target src" + "build": "babel --presets=@babel/preset-env --out-dir target src" } } diff --git a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json index 3f2103cc71c6e4..8b8225594c5aca 100644 --- a/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json +++ b/packages/kbn-pm/src/production/integration_tests/__fixtures__/packages/foo/package.json @@ -13,6 +13,6 @@ "moment": "2.20.1" }, "scripts": { - "build": "babel --presets env --out-dir target src" + "build": "babel --presets=@babel/preset-env --out-dir target src" } } From 78b1ab03e06a5b7e6a66c464fc33c3594c859b62 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 19:41:05 +0000 Subject: [PATCH 28/56] test(NA): update jest integration snapshot for kbn pm. --- .../build_production_projects.test.ts.snap | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/kbn-pm/src/production/integration_tests/__snapshots__/build_production_projects.test.ts.snap b/packages/kbn-pm/src/production/integration_tests/__snapshots__/build_production_projects.test.ts.snap index 94642340e0d9d6..5049c692aae68a 100644 --- a/packages/kbn-pm/src/production/integration_tests/__snapshots__/build_production_projects.test.ts.snap +++ b/packages/kbn-pm/src/production/integration_tests/__snapshots__/build_production_projects.test.ts.snap @@ -20,14 +20,15 @@ Array [ exports[`kbn-pm production builds and copies projects for production: packages/bar/package.json 1`] = ` Object { "devDependencies": Object { - "babel-cli": "^6.26.0", - "babel-preset-env": "^1.6.1", + "@babel/cli": "^7.2.3", + "@babel/core": "^7.3.4", + "@babel/preset-env": "^7.3.4", }, "main": "./target/index.js", "name": "@elastic/bar", "private": true, "scripts": Object { - "build": "babel --presets env --out-dir target src", + "build": "babel --presets=@babel/preset-env --out-dir target src", }, "version": "1.0.0", } @@ -47,15 +48,16 @@ Object { "@elastic/bar": "link:../bar", }, "devDependencies": Object { - "babel-cli": "^6.26.0", - "babel-preset-env": "^1.6.1", + "@babel/cli": "^7.2.3", + "@babel/core": "^7.3.4", + "@babel/preset-env": "^7.3.4", "moment": "2.20.1", }, "main": "./target/index.js", "name": "@elastic/foo", "private": true, "scripts": Object { - "build": "babel --presets env --out-dir target src", + "build": "babel --presets=@babel/preset-env --out-dir target src", }, "version": "1.0.0", } From 804b8bc882764ace20338e5b1ea6c39eb3e68489 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 19:50:11 +0000 Subject: [PATCH 29/56] chore(NA): apply changes according to the pull request reviews. --- src/dev/jest/config.js | 2 +- src/dev/jest/ts_babel_jest_disable_hoist.js | 56 ------------------- src/optimize/base_optimizer.js | 4 +- src/setup_node_env/babel_register/register.js | 2 +- x-pack/dev-tools/jest/create_jest_config.js | 2 +- 5 files changed, 5 insertions(+), 61 deletions(-) delete mode 100644 src/dev/jest/ts_babel_jest_disable_hoist.js diff --git a/src/dev/jest/config.js b/src/dev/jest/config.js index bae765d5129610..609275ff5c8789 100644 --- a/src/dev/jest/config.js +++ b/src/dev/jest/config.js @@ -77,7 +77,7 @@ export default { 'integration_tests/' ], transform: { - '^.+\\.(jsx?|tsx?)$': '/src/dev/jest/babel_transform.js', + '^.+\\.(js|tsx?)$': '/src/dev/jest/babel_transform.js', '^.+\\.txt?$': 'jest-raw-loader', '^.+\\.html?$': 'jest-raw-loader', }, diff --git a/src/dev/jest/ts_babel_jest_disable_hoist.js b/src/dev/jest/ts_babel_jest_disable_hoist.js deleted file mode 100644 index afae0945a2414d..00000000000000 --- a/src/dev/jest/ts_babel_jest_disable_hoist.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -const visitor = { - // Babel-jest hoisting to the top very `jest.mock` call so make it - // impossible to reuse variables defined outside of them, even the ones - // prefixed with `mock` contrary to what is described in the documentation. - // The idea behind this plugin is to hoist the `mock` prefixed variables - // found in the babel-jest parsed tests in order to be able to use them - // along with the jest.mock calls. - // VariableDeclaration(path) { - // const varNode = path && path.node; - // const kind = varNode && varNode.kind; - // const declarations = varNode && varNode.declarations; - // - // if (!kind || !declarations) { - // return; - // } - // - // // Return as soon as we found a mock prefixed var - // const foundMockVarDeclaration = declarations.some((decl) => { - // const declName = decl && decl.id && decl.id.name; - // return /^mock/i.test(declName); - // }); - // - // // If none mock prefixed var was found, just return - // if (!foundMockVarDeclaration) { - // return; - // } - // - // // If a mock prefixed var was found, hoist it with Infinity - // // The same behaviour is found on babel-plugin-jest-hoist - // // https://github.com/facebook/jest/blob/master/packages/babel-plugin-jest-hoist/src/index.ts#L180 - // path.node._blockHoist = Infinity; - // }, -}; - -module.exports = () => { - return { visitor }; -}; diff --git a/src/optimize/base_optimizer.js b/src/optimize/base_optimizer.js index c9a8ecdf9fcf2e..89ccd5d7f46d2f 100644 --- a/src/optimize/base_optimizer.js +++ b/src/optimize/base_optimizer.js @@ -358,7 +358,7 @@ export default class BaseOptimizer { } }, { - resource: createSourceFileResourceSelector(/\.(js|jsx|tsx|ts)$/), + resource: createSourceFileResourceSelector(/\.(js|tsx?)$/), use: maybeAddCacheLoader('babel', [ { loader: 'thread-loader', @@ -384,7 +384,7 @@ export default class BaseOptimizer { }, resolve: { - extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], + extensions: ['.js', '.ts', '.tsx', '.json'], mainFields: ['browser', 'browserify', 'main'], modules: [ 'webpackShims', diff --git a/src/setup_node_env/babel_register/register.js b/src/setup_node_env/babel_register/register.js index 148d263e095c5e..6d7361ab2a194c 100644 --- a/src/setup_node_env/babel_register/register.js +++ b/src/setup_node_env/babel_register/register.js @@ -72,5 +72,5 @@ require('@babel/register')({ presets: [ require.resolve('@kbn/babel-preset/node_preset') ], - extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx'], + extensions: ['.js', '.ts', '.tsx'], }); diff --git a/x-pack/dev-tools/jest/create_jest_config.js b/x-pack/dev-tools/jest/create_jest_config.js index aab74301c76318..ad5b2fde1acfef 100644 --- a/x-pack/dev-tools/jest/create_jest_config.js +++ b/x-pack/dev-tools/jest/create_jest_config.js @@ -37,7 +37,7 @@ export function createJestConfig({ '**/*.test.{js,ts,tsx}' ], transform: { - '^.+\\.(jsx?|tsx?)$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, + '^.+\\.(js|tsx?)$': `${kibanaDirectory}/src/dev/jest/babel_transform.js`, }, transformIgnorePatterns: [ '[/\\\\]node_modules[/\\\\].+\\.js$' From 748212734470ac93cf41c07984b4c67968b3d3b7 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 13 Mar 2019 19:52:45 +0000 Subject: [PATCH 30/56] chore(NA): apply changes according to the pull request reviews. --- x-pack/test_utils/jest/config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/test_utils/jest/config.js b/x-pack/test_utils/jest/config.js index a5a1010f8d27b1..e460c705f293c0 100644 --- a/x-pack/test_utils/jest/config.js +++ b/x-pack/test_utils/jest/config.js @@ -50,8 +50,7 @@ export default { 'integration_tests/' ], transform: { - '^.+\\.jsx?$': '/../src/dev/jest/babel_transform.js', - '^.+\\.tsx?$': '/../src/dev/jest/ts_transform.js', + '^.+\\.(js|tsx?)$': '/../src/dev/jest/babel_transform.js', '^.+\\.txt?$': 'jest-raw-loader', '^.+\\.html?$': 'jest-raw-loader', }, From 1a1d6d16aaba5538340a060a7211189f2987b901 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 14 Mar 2019 01:38:12 +0000 Subject: [PATCH 31/56] refact(NA): migrate jest tests to the new pattern. --- ...stem.mock.ts => core_system.test.mocks.ts} | 0 src/core/public/core_system.test.ts | 2 +- ....ts => fatal_errors_service.test.mocks.ts} | 0 .../fatal_errors/fatal_errors_service.test.ts | 2 +- ...e.mock.ts => toasts_service.test.mocks.ts} | 0 .../toasts/toasts_service.test.tsx | 2 +- ...k.ts => ui_settings_service.test.mocks.ts} | 0 .../ui_settings/ui_settings_service.test.ts | 2 +- src/core/server/config/config_service.mock.ts | 2 -- .../config/config_service.test.mocks.ts | 21 ++++++++++++++++ src/core/server/config/config_service.test.ts | 2 +- .../config/{env.mock.ts => env.test.mocks.ts} | 0 src/core/server/config/env.test.ts | 2 +- ...ck.ts => raw_config_service.test.mocks.ts} | 0 .../server/config/raw_config_service.test.ts | 2 +- ...t.mock.ts => cluster_client.test.mocks.ts} | 0 .../elasticsearch/cluster_client.test.ts | 2 +- ...elasticsearch_client_config.test.mocks.ts} | 0 .../elasticsearch_client_config.test.ts | 2 +- .../elasticsearch_service.mock.ts | 3 --- .../elasticsearch_service.test.mocks.ts | 21 ++++++++++++++++ .../elasticsearch_service.test.ts | 2 +- src/core/server/http/http_service.mock.ts | 6 ----- .../server/http/http_service.test.mocks.ts | 24 +++++++++++++++++++ src/core/server/http/http_service.test.ts | 2 +- .../{index.mock.ts => index.test.mocks.ts} | 0 src/core/server/index.test.ts | 2 +- ...enders.mock.ts => appenders.test.mocks.ts} | 0 .../logging/appenders/appenders.test.ts | 2 +- ...er.mock.ts => file_appender.test.mocks.ts} | 0 .../appenders/file/file_appender.test.ts | 2 +- ...mock.ts => plugin_discovery.test.mocks.ts} | 0 .../discovery/plugin_discovery.test.ts | 2 +- ...s => plugin_manifest_parser.test.mocks.ts} | 0 .../discovery/plugin_manifest_parser.test.ts | 2 +- ....mock.ts => plugins_service.test.mocks.ts} | 0 .../server/plugins/plugins_service.test.ts | 2 +- ...m.mock.ts => plugins_system.test.mocks.ts} | 0 .../server/plugins/plugins_system.test.ts | 2 +- .../{index.mock.ts => index.test.mocks.ts} | 0 src/core/server/root/index.test.ts | 2 +- ...s => integrate_locale_files.test.mocks.ts} | 0 src/dev/i18n/integrate_locale_files.test.ts | 2 +- ...al.mock.ts => new_vis_modal.test.mocks.ts} | 0 .../visualize/wizard/new_vis_modal.test.tsx | 2 +- ...ry_bar.mock.ts => query_bar.test.mocks.ts} | 0 .../query_bar/components/query_bar.test.tsx | 2 +- ....ts => subscribe_with_scope.test.mocks.ts} | 0 .../public/utils/subscribe_with_scope.test.ts | 2 +- ... embedded_visualize_handler.test.mocks.ts} | 0 .../loader/embedded_visualize_handler.test.ts | 2 +- ...ck.ts => report_info_button.test.mocks.ts} | 0 .../components/report_info_button.test.tsx | 2 +- ....mock.ts => polling_service.test.mocks.ts} | 0 .../reindex/polling_service.test.ts | 2 +- ...y.mock.ts => file_integrity.test.mocks.ts} | 0 .../server/lib/file_integrity.test.ts | 2 +- 57 files changed, 93 insertions(+), 38 deletions(-) rename src/core/public/{core_system.mock.ts => core_system.test.mocks.ts} (100%) rename src/core/public/fatal_errors/{fatal_errors_service.mock.ts => fatal_errors_service.test.mocks.ts} (100%) rename src/core/public/notifications/toasts/{toasts_service.mock.ts => toasts_service.test.mocks.ts} (100%) rename src/core/public/ui_settings/{ui_settings_service.mock.ts => ui_settings_service.test.mocks.ts} (100%) create mode 100644 src/core/server/config/config_service.test.mocks.ts rename src/core/server/config/{env.mock.ts => env.test.mocks.ts} (100%) rename src/core/server/config/{raw_config_service.mock.ts => raw_config_service.test.mocks.ts} (100%) rename src/core/server/elasticsearch/{cluster_client.mock.ts => cluster_client.test.mocks.ts} (100%) rename src/core/server/elasticsearch/{elasticsearch_client_config.mock.ts => elasticsearch_client_config.test.mocks.ts} (100%) create mode 100644 src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts create mode 100644 src/core/server/http/http_service.test.mocks.ts rename src/core/server/{index.mock.ts => index.test.mocks.ts} (100%) rename src/core/server/logging/appenders/{appenders.mock.ts => appenders.test.mocks.ts} (100%) rename src/core/server/logging/appenders/file/{file_appender.mock.ts => file_appender.test.mocks.ts} (100%) rename src/core/server/plugins/discovery/{plugin_discovery.mock.ts => plugin_discovery.test.mocks.ts} (100%) rename src/core/server/plugins/discovery/{plugin_manifest_parser.mock.ts => plugin_manifest_parser.test.mocks.ts} (100%) rename src/core/server/plugins/{plugins_service.mock.ts => plugins_service.test.mocks.ts} (100%) rename src/core/server/plugins/{plugins_system.mock.ts => plugins_system.test.mocks.ts} (100%) rename src/core/server/root/{index.mock.ts => index.test.mocks.ts} (100%) rename src/dev/i18n/{integrate_locale_files.mock.ts => integrate_locale_files.test.mocks.ts} (100%) rename src/legacy/core_plugins/kibana/public/visualize/wizard/{new_vis_modal.mock.ts => new_vis_modal.test.mocks.ts} (100%) rename src/legacy/ui/public/query_bar/components/{query_bar.mock.ts => query_bar.test.mocks.ts} (100%) rename src/legacy/ui/public/utils/{subscribe_with_scope.mock.ts => subscribe_with_scope.test.mocks.ts} (100%) rename src/legacy/ui/public/visualize/loader/{embedded_visualize_handler.mock.ts => embedded_visualize_handler.test.mocks.ts} (100%) rename x-pack/plugins/reporting/public/components/{report_info_button.mock.ts => report_info_button.test.mocks.ts} (100%) rename x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/{polling_service.mock.ts => polling_service.test.mocks.ts} (100%) rename x-pack/plugins/xpack_main/server/lib/{file_integrity.mock.ts => file_integrity.test.mocks.ts} (100%) diff --git a/src/core/public/core_system.mock.ts b/src/core/public/core_system.test.mocks.ts similarity index 100% rename from src/core/public/core_system.mock.ts rename to src/core/public/core_system.test.mocks.ts diff --git a/src/core/public/core_system.test.ts b/src/core/public/core_system.test.ts index a381632529b353..c552f3df0e851a 100644 --- a/src/core/public/core_system.test.ts +++ b/src/core/public/core_system.test.ts @@ -33,7 +33,7 @@ import { MockNotificationsService, mockNotificationStart, MockUiSettingsService, -} from './core_system.mock'; +} from './core_system.test.mocks'; import { CoreSystem } from './core_system'; jest.spyOn(CoreSystem.prototype, 'stop'); diff --git a/src/core/public/fatal_errors/fatal_errors_service.mock.ts b/src/core/public/fatal_errors/fatal_errors_service.test.mocks.ts similarity index 100% rename from src/core/public/fatal_errors/fatal_errors_service.mock.ts rename to src/core/public/fatal_errors/fatal_errors_service.test.mocks.ts diff --git a/src/core/public/fatal_errors/fatal_errors_service.test.ts b/src/core/public/fatal_errors/fatal_errors_service.test.ts index 2008334c97ea8b..0b23de69c45fb2 100644 --- a/src/core/public/fatal_errors/fatal_errors_service.test.ts +++ b/src/core/public/fatal_errors/fatal_errors_service.test.ts @@ -24,7 +24,7 @@ expect.addSnapshotSerializer({ print: () => `Rx.Observable`, }); -import { mockRender } from './fatal_errors_service.mock'; +import { mockRender } from './fatal_errors_service.test.mocks'; import { FatalErrorsService } from './fatal_errors_service'; diff --git a/src/core/public/notifications/toasts/toasts_service.mock.ts b/src/core/public/notifications/toasts/toasts_service.test.mocks.ts similarity index 100% rename from src/core/public/notifications/toasts/toasts_service.mock.ts rename to src/core/public/notifications/toasts/toasts_service.test.mocks.ts diff --git a/src/core/public/notifications/toasts/toasts_service.test.tsx b/src/core/public/notifications/toasts/toasts_service.test.tsx index e3ebe05bf74de6..564f801122a754 100644 --- a/src/core/public/notifications/toasts/toasts_service.test.tsx +++ b/src/core/public/notifications/toasts/toasts_service.test.tsx @@ -17,7 +17,7 @@ * under the License. */ -import { mockReactDomRender, mockReactDomUnmount } from './toasts_service.mock'; +import { mockReactDomRender, mockReactDomUnmount } from './toasts_service.test.mocks'; import { ToastsService } from './toasts_service'; import { ToastsStart } from './toasts_start'; diff --git a/src/core/public/ui_settings/ui_settings_service.mock.ts b/src/core/public/ui_settings/ui_settings_service.test.mocks.ts similarity index 100% rename from src/core/public/ui_settings/ui_settings_service.mock.ts rename to src/core/public/ui_settings/ui_settings_service.test.mocks.ts diff --git a/src/core/public/ui_settings/ui_settings_service.test.ts b/src/core/public/ui_settings/ui_settings_service.test.ts index a77096af7516ae..cf5ef3e34d87c8 100644 --- a/src/core/public/ui_settings/ui_settings_service.test.ts +++ b/src/core/public/ui_settings/ui_settings_service.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { MockUiSettingsApi, MockUiSettingsClient } from './ui_settings_service.mock'; +import { MockUiSettingsApi, MockUiSettingsClient } from './ui_settings_service.test.mocks'; // Load the service import { UiSettingsService } from './ui_settings_service'; diff --git a/src/core/server/config/config_service.mock.ts b/src/core/server/config/config_service.mock.ts index dabe7a7810fff1..55c151edaaa458 100644 --- a/src/core/server/config/config_service.mock.ts +++ b/src/core/server/config/config_service.mock.ts @@ -16,8 +16,6 @@ * specific language governing permissions and limitations * under the License. */ -export const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); -jest.mock('../../../../package.json', () => mockPackage); import { BehaviorSubject } from 'rxjs'; import { ObjectToConfigAdapter } from './object_to_config_adapter'; diff --git a/src/core/server/config/config_service.test.mocks.ts b/src/core/server/config/config_service.test.mocks.ts new file mode 100644 index 00000000000000..8fa1ec997d6258 --- /dev/null +++ b/src/core/server/config/config_service.test.mocks.ts @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); +jest.mock('../../../../package.json', () => mockPackage); diff --git a/src/core/server/config/config_service.test.ts b/src/core/server/config/config_service.test.ts index 447959a079814f..a054786c80f7d0 100644 --- a/src/core/server/config/config_service.test.ts +++ b/src/core/server/config/config_service.test.ts @@ -22,7 +22,7 @@ import { BehaviorSubject } from 'rxjs'; import { first } from 'rxjs/operators'; -import { mockPackage } from './config_service.mock'; +import { mockPackage } from './config_service.test.mocks'; import { schema, Type, TypeOf } from '@kbn/config-schema'; diff --git a/src/core/server/config/env.mock.ts b/src/core/server/config/env.test.mocks.ts similarity index 100% rename from src/core/server/config/env.mock.ts rename to src/core/server/config/env.test.mocks.ts diff --git a/src/core/server/config/env.test.ts b/src/core/server/config/env.test.ts index 4bfb1bced1d082..13bd05c3b1c842 100644 --- a/src/core/server/config/env.test.ts +++ b/src/core/server/config/env.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockPackage } from './env.mock'; +import { mockPackage } from './env.test.mocks'; import { Env } from '.'; import { getEnvOptions } from './__mocks__/env'; diff --git a/src/core/server/config/raw_config_service.mock.ts b/src/core/server/config/raw_config_service.test.mocks.ts similarity index 100% rename from src/core/server/config/raw_config_service.mock.ts rename to src/core/server/config/raw_config_service.test.mocks.ts diff --git a/src/core/server/config/raw_config_service.test.ts b/src/core/server/config/raw_config_service.test.ts index 87c541d75f77ef..361cef0d042ea9 100644 --- a/src/core/server/config/raw_config_service.test.ts +++ b/src/core/server/config/raw_config_service.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockGetConfigFromFiles } from './raw_config_service.mock'; +import { mockGetConfigFromFiles } from './raw_config_service.test.mocks'; import { first } from 'rxjs/operators'; import { RawConfigService } from '.'; diff --git a/src/core/server/elasticsearch/cluster_client.mock.ts b/src/core/server/elasticsearch/cluster_client.test.mocks.ts similarity index 100% rename from src/core/server/elasticsearch/cluster_client.mock.ts rename to src/core/server/elasticsearch/cluster_client.test.mocks.ts diff --git a/src/core/server/elasticsearch/cluster_client.test.ts b/src/core/server/elasticsearch/cluster_client.test.ts index 459153d3ded7e6..30a1ac7a038ede 100644 --- a/src/core/server/elasticsearch/cluster_client.test.ts +++ b/src/core/server/elasticsearch/cluster_client.test.ts @@ -23,7 +23,7 @@ import { MockClient, mockParseElasticsearchClientConfig, MockScopedClusterClient, -} from './cluster_client.mock'; +} from './cluster_client.test.mocks'; import { errors } from 'elasticsearch'; import { get } from 'lodash'; diff --git a/src/core/server/elasticsearch/elasticsearch_client_config.mock.ts b/src/core/server/elasticsearch/elasticsearch_client_config.test.mocks.ts similarity index 100% rename from src/core/server/elasticsearch/elasticsearch_client_config.mock.ts rename to src/core/server/elasticsearch/elasticsearch_client_config.test.mocks.ts diff --git a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts index 306feedd8649ca..64fb41cb3e4e5a 100644 --- a/src/core/server/elasticsearch/elasticsearch_client_config.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_client_config.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockReadFileSync } from './elasticsearch_client_config.mock'; +import { mockReadFileSync } from './elasticsearch_client_config.test.mocks'; import { duration } from 'moment'; import { loggingServiceMock } from '../logging/logging_service.mock'; diff --git a/src/core/server/elasticsearch/elasticsearch_service.mock.ts b/src/core/server/elasticsearch/elasticsearch_service.mock.ts index 0a2b0821a6ddc0..0470ef6004eb2b 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.mock.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.mock.ts @@ -17,9 +17,6 @@ * under the License. */ -export const MockClusterClient = jest.fn(); -jest.mock('./cluster_client', () => ({ ClusterClient: MockClusterClient })); - import { BehaviorSubject } from 'rxjs'; import { ClusterClient } from './cluster_client'; import { ElasticsearchConfig } from './elasticsearch_config'; diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts b/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts new file mode 100644 index 00000000000000..e87913a3c5e4ff --- /dev/null +++ b/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const MockClusterClient = jest.fn(); +jest.mock('./cluster_client', () => ({ ClusterClient: MockClusterClient })); diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts index 00404582db56cf..d1dc9309b32c72 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts @@ -19,7 +19,7 @@ import { first } from 'rxjs/operators'; -import { MockClusterClient } from './elasticsearch_service.mock'; +import { MockClusterClient } from './elasticsearch_service.test.mocks'; import { BehaviorSubject, combineLatest } from 'rxjs'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; diff --git a/src/core/server/http/http_service.mock.ts b/src/core/server/http/http_service.mock.ts index c91b6deed8b4a9..27ead07ba0e4a5 100644 --- a/src/core/server/http/http_service.mock.ts +++ b/src/core/server/http/http_service.mock.ts @@ -17,12 +17,6 @@ * under the License. */ -export const mockHttpServer = jest.fn(); - -jest.mock('./http_server', () => ({ - HttpServer: mockHttpServer, -})); - import { Server, ServerOptions } from 'hapi'; import { HttpService } from './http_service'; diff --git a/src/core/server/http/http_service.test.mocks.ts b/src/core/server/http/http_service.test.mocks.ts new file mode 100644 index 00000000000000..a0d7ff5069eb0b --- /dev/null +++ b/src/core/server/http/http_service.test.mocks.ts @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const mockHttpServer = jest.fn(); + +jest.mock('./http_server', () => ({ + HttpServer: mockHttpServer, +})); diff --git a/src/core/server/http/http_service.test.ts b/src/core/server/http/http_service.test.ts index 20c0d6b30c2f02..fd773b749293ff 100644 --- a/src/core/server/http/http_service.test.ts +++ b/src/core/server/http/http_service.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockHttpServer } from './http_service.mock'; +import { mockHttpServer } from './http_service.test.mocks'; import { noop } from 'lodash'; import { BehaviorSubject } from 'rxjs'; diff --git a/src/core/server/index.mock.ts b/src/core/server/index.test.mocks.ts similarity index 100% rename from src/core/server/index.mock.ts rename to src/core/server/index.test.mocks.ts diff --git a/src/core/server/index.test.ts b/src/core/server/index.test.ts index bc1cba5b90e5f0..9d94ec05b23a4f 100644 --- a/src/core/server/index.test.ts +++ b/src/core/server/index.test.ts @@ -22,7 +22,7 @@ import { httpService, mockLegacyService, mockPluginsService, -} from './index.mock'; +} from './index.test.mocks'; import { BehaviorSubject } from 'rxjs'; import { Server } from '.'; diff --git a/src/core/server/logging/appenders/appenders.mock.ts b/src/core/server/logging/appenders/appenders.test.mocks.ts similarity index 100% rename from src/core/server/logging/appenders/appenders.mock.ts rename to src/core/server/logging/appenders/appenders.test.mocks.ts diff --git a/src/core/server/logging/appenders/appenders.test.ts b/src/core/server/logging/appenders/appenders.test.ts index cbb10ee2b4acdc..7cfd2158be3389 100644 --- a/src/core/server/logging/appenders/appenders.test.ts +++ b/src/core/server/logging/appenders/appenders.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockCreateLayout } from './appenders.mock'; +import { mockCreateLayout } from './appenders.test.mocks'; import { LegacyAppender } from '../../legacy/logging/appenders/legacy_appender'; import { Appenders } from './appenders'; diff --git a/src/core/server/logging/appenders/file/file_appender.mock.ts b/src/core/server/logging/appenders/file/file_appender.test.mocks.ts similarity index 100% rename from src/core/server/logging/appenders/file/file_appender.mock.ts rename to src/core/server/logging/appenders/file/file_appender.test.mocks.ts diff --git a/src/core/server/logging/appenders/file/file_appender.test.ts b/src/core/server/logging/appenders/file/file_appender.test.ts index 6ae31649e736cf..fccca629f7d60f 100644 --- a/src/core/server/logging/appenders/file/file_appender.test.ts +++ b/src/core/server/logging/appenders/file/file_appender.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockCreateWriteStream } from './file_appender.mock'; +import { mockCreateWriteStream } from './file_appender.test.mocks'; import { LogLevel } from '../../log_level'; import { LogRecord } from '../../log_record'; diff --git a/src/core/server/plugins/discovery/plugin_discovery.mock.ts b/src/core/server/plugins/discovery/plugin_discovery.test.mocks.ts similarity index 100% rename from src/core/server/plugins/discovery/plugin_discovery.mock.ts rename to src/core/server/plugins/discovery/plugin_discovery.test.mocks.ts diff --git a/src/core/server/plugins/discovery/plugin_discovery.test.ts b/src/core/server/plugins/discovery/plugin_discovery.test.ts index 15f8992f171204..ac02a21cbe7a76 100644 --- a/src/core/server/plugins/discovery/plugin_discovery.test.ts +++ b/src/core/server/plugins/discovery/plugin_discovery.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockPackage, mockReaddir, mockReadFile, mockStat } from './plugin_discovery.mock'; +import { mockPackage, mockReaddir, mockReadFile, mockStat } from './plugin_discovery.test.mocks'; import { resolve } from 'path'; import { BehaviorSubject } from 'rxjs'; diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.mock.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.test.mocks.ts similarity index 100% rename from src/core/server/plugins/discovery/plugin_manifest_parser.mock.ts rename to src/core/server/plugins/discovery/plugin_manifest_parser.test.mocks.ts diff --git a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts index ea6423ffdfbc3e..082cd82e5e1f00 100644 --- a/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts +++ b/src/core/server/plugins/discovery/plugin_manifest_parser.test.ts @@ -19,7 +19,7 @@ import { PluginDiscoveryErrorType } from './plugin_discovery_error'; -import { mockReadFile } from './plugin_manifest_parser.mock'; +import { mockReadFile } from './plugin_manifest_parser.test.mocks'; import { resolve } from 'path'; import { parseManifest } from './plugin_manifest_parser'; diff --git a/src/core/server/plugins/plugins_service.mock.ts b/src/core/server/plugins/plugins_service.test.mocks.ts similarity index 100% rename from src/core/server/plugins/plugins_service.mock.ts rename to src/core/server/plugins/plugins_service.test.mocks.ts diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index 0dfa79784b3934..526976aad27930 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockDiscover, mockPackage } from './plugins_service.mock'; +import { mockDiscover, mockPackage } from './plugins_service.test.mocks'; import { resolve } from 'path'; import { BehaviorSubject, from } from 'rxjs'; diff --git a/src/core/server/plugins/plugins_system.mock.ts b/src/core/server/plugins/plugins_system.test.mocks.ts similarity index 100% rename from src/core/server/plugins/plugins_system.mock.ts rename to src/core/server/plugins/plugins_system.test.mocks.ts diff --git a/src/core/server/plugins/plugins_system.test.ts b/src/core/server/plugins/plugins_system.test.ts index 46ae6b40411d68..716c502d070a26 100644 --- a/src/core/server/plugins/plugins_system.test.ts +++ b/src/core/server/plugins/plugins_system.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockCreatePluginStartContext } from './plugins_system.mock'; +import { mockCreatePluginStartContext } from './plugins_system.test.mocks'; import { BehaviorSubject } from 'rxjs'; import { Config, ConfigService, Env, ObjectToConfigAdapter } from '../config'; diff --git a/src/core/server/root/index.mock.ts b/src/core/server/root/index.test.mocks.ts similarity index 100% rename from src/core/server/root/index.mock.ts rename to src/core/server/root/index.test.mocks.ts diff --git a/src/core/server/root/index.test.ts b/src/core/server/root/index.test.ts index 809461fc4283de..d05418619ab31a 100644 --- a/src/core/server/root/index.test.ts +++ b/src/core/server/root/index.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { configService, logger, mockServer } from './index.mock'; +import { configService, logger, mockServer } from './index.test.mocks'; import { BehaviorSubject } from 'rxjs'; import { filter, first } from 'rxjs/operators'; diff --git a/src/dev/i18n/integrate_locale_files.mock.ts b/src/dev/i18n/integrate_locale_files.test.mocks.ts similarity index 100% rename from src/dev/i18n/integrate_locale_files.mock.ts rename to src/dev/i18n/integrate_locale_files.test.mocks.ts diff --git a/src/dev/i18n/integrate_locale_files.test.ts b/src/dev/i18n/integrate_locale_files.test.ts index 3621e028a979d1..7d7d1ba7446849 100644 --- a/src/dev/i18n/integrate_locale_files.test.ts +++ b/src/dev/i18n/integrate_locale_files.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { mockMakeDirAsync, mockWriteFileAsync } from './integrate_locale_files.mock'; +import { mockMakeDirAsync, mockWriteFileAsync } from './integrate_locale_files.test.mocks'; import path from 'path'; import { integrateLocaleFiles, verifyMessages } from './integrate_locale_files'; diff --git a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.mock.ts b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.mocks.ts similarity index 100% rename from src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.mock.ts rename to src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.mocks.ts diff --git a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx index f05cc3a2d75d03..fbb3faf7b3564d 100644 --- a/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx +++ b/src/legacy/core_plugins/kibana/public/visualize/wizard/new_vis_modal.test.tsx @@ -20,7 +20,7 @@ import React from 'react'; import { mountWithIntl } from 'test_utils/enzyme_helpers'; -import { settingsGet } from './new_vis_modal.mock'; +import { settingsGet } from './new_vis_modal.test.mocks'; import { NewVisModal } from './new_vis_modal'; diff --git a/src/legacy/ui/public/query_bar/components/query_bar.mock.ts b/src/legacy/ui/public/query_bar/components/query_bar.test.mocks.ts similarity index 100% rename from src/legacy/ui/public/query_bar/components/query_bar.mock.ts rename to src/legacy/ui/public/query_bar/components/query_bar.test.mocks.ts diff --git a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx index bb395bc5eb41b0..f6947574bee160 100644 --- a/src/legacy/ui/public/query_bar/components/query_bar.test.tsx +++ b/src/legacy/ui/public/query_bar/components/query_bar.test.tsx @@ -22,7 +22,7 @@ import { mockGetAutocompleteSuggestions, mockPersistedLog, mockPersistedLogFactory, -} from 'ui/query_bar/components/query_bar.mock'; +} from 'ui/query_bar/components/query_bar.test.mocks'; import { EuiFieldText } from '@elastic/eui'; import React from 'react'; diff --git a/src/legacy/ui/public/utils/subscribe_with_scope.mock.ts b/src/legacy/ui/public/utils/subscribe_with_scope.test.mocks.ts similarity index 100% rename from src/legacy/ui/public/utils/subscribe_with_scope.mock.ts rename to src/legacy/ui/public/utils/subscribe_with_scope.test.mocks.ts diff --git a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts index 19f1d24a8e121d..077875c5ac6e5b 100644 --- a/src/legacy/ui/public/utils/subscribe_with_scope.test.ts +++ b/src/legacy/ui/public/utils/subscribe_with_scope.test.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { mockFatalError } from './subscribe_with_scope.mock'; +import { mockFatalError } from './subscribe_with_scope.test.mocks'; import * as Rx from 'rxjs'; import { subscribeWithScope } from './subscribe_with_scope'; diff --git a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.mock.ts b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.mocks.ts similarity index 100% rename from src/legacy/ui/public/visualize/loader/embedded_visualize_handler.mock.ts rename to src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.mocks.ts diff --git a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts index 2046a72a34baa2..e5a4eb122dc888 100644 --- a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts +++ b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { mockDataLoaderFetch, timefilter } from './embedded_visualize_handler.mock'; +import { mockDataLoaderFetch, timefilter } from './embedded_visualize_handler.test.mocks'; // @ts-ignore import MockState from '../../../../../fixtures/mock_state'; diff --git a/x-pack/plugins/reporting/public/components/report_info_button.mock.ts b/x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts similarity index 100% rename from x-pack/plugins/reporting/public/components/report_info_button.mock.ts rename to x-pack/plugins/reporting/public/components/report_info_button.test.mocks.ts diff --git a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx index edfe6d8ff22572..3b9c2a84854230 100644 --- a/x-pack/plugins/reporting/public/components/report_info_button.test.tsx +++ b/x-pack/plugins/reporting/public/components/report_info_button.test.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { mockJobQueueClient } from './report_info_button.mock'; +import { mockJobQueueClient } from './report_info_button.test.mocks'; import React from 'react'; import { mountWithIntl } from 'test_utils/enzyme_helpers'; diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.mock.ts b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.mocks.ts similarity index 100% rename from x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.mock.ts rename to x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.mocks.ts diff --git a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts index 1f8fcebb17d90c..9f47f51bc8cde6 100644 --- a/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts +++ b/x-pack/plugins/upgrade_assistant/public/components/tabs/checkup/deprecations/reindex/polling_service.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { mockClient } from './polling_service.mock'; +import { mockClient } from './polling_service.test.mocks'; import { ReindexStatus, ReindexStep } from '../../../../../../common/types'; import { ReindexPollingService } from './polling_service'; diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.mock.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts similarity index 100% rename from x-pack/plugins/xpack_main/server/lib/file_integrity.mock.ts rename to x-pack/plugins/xpack_main/server/lib/file_integrity.test.mocks.ts diff --git a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts index 81fd5a61490b37..668b0d0c21088b 100644 --- a/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts +++ b/x-pack/plugins/xpack_main/server/lib/file_integrity.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import './file_integrity.mock'; +import './file_integrity.test.mocks'; import { getIntegrityHash, getIntegrityHashes } from './file_integrity'; From 577e165ffa5190f66364b300b1937027548a816d Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 14 Mar 2019 16:58:13 +0000 Subject: [PATCH 32/56] fix(NA): babel 7 polyfill in the tests bundle. --- packages/kbn-plugin-helpers/lib/utils.js | 2 +- src/legacy/core_plugins/tests_bundle/tests_entry_template.js | 2 +- src/setup_node_env/babel_register/polyfill.js | 2 +- src/setup_node_env/babel_register/register.js | 2 +- x-pack/plugins/monitoring/README.md | 2 +- x-pack/plugins/searchprofiler/README.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/kbn-plugin-helpers/lib/utils.js b/packages/kbn-plugin-helpers/lib/utils.js index ee82b9a8fd57d7..d9a5b9148208f1 100644 --- a/packages/kbn-plugin-helpers/lib/utils.js +++ b/packages/kbn-plugin-helpers/lib/utils.js @@ -25,7 +25,7 @@ function babelRegister() { const plugin = pluginConfig(); try { - // add support for moved babel-register source: https://github.com/elastic/kibana/pull/13973 + // add support for moved @babel/register source: https://github.com/elastic/kibana/pull/13973 require(resolve(plugin.kibanaRoot, 'src/setup_node_env/babel_register')); // eslint-disable-line import/no-dynamic-require } catch (error) { if (error.code === 'MODULE_NOT_FOUND') { diff --git a/src/legacy/core_plugins/tests_bundle/tests_entry_template.js b/src/legacy/core_plugins/tests_bundle/tests_entry_template.js index b86915a1dcdcfb..3c574836af52ef 100644 --- a/src/legacy/core_plugins/tests_bundle/tests_entry_template.js +++ b/src/legacy/core_plugins/tests_bundle/tests_entry_template.js @@ -30,7 +30,7 @@ export const createTestEntryTemplate = (defaultUiSettings) => (bundle) => ` */ // import global polyfills before everything else -import 'babel-polyfill'; +import '@babel/polyfill'; import 'custom-event-polyfill'; import 'whatwg-fetch'; import 'abortcontroller-polyfill'; diff --git a/src/setup_node_env/babel_register/polyfill.js b/src/setup_node_env/babel_register/polyfill.js index 0318b4af45dc6f..4e92583f830e57 100644 --- a/src/setup_node_env/babel_register/polyfill.js +++ b/src/setup_node_env/babel_register/polyfill.js @@ -21,7 +21,7 @@ // statement into a list of import statements based on the polyfills // necessary for our target environment (the current version of node) // but since it does that during compilation, `import '@babel/polyfill'` -// must be in a file that is loaded with `require()` AFTER `babel-register` +// must be in a file that is loaded with `require()` AFTER `@babel/register` // is configured. // // This is why we have this single statement in it's own file and require diff --git a/src/setup_node_env/babel_register/register.js b/src/setup_node_env/babel_register/register.js index 6d7361ab2a194c..37e39d4685cacb 100644 --- a/src/setup_node_env/babel_register/register.js +++ b/src/setup_node_env/babel_register/register.js @@ -25,7 +25,7 @@ if (!process.env.BABEL_CACHE_PATH) { process.env.BABEL_CACHE_PATH = resolve(__dirname, '../../../optimize/.babelcache.json'); } -// paths that babel-register should ignore +// paths that @babel/register should ignore var ignore = [ /\/bower_components\//, /\/kbn-pm\/dist\//, diff --git a/x-pack/plugins/monitoring/README.md b/x-pack/plugins/monitoring/README.md index a161fb0180a100..3659f4d2fa0f77 100644 --- a/x-pack/plugins/monitoring/README.md +++ b/x-pack/plugins/monitoring/README.md @@ -32,7 +32,7 @@ Drawer. Add a `debugger` line to create a breakpoint, and then: ``` - gulp sync && mocha debug --compilers js:babel-register /pathto/kibana/plugins/monitoring/pathto/__tests__/testfile.js + gulp sync && mocha debug --compilers js:@babel/register /pathto/kibana/plugins/monitoring/pathto/__tests__/testfile.js ``` ## Multicluster Setup for Development diff --git a/x-pack/plugins/searchprofiler/README.md b/x-pack/plugins/searchprofiler/README.md index 54bbd1203235d3..1dec1bb4e54504 100644 --- a/x-pack/plugins/searchprofiler/README.md +++ b/x-pack/plugins/searchprofiler/README.md @@ -19,7 +19,7 @@ If you have installed this somewhere other than via x-plugins, and next to the k To run the server tests, change into `x-plugins/kibana` and run: ```bash -mocha --debug --compilers js:babel/register plugins/profiler/**/__tests__/**/*.js +mocha --debug --compilers js:@babel/register plugins/profiler/**/__tests__/**/*.js ``` From 1a14a64fc4e6a2df369b75f31bc121c9a59cce4c Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 14 Mar 2019 19:05:20 +0000 Subject: [PATCH 33/56] chore(NA): restore needed step in order to compile x-pack with typescript. --- x-pack/tasks/build.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/x-pack/tasks/build.js b/x-pack/tasks/build.js index 3b1e77e3664074..59033bb40c7d3c 100644 --- a/x-pack/tasks/build.js +++ b/x-pack/tasks/build.js @@ -4,12 +4,22 @@ * you may not use this file except in compliance with the Elastic License. */ +import del from 'del'; import { resolve } from 'path'; import { writeFileSync } from 'fs'; import pluginHelpers from '@kbn/plugin-helpers'; import { ToolingLog } from '@kbn/dev-utils'; import { generateNoticeFromSource } from '../../src/dev'; +async function moveFiles(gulp, src, dest) { + return new Promise((resolve, reject) => { + gulp.src(src) + .pipe(gulp.dest(dest)) + .on('finish', resolve) + .on('error', reject); + }); +} + export default (gulp, { buildTarget }) => { gulp.task('build', ['clean', 'report', 'prepare:build'], async () => { const buildRoot = resolve(buildTarget, 'kibana/x-pack'); @@ -18,6 +28,21 @@ export default (gulp, { buildTarget }) => { buildDestination: buildTarget, }); + // NOTE: In order to prevent ending up with transpiled js files + // in the repository, we have set the outDir on x-pack tsconfig file + // to be the same as the intermediateBuildDirectory defined on the package.json + // As result of it, we need to move the transpiled js files for the correct folder + // and in the end deleting the generated outDir from the intermediateBuildDirectory. + // + //# TODO: This might be able to go away as soon as we upgrade the x-pack build to use babel7 + await moveFiles( + gulp, + resolve(buildRoot, 'x-pack/build/plugin/kibana/x-pack/**/!(*.test).js'), + buildRoot + ); + await del(resolve(buildRoot, 'x-pack')); + //# + const log = new ToolingLog({ level: 'info', writeTo: process.stdout From 2707d538f5126c582a00580a8489361592c80d70 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 15 Mar 2019 06:02:37 +0000 Subject: [PATCH 34/56] chore(NA): change build to compile typescript with babel for the oss code. chore(NA): change transpile typescript task to only transpile types for x-pack. refact(NA): common preset for babel 7 --- packages/kbn-babel-preset/common_preset.js | 5 +-- src/dev/build/build_distributables.js | 6 ++-- src/dev/build/tasks/index.js | 2 +- src/dev/build/tasks/transpile_babel_task.js | 3 +- ....js => transpile_typescript_types_task.js} | 36 +++---------------- 5 files changed, 11 insertions(+), 41 deletions(-) rename src/dev/build/tasks/{transpile_typescript_task.js => transpile_typescript_types_task.js} (56%) diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index 35b57eed7ba55d..c7bb0d925df96b 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -19,15 +19,12 @@ module.exports = { presets: [ + require.resolve('@babel/preset-react'), require.resolve('@babel/preset-typescript'), - require.resolve('@babel/preset-react') ], plugins: [ require.resolve('babel-plugin-add-module-exports'), // stage 3 - require.resolve('@babel/plugin-proposal-async-generator-functions'), - require.resolve('@babel/plugin-proposal-export-default-from'), - require.resolve('@babel/plugin-proposal-object-rest-spread'), require.resolve('@babel/plugin-transform-modules-commonjs'), // the class properties proposal was merged with the private fields proposal diff --git a/src/dev/build/build_distributables.js b/src/dev/build/build_distributables.js index cda00064162f29..95b08cb2e89465 100644 --- a/src/dev/build/build_distributables.js +++ b/src/dev/build/build_distributables.js @@ -47,7 +47,7 @@ import { RemovePackageJsonDepsTask, RemoveWorkspacesTask, TranspileBabelTask, - TranspileTypescriptTask, + TranspileTypescriptTypesTask, TranspileScssTask, UpdateLicenseFileTask, VerifyEnvTask, @@ -110,18 +110,18 @@ export async function buildDistributables(options) { await run(CreateEmptyDirsAndFilesTask); await run(CreateReadmeTask); await run(TranspileBabelTask); - await run(TranspileTypescriptTask); + await run(TranspileTypescriptTypesTask); await run(BuildPackagesTask); await run(CreatePackageJsonTask); await run(InstallDependenciesTask); await run(RemoveWorkspacesTask); - await run(CleanTypescriptTask); await run(CleanPackagesTask); await run(CreateNoticeFileTask); await run(UpdateLicenseFileTask); await run(RemovePackageJsonDepsTask); await run(TranspileScssTask); await run(OptimizeBuildTask); + await run(CleanTypescriptTask); await run(CleanClientModulesOnDLLTask); await run(CleanExtraFilesFromModulesTask); await run(CleanEmptyFoldersTask); diff --git a/src/dev/build/tasks/index.js b/src/dev/build/tasks/index.js index ecf86d6af23eb6..d9d16f1787dd1c 100644 --- a/src/dev/build/tasks/index.js +++ b/src/dev/build/tasks/index.js @@ -33,7 +33,7 @@ export * from './notice_file_task'; export * from './optimize_task'; export * from './os_packages'; export * from './transpile_babel_task'; -export * from './transpile_typescript_task'; +export * from './transpile_typescript_types_task'; export * from './transpile_scss_task'; export * from './verify_env_task'; export * from './write_sha_sums_task'; diff --git a/src/dev/build/tasks/transpile_babel_task.js b/src/dev/build/tasks/transpile_babel_task.js index 1ea3d815839180..bdc1329b712394 100644 --- a/src/dev/build/tasks/transpile_babel_task.js +++ b/src/dev/build/tasks/transpile_babel_task.js @@ -29,7 +29,8 @@ export const TranspileBabelTask = { await createPromiseFromStreams([ vfs.src( [ - '**/*.js', + '**/*.{js,ts,tsx}', + '!**/*.d.ts', '!packages/**', '!**/public/**', '!**/node_modules/**', diff --git a/src/dev/build/tasks/transpile_typescript_task.js b/src/dev/build/tasks/transpile_typescript_types_task.js similarity index 56% rename from src/dev/build/tasks/transpile_typescript_task.js rename to src/dev/build/tasks/transpile_typescript_types_task.js index a3be2e1d0c2ecf..76edd1cd9edd74 100644 --- a/src/dev/build/tasks/transpile_typescript_task.js +++ b/src/dev/build/tasks/transpile_typescript_types_task.js @@ -17,48 +17,20 @@ * under the License. */ -import { exec, write } from '../lib'; +import { exec } from '../lib'; import { Project } from '../../typescript'; -export const TranspileTypescriptTask = { - description: 'Transpiling sources with typescript compiler', +export const TranspileTypescriptTypesTask = { + description: 'Transpiling types with typescript compiler', async run(config, log, build) { // the types project is built inside the repo so x-pack can use it for it's in-repo build. const typesProjectRepo = new Project(config.resolveFromRepo('tsconfig.types.json')); const typesProjectBuild = new Project(build.resolvePath('tsconfig.types.json')); - // these projects are built in the build folder - const defaultProject = new Project(build.resolvePath('tsconfig.json')); - const browserProject = new Project(build.resolvePath('tsconfig.browser.json')); - - // update the default config to exclude **/public/**/* files - await write(defaultProject.tsConfigPath, JSON.stringify({ - ...defaultProject.config, - exclude: [ - ...defaultProject.config.exclude, - 'src/**/public/**/*' - ] - })); - - // update the browser config file to include **/public/**/* files - await write(browserProject.tsConfigPath, JSON.stringify({ - ...browserProject.config, - include: [ - ...browserProject.config.include, - 'src/**/public/**/*', - 'typings/**/*' - ] - })); - const projects = [ typesProjectRepo.tsConfigPath, - typesProjectBuild.tsConfigPath, - // Browser needs to be compiled before server code so that any shared code - // is compiled to the lowest common denominator (server's CommonJS format) - // which can be supported by both environments. - browserProject.tsConfigPath, - defaultProject.tsConfigPath, + typesProjectBuild.tsConfigPath ]; // compile each typescript config file From 892960b712000d2fb68543a97d7b4153830d4d52 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 15 Mar 2019 18:28:43 +0000 Subject: [PATCH 35/56] Revert "chore(NA): change build to compile typescript with babel for the oss code. chore(NA): change transpile typescript task to only transpile types for x-pack. refact(NA): common preset for babel 7" This reverts commit 2707d538f5126c582a00580a8489361592c80d70. --- packages/kbn-babel-preset/common_preset.js | 5 ++- src/dev/build/build_distributables.js | 6 ++-- src/dev/build/tasks/index.js | 2 +- src/dev/build/tasks/transpile_babel_task.js | 3 +- ...s_task.js => transpile_typescript_task.js} | 36 ++++++++++++++++--- 5 files changed, 41 insertions(+), 11 deletions(-) rename src/dev/build/tasks/{transpile_typescript_types_task.js => transpile_typescript_task.js} (56%) diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index c7bb0d925df96b..35b57eed7ba55d 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -19,12 +19,15 @@ module.exports = { presets: [ - require.resolve('@babel/preset-react'), require.resolve('@babel/preset-typescript'), + require.resolve('@babel/preset-react') ], plugins: [ require.resolve('babel-plugin-add-module-exports'), // stage 3 + require.resolve('@babel/plugin-proposal-async-generator-functions'), + require.resolve('@babel/plugin-proposal-export-default-from'), + require.resolve('@babel/plugin-proposal-object-rest-spread'), require.resolve('@babel/plugin-transform-modules-commonjs'), // the class properties proposal was merged with the private fields proposal diff --git a/src/dev/build/build_distributables.js b/src/dev/build/build_distributables.js index 95b08cb2e89465..cda00064162f29 100644 --- a/src/dev/build/build_distributables.js +++ b/src/dev/build/build_distributables.js @@ -47,7 +47,7 @@ import { RemovePackageJsonDepsTask, RemoveWorkspacesTask, TranspileBabelTask, - TranspileTypescriptTypesTask, + TranspileTypescriptTask, TranspileScssTask, UpdateLicenseFileTask, VerifyEnvTask, @@ -110,18 +110,18 @@ export async function buildDistributables(options) { await run(CreateEmptyDirsAndFilesTask); await run(CreateReadmeTask); await run(TranspileBabelTask); - await run(TranspileTypescriptTypesTask); + await run(TranspileTypescriptTask); await run(BuildPackagesTask); await run(CreatePackageJsonTask); await run(InstallDependenciesTask); await run(RemoveWorkspacesTask); + await run(CleanTypescriptTask); await run(CleanPackagesTask); await run(CreateNoticeFileTask); await run(UpdateLicenseFileTask); await run(RemovePackageJsonDepsTask); await run(TranspileScssTask); await run(OptimizeBuildTask); - await run(CleanTypescriptTask); await run(CleanClientModulesOnDLLTask); await run(CleanExtraFilesFromModulesTask); await run(CleanEmptyFoldersTask); diff --git a/src/dev/build/tasks/index.js b/src/dev/build/tasks/index.js index d9d16f1787dd1c..ecf86d6af23eb6 100644 --- a/src/dev/build/tasks/index.js +++ b/src/dev/build/tasks/index.js @@ -33,7 +33,7 @@ export * from './notice_file_task'; export * from './optimize_task'; export * from './os_packages'; export * from './transpile_babel_task'; -export * from './transpile_typescript_types_task'; +export * from './transpile_typescript_task'; export * from './transpile_scss_task'; export * from './verify_env_task'; export * from './write_sha_sums_task'; diff --git a/src/dev/build/tasks/transpile_babel_task.js b/src/dev/build/tasks/transpile_babel_task.js index bdc1329b712394..1ea3d815839180 100644 --- a/src/dev/build/tasks/transpile_babel_task.js +++ b/src/dev/build/tasks/transpile_babel_task.js @@ -29,8 +29,7 @@ export const TranspileBabelTask = { await createPromiseFromStreams([ vfs.src( [ - '**/*.{js,ts,tsx}', - '!**/*.d.ts', + '**/*.js', '!packages/**', '!**/public/**', '!**/node_modules/**', diff --git a/src/dev/build/tasks/transpile_typescript_types_task.js b/src/dev/build/tasks/transpile_typescript_task.js similarity index 56% rename from src/dev/build/tasks/transpile_typescript_types_task.js rename to src/dev/build/tasks/transpile_typescript_task.js index 76edd1cd9edd74..a3be2e1d0c2ecf 100644 --- a/src/dev/build/tasks/transpile_typescript_types_task.js +++ b/src/dev/build/tasks/transpile_typescript_task.js @@ -17,20 +17,48 @@ * under the License. */ -import { exec } from '../lib'; +import { exec, write } from '../lib'; import { Project } from '../../typescript'; -export const TranspileTypescriptTypesTask = { - description: 'Transpiling types with typescript compiler', +export const TranspileTypescriptTask = { + description: 'Transpiling sources with typescript compiler', async run(config, log, build) { // the types project is built inside the repo so x-pack can use it for it's in-repo build. const typesProjectRepo = new Project(config.resolveFromRepo('tsconfig.types.json')); const typesProjectBuild = new Project(build.resolvePath('tsconfig.types.json')); + // these projects are built in the build folder + const defaultProject = new Project(build.resolvePath('tsconfig.json')); + const browserProject = new Project(build.resolvePath('tsconfig.browser.json')); + + // update the default config to exclude **/public/**/* files + await write(defaultProject.tsConfigPath, JSON.stringify({ + ...defaultProject.config, + exclude: [ + ...defaultProject.config.exclude, + 'src/**/public/**/*' + ] + })); + + // update the browser config file to include **/public/**/* files + await write(browserProject.tsConfigPath, JSON.stringify({ + ...browserProject.config, + include: [ + ...browserProject.config.include, + 'src/**/public/**/*', + 'typings/**/*' + ] + })); + const projects = [ typesProjectRepo.tsConfigPath, - typesProjectBuild.tsConfigPath + typesProjectBuild.tsConfigPath, + // Browser needs to be compiled before server code so that any shared code + // is compiled to the lowest common denominator (server's CommonJS format) + // which can be supported by both environments. + browserProject.tsConfigPath, + defaultProject.tsConfigPath, ]; // compile each typescript config file From 1f7e0cdec01884f8b20f8d7455747d75fe7db5bd Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sat, 16 Mar 2019 04:42:46 +0000 Subject: [PATCH 36/56] fix(NA): import paths for tabConfigConst --- .../components/shared/PropertiesTable/tabConfigConst.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts b/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts index a75c264b0df3d8..95c4f6da9f37e0 100644 --- a/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts +++ b/x-pack/plugins/apm/public/components/shared/PropertiesTable/tabConfigConst.ts @@ -5,8 +5,8 @@ */ import { i18n } from '@kbn/i18n'; -import { APMError } from '../../../../typings/es_schemas/Error'; -import { Transaction } from '../../../../typings/es_schemas/Transaction'; +import { APMError } from 'x-pack/plugins/apm/typings/es_schemas/ui/APMError'; +import { Transaction } from 'x-pack/plugins/apm/typings/es_schemas/ui/Transaction'; export type PropertyTabKey = | keyof Transaction From ac14ae60baa4daaf4a945eaad8d802dc8cd8ffaf Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sat, 16 Mar 2019 04:54:21 +0000 Subject: [PATCH 37/56] chore(NA): fix transpiling error on browser tests --- .../ui/public/visualize/loader/pipeline_helpers/utilities.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/legacy/ui/public/visualize/loader/pipeline_helpers/utilities.ts b/src/legacy/ui/public/visualize/loader/pipeline_helpers/utilities.ts index fe9a36a0e5a634..3617c77e42b0f8 100644 --- a/src/legacy/ui/public/visualize/loader/pipeline_helpers/utilities.ts +++ b/src/legacy/ui/public/visualize/loader/pipeline_helpers/utilities.ts @@ -31,7 +31,7 @@ import { fieldFormats } from '../../../registry/field_formats'; const config = chrome.getUiSettingsClient(); const defaultFormat = { convert: identity }; -const getConfig = (...args: any[]): any => (config.get as any)(...args); +const getConfig = (...args: any[]): any => config.get(...args); const getFieldFormat = (id: string, params: object) => { const Format = fieldFormats.byId[id]; From f1ce0cccdd0b28521a5f68462c31ca6af335401b Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sat, 16 Mar 2019 05:35:39 +0000 Subject: [PATCH 38/56] chore(NA): simplify kbn babel preset package. --- packages/kbn-babel-preset/common_preset.js | 7 +------ packages/kbn-babel-preset/node_preset.js | 1 + packages/kbn-babel-preset/package.json | 5 ----- packages/kbn-babel-preset/webpack_preset.js | 1 + yarn.lock | 15 --------------- 5 files changed, 3 insertions(+), 26 deletions(-) diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index 35b57eed7ba55d..e67a2db5a38009 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -24,13 +24,8 @@ module.exports = { ], plugins: [ require.resolve('babel-plugin-add-module-exports'), - // stage 3 - require.resolve('@babel/plugin-proposal-async-generator-functions'), - require.resolve('@babel/plugin-proposal-export-default-from'), - require.resolve('@babel/plugin-proposal-object-rest-spread'), - require.resolve('@babel/plugin-transform-modules-commonjs'), - // the class properties proposal was merged with the private fields proposal + // The class properties proposal was merged with the private fields proposal // into the "class fields" proposal. Babel doesn't support this combined // proposal yet, which includes private field, so this transform is // TECHNICALLY stage 2, but for all intents and purposes it's stage 3 diff --git a/packages/kbn-babel-preset/node_preset.js b/packages/kbn-babel-preset/node_preset.js index de5a533bac0696..ac4dc17e63803d 100644 --- a/packages/kbn-babel-preset/node_preset.js +++ b/packages/kbn-babel-preset/node_preset.js @@ -36,6 +36,7 @@ module.exports = () => { // for just the polyfills that the target versions don't already supply // on their own useBuiltIns: 'entry', + modules: 'cjs' }, ], require('./common_preset'), diff --git a/packages/kbn-babel-preset/package.json b/packages/kbn-babel-preset/package.json index ad2633e9b411fc..79ee6bbe39c0ce 100644 --- a/packages/kbn-babel-preset/package.json +++ b/packages/kbn-babel-preset/package.json @@ -4,12 +4,7 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@babel/core": "^7.3.4", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", "@babel/plugin-proposal-class-properties": "^7.3.4", - "@babel/plugin-proposal-export-default-from":"^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.3.4", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", "@babel/preset-react":"^7.0.0", "@babel/preset-env": "^7.3.4", "@babel/preset-typescript": "^7.3.3", diff --git a/packages/kbn-babel-preset/webpack_preset.js b/packages/kbn-babel-preset/webpack_preset.js index f8342af62d928f..df5745bc33f895 100644 --- a/packages/kbn-babel-preset/webpack_preset.js +++ b/packages/kbn-babel-preset/webpack_preset.js @@ -31,6 +31,7 @@ module.exports = () => { ], }, useBuiltIns: 'entry', + modules: 'cjs' }, ], require('./common_preset'), diff --git a/yarn.lock b/yarn.lock index 6f030fb613639e..a02014c1d31ab6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -281,14 +281,6 @@ "@babel/helper-create-class-features-plugin" "^7.3.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-proposal-export-default-from@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz#737b0da44b9254b6152fe29bb99c64e5691f6f68" - integrity sha512-NVfNe7F6nsasG1FnvcFxh2FN0l04ZNe75qTOAVOILWPam0tw9a63RtT/Dab8dPjedZa4fTQaQ83yMMywF9OSug== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.2.0" - "@babel/plugin-proposal-json-strings@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" @@ -329,13 +321,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-export-default-from@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz#edd83b7adc2e0d059e2467ca96c650ab6d2f3820" - integrity sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" From 4c7cd627bd0e4d3c0bb5f1ad05f35164fdff44d7 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sat, 16 Mar 2019 16:24:52 +0000 Subject: [PATCH 39/56] chore(NA): migrate build to use babel transpiler for typescript excluding xpack. --- src/dev/build/build_distributables.js | 6 +- src/dev/build/tasks/copy_source_task.js | 2 + src/dev/build/tasks/index.js | 2 +- src/dev/build/tasks/transpile_babel_task.js | 76 +++++++++++++------ ....js => transpile_typescript_types_task.js} | 15 ++-- tasks/test.js | 17 +++-- 6 files changed, 75 insertions(+), 43 deletions(-) rename src/dev/build/tasks/{transpile_typescript_task.js => transpile_typescript_types_task.js} (82%) diff --git a/src/dev/build/build_distributables.js b/src/dev/build/build_distributables.js index cda00064162f29..b2fcbdfebc7678 100644 --- a/src/dev/build/build_distributables.js +++ b/src/dev/build/build_distributables.js @@ -47,7 +47,7 @@ import { RemovePackageJsonDepsTask, RemoveWorkspacesTask, TranspileBabelTask, - TranspileTypescriptTask, + TranspileTypescriptTypesTask, TranspileScssTask, UpdateLicenseFileTask, VerifyEnvTask, @@ -110,12 +110,11 @@ export async function buildDistributables(options) { await run(CreateEmptyDirsAndFilesTask); await run(CreateReadmeTask); await run(TranspileBabelTask); - await run(TranspileTypescriptTask); + await run(TranspileTypescriptTypesTask); await run(BuildPackagesTask); await run(CreatePackageJsonTask); await run(InstallDependenciesTask); await run(RemoveWorkspacesTask); - await run(CleanTypescriptTask); await run(CleanPackagesTask); await run(CreateNoticeFileTask); await run(UpdateLicenseFileTask); @@ -123,6 +122,7 @@ export async function buildDistributables(options) { await run(TranspileScssTask); await run(OptimizeBuildTask); await run(CleanClientModulesOnDLLTask); + await run(CleanTypescriptTask); await run(CleanExtraFilesFromModulesTask); await run(CleanEmptyFoldersTask); diff --git a/src/dev/build/tasks/copy_source_task.js b/src/dev/build/tasks/copy_source_task.js index 18ca6492f08c31..6e836a72b45a84 100644 --- a/src/dev/build/tasks/copy_source_task.js +++ b/src/dev/build/tasks/copy_source_task.js @@ -29,6 +29,8 @@ export const CopySourceTask = { 'yarn.lock', 'src/**', '!src/**/*.test.{js,ts,tsx}', + '!src/**/*.test.mocks.{js,ts,tsx}', + '!src/**/*.mock.{js,ts,tsx}', '!src/**/{__tests__,__snapshots__}/**', '!src/test_utils/**', '!src/fixtures/**', diff --git a/src/dev/build/tasks/index.js b/src/dev/build/tasks/index.js index ecf86d6af23eb6..d9d16f1787dd1c 100644 --- a/src/dev/build/tasks/index.js +++ b/src/dev/build/tasks/index.js @@ -33,7 +33,7 @@ export * from './notice_file_task'; export * from './optimize_task'; export * from './os_packages'; export * from './transpile_babel_task'; -export * from './transpile_typescript_task'; +export * from './transpile_typescript_types_task'; export * from './transpile_scss_task'; export * from './verify_env_task'; export * from './write_sha_sums_task'; diff --git a/src/dev/build/tasks/transpile_babel_task.js b/src/dev/build/tasks/transpile_babel_task.js index 1ea3d815839180..0ea11e20cba3d0 100644 --- a/src/dev/build/tasks/transpile_babel_task.js +++ b/src/dev/build/tasks/transpile_babel_task.js @@ -22,31 +22,63 @@ import vfs from 'vinyl-fs'; import { createPromiseFromStreams } from '../../../legacy/utils'; +const transpileWithBabel = async (srcGlobs, dest, cwd, presets) => { + await createPromiseFromStreams([ + vfs.src( + srcGlobs, + { + cwd, + } + ), + + gulpBabel({ + babelrc: false, + presets, + }), + + vfs.dest(dest), + ]); +}; + export const TranspileBabelTask = { description: 'Transpiling sources with babel', async run(config, log, build) { - await createPromiseFromStreams([ - vfs.src( - [ - '**/*.js', - '!packages/**', - '!**/public/**', - '!**/node_modules/**', - '!**/bower_components/**', - '!**/__tests__/**', - ], - { - cwd: build.resolvePath(), - } - ), - - gulpBabel({ - babelrc: false, - presets: [require.resolve('@kbn/babel-preset/node_preset')], - }), - - vfs.dest(build.resolvePath()), - ]); + const buildRoot = build.resolvePath(); + + // Transpile server code + await transpileWithBabel( + [ + '**/*.{js,ts,tsx}', + '!**/*.d.ts', + '!packages/**', + '!**/public/**', + '!**/node_modules/**', + '!**/bower_components/**', + '!**/__tests__/**', + ], + buildRoot, + buildRoot, + [ + require.resolve('@kbn/babel-preset/node_preset') + ] + ); + + // Transpile client code + await transpileWithBabel( + [ + '**/public/**/*.{js,ts,tsx}', + '!**/*.d.ts', + '!packages/**', + '!**/node_modules/**', + '!**/bower_components/**', + '!**/__tests__/**', + ], + buildRoot, + buildRoot, + [ + require.resolve('@kbn/babel-preset/node_preset') + ] + ); }, }; diff --git a/src/dev/build/tasks/transpile_typescript_task.js b/src/dev/build/tasks/transpile_typescript_types_task.js similarity index 82% rename from src/dev/build/tasks/transpile_typescript_task.js rename to src/dev/build/tasks/transpile_typescript_types_task.js index a3be2e1d0c2ecf..ef9ff554272b98 100644 --- a/src/dev/build/tasks/transpile_typescript_task.js +++ b/src/dev/build/tasks/transpile_typescript_types_task.js @@ -20,15 +20,17 @@ import { exec, write } from '../lib'; import { Project } from '../../typescript'; -export const TranspileTypescriptTask = { - description: 'Transpiling sources with typescript compiler', +export const TranspileTypescriptTypesTask = { + description: 'Transpiling types with typescript compiler', async run(config, log, build) { + // This task is only used to build types needed for the x-pack typescript build + // the types project is built inside the repo so x-pack can use it for it's in-repo build. const typesProjectRepo = new Project(config.resolveFromRepo('tsconfig.types.json')); const typesProjectBuild = new Project(build.resolvePath('tsconfig.types.json')); - // these projects are built in the build folder + // these projects are located in the build folder const defaultProject = new Project(build.resolvePath('tsconfig.json')); const browserProject = new Project(build.resolvePath('tsconfig.browser.json')); @@ -54,14 +56,9 @@ export const TranspileTypescriptTask = { const projects = [ typesProjectRepo.tsConfigPath, typesProjectBuild.tsConfigPath, - // Browser needs to be compiled before server code so that any shared code - // is compiled to the lowest common denominator (server's CommonJS format) - // which can be supported by both environments. - browserProject.tsConfigPath, - defaultProject.tsConfigPath, ]; - // compile each typescript config file + // compile each typescript type config file for (const tsConfigPath of projects) { log.info(`Compiling`, tsConfigPath, 'project'); await exec( diff --git a/tasks/test.js b/tasks/test.js index ee6d0e87d95ad5..e7665986811552 100644 --- a/tasks/test.js +++ b/tasks/test.js @@ -52,14 +52,15 @@ module.exports = function (grunt) { grunt.registerTask('test:coverage', ['run:testCoverageServer', 'karma:coverage']); grunt.registerTask('test:quick', [ - 'checkPlugins', - 'test:server', - 'run:functionalTests', - 'test:jest', - 'test:jest_integration', - 'test:projects', - 'test:browser', - 'run:apiIntegrationTests', + // 'checkPlugins', + // 'test:server', + // 'run:functionalTests', + // 'test:jest', + // 'test:jest_integration', + // 'test:projects', + // 'test:browser', + // 'run:apiIntegrationTests', + 'run:pluginFunctionalTestsRelease' ]); grunt.registerTask('test:dev', ['checkPlugins', 'run:devBrowserTestServer', 'karma:dev']); From 80169031da2e7fb3fd26ec598d0686b71c149b02 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sat, 16 Mar 2019 17:54:54 +0000 Subject: [PATCH 40/56] fix(NA): introduced error on test quick task. --- tasks/test.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tasks/test.js b/tasks/test.js index e7665986811552..ee6d0e87d95ad5 100644 --- a/tasks/test.js +++ b/tasks/test.js @@ -52,15 +52,14 @@ module.exports = function (grunt) { grunt.registerTask('test:coverage', ['run:testCoverageServer', 'karma:coverage']); grunt.registerTask('test:quick', [ - // 'checkPlugins', - // 'test:server', - // 'run:functionalTests', - // 'test:jest', - // 'test:jest_integration', - // 'test:projects', - // 'test:browser', - // 'run:apiIntegrationTests', - 'run:pluginFunctionalTestsRelease' + 'checkPlugins', + 'test:server', + 'run:functionalTests', + 'test:jest', + 'test:jest_integration', + 'test:projects', + 'test:browser', + 'run:apiIntegrationTests', ]); grunt.registerTask('test:dev', ['checkPlugins', 'run:devBrowserTestServer', 'karma:dev']); From e07ebea238fd891fd573b2ef4f8d7606136600da Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sun, 17 Mar 2019 03:51:26 +0000 Subject: [PATCH 41/56] fix(NA): fix preset for client side code on build. --- src/dev/build/tasks/transpile_babel_task.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dev/build/tasks/transpile_babel_task.js b/src/dev/build/tasks/transpile_babel_task.js index 0ea11e20cba3d0..dbdd6906e97ea2 100644 --- a/src/dev/build/tasks/transpile_babel_task.js +++ b/src/dev/build/tasks/transpile_babel_task.js @@ -77,7 +77,7 @@ export const TranspileBabelTask = { buildRoot, buildRoot, [ - require.resolve('@kbn/babel-preset/node_preset') + require.resolve('@kbn/babel-preset/webpack_preset') ] ); }, From 4fbc3027b1a02cb6f31ff038e7a1b47184937e08 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 18 Mar 2019 03:29:38 +0000 Subject: [PATCH 42/56] fix(NA): build with babel --- src/dev/build/tasks/transpile_babel_task.js | 38 +++++++++------------ 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/dev/build/tasks/transpile_babel_task.js b/src/dev/build/tasks/transpile_babel_task.js index dbdd6906e97ea2..cd140ff0524215 100644 --- a/src/dev/build/tasks/transpile_babel_task.js +++ b/src/dev/build/tasks/transpile_babel_task.js @@ -22,12 +22,20 @@ import vfs from 'vinyl-fs'; import { createPromiseFromStreams } from '../../../legacy/utils'; -const transpileWithBabel = async (srcGlobs, dest, cwd, presets) => { +const transpileWithBabel = async (srcGlobs, build, presets) => { + const buildRoot = build.resolvePath(); + await createPromiseFromStreams([ vfs.src( - srcGlobs, + [ + '!**/*.d.ts', + '!packages/**', + '!**/node_modules/**', + '!**/bower_components/**', + '!**/__tests__/**', + ].concat(srcGlobs), { - cwd, + cwd: buildRoot, } ), @@ -36,7 +44,7 @@ const transpileWithBabel = async (srcGlobs, dest, cwd, presets) => { presets, }), - vfs.dest(dest), + vfs.dest(buildRoot), ]); }; @@ -44,38 +52,26 @@ export const TranspileBabelTask = { description: 'Transpiling sources with babel', async run(config, log, build) { - const buildRoot = build.resolvePath(); - // Transpile server code await transpileWithBabel( [ '**/*.{js,ts,tsx}', - '!**/*.d.ts', - '!packages/**', '!**/public/**', - '!**/node_modules/**', - '!**/bower_components/**', - '!**/__tests__/**', ], - buildRoot, - buildRoot, + 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/**/*.{js,ts,tsx}', - '!**/*.d.ts', - '!packages/**', - '!**/node_modules/**', - '!**/bower_components/**', - '!**/__tests__/**', + '**/public/**/*.{ts,tsx}', ], - buildRoot, - buildRoot, + build, [ require.resolve('@kbn/babel-preset/webpack_preset') ] From 32b6c1ad33cd633b18c81cf52066c925374d9104 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 18 Mar 2019 03:33:38 +0000 Subject: [PATCH 43/56] fix(NA): negated patterns in the end. --- src/dev/build/tasks/transpile_babel_task.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dev/build/tasks/transpile_babel_task.js b/src/dev/build/tasks/transpile_babel_task.js index cd140ff0524215..c6d762be9d732e 100644 --- a/src/dev/build/tasks/transpile_babel_task.js +++ b/src/dev/build/tasks/transpile_babel_task.js @@ -27,13 +27,13 @@ const transpileWithBabel = async (srcGlobs, build, presets) => { await createPromiseFromStreams([ vfs.src( - [ + srcGlobs.concat([ '!**/*.d.ts', '!packages/**', '!**/node_modules/**', '!**/bower_components/**', '!**/__tests__/**', - ].concat(srcGlobs), + ]), { cwd: buildRoot, } From f0027e1831a9b5ccd7861c680eaf1463b317e50a Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 18 Mar 2019 16:58:31 +0000 Subject: [PATCH 44/56] fix(NA): kbn_tp_sample_panel_action creation. --- .../public/sample_panel_action.js | 42 ++++++++++--------- .../public/sample_panel_link.js | 20 +++++---- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.js b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.js index 1310ff027e35e4..b99551ab9c6038 100644 --- a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.js +++ b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.js @@ -27,27 +27,31 @@ import { class SamplePanelAction extends ContextMenuAction { constructor() { - super({ - displayName: 'Sample Panel Action', - id: 'samplePanelAction', - parentPanelId: 'mainMenu', - }); - } - onClick({ embeddable }) { - openFlyout( - - - -

{embeddable.metadata.title}

- - - -

This is a sample action

-
- , + super( { - 'data-test-subj': 'samplePanelActionFlyout', + displayName: 'Sample Panel Action', + id: 'samplePanelAction', + parentPanelId: 'mainMenu', }, + { + onClick({ embeddable }) { + openFlyout( + + + +

{embeddable.metadata.title}

+
+
+ +

This is a sample action

+
+
, + { + 'data-test-subj': 'samplePanelActionFlyout', + }, + ); + } + } ); } } diff --git a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.js b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.js index 0b99b7eadb3c79..41bce7908de5ec 100644 --- a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.js +++ b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.js @@ -23,14 +23,18 @@ import { class SamplePanelLink extends ContextMenuAction { constructor() { - super({ - displayName: 'Sample Panel Link', - id: 'samplePanelLink', - parentPanelId: 'mainMenu', - }); - } - getHref() { - return 'https://example.com/kibana/test'; + super( + { + displayName: 'Sample Panel Link', + id: 'samplePanelLink', + parentPanelId: 'mainMenu', + }, + { + getHref() { + return 'https://example.com/kibana/test'; + } + } + ); } } From 63cb45d965e7eecd014f42c5538dda523b774ff5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 18 Mar 2019 18:10:03 +0000 Subject: [PATCH 45/56] fix(NA): babel typescript transform plugin workaround when exporting interface name. --- .../public/vis/editors/default/agg_param_editor_props.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/legacy/ui/public/vis/editors/default/agg_param_editor_props.ts b/src/legacy/ui/public/vis/editors/default/agg_param_editor_props.ts index 3e7623b6c25fc9..ab57153755c91e 100644 --- a/src/legacy/ui/public/vis/editors/default/agg_param_editor_props.ts +++ b/src/legacy/ui/public/vis/editors/default/agg_param_editor_props.ts @@ -20,11 +20,13 @@ import { AggParam } from '../../../agg_types'; import { AggConfig } from '../../agg_config'; -interface AggParamEditorProps { +// NOTE: we cannot export the interface with export { InterfaceName } +// as there is currently a bug on babel typescript transform plugin for it +// https://github.com/babel/babel/issues/7641 +// +export interface AggParamEditorProps { agg: AggConfig; aggParam: AggParam; value: T; setValue(value: T): void; } - -export { AggParamEditorProps }; From 5af493bc761d74cf7b418c922007ca9f04da6179 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 20 Mar 2019 19:37:09 +0000 Subject: [PATCH 46/56] refact(NA): remove not needed type cast to any on jest test. --- src/core/server/elasticsearch/cluster_client.test.mocks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/server/elasticsearch/cluster_client.test.mocks.ts b/src/core/server/elasticsearch/cluster_client.test.mocks.ts index e725cb35066b58..4a8553d1d5f991 100644 --- a/src/core/server/elasticsearch/cluster_client.test.mocks.ts +++ b/src/core/server/elasticsearch/cluster_client.test.mocks.ts @@ -20,7 +20,7 @@ export const MockClient = jest.fn(); jest.mock('elasticsearch', () => ({ // Jest types don't include `requireActual` right now. - ...(jest as any).requireActual('elasticsearch'), + ...jest.requireActual('elasticsearch'), Client: MockClient, })); From 0e735d54a8769be3853909e45758ef974eeba175 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 21 Mar 2019 01:45:50 +0000 Subject: [PATCH 47/56] docs(NA): add developement documentation about jest mocks test pattern. --- docs/development/core-development.asciidoc | 2 + .../core/development-unit-tests.asciidoc | 80 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 docs/development/core/development-unit-tests.asciidoc diff --git a/docs/development/core-development.asciidoc b/docs/development/core-development.asciidoc index 45f52c16ee332c..ed04a6f12eae9b 100644 --- a/docs/development/core-development.asciidoc +++ b/docs/development/core-development.asciidoc @@ -15,4 +15,6 @@ include::core/development-modules.asciidoc[] include::core/development-elasticsearch.asciidoc[] +include::core/development-unit-tests.asciidoc[] + include::core/development-functional-tests.asciidoc[] diff --git a/docs/development/core/development-unit-tests.asciidoc b/docs/development/core/development-unit-tests.asciidoc new file mode 100644 index 00000000000000..852d1fef6b32a2 --- /dev/null +++ b/docs/development/core/development-unit-tests.asciidoc @@ -0,0 +1,80 @@ +[[development-unit-tests]] +=== Unit Testing + +We use unit tests to make sure that individual software units of Kibana perform as they were designed to. + +[float] +==== Current Frameworks + +Kibana is migrating unit testing from `Mocha` to `Jest`. Legacy unit tests still exist in `Mocha` but all new unit tests should be written in `Jest`. + +[float] +==== Mocha (legacy) + +Mocha tests are contained in `__tests__` directories. + +===== Running Mocha Unit Tests + +["source","shell"] +----------- +yarn test:mocha +----------- + +==== Jest +Jest tests are stored in the same directory as source code files with the `.test.{js,ts,tsx}` suffix. + +===== Running Jest Unit Tests + +["source","shell"] +----------- +yarn test:jest +----------- + +===== Writing Jest Unit Tests + +In order to write those tests there are two main things you need to be aware of. +The first one is the different between `jest.mock` and `jest.doMock` +and the second one our `jest mocks file pattern`. As we are running `js` and `ts` +test files with `babel-jest` both techniques are needed +specially for the tests implemented on Typescript in order to benefit from the +auto-inference types feature. + + +====== Jest.mock vs Jest.doMock + +Both methods are essentially the same on their roots however the `jest.mock` +calls will get hoisted to the top of the file and can only reference variables +prefixed with `mock`. On the other hand, `jest.doMock` won't be hoisted and can +reference pretty much any variable we want, however we have to assure those referenced +variables are instantiated at the time we need them which lead us to the next +section where we'll talk about our jest mock files pattern. + +====== Jest Mock Files Pattern + +Specially on typescript it is pretty common to have in unit tests +`jest.doMock` calls which reference for example imported types. Any error +will thrown from doing that however the test will fail. The reason behind that +is because despite the `jest.doMock` isn't being hoisted by `babel-jest` the +import with the types we are referencing will be hoisted to the top and at the +time we'll call the function that variable would not be defined. + +In order to prevent that we develop a protocol that should be followed: + +- Each module could provide a standard mock in `mymodule.mock.ts` in case +there are other tests that could benefit from using definitions here. +This file would not have any `jest.mock` calls, just dummy objects. + +- Each test defines its mocks in `mymodule.test.mocks.ts`. This file +could import relevant mocks from the generalised module's mocks +file `(*.mock.ts)` and call `jest.mock` for each of them. If there is +any relevant dummy mock objects to generalise (and to be used by +other tests), the dummy objects could be defined directly on this file. + +- Each test would import its mocks from the test mocks +file mymodule.test.mocks.ts. `mymodule.test.ts` has an import +like: `import * as Mocks from './mymodule.test.mocks'`, +`import { mockX } from './mymodule.test.mocks'` +or just `import './mymodule.test.mocks'` if there isn't anything +exported to be used. + + From 0678b305b568cd94d851d8a1f6c873fef98f31ee Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 26 Mar 2019 03:54:00 +0000 Subject: [PATCH 48/56] chore(NA): missing unmerged path. --- src/core/server/root/index.test.mocks.ts | 2 +- src/core/server/root/index.test.ts | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/src/core/server/root/index.test.mocks.ts b/src/core/server/root/index.test.mocks.ts index 17406ba989b75d..602fa2368a766b 100644 --- a/src/core/server/root/index.test.mocks.ts +++ b/src/core/server/root/index.test.mocks.ts @@ -29,5 +29,5 @@ jest.doMock('../config/config_service', () => ({ ConfigService: jest.fn(() => configService), })); -export const mockServer = { start: jest.fn(), stop: jest.fn() }; +export const mockServer = { setup: jest.fn(), stop: jest.fn() }; jest.mock('../server', () => ({ Server: jest.fn(() => mockServer) })); diff --git a/src/core/server/root/index.test.ts b/src/core/server/root/index.test.ts index f7a33d7aaa5f55..4eba2133dce285 100644 --- a/src/core/server/root/index.test.ts +++ b/src/core/server/root/index.test.ts @@ -17,24 +17,7 @@ * under the License. */ -<<<<<<< HEAD import { configService, logger, mockServer } from './index.test.mocks'; -======= -import { loggingServiceMock } from '../logging/logging_service.mock'; -const logger = loggingServiceMock.create(); -jest.mock('../logging', () => ({ - LoggingService: jest.fn(() => logger), -})); - -import { configServiceMock } from '../config/config_service.mock'; -const configService = configServiceMock.create(); -jest.mock('../config/config_service', () => ({ - ConfigService: jest.fn(() => configService), -})); - -const mockServer = { setup: jest.fn(), stop: jest.fn() }; -jest.mock('../server', () => ({ Server: jest.fn(() => mockServer) })); ->>>>>>> master import { BehaviorSubject } from 'rxjs'; import { filter, first } from 'rxjs/operators'; From c36666203ba85473ead6cc309edb73021e58db74 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 26 Mar 2019 04:38:44 +0000 Subject: [PATCH 49/56] chore(NA): fix jest tests for template. --- .../sao_template/template/package_template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-plugin-generator/sao_template/template/package_template.json b/packages/kbn-plugin-generator/sao_template/template/package_template.json index 61103b47dd607b..7a6d0842a1649e 100644 --- a/packages/kbn-plugin-generator/sao_template/template/package_template.json +++ b/packages/kbn-plugin-generator/sao_template/template/package_template.json @@ -36,6 +36,6 @@ "eslint-plugin-mocha": "^5.3.0", "eslint-plugin-no-unsanitized": "^3.0.2", "eslint-plugin-prefer-object-spread": "^1.2.1", - "eslint-plugin-react": "^7.12.4", + "eslint-plugin-react": "^7.12.4" } } From 67acefc28336878ab2d34d662a7dd5a0b1dbd899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loix?= Date: Tue, 26 Mar 2019 08:47:29 +0100 Subject: [PATCH 50/56] [CCR] Client integration tests (table lists) (#33525) --- .../auto_follow_pattern_list.test.js | 321 +++++++++++++++ .../follower_indices_list.test.js | 343 ++++++++++++++++ .../__jest__/client_integration/home.test.js | 84 ++++ .../client_integration/test_helpers.js | 212 ++++++++++ .../fixtures/auto_follow_pattern.js | 26 +- .../fixtures/follower_index.js | 177 +++++--- .../auto_follow_pattern_delete_provider.js | 1 + .../auto_follow_pattern_indices_preview.js | 2 +- .../follower_index_pause_provider.js | 1 + .../follower_index_resume_provider.js | 1 + .../follower_index_unfollow_provider.js | 1 + .../public/app/components/section_error.js | 3 +- .../public/app/components/section_loading.js | 3 +- .../auto_follow_pattern_list.js | 26 +- .../auto_follow_pattern_table.js | 1 + .../components/detail_panel/detail_panel.js | 378 +++++++++--------- .../components/context_menu/context_menu.js | 2 +- .../components/detail_panel/detail_panel.js | 198 ++++----- .../follower_indices_table.js | 5 +- .../follower_indices_list.js | 30 +- .../public/app/sections/home/home.js | 4 +- .../job_create.test_helpers.js | 2 +- .../sections/job_list/job_list.test.js | 18 - .../translations/translations/zh-CN.json | 1 - x-pack/test_utils/index.js | 3 +- x-pack/test_utils/lib/index.js | 1 + x-pack/test_utils/lib/strings.js | 2 +- x-pack/test_utils/lib/utils.js | 8 + x-pack/test_utils/testbed/testbed.js | 77 +++- 29 files changed, 1513 insertions(+), 418 deletions(-) create mode 100644 x-pack/plugins/cross_cluster_replication/__jest__/client_integration/auto_follow_pattern_list.test.js create mode 100644 x-pack/plugins/cross_cluster_replication/__jest__/client_integration/follower_indices_list.test.js create mode 100644 x-pack/plugins/cross_cluster_replication/__jest__/client_integration/home.test.js create mode 100644 x-pack/plugins/cross_cluster_replication/__jest__/client_integration/test_helpers.js create mode 100644 x-pack/test_utils/lib/utils.js diff --git a/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/auto_follow_pattern_list.test.js b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/auto_follow_pattern_list.test.js new file mode 100644 index 00000000000000..f9933cd60f1cad --- /dev/null +++ b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/auto_follow_pattern_list.test.js @@ -0,0 +1,321 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import sinon from 'sinon'; + +import { initTestBed, mockAllHttpRequests, nextTick, getRandomString, findTestSubject } from './test_helpers'; +import { AutoFollowPatternList } from '../../public/app/sections/home/auto_follow_pattern_list'; +import { getAutoFollowPatternClientMock } from '../../fixtures/auto_follow_pattern'; + +jest.mock('ui/chrome', () => ({ + addBasePath: () => 'api/cross_cluster_replication', + breadcrumbs: { set: () => {} }, +})); + +jest.mock('ui/index_patterns', () => { + const { INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE } = require.requireActual('../../../../../src/legacy/ui/public/index_patterns/constants'); // eslint-disable-line max-len + return { INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE }; +}); + +describe('', () => { + let server; + let find; + let exists; + let component; + let getMetadataFromEuiTable; + let getUserActions; + let tableCellsValues; + let rows; + let updateHttpMockResponse; + + beforeEach(() => { + server = sinon.fakeServer.create(); + server.respondImmediately = true; + (updateHttpMockResponse = mockAllHttpRequests(server)); + }); + + describe('on component mount', () => { + beforeEach(async () => { + ({ exists } = initTestBed(AutoFollowPatternList)); + }); + + test('should show a loading indicator on component', async () => { + expect(exists('ccrAutoFollowPatternLoading')).toBe(true); + }); + }); + + describe('when there are no auto-follow patterns', () => { + beforeEach(async () => { + ({ exists, component } = initTestBed(AutoFollowPatternList)); + + await nextTick(); // We need to wait next tick for the mock server response to comes in + component.update(); + }); + + test('should display an empty prompt', async () => { + expect(exists('ccrAutoFollowPatternEmptyPrompt')).toBe(true); + }); + + test('should have a button to create a follower index', async () => { + expect(exists('ccrCreateAutoFollowPatternButton')).toBe(true); + }); + }); + + describe('when there are auto-follow patterns', async () => { + // For deterministic tests, we need to make sure that autoFollowPattern1 comes before autoFollowPattern2 + // in the table list that is rendered. As the table orders alphabetically by index name + // we prefix the random name to make sure that autoFollowPattern1 comes before autoFollowPattern2 + const testPrefix = 'prefix_'; + const testSuffix = '_suffix'; + + const autoFollowPattern1 = getAutoFollowPatternClientMock({ + name: `a${getRandomString()}`, + followIndexPattern: `${testPrefix}{{leader_index}}${testSuffix}` + }); + const autoFollowPattern2 = getAutoFollowPatternClientMock({ + name: `b${getRandomString()}`, + followIndexPattern: '{{leader_index}}' // no prefix nor suffix + }); + const autoFollowPatterns = [autoFollowPattern1, autoFollowPattern2]; + + let selectAutoFollowPatternAt; + let clickBulkDeleteButton; + let clickConfirmModalDeleteAutoFollowPattern; + let clickRowActionButtonAt; + let clickAutoFollowPatternAt; + + beforeEach(async () => { + updateHttpMockResponse('loadAutoFollowPatterns', { patterns: autoFollowPatterns }); + + // Mount the component + ({ + find, + exists, + component, + getMetadataFromEuiTable, + getUserActions, + } = initTestBed(AutoFollowPatternList)); + + await nextTick(); // Make sure that the Http request is fulfilled + component.update(); + + ({ + selectAutoFollowPatternAt, + clickBulkDeleteButton, + clickConfirmModalDeleteAutoFollowPattern, + clickRowActionButtonAt, + clickAutoFollowPatternAt, + } = getUserActions('autoFollowPatternList')); + + // Read the index list table + ({ tableCellsValues, rows } = getMetadataFromEuiTable('ccrAutoFollowPatternListTable')); + }); + + afterEach(async () => { + // The updates are not all synchronouse + // We need to wait for all the updates to ran before unmounting our component + await nextTick(100); + }); + + test('should not display the empty prompt', () => { + expect(exists('ccrFollowerIndexEmptyPrompt')).toBe(false); + }); + + test('should have a button to create an auto-follow pattern', () => { + expect(exists('ccrCreateAutoFollowPatternButton')).toBe(true); + }); + + test('should list the auto-follow patterns in the table', () => { + expect(tableCellsValues.length).toEqual(autoFollowPatterns.length); + expect(tableCellsValues).toEqual([ + [ '', // Empty because the first column is the checkbox to select row + autoFollowPattern1.name, + autoFollowPattern1.remoteCluster, + autoFollowPattern1.leaderIndexPatterns.join(', '), + testPrefix, + testSuffix, + '' // Empty because the last column is for the "actions" on the resource + ], [ '', + autoFollowPattern2.name, + autoFollowPattern2.remoteCluster, + autoFollowPattern2.leaderIndexPatterns.join(', '), + '', // no prefix + '', // no suffix + '' ] + ]); + }); + + describe('bulk delete button', () => { + test('should be visible when an auto-follow pattern is selected', () => { + expect(exists('ccrAutoFollowPatternListBulkDeleteActionButton')).toBe(false); + + selectAutoFollowPatternAt(0); + + expect(exists('ccrAutoFollowPatternListBulkDeleteActionButton')).toBe(true); + }); + + test('should update the button label according to the number of patterns selected', () => { + selectAutoFollowPatternAt(0); // 1 auto-follow pattern selected + expect(find('ccrAutoFollowPatternListBulkDeleteActionButton').text()).toEqual('Delete auto-follow pattern'); + + selectAutoFollowPatternAt(1); // 2 auto-follow patterns selected + expect(find('ccrAutoFollowPatternListBulkDeleteActionButton').text()).toEqual('Delete auto-follow patterns'); + }); + + test('should open a confirmation modal when clicking the delete button', () => { + expect(exists('ccrAutoFollowPatternDeleteConfirmationModal')).toBe(false); + + selectAutoFollowPatternAt(0); + clickBulkDeleteButton(); + + expect(exists('ccrAutoFollowPatternDeleteConfirmationModal')).toBe(true); + }); + + test('should remove the auto-follow pattern from the table after delete is complete', async () => { + // Make sure that we have our 2 auto-follow patterns in the table + expect(rows.length).toBe(2); + + // We wil delete the *first* auto-follow pattern in the table + updateHttpMockResponse('deleteAutoFollowPattern', { itemsDeleted: [autoFollowPattern1.name] }); + + selectAutoFollowPatternAt(0); + clickBulkDeleteButton(); + clickConfirmModalDeleteAutoFollowPattern(); + + await nextTick(); + component.update(); + + ({ rows } = getMetadataFromEuiTable('ccrAutoFollowPatternListTable')); + + expect(rows.length).toBe(1); + expect(rows[0].columns[1].value).toEqual(autoFollowPattern2.name); + }); + }); + + describe('table row actions', () => { + test('should have a "delete" and an "edit" action button on each row', () => { + const indexLastColumn = rows[0].columns.length - 1; + const tableCellActions = rows[0].columns[indexLastColumn].reactWrapper; + + const deleteButton = findTestSubject(tableCellActions, 'ccrAutoFollowPatternListDeleteActionButton'); + const editButton = findTestSubject(tableCellActions, 'ccrAutoFollowPatternListEditActionButton'); + + expect(deleteButton.length).toBe(1); + expect(editButton.length).toBe(1); + }); + + test('should open a confirmation modal when clicking on "delete" button', async () => { + expect(exists('ccrAutoFollowPatternDeleteConfirmationModal')).toBe(false); + + clickRowActionButtonAt(0, 'delete'); + + expect(exists('ccrAutoFollowPatternDeleteConfirmationModal')).toBe(true); + }); + }); + + describe('detail panel', () => { + test('should open a detail panel when clicking on a follower index', () => { + expect(exists('ccrAutoFollowPatternDetailsFlyout')).toBe(false); + + clickAutoFollowPatternAt(0); + + expect(exists('ccrAutoFollowPatternDetailsFlyout')).toBe(true); + }); + + test('should set the title the index that has been selected', () => { + clickAutoFollowPatternAt(0); // Open the detail panel + expect(find('autoFollowPatternDetailsFlyoutTitle').text()).toEqual(autoFollowPattern1.name); + }); + + test('should have a "settings" section', () => { + clickAutoFollowPatternAt(0); + expect(find('ccrAutoFollowPatternDetailPanelSettingsSection').find('h3').text()).toEqual('Settings'); + expect(exists('ccrAutoFollowPatternDetailPanelSettingsValues')).toBe(true); + }); + + test('should set the correct follower index settings values', () => { + clickAutoFollowPatternAt(0); + + expect(find('ccrAutoFollowPatternDetailRemoteCluster').text()).toEqual(autoFollowPattern1.remoteCluster); + expect(find('ccrAutoFollowPatternDetailLeaderIndexPatterns').text()).toEqual(autoFollowPattern1.leaderIndexPatterns.join(', ')); + expect(find('ccrAutoFollowPatternDetailPatternPrefix').text()).toEqual(testPrefix); + expect(find('ccrAutoFollowPatternDetailPatternSuffix').text()).toEqual(testSuffix); + }); + + test('should have a default value when there are no prefix or no suffix', () => { + clickAutoFollowPatternAt(1); // Does not have prefix and suffix + + expect(find('ccrAutoFollowPatternDetailPatternPrefix').text()).toEqual('No prefix'); + expect(find('ccrAutoFollowPatternDetailPatternSuffix').text()).toEqual('No suffix'); + }); + + test('should show a preview of the indices that might be generated by the auto-follow pattern', () => { + clickAutoFollowPatternAt(0); + const detailPanel = find('ccrAutoFollowPatternDetailsFlyout'); + const indicesPreview = findTestSubject(detailPanel, 'ccrAutoFollowPatternIndexPreview'); + + expect(exists('ccrAutoFollowPatternDetailPanelIndicesPreviewSection')).toBe(true); + expect(indicesPreview.length).toBe(3); + }); + + test('should have a link to view the indices in Index Management', () => { + clickAutoFollowPatternAt(0); + expect(exists('ccrAutoFollowPatternDetailsViewIndexManagementButton')).toBe(true); + expect(find('ccrAutoFollowPatternDetailsViewIndexManagementButton').text()).toBe('View your follower indices in Index Management'); + }); + + test('should have a "close", "delete" and "edit" button in the footer', () => { + clickAutoFollowPatternAt(0); + expect(exists('ccrAutoFollowPatternDetailsFlyoutCloseButton')).toBe(true); + expect(exists('ccrAutoFollowPatternDetailsDeleteActionButton')).toBe(true); + expect(exists('ccrAutoFollowPatternDetailsEditActionButton')).toBe(true); + }); + + test('should close the detail panel when clicking the "close" button', () => { + clickAutoFollowPatternAt(0); // open the detail panel + expect(exists('ccrAutoFollowPatternDetailsFlyout')).toBe(true); + + find('ccrAutoFollowPatternDetailsFlyoutCloseButton').simulate('click'); // close the detail panel + + expect(exists('ccrAutoFollowPatternDetailsFlyout')).toBe(false); + }); + + test('should open a confirmation modal when clicking the "delete" button', () => { + clickAutoFollowPatternAt(0); + expect(exists('ccrAutoFollowPatternDeleteConfirmationModal')).toBe(false); + + find('ccrAutoFollowPatternDetailsDeleteActionButton').simulate('click'); + + expect(exists('ccrAutoFollowPatternDeleteConfirmationModal')).toBe(true); + }); + + test('should display the recent errors', async () => { + const message = 'bar'; + const recentAutoFollowErrors = [{ + leaderIndex: `${autoFollowPattern1.name}:my-leader-test`, + autoFollowException: { type: 'exception', reason: message } + }, { + leaderIndex: `${autoFollowPattern2.name}:my-leader-test`, + autoFollowException: { type: 'exception', reason: message } + }]; + updateHttpMockResponse('autoFollowStats', { recentAutoFollowErrors }); + + clickAutoFollowPatternAt(0); + expect(exists('ccrAutoFollowPatternDetailErrors')).toBe(false); + + // We select the other auto-follow pattern because the stats are fetched + // each time we change the auto-follow pattern selection + clickAutoFollowPatternAt(1); + await nextTick(); + component.update(); + + expect(exists('ccrAutoFollowPatternDetailErrors')).toBe(true); + expect(exists('ccrAutoFollowPatternDetailsTitleErrors')).toBe(true); + expect(find('ccrAutoFollowPatternDetailRecentError').map(error => error.text())).toEqual([message]); + }); + }); + }); +}); diff --git a/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/follower_indices_list.test.js b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/follower_indices_list.test.js new file mode 100644 index 00000000000000..eb30e796cbaead --- /dev/null +++ b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/follower_indices_list.test.js @@ -0,0 +1,343 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import sinon from 'sinon'; + +import { initTestBed, mockAllHttpRequests, nextTick, getRandomString } from './test_helpers'; +import { FollowerIndicesList } from '../../public/app/sections/home/follower_indices_list'; +import { getFollowerIndexMock } from '../../fixtures/follower_index'; + +jest.mock('ui/chrome', () => ({ + addBasePath: () => 'api/cross_cluster_replication', + breadcrumbs: { set: () => {} }, +})); + +jest.mock('ui/index_patterns', () => { + const { INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE } = require.requireActual('../../../../../src/legacy/ui/public/index_patterns/constants'); // eslint-disable-line max-len + return { INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE }; +}); + +describe('', () => { + let server; + let find; + let exists; + let component; + let getMetadataFromEuiTable; + let getUserActions; + let tableCellsValues; + let updateHttpMockResponse; + + beforeEach(() => { + server = sinon.fakeServer.create(); + server.respondImmediately = true; + (updateHttpMockResponse = mockAllHttpRequests(server)); + }); + + describe('on component mount', () => { + beforeEach(async () => { + ({ exists } = initTestBed(FollowerIndicesList)); + }); + + test('should show a loading indicator on component', async () => { + expect(exists('ccrFollowerIndexLoading')).toBe(true); + }); + }); + + describe('when there are no follower indices', () => { + beforeEach(async () => { + ({ exists, component } = initTestBed(FollowerIndicesList)); + + await nextTick(); // We need to wait next tick for the mock server response to comes in + component.update(); + }); + + test('should display an empty prompt', async () => { + expect(exists('ccrFollowerIndexEmptyPrompt')).toBe(true); + }); + + test('should have a button to create a follower index', async () => { + expect(exists('ccrFollowerIndexEmptyPromptCreateButton')).toBe(true); + }); + }); + + describe('when there are follower indices', async () => { + // For deterministic tests, we need to make sure that index1 comes before index2 + // in the table list that is rendered. As the table orders alphabetically by index name + // we prefix the random name to make sure that index1 name comes before index2. + const index1 = getFollowerIndexMock({ name: `a${getRandomString()}` }); + const index2 = getFollowerIndexMock({ name: `b${getRandomString()}`, status: 'paused' }); + + const followerIndices = [index1, index2]; + + let selectFollowerIndexAt; + let openContextMenu; + let openTableRowContextMenuAt; + let clickContextMenuButtonAt; + let clickFollowerIndexAt; + + beforeEach(async () => { + updateHttpMockResponse('loadFollowerIndices', { indices: followerIndices }); + + // Mount the component + ({ + find, + exists, + component, + getMetadataFromEuiTable, + getUserActions, + } = initTestBed(FollowerIndicesList)); + + await nextTick(); // Make sure that the Http request is fulfilled + component.update(); + + ({ + selectFollowerIndexAt, + openContextMenu, + openTableRowContextMenuAt, + clickContextMenuButtonAt, + clickFollowerIndexAt, + } = getUserActions('followerIndicesList')); + + // Read the index list table + ({ tableCellsValues } = getMetadataFromEuiTable('ccrFollowerIndexListTable')); + }); + + afterEach(async () => { + // The updates are not all synchronouse + // We need to wait for all the updates to ran before unmounting our component + await nextTick(100); + }); + + test('should not display the empty prompt', () => { + expect(exists('ccrFollowerIndexEmptyPrompt')).toBe(false); + }); + + test('should have a button to create a follower index', () => { + expect(exists('ccrCreateFollowerIndexButton')).toBe(true); + }); + + test('should list the follower indices in the table', () => { + expect(tableCellsValues.length).toEqual(followerIndices.length); + expect(tableCellsValues).toEqual([ + [ '', // Empty because the first column is the checkbox to select row + index1.name, + 'Active', + index1.remoteCluster, + index1.leaderIndex, + '' // Empty because the last column is for the "actions" on the resource + ], [ '', + index2.name, + 'Paused', + index2.remoteCluster, + index2.leaderIndex, + '' ] + ]); + }); + + describe('action menu', () => { + test('should be visible when a follower index is selected', () => { + expect(exists('ccrFollowerIndexListContextMenuButton')).toBe(false); + + selectFollowerIndexAt(0); + + expect(exists('ccrFollowerIndexListContextMenuButton')).toBe(true); + }); + + test('should have a "pause", "edit" and "unfollow" action when the follower index is active', async () => { + selectFollowerIndexAt(0); + openContextMenu(); + + const contextMenu = find('followerIndexActionContextMenu'); + + expect(contextMenu.length).toBeTruthy(); + const contextMenuButtons = contextMenu.find('button'); + const buttonsLabel = contextMenuButtons.map(btn => btn.text()); + + expect(buttonsLabel).toEqual([ + 'Pause replication', + 'Edit follower index', + 'Unfollow leader index' + ]); + }); + + test('should have a "resume", "edit" and "unfollow" action when the follower index is active', async () => { + selectFollowerIndexAt(1); // Select the second follower that is "paused" + openContextMenu(); + + const contextMenu = find('followerIndexActionContextMenu'); + + const contextMenuButtons = contextMenu.find('button'); + const buttonsLabel = contextMenuButtons.map(btn => btn.text()); + expect(buttonsLabel).toEqual([ + 'Resume replication', + 'Edit follower index', + 'Unfollow leader index' + ]); + }); + + test('should open a confirmation modal when clicking on "pause replication"', () => { + expect(exists('ccrFollowerIndexPauseReplicationConfirmationModal')).toBe(false); + + selectFollowerIndexAt(0); + openContextMenu(); + clickContextMenuButtonAt(0); // first button is the "pause" action + + expect(exists('ccrFollowerIndexPauseReplicationConfirmationModal')).toBe(true); + }); + + test('should open a confirmation modal when clicking on "unfollow leader index"', () => { + expect(exists('ccrFollowerIndexUnfollowLeaderConfirmationModal')).toBe(false); + + selectFollowerIndexAt(0); + openContextMenu(); + clickContextMenuButtonAt(2); // third button is the "unfollow" action + + expect(exists('ccrFollowerIndexUnfollowLeaderConfirmationModal')).toBe(true); + }); + }); + + describe('table row action menu', () => { + test('should open a context menu when clicking on the button of each row', async () => { + expect(component.find('.euiContextMenuPanel').length).toBe(0); + + openTableRowContextMenuAt(0); + + expect(component.find('.euiContextMenuPanel').length).toBe(1); + }); + + test('should have the "pause", "edit" and "unfollow" options in the row context menu', async () => { + openTableRowContextMenuAt(0); + + const buttonLabels = component + .find('.euiContextMenuPanel') + .find('.euiContextMenuItem') + .map(button => button.text()); + + expect(buttonLabels).toEqual([ + 'Pause replication', + 'Edit follower index', + 'Unfollow leader index' + ]); + }); + + test('should have the "resume", "edit" and "unfollow" options in the row context menu', async () => { + // We open the context menu of the second row (index 1) as followerIndices[1].status is "paused" + openTableRowContextMenuAt(1); + + const buttonLabels = component + .find('.euiContextMenuPanel') + .find('.euiContextMenuItem') + .map(button => button.text()); + + expect(buttonLabels).toEqual([ + 'Resume replication', + 'Edit follower index', + 'Unfollow leader index' + ]); + }); + + test('should open a confirmation modal when clicking on "pause replication"', async () => { + expect(exists('ccrFollowerIndexPauseReplicationConfirmationModal')).toBe(false); + + openTableRowContextMenuAt(0); + find('ccrFollowerIndexListPauseActionButton').simulate('click'); + + expect(exists('ccrFollowerIndexPauseReplicationConfirmationModal')).toBe(true); + }); + + test('should open a confirmation modal when clicking on "resume"', async () => { + expect(exists('ccrFollowerIndexResumeReplicationConfirmationModal')).toBe(false); + + openTableRowContextMenuAt(1); // open the second row context menu, as it is a "paused" follower index + find('ccrFollowerIndexListResumeActionButton').simulate('click'); + + expect(exists('ccrFollowerIndexResumeReplicationConfirmationModal')).toBe(true); + }); + + test('should open a confirmation modal when clicking on "unfollow leader index"', () => { + expect(exists('ccrFollowerIndexUnfollowLeaderConfirmationModal')).toBe(false); + + openTableRowContextMenuAt(0); + find('ccrFollowerIndexListUnfollowActionButton').simulate('click'); + + expect(exists('ccrFollowerIndexUnfollowLeaderConfirmationModal')).toBe(true); + }); + }); + + describe('detail panel', () => { + test('should open a detail panel when clicking on a follower index', () => { + expect(exists('ccrFollowerIndexDetailsFlyout')).toBe(false); + + clickFollowerIndexAt(0); + + expect(exists('ccrFollowerIndexDetailsFlyout')).toBe(true); + }); + + test('should set the title the index that has been selected', () => { + clickFollowerIndexAt(0); // Open the detail panel + expect(find('followerIndexDetailsFlyoutTitle').text()).toEqual(index1.name); + }); + + test('should have a "settings" section', () => { + clickFollowerIndexAt(0); + expect(find('ccrFollowerIndexDetailPanelSettingsSection').find('h3').text()).toEqual('Settings'); + expect(exists('ccrFollowerIndexDetailPanelSettingsValues')).toBe(true); + }); + + test('should set the correct follower index settings values', () => { + const mapSettingsToFollowerIndexProp = { + 'Status': 'status', + 'RemoteCluster': 'remoteCluster', + 'LeaderIndex': 'leaderIndex', + 'MaxReadReqOpCount': 'maxReadRequestOperationCount', + 'MaxOutstandingReadReq': 'maxOutstandingReadRequests', + 'MaxReadReqSize': 'maxReadRequestSize', + 'MaxWriteReqOpCount': 'maxWriteRequestOperationCount', + 'MaxWriteReqSize': 'maxWriteRequestSize', + 'MaxOutstandingWriteReq': 'maxOutstandingWriteRequests', + 'MaxWriteBufferCount': 'maxWriteBufferCount', + 'MaxWriteBufferSize': 'maxWriteBufferSize', + 'MaxRetryDelay': 'maxRetryDelay', + 'ReadPollTimeout': 'readPollTimeout' + }; + + clickFollowerIndexAt(0); + + Object.entries(mapSettingsToFollowerIndexProp).forEach(([setting, prop]) => { + const wrapper = find(`ccrFollowerIndexDetail${setting}`); + + if (!wrapper.length) { + throw new Error(`Could not find description for setting "${setting}"`); + } + + expect(wrapper.text()).toEqual(index1[prop].toString()); + }); + }); + + test('should not have settings values for a "paused" follower index', () => { + clickFollowerIndexAt(1); // the second follower index is paused + expect(exists('ccrFollowerIndexDetailPanelSettingsValues')).toBe(false); + expect(find('ccrFollowerIndexDetailPanelSettingsSection').text()).toContain('paused follower index does not have settings'); + }); + + test('should have a section to render the follower index shards stats', () => { + clickFollowerIndexAt(0); + expect(exists('ccrFollowerIndexDetailPanelShardsStatsSection')).toBe(true); + }); + + test('should render a EuiCodeEditor for each shards stats', () => { + clickFollowerIndexAt(0); + + const codeEditors = component.find(`EuiCodeEditor`); + + expect(codeEditors.length).toBe(index1.shards.length); + codeEditors.forEach((codeEditor, i) => { + expect(JSON.parse(codeEditor.props().value)).toEqual(index1.shards[i]); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/home.test.js b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/home.test.js new file mode 100644 index 00000000000000..5d09018a2bbd61 --- /dev/null +++ b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/home.test.js @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import sinon from 'sinon'; + +import { initTestBed, mockAllHttpRequests, nextTick } from './test_helpers'; +import { CrossClusterReplicationHome } from '../../public/app/sections/home/home'; +import { BASE_PATH } from '../../common/constants'; +import routing from '../../public/app/services/routing'; + +jest.mock('ui/chrome', () => ({ + addBasePath: () => 'api/cross_cluster_replication', + breadcrumbs: { set: () => {} }, +})); + +jest.mock('ui/index_patterns', () => { + const { INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE } = require.requireActual('../../../../../src/legacy/ui/public/index_patterns/constants'); // eslint-disable-line max-len + return { INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE }; +}); + +const testBedOptions = { + memoryRouter: { + initialEntries: [`${BASE_PATH}/follower_indices`], + componentRoutePath: `${BASE_PATH}/:section`, + onRouter: (router) => routing.reactRouter = router + } +}; + +describe('', () => { + let server; + let find; + let exists; + let component; + + beforeEach(() => { + server = sinon.fakeServer.create(); + server.respondImmediately = true; + mockAllHttpRequests(server); + }); + + describe('on component mount', () => { + beforeEach(async () => { + ({ exists, find, component } = initTestBed(CrossClusterReplicationHome, undefined, testBedOptions)); + }); + + test('should set the correct an app title', () => { + expect(exists('ccrAppTitle')).toBe(true); + expect(find('ccrAppTitle').text()).toEqual('Cross Cluster Replication'); + }); + + test('should have 2 tabs to switch between "Follower indices" & "Auto-follow patterns"', () => { + expect(exists('ccrFollowerIndicesTab')).toBe(true); + expect(find('ccrFollowerIndicesTab').text()).toEqual('Follower indices'); + + expect(exists('ccrAutoFollowPatternsTab')).toBe(true); + expect(find('ccrAutoFollowPatternsTab').text()).toEqual('Auto-follow patterns'); + }); + + test('should set the default selected tab to "Follower indices"', () => { + expect(component.find('.euiTab-isSelected').text()).toBe('Follower indices'); + + // Verify that the component is rendered + expect(component.find('FollowerIndicesList').length).toBe(1); + }); + }); + + describe('section change', () => { + test('should change to auto-follow pattern', async () => { + const autoFollowPatternsTab = find('ccrAutoFollowPatternsTab'); + + autoFollowPatternsTab.simulate('click'); + await nextTick(); + component.update(); + + expect(component.find('.euiTab-isSelected').text()).toBe('Auto-follow patterns'); + + // Verify that the component is rendered + expect(component.find('AutoFollowPatternList').length).toBe(1); + }); + }); +}); diff --git a/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/test_helpers.js b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/test_helpers.js new file mode 100644 index 00000000000000..2bd747977c1114 --- /dev/null +++ b/x-pack/plugins/cross_cluster_replication/__jest__/client_integration/test_helpers.js @@ -0,0 +1,212 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import axios from 'axios'; + +import { registerTestBed, findTestSubject } from '../../../../test_utils'; +import { ccrStore } from '../../public/app/store'; +import { setHttpClient } from '../../public/app/services/api'; +import routing from '../../public/app/services/routing'; + +// Mock React router +const reactRouter = { + history: { + push: () => {}, + createHref: (location) => location.pathname, + location: '' + } +}; + +routing.reactRouter = reactRouter; +// Mock Angular $q +const $q = { defer: () => ({ resolve() {} }) }; +// axios has a $http like interface so using it to simulate $http +setHttpClient(axios.create(), $q); + +const initUserActions = ({ getMetadataFromEuiTable, find }) => (section) => { + const userActions = { + // Follower indices user actions + followerIndicesList() { + const { rows } = getMetadataFromEuiTable('ccrFollowerIndexListTable'); + + const selectFollowerIndexAt = (index = 0) => { + const row = rows[index]; + const checkBox = row.reactWrapper.find('input').hostNodes(); + checkBox.simulate('change', { target: { checked: true } }); + }; + + const openContextMenu = () => { + find('ccrFollowerIndexListContextMenuButton').simulate('click'); + }; + + const clickContextMenuButtonAt = (index = 0) => { + const contextMenu = find('followerIndexActionContextMenu'); + contextMenu.find('button').at(index).simulate('click'); + }; + + const openTableRowContextMenuAt = (index = 0) => { + const actionsColumnIndex = rows[0].columns.length - 1; // Actions are in the last column + const actionsTableCell = rows[index].columns[actionsColumnIndex]; + const button = actionsTableCell.reactWrapper.find('button'); + if (!button.length) { + throw new Error(`No button to open context menu were found on Follower index list table row ${index}`); + } + button.simulate('click'); + }; + + const clickFollowerIndexAt = (index = 0) => { + const followerIndexLink = findTestSubject(rows[index].reactWrapper, 'ccrFollowerIndexListFollowerIndexLink'); + followerIndexLink.simulate('click'); + }; + + return { + selectFollowerIndexAt, + openContextMenu, + clickContextMenuButtonAt, + openTableRowContextMenuAt, + clickFollowerIndexAt, + }; + }, + // Auto-follow patterns user actions + autoFollowPatternList() { + const { rows } = getMetadataFromEuiTable('ccrAutoFollowPatternListTable'); + + const selectAutoFollowPatternAt = (index = 0) => { + const row = rows[index]; + const checkBox = row.reactWrapper.find('input').hostNodes(); + checkBox.simulate('change', { target: { checked: true } }); + }; + + const clickBulkDeleteButton = () => { + find('ccrAutoFollowPatternListBulkDeleteActionButton').simulate('click'); + }; + + const clickConfirmModalDeleteAutoFollowPattern = () => { + const modal = find('ccrAutoFollowPatternDeleteConfirmationModal'); + findTestSubject(modal, 'confirmModalConfirmButton').simulate('click'); + }; + + const clickRowActionButtonAt = (index = 0, action = 'delete') => { + const indexLastColumn = rows[index].columns.length - 1; + const tableCellActions = rows[index].columns[indexLastColumn].reactWrapper; + + let button; + if (action === 'delete') { + button = findTestSubject(tableCellActions, 'ccrAutoFollowPatternListDeleteActionButton'); + } else if (action === 'edit') { + findTestSubject(tableCellActions, 'ccrAutoFollowPatternListEditActionButton'); + } + + if (!button) { + throw new Error(`Button for action "${action}" not found.`); + } + + button.simulate('click'); + }; + + const clickAutoFollowPatternAt = (index = 0) => { + const autoFollowPatternLink = findTestSubject(rows[index].reactWrapper, 'ccrAutoFollowPatternListPatternLink'); + autoFollowPatternLink.simulate('click'); + }; + + return { + selectAutoFollowPatternAt, + clickBulkDeleteButton, + clickConfirmModalDeleteAutoFollowPattern, + clickRowActionButtonAt, + clickAutoFollowPatternAt + }; + } + }; + + return userActions[section](); +}; + +export { nextTick, getRandomString, findTestSubject } from '../../../../test_utils'; + +export const initTestBed = (component, props = {}, options) => { + const testBed = registerTestBed(component, {}, ccrStore)(props, options); + const getUserActions = initUserActions(testBed); + + return { + ...testBed, + getUserActions, + }; +}; + +export const mockAllHttpRequests = server => { + const mockResponse = (defaultResponse, response) => ([ + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify({ ...defaultResponse, ...response }), + ]); + + const setLoadFollowerIndicesResponse = (response) => { + const defaultResponse = { indices: [] }; + + server.respondWith('GET', 'api/cross_cluster_replication/follower_indices', + mockResponse(defaultResponse, response)); + }; + + const setLoadAutoFollowPatternsResponse = (response) => { + const defaultResponse = { patterns: [] }; + + server.respondWith('GET', 'api/cross_cluster_replication/auto_follow_patterns', + mockResponse(defaultResponse, response) + ); + }; + + const setDeleteAutoFollowPatternResponse = (response) => { + const defaultResponse = { errors: [], itemsDeleted: [] }; + + server.respondWith('DELETE', /api\/cross_cluster_replication\/auto_follow_patterns/, + mockResponse(defaultResponse, response) + ); + }; + + const setAutoFollowStatsResponse = (response) => { + const defaultResponse = { + numberOfFailedFollowIndices: 0, + numberOfFailedRemoteClusterStateRequests: 0, + numberOfSuccessfulFollowIndices: 0, + recentAutoFollowErrors: [], + autoFollowedClusters: [{ + clusterName: 'new-york', + timeSinceLastCheckMillis: 13746, + lastSeenMetadataVersion: 22 + }] + }; + + server.respondWith('GET', 'api/cross_cluster_replication/stats/auto_follow', + mockResponse(defaultResponse, response) + ); + }; + + /** + * Set all http request to their default response + */ + setLoadFollowerIndicesResponse(); + setLoadAutoFollowPatternsResponse(); + setAutoFollowStatsResponse(); + + /** + * Return a method to override any of the http reques + */ + return (request, response) => { + const mapRequestToHelper = { + 'loadFollowerIndices': setLoadFollowerIndicesResponse, + 'loadAutoFollowPatterns': setLoadAutoFollowPatternsResponse, + 'deleteAutoFollowPattern': setDeleteAutoFollowPatternResponse, + 'autoFollowStats': setAutoFollowStatsResponse, + }; + + if (!mapRequestToHelper[request]) { + throw new Error(`Did not find a helper to set http response for request ${request}`); + } + + return mapRequestToHelper[request](response); + }; +}; diff --git a/x-pack/plugins/cross_cluster_replication/fixtures/auto_follow_pattern.js b/x-pack/plugins/cross_cluster_replication/fixtures/auto_follow_pattern.js index 187b91b66ea73d..cfedad5c1c0727 100644 --- a/x-pack/plugins/cross_cluster_replication/fixtures/auto_follow_pattern.js +++ b/x-pack/plugins/cross_cluster_replication/fixtures/auto_follow_pattern.js @@ -4,14 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -const Chance = require('chance'); // eslint-disable-line import/no-extraneous-dependencies -const chance = new Chance(); +import { getRandomString } from '../../../test_utils'; export const getAutoFollowPatternMock = ( - name = chance.string(), - remoteCluster = chance.string(), - leaderIndexPatterns = [chance.string()], - followIndexPattern = chance.string() + name = getRandomString(), + remoteCluster = getRandomString(), + leaderIndexPatterns = [getRandomString()], + followIndexPattern = getRandomString() ) => ({ name, pattern: { @@ -33,3 +32,18 @@ export const getAutoFollowPatternListMock = (total = 3) => { return list; }; + +// ----------------- +// Client test mock +// ----------------- +export const getAutoFollowPatternClientMock = ({ + name = getRandomString(), + remoteCluster = getRandomString(), + leaderIndexPatterns = [`${getRandomString()}-*`], + followIndexPattern = getRandomString() +}) => ({ + name, + remoteCluster, + leaderIndexPatterns, + followIndexPattern, +}); diff --git a/x-pack/plugins/cross_cluster_replication/fixtures/follower_index.js b/x-pack/plugins/cross_cluster_replication/fixtures/follower_index.js index ef888f8929a267..e873c1a394f44a 100644 --- a/x-pack/plugins/cross_cluster_replication/fixtures/follower_index.js +++ b/x-pack/plugins/cross_cluster_replication/fixtures/follower_index.js @@ -6,6 +6,63 @@ const Chance = require('chance'); // eslint-disable-line import/no-extraneous-dependencies const chance = new Chance(); +import { getRandomString } from '../../../test_utils'; + +const serializeShard = ({ + id, + remoteCluster, + leaderIndex, + leaderGlobalCheckpoint, + leaderMaxSequenceNum, + followerGlobalCheckpoint, + followerMaxSequenceNum, + lastRequestedSequenceNum, + outstandingReadRequestsCount, + outstandingWriteRequestsCount, + writeBufferOperationsCount, + writeBufferSizeBytes, + followerMappingVersion, + followerSettingsVersion, + totalReadTimeMs, + totalReadRemoteExecTimeMs, + successfulReadRequestCount, + failedReadRequestsCount, + operationsReadCount, + bytesReadCount, + totalWriteTimeMs, + successfulWriteRequestsCount, + failedWriteRequestsCount, + operationsWrittenCount, + readExceptions, + timeSinceLastReadMs, +}) => ({ + shard_id: id, + remote_cluster: remoteCluster, + leader_index: leaderIndex, + leader_global_checkpoint: leaderGlobalCheckpoint, + leader_max_seq_no: leaderMaxSequenceNum, + follower_global_checkpoint: followerGlobalCheckpoint, + follower_max_seq_no: followerMaxSequenceNum, + last_requested_seq_no: lastRequestedSequenceNum, + outstanding_read_requests: outstandingReadRequestsCount, + outstanding_write_requests: outstandingWriteRequestsCount, + write_buffer_operation_count: writeBufferOperationsCount, + write_buffer_size_in_bytes: writeBufferSizeBytes, + follower_mapping_version: followerMappingVersion, + follower_settings_version: followerSettingsVersion, + total_read_time_millis: totalReadTimeMs, + total_read_remote_exec_time_millis: totalReadRemoteExecTimeMs, + successful_read_requests: successfulReadRequestCount, + failed_read_requests: failedReadRequestsCount, + operations_read: operationsReadCount, + bytes_read: bytesReadCount, + total_write_time_millis: totalWriteTimeMs, + successful_write_requests: successfulWriteRequestsCount, + failed_write_requests: failedWriteRequestsCount, + operations_written: operationsWrittenCount, + read_exceptions: readExceptions, + time_since_last_read_millis: timeSinceLastReadMs, +}); export const getFollowerIndexStatsMock = ( name = chance.string(), @@ -37,68 +94,10 @@ export const getFollowerIndexStatsMock = ( readExceptions: [ chance.string() ], timeSinceLastReadMs: chance.integer(), }] -) => { - const serializeShard = ({ - id, - remoteCluster, - leaderIndex, - leaderGlobalCheckpoint, - leaderMaxSequenceNum, - followerGlobalCheckpoint, - followerMaxSequenceNum, - lastRequestedSequenceNum, - outstandingReadRequestsCount, - outstandingWriteRequestsCount, - writeBufferOperationsCount, - writeBufferSizeBytes, - followerMappingVersion, - followerSettingsVersion, - totalReadTimeMs, - totalReadRemoteExecTimeMs, - successfulReadRequestCount, - failedReadRequestsCount, - operationsReadCount, - bytesReadCount, - totalWriteTimeMs, - successfulWriteRequestsCount, - failedWriteRequestsCount, - operationsWrittenCount, - readExceptions, - timeSinceLastReadMs, - }) => ({ - shard_id: id, - remote_cluster: remoteCluster, - leader_index: leaderIndex, - leader_global_checkpoint: leaderGlobalCheckpoint, - leader_max_seq_no: leaderMaxSequenceNum, - follower_global_checkpoint: followerGlobalCheckpoint, - follower_max_seq_no: followerMaxSequenceNum, - last_requested_seq_no: lastRequestedSequenceNum, - outstanding_read_requests: outstandingReadRequestsCount, - outstanding_write_requests: outstandingWriteRequestsCount, - write_buffer_operation_count: writeBufferOperationsCount, - write_buffer_size_in_bytes: writeBufferSizeBytes, - follower_mapping_version: followerMappingVersion, - follower_settings_version: followerSettingsVersion, - total_read_time_millis: totalReadTimeMs, - total_read_remote_exec_time_millis: totalReadRemoteExecTimeMs, - successful_read_requests: successfulReadRequestCount, - failed_read_requests: failedReadRequestsCount, - operations_read: operationsReadCount, - bytes_read: bytesReadCount, - total_write_time_millis: totalWriteTimeMs, - successful_write_requests: successfulWriteRequestsCount, - failed_write_requests: failedWriteRequestsCount, - operations_written: operationsWrittenCount, - read_exceptions: readExceptions, - time_since_last_read_millis: timeSinceLastReadMs, - }); - - return { - index: name, - shards: shards.map(serializeShard), - }; -}; +) => ({ + index: name, + shards: shards.map(serializeShard), +}); export const getFollowerIndexListStatsMock = (total = 3, names) => { const list = { @@ -157,3 +156,57 @@ export const getFollowerIndexListInfoMock = (total = 3) => { return list; }; + +// ----------------- +// Client test mock +// ----------------- + +export const getFollowerIndexMock = ({ + name = getRandomString(), + remoteCluster = getRandomString(), + leaderIndex = getRandomString(), + status = 'Active' +} = {}) => ({ + name, + remoteCluster, + leaderIndex, + status, + maxReadRequestOperationCount: chance.integer(), + maxOutstandingReadRequests: chance.integer(), + maxReadRequestSize: getRandomString({ length: 5 }), + maxWriteRequestOperationCount: chance.integer(), + maxWriteRequestSize: '9223372036854775807b', + maxOutstandingWriteRequests: chance.integer(), + maxWriteBufferCount: chance.integer(), + maxWriteBufferSize: getRandomString({ length: 5 }), + maxRetryDelay: getRandomString({ length: 5 }), + readPollTimeout: getRandomString({ length: 5 }), + shards: [{ + id: 0, + remoteCluster: remoteCluster, + leaderIndex: leaderIndex, + leaderGlobalCheckpoint: chance.integer(), + leaderMaxSequenceNum: chance.integer(), + followerGlobalCheckpoint: chance.integer(), + followerMaxSequenceNum: chance.integer(), + lastRequestedSequenceNum: chance.integer(), + outstandingReadRequestsCount: chance.integer(), + outstandingWriteRequestsCount: chance.integer(), + writeBufferOperationsCount: chance.integer(), + writeBufferSizeBytes: chance.integer(), + followerMappingVersion: chance.integer(), + followerSettingsVersion: chance.integer(), + totalReadTimeMs: chance.integer(), + totalReadRemoteExecTimeMs: chance.integer(), + successfulReadRequestCount: chance.integer(), + failedReadRequestsCount: chance.integer(), + operationsReadCount: chance.integer(), + bytesReadCount: chance.integer(), + totalWriteTimeMs: chance.integer(), + successfulWriteRequestsCount: chance.integer(), + failedWriteRequestsCount: chance.integer(), + operationsWrittenCount: chance.integer(), + readExceptions: [], + timeSinceLastReadMs: chance.integer(), + }] +}); diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js index e48347a1711275..9c617446b28a25 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js @@ -87,6 +87,7 @@ class AutoFollowPatternDeleteProviderUi extends PureComponent { ) } onMouseOver={this.onMouseOverModal} + data-test-subj="ccrAutoFollowPatternDeleteConfirmationModal" > {!isSingle && ( diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js b/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js index 3e41cb9bdcefd6..c76c13c44d51fa 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js @@ -36,7 +36,7 @@ export const AutoFollowPatternIndicesPreview = ({ prefix, suffix, leaderIndexPat />
    {indicesPreview.map(({ followPattern: { prefix, suffix, template } }, i) => ( -
  • +
  • {prefix}{template}{suffix}
  • ))} diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_pause_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_pause_provider.js index 3beb0353b4e38e..77a887c9792e5f 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_pause_provider.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_pause_provider.js @@ -81,6 +81,7 @@ class FollowerIndexPauseProviderUi extends PureComponent { defaultMessage: 'Pause replication', })} onMouseOver={this.onMouseOverModal} + data-test-subj="ccrFollowerIndexPauseReplicationConfirmationModal" > {hasCustomSettings && (

    diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_resume_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_resume_provider.js index fd9a530f752dfe..0570040bd36610 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_resume_provider.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_resume_provider.js @@ -94,6 +94,7 @@ class FollowerIndexResumeProviderUi extends PureComponent { ) } onMouseOver={this.onMouseOverModal} + data-test-subj="ccrFollowerIndexResumeReplicationConfirmationModal" > {isSingle ? (

    diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_unfollow_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_unfollow_provider.js index 07d69cee659c82..d509db1247f4fe 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_unfollow_provider.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_unfollow_provider.js @@ -92,6 +92,7 @@ class FollowerIndexUnfollowProviderUi extends PureComponent { ) } onMouseOver={this.onMouseOverModal} + data-test-subj="ccrFollowerIndexUnfollowLeaderConfirmationModal" > {isSingle ? ( diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js b/x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js index 4e4abfa571c707..4988449802b534 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js @@ -11,11 +11,12 @@ import { } from '@elastic/eui'; export function SectionError({ title, error }) { + const data = error.data ? error.data : error; const { error: errorString, cause, // wrapEsError() on the server add a "cause" array message, - } = error.data; + } = data; return ( diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js index 22b1a47ca929a0..b3551998070b8b 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js @@ -135,7 +135,7 @@ export class AutoFollowPatternList extends PureComponent { } renderContent(isEmpty) { - const { apiError, isAuthorized } = this.props; + const { apiError, apiStatus, isAuthorized } = this.props; if (!isAuthorized) { return ( @@ -172,6 +172,17 @@ export class AutoFollowPatternList extends PureComponent { return this.renderEmpty(); } + if (apiStatus === API_STATUS.LOADING) { + return ( + + + + ); + } + return this.renderList(); } @@ -211,6 +222,7 @@ export class AutoFollowPatternList extends PureComponent { /> } + data-test-subj="ccrAutoFollowPatternEmptyPrompt" /> ); } @@ -219,22 +231,10 @@ export class AutoFollowPatternList extends PureComponent { const { selectAutoFollowPattern, autoFollowPatterns, - apiStatus, } = this.props; const { isDetailPanelOpen } = this.state; - if (apiStatus === API_STATUS.LOADING) { - return ( - - - - ); - } - return ( diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js index f86b184c66bc9b..a5b46ff3e17f09 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js @@ -261,6 +261,7 @@ export class AutoFollowPatternTable extends PureComponent { cellProps={(item, column) => ({ 'data-test-subj': `ccrAutoFollowPatternListTableCell-${column.field}` })} + data-test-subj="ccrAutoFollowPatternListTable" /> {this.renderLoading()} diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js index 2cfe54b2a0e062..ef014c75447ffd 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js @@ -4,12 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { Component, Fragment } from 'react'; +import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from '@kbn/i18n/react'; import { getIndexListUri } from '../../../../../../../../index_management/public/services/navigation'; - import { EuiButton, EuiButtonEmpty, @@ -24,7 +23,6 @@ import { EuiFlyoutHeader, EuiIcon, EuiLink, - EuiLoadingSpinner, EuiSpacer, EuiText, EuiTextColor, @@ -36,7 +34,6 @@ import { AutoFollowPatternDeleteProvider, } from '../../../../../components'; -import { API_STATUS } from '../../../../../constants'; import routing from '../../../../../services/routing'; export class DetailPanel extends Component { @@ -47,155 +44,154 @@ export class DetailPanel extends Component { closeDetailPanel: PropTypes.func.isRequired, } - renderAutoFollowPattern() { - const { - autoFollowPattern: { - followIndexPatternPrefix, - followIndexPatternSuffix, - remoteCluster, - leaderIndexPatterns, - }, - } = this.props; - - let indexManagementFilter; - if(followIndexPatternPrefix) { - indexManagementFilter = `name:${followIndexPatternPrefix}`; - } else if(followIndexPatternSuffix) { - indexManagementFilter = `name:${followIndexPatternSuffix}`; - } - const indexManagementUri = getIndexListUri(indexManagementFilter); - + renderAutoFollowPattern({ followIndexPatternPrefix, followIndexPatternSuffix, remoteCluster, leaderIndexPatterns }) { return ( - - - -

    - -

    - +
    + +

    + +

    +
    - + - - - - - - - - + + + + + + + + - - {remoteCluster} - - + + {remoteCluster} + + - - - - - - + + + + + + - - {leaderIndexPatterns.join(', ')} - - - + + {leaderIndexPatterns.join(', ')} + + + - + + + + + + + + + - - - - + + {followIndexPatternPrefix || ( + - - - - - {followIndexPatternPrefix || ( - - - - )} - - - - - - + + )} + + + + + + + + + + + + {followIndexPatternSuffix || ( + - - - - - {followIndexPatternSuffix || ( - - - - )} - - - - - - - - - + + )} + + + + +
    + ); + } - - - - - - {this.renderAutoFollowPatternErrors()} - - + renderIndicesPreview(prefix, suffix, leaderIndexPatterns) { + return ( +
    + +
    ); } - renderAutoFollowPatternErrors() { - const { autoFollowPattern } = this.props; + renderAutoFollowPatternNotFound() { + return ( + + + + + + + + + + + + + + + + ); + } + renderAutoFollowPatternErrors(autoFollowPattern) { if (!autoFollowPattern.errors.length) { return null; } return ( - +
    - +

      {autoFollowPattern.errors.map((error, i) => ( -
    • {error.autoFollowException.reason}
    • +
    • + {error.autoFollowException.reason} +
    • ))}
    - +

    ); } - renderContent() { + renderFlyoutBody() { + const { autoFollowPattern } = this.props; + + if (!autoFollowPattern) { + return this.renderAutoFollowPatternNotFound(); + } + const { - apiStatus, - autoFollowPattern, - } = this.props; + followIndexPatternPrefix, + followIndexPatternSuffix, + leaderIndexPatterns, + } = autoFollowPattern; - if (apiStatus === API_STATUS.LOADING) { - return ( - - - - - + let indexManagementFilter; - - - - - - - - - - ); + if(followIndexPatternPrefix) { + indexManagementFilter = `name:${followIndexPatternPrefix}`; + } else if(followIndexPatternSuffix) { + indexManagementFilter = `name:${followIndexPatternSuffix}`; } - if (!autoFollowPattern) { - return ( - - - - - + const indexManagementUri = getIndexListUri(indexManagementFilter); - - - - - - - - - - ); - } + return ( + + {this.renderAutoFollowPattern(autoFollowPattern)} + + - return this.renderAutoFollowPattern(); + {this.renderIndicesPreview(followIndexPatternPrefix, followIndexPatternSuffix, leaderIndexPatterns)} + + + + + + + + + + {this.renderAutoFollowPatternErrors(autoFollowPattern)} + + + ); } - renderFooter() { + renderFlyoutFooter() { const { autoFollowPattern, closeDetailPanel, @@ -306,7 +295,6 @@ export class DetailPanel extends Component { flush="left" onClick={closeDetailPanel} data-test-subj="ccrAutoFollowPatternDetailsFlyoutCloseButton" - > - +

    {autoFollowPatternId}

    - {this.renderContent()} - {this.renderFooter()} + {this.renderFlyoutBody()} + {this.renderFlyoutFooter()} ); } diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js index c58595898c0a55..10008e7a68fc9c 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js @@ -103,7 +103,7 @@ export class ContextMenu extends PureComponent { values={{ followerIndicesLength }} /> - + { activeFollowerIndices.length ? ( diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js index a9520f67cec58d..2dac2bfc51403d 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js @@ -69,99 +69,104 @@ export class DetailPanel extends Component { return ( - -

    - -

    -
    +
    + + + + + + + + - + + {isPaused ? ( + + + + ) : ( + + + + )} + + + - - - - - - - - + - - {isPaused ? ( - + + + + - - ) : ( - + + + + + {remoteCluster} + + + + + + - - )} - - - + + - - - - - - - - - + + {leaderIndex} + + + + +
    - - {remoteCluster} - - + - - - - - - +
    + +

    + +

    +
    - - {leaderIndex} - - - + {isPaused ? ( - - - - } - /> - + + } + /> ) : ( - - + @@ -173,7 +178,7 @@ export class DetailPanel extends Component { - + {maxReadRequestOperationCount} @@ -188,7 +193,7 @@ export class DetailPanel extends Component { - + {maxOutstandingReadRequests} @@ -207,7 +212,7 @@ export class DetailPanel extends Component { - + {maxReadRequestSize} @@ -222,7 +227,7 @@ export class DetailPanel extends Component { - + {maxWriteRequestOperationCount} @@ -241,7 +246,7 @@ export class DetailPanel extends Component { - + {maxWriteRequestSize} @@ -256,7 +261,7 @@ export class DetailPanel extends Component { - + {maxOutstandingWriteRequests} @@ -275,7 +280,7 @@ export class DetailPanel extends Component { - + {maxWriteBufferCount} @@ -290,7 +295,7 @@ export class DetailPanel extends Component { - + {maxWriteBufferSize} @@ -309,7 +314,7 @@ export class DetailPanel extends Component { - + {maxRetryDelay} @@ -324,16 +329,18 @@ export class DetailPanel extends Component { - + {readPollTimeout} - + )} +
    - + +
    {shards && shards.map((shard, i) => ( @@ -359,10 +366,11 @@ export class DetailPanel extends Component { editorProps={{ $blockScrolling: Infinity }} + data-test-subj={`ccrFollowerIndexDetailPanelShardsStats${i}`} /> ))} - +
    ); @@ -510,7 +518,11 @@ export class DetailPanel extends Component { > - +

    {followerIndexId}

    diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js index 0b387ad097e0e3..0f663bc71313a6 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js @@ -93,7 +93,7 @@ export class FollowerIndicesTable extends PureComponent { {(resumeFollowerIndex) => ( resumeFollowerIndex(name)} - data-test-subj="ccrFollowerIndexListPauseActionButton" + data-test-subj="ccrFollowerIndexListResumeActionButton" > ( pauseFollowerIndex(followerIndex)} - data-test-subj="ccrFollowerIndexListResumeActionButton" + data-test-subj="ccrFollowerIndexListPauseActionButton" > ({ 'data-test-subj': `ccrFollowerIndexListTableCell-${column.field}` })} + data-test-subj="ccrFollowerIndexListTable" /> {this.renderLoading()}
    diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js index 0990e814a7189d..16f6e89ec054df 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js @@ -131,7 +131,7 @@ export class FollowerIndicesList extends PureComponent { } renderContent(isEmpty) { - const { apiError, isAuthorized } = this.props; + const { apiError, isAuthorized, apiStatus } = this.props; if (!isAuthorized) { return ( @@ -168,6 +168,10 @@ export class FollowerIndicesList extends PureComponent { return this.renderEmpty(); } + if (apiStatus === API_STATUS.LOADING) { + return this.renderLoading(); + } + return this.renderList(); } @@ -206,30 +210,30 @@ export class FollowerIndicesList extends PureComponent { /> } + data-test-subj="ccrFollowerIndexEmptyPrompt" /> ); } + renderLoading() { + return ( + + + + ); + } + renderList() { const { selectFollowerIndex, followerIndices, - apiStatus, } = this.props; const { isDetailPanelOpen } = this.state; - if (apiStatus === API_STATUS.LOADING) { - return ( - - - - ); - } - return ( diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js index 0252616ce4cd5f..b9e7f68e776145 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js @@ -69,7 +69,7 @@ export class CrossClusterReplicationHome extends PureComponent { return ( - +

    this.onSectionChange(tab.id)} isSelected={tab.id === this.state.activeSection} key={tab.id} - data-test-subject={tab.testSubj} + data-test-subj={tab.testSubj} > {tab.name} diff --git a/x-pack/plugins/rollup/__jest__/client_integration/job_create.test_helpers.js b/x-pack/plugins/rollup/__jest__/client_integration/job_create.test_helpers.js index 5cabb57f1568dc..01b0464aa0e004 100644 --- a/x-pack/plugins/rollup/__jest__/client_integration/job_create.test_helpers.js +++ b/x-pack/plugins/rollup/__jest__/client_integration/job_create.test_helpers.js @@ -103,7 +103,7 @@ export const initTestBed = () => { }; }; -export const nextTick = async () => new Promise((resolve) => setTimeout(resolve)); +export { nextTick } from '../../../../test_utils'; export const mockServerResponses = server => { const mockIndexPatternValidityResponse = (response) => { diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js b/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js index 5aa47b47998bcb..8b220027a75fb0 100644 --- a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js +++ b/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js @@ -53,24 +53,6 @@ describe('', () => { expect(component.find('JobTableUi').length).toBeTruthy(); }); - describe('route query params change', () => { - it('should call the "openDetailPanel()" prop each time the "job" query params changes', () => { - const openDetailPanel = jest.fn(); - const jobId = 'foo'; - const { setProps } = initTestBed({ openDetailPanel }); - - expect(openDetailPanel.mock.calls.length).toBe(0); - - setProps({ - history: { location: { search: `?job=${jobId}` } }, - openDetailPanel, - }); - - expect(openDetailPanel.mock.calls.length).toBe(1); - expect(openDetailPanel.mock.calls[0][0]).toEqual(jobId); - }); - }); - describe('when there is an API error', () => { const { exists, find } = initTestBed({ jobLoadError: { diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index fc13958a389129..2e521829aaf8be 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -3650,7 +3650,6 @@ "xpack.crossClusterReplication.autoFollowPatternDetailPanel.deleteButtonLabel": "删除", "xpack.crossClusterReplication.autoFollowPatternDetailPanel.editButtonLabel": "编辑", "xpack.crossClusterReplication.autoFollowPatternDetailPanel.leaderPatternsLabel": "Leader 模式", - "xpack.crossClusterReplication.autoFollowPatternDetailPanel.loadingLabel": "正在加载自动跟随模式……", "xpack.crossClusterReplication.autoFollowPatternDetailPanel.notFoundLabel": "未找到自动跟随模式", "xpack.crossClusterReplication.autoFollowPatternDetailPanel.prefixEmptyValue": "无前缀", "xpack.crossClusterReplication.autoFollowPatternDetailPanel.prefixLabel": "前缀", diff --git a/x-pack/test_utils/index.js b/x-pack/test_utils/index.js index 47e0c732ab135e..7eca11c3f559bf 100644 --- a/x-pack/test_utils/index.js +++ b/x-pack/test_utils/index.js @@ -5,4 +5,5 @@ */ export { registerTestBed } from './testbed'; -export { getRandomString } from './lib'; +export { getRandomString, nextTick } from './lib'; +export { findTestSubject } from '@elastic/eui/lib/test'; diff --git a/x-pack/test_utils/lib/index.js b/x-pack/test_utils/lib/index.js index e78e3771573556..49c8ada6806b0d 100644 --- a/x-pack/test_utils/lib/index.js +++ b/x-pack/test_utils/lib/index.js @@ -6,3 +6,4 @@ export { getRandomString } from './strings'; +export { nextTick } from './utils'; diff --git a/x-pack/test_utils/lib/strings.js b/x-pack/test_utils/lib/strings.js index 1c88ecf1a636ad..f4ea808062edff 100644 --- a/x-pack/test_utils/lib/strings.js +++ b/x-pack/test_utils/lib/strings.js @@ -9,4 +9,4 @@ import Chance from 'chance'; const chance = new Chance(); const CHARS_POOL = 'abcdefghijklmnopqrstuvwxyz'; -export const getRandomString = () => `${chance.string({ pool: CHARS_POOL })}-${Date.now()}`; +export const getRandomString = (options = {}) => `${chance.string({ pool: CHARS_POOL, ...options })}-${Date.now()}`; diff --git a/x-pack/test_utils/lib/utils.js b/x-pack/test_utils/lib/utils.js new file mode 100644 index 00000000000000..85ab84d96cba3c --- /dev/null +++ b/x-pack/test_utils/lib/utils.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + + +export const nextTick = (time = 0) => new Promise((resolve) => setTimeout(resolve, time)); diff --git a/x-pack/test_utils/testbed/testbed.js b/x-pack/test_utils/testbed/testbed.js index 03477d46ab465f..30bd82c710d875 100644 --- a/x-pack/test_utils/testbed/testbed.js +++ b/x-pack/test_utils/testbed/testbed.js @@ -4,20 +4,75 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { Component } from 'react'; +import { MemoryRouter, Route } from 'react-router-dom'; +import PropTypes from 'prop-types'; import { Provider } from 'react-redux'; import { mountWithIntl } from '../enzyme_helpers'; -import { findTestSubject as findTestSubjectHelper } from '@elastic/eui/lib/test'; +import { findTestSubject as findTestSubjectHelper } from '../index'; const registerTestSubjExists = component => (testSubject, count = 1) => findTestSubjectHelper(component, testSubject).length === count; -export const registerTestBed = (Component, defaultProps, store = {}) => (props) => { +const defaultOptions = { + memoryRouter: { + wrapRoute: true, + }, +}; + +const withRoute = (WrappedComponent, componentRoutePath = '/', onRouter = () => {}) => { + return class extends Component { + static contextTypes = { + router: PropTypes.object + }; + + componentDidMount() { + const { router } = this.context; + onRouter(router); + } + + render() { + return ( + } + /> + ); + } + }; +}; + + +/** + * Register a testBed for a React component to be tested inside a Redux provider + * + * @param {React.SFC} Component A react component to test + * @param {object} defaultProps Props to initialize the component with + * @param {object} store The Redux store to initialize the Redux Provider with + * + * @returns {object} with the following properties: + * + * - component The component wrapped by the Redux provider + * - exists() Method to check if a test subject exists in the mounted component + * - find() Method to find a test subject in the mounted componenet + * - setProp() Method to update the props on the wrapped component + * - getFormErrorsMessages() Method that will find all the "".euiFormErrorText" from eui and return their text + * - getMetadataFromEuiTable() Method that will extract the table rows and column + their values from an Eui tablle component + * - form.setInput() Method to update a form input value + * - form.selectCheckBox() Method to select a form checkbox + */ +export const registerTestBed = (Component, defaultProps, store = {}) => (props, options = defaultOptions) => { + const Comp = options.memoryRouter.wrapRoute === false + ? Component + : withRoute(Component, options.memoryRouter.componentRoutePath, options.memoryRouter.onRouter); + const component = mountWithIntl( - + + + ); @@ -63,7 +118,13 @@ export const registerTestBed = (Component, defaultProps, store = {}) => (props) * @param {ReactWrapper} table enzyme react wrapper of the EuiBasicTable */ const getMetadataFromEuiTable = (tableTestSubject) => { - const rows = find(tableTestSubject) + const table = find(tableTestSubject); + + if (!table.length) { + throw new Error(`Eui Table "${tableTestSubject}" not found.`); + } + + const rows = table .find('tr') .slice(1) // we remove the first row as it is the table header .map(row => ({ From 961f7919d312dfe43b25c15d2f22a8a2e8e6a74f Mon Sep 17 00:00:00 2001 From: Aleh Zasypkin Date: Tue, 26 Mar 2019 12:05:39 +0100 Subject: [PATCH 51/56] Force user to re-authenticate if token refresh fails with `400` status code. (#33774) --- .../security/server/lib/__tests__/errors.js | 46 ---------- .../authentication/__tests__/authenticator.js | 32 ++++++- .../authentication_result.test.ts | 92 +++++++++++++++++++ .../authentication/authentication_result.ts | 15 +++ .../lib/authentication/authenticator.js | 27 +++--- .../providers/__tests__/token.js | 53 +++++++++++ .../lib/authentication/providers/token.js | 29 +++++- x-pack/plugins/security/server/lib/errors.js | 11 --- .../security/server/lib/errors.test.ts | 68 ++++++++++++++ x-pack/plugins/security/server/lib/errors.ts | 19 ++++ 10 files changed, 313 insertions(+), 79 deletions(-) delete mode 100644 x-pack/plugins/security/server/lib/__tests__/errors.js delete mode 100644 x-pack/plugins/security/server/lib/errors.js create mode 100644 x-pack/plugins/security/server/lib/errors.test.ts create mode 100644 x-pack/plugins/security/server/lib/errors.ts diff --git a/x-pack/plugins/security/server/lib/__tests__/errors.js b/x-pack/plugins/security/server/lib/__tests__/errors.js deleted file mode 100644 index 2cf7b6957a2ba8..00000000000000 --- a/x-pack/plugins/security/server/lib/__tests__/errors.js +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import expect from '@kbn/expect'; - -import * as errors from '../errors'; - -describe('lib/errors', function () { - describe('#wrapError', () => { - it('returns given object', () => { - const err = new Error(); - const returned = errors.wrapError(err); - expect(returned).to.equal(err); - }); - it('error becomes boom error', () => { - const err = new Error(); - errors.wrapError(err); - expect(err.isBoom).to.equal(true); - }); - it('defaults output.statusCode to 500', () => { - const err = new Error(); - errors.wrapError(err); - expect(err.output.statusCode).to.equal(500); - }); - it('sets output.statusCode to .status if given', () => { - const err = new Error(); - err.status = 400; - errors.wrapError(err); - expect(err.output.statusCode).to.equal(400); - }); - it('defaults message to "Internal Server Error"', () => { - const err = new Error(); - errors.wrapError(err); - expect(err.message).to.equal('Internal Server Error'); - }); - it('sets custom message if a 400 level error', () => { - const err = new Error('wat'); - err.status = 499; - errors.wrapError(err); - expect(err.output.payload.message).to.equal('wat'); - }); - }); -}); diff --git a/x-pack/plugins/security/server/lib/authentication/__tests__/authenticator.js b/x-pack/plugins/security/server/lib/authentication/__tests__/authenticator.js index 44916c6a7bb829..cf391b4bfdfc01 100644 --- a/x-pack/plugins/security/server/lib/authentication/__tests__/authenticator.js +++ b/x-pack/plugins/security/server/lib/authentication/__tests__/authenticator.js @@ -28,11 +28,10 @@ describe('Authenticator', () => { session = sinon.createStubInstance(Session); config = { get: sinon.stub() }; - cluster = { callWithRequest: sinon.stub() }; // Cluster is returned by `getClient` function that is wrapped into `once` making cluster // a static singleton, so we should use sandbox to set/reset its behavior between tests. - cluster = sinon.stub({ callWithRequest() {} }); + cluster = sinon.stub({ callWithRequest() {}, callWithInternalUser() {} }); sandbox.stub(ClientShield, 'getClient').returns(cluster); server.config.returns(config); @@ -357,6 +356,35 @@ describe('Authenticator', () => { sinon.assert.calledWithExactly(session.clear, notSystemAPIRequest); }); + it('clears session if provider requested it via setting state to `null`.', async () => { + // Use `token` provider for this test as it's the only one that does what we want. + config.get.withArgs('xpack.security.authProviders').returns(['token']); + await initAuthenticator(server); + authenticate = server.expose.withArgs('authenticate').lastCall.args[1]; + + const request = requestFixture({ headers: { xCustomHeader: 'xxx' } }); + + session.get.withArgs(request).resolves({ + state: { accessToken: 'access-xxx', refreshToken: 'refresh-xxx' }, + provider: 'token' + }); + + session.clear.resolves(); + + cluster.callWithRequest + .withArgs(request).rejects({ body: { error: { reason: 'token expired' } } }); + + cluster.callWithInternalUser.withArgs('shield.getAccessToken').rejects( + Boom.badRequest('refresh token expired') + ); + + const authenticationResult = await authenticate(request); + expect(authenticationResult.redirected()).to.be(true); + + sinon.assert.calledOnce(session.clear); + sinon.assert.calledWithExactly(session.clear, request); + }); + it('does not clear session if provider failed to authenticate request with non-401 reason with active session.', async () => { const systemAPIRequest = requestFixture({ headers: { xCustomHeader: 'xxx' } }); diff --git a/x-pack/plugins/security/server/lib/authentication/authentication_result.test.ts b/x-pack/plugins/security/server/lib/authentication/authentication_result.test.ts index d67136e21a5c5a..870e843a829b0a 100644 --- a/x-pack/plugins/security/server/lib/authentication/authentication_result.test.ts +++ b/x-pack/plugins/security/server/lib/authentication/authentication_result.test.ts @@ -123,4 +123,96 @@ describe('AuthenticationResult', () => { expect(authenticationResult.error).toBeUndefined(); }); }); + + describe('shouldUpdateState', () => { + it('always `false` for `failed`', () => { + expect(AuthenticationResult.failed(new Error('error')).shouldUpdateState()).toBe(false); + }); + + it('always `false` for `notHandled`', () => { + expect(AuthenticationResult.notHandled().shouldUpdateState()).toBe(false); + }); + + it('depends on `state` for `redirected`.', () => { + const mockURL = 'some-url'; + expect(AuthenticationResult.redirectTo(mockURL, 'string').shouldUpdateState()).toBe(true); + expect(AuthenticationResult.redirectTo(mockURL, 0).shouldUpdateState()).toBe(true); + expect(AuthenticationResult.redirectTo(mockURL, true).shouldUpdateState()).toBe(true); + expect(AuthenticationResult.redirectTo(mockURL, false).shouldUpdateState()).toBe(true); + expect(AuthenticationResult.redirectTo(mockURL, { prop: 'object' }).shouldUpdateState()).toBe( + true + ); + expect(AuthenticationResult.redirectTo(mockURL, { prop: 'object' }).shouldUpdateState()).toBe( + true + ); + + expect(AuthenticationResult.redirectTo(mockURL).shouldUpdateState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, undefined).shouldUpdateState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, null).shouldUpdateState()).toBe(false); + }); + + it('depends on `state` for `succeeded`.', () => { + const mockUser = { username: 'u' }; + expect(AuthenticationResult.succeeded(mockUser, 'string').shouldUpdateState()).toBe(true); + expect(AuthenticationResult.succeeded(mockUser, 0).shouldUpdateState()).toBe(true); + expect(AuthenticationResult.succeeded(mockUser, true).shouldUpdateState()).toBe(true); + expect(AuthenticationResult.succeeded(mockUser, false).shouldUpdateState()).toBe(true); + expect(AuthenticationResult.succeeded(mockUser, { prop: 'object' }).shouldUpdateState()).toBe( + true + ); + expect(AuthenticationResult.succeeded(mockUser, { prop: 'object' }).shouldUpdateState()).toBe( + true + ); + + expect(AuthenticationResult.succeeded(mockUser).shouldUpdateState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, undefined).shouldUpdateState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, null).shouldUpdateState()).toBe(false); + }); + }); + + describe('shouldClearState', () => { + it('always `false` for `failed`', () => { + expect(AuthenticationResult.failed(new Error('error')).shouldClearState()).toBe(false); + }); + + it('always `false` for `notHandled`', () => { + expect(AuthenticationResult.notHandled().shouldClearState()).toBe(false); + }); + + it('depends on `state` for `redirected`.', () => { + const mockURL = 'some-url'; + expect(AuthenticationResult.redirectTo(mockURL, null).shouldClearState()).toBe(true); + + expect(AuthenticationResult.redirectTo(mockURL).shouldClearState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, undefined).shouldClearState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, 'string').shouldClearState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, 0).shouldClearState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, true).shouldClearState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, false).shouldClearState()).toBe(false); + expect(AuthenticationResult.redirectTo(mockURL, { prop: 'object' }).shouldClearState()).toBe( + false + ); + expect(AuthenticationResult.redirectTo(mockURL, { prop: 'object' }).shouldClearState()).toBe( + false + ); + }); + + it('depends on `state` for `succeeded`.', () => { + const mockUser = { username: 'u' }; + expect(AuthenticationResult.succeeded(mockUser, null).shouldClearState()).toBe(true); + + expect(AuthenticationResult.succeeded(mockUser).shouldClearState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, undefined).shouldClearState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, 'string').shouldClearState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, 0).shouldClearState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, true).shouldClearState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, false).shouldClearState()).toBe(false); + expect(AuthenticationResult.succeeded(mockUser, { prop: 'object' }).shouldClearState()).toBe( + false + ); + expect(AuthenticationResult.succeeded(mockUser, { prop: 'object' }).shouldClearState()).toBe( + false + ); + }); + }); }); diff --git a/x-pack/plugins/security/server/lib/authentication/authentication_result.ts b/x-pack/plugins/security/server/lib/authentication/authentication_result.ts index 19df30ef84ae9e..b6a0d3ba1c21a6 100644 --- a/x-pack/plugins/security/server/lib/authentication/authentication_result.ts +++ b/x-pack/plugins/security/server/lib/authentication/authentication_result.ts @@ -160,4 +160,19 @@ export class AuthenticationResult { public redirected() { return this.status === AuthenticationResultStatus.Redirected; } + + /** + * Checks whether authentication result implies state update. + */ + public shouldUpdateState() { + // State shouldn't be updated in case it wasn't set or was specifically set to `null`. + return this.options.state != null; + } + + /** + * Checks whether authentication result implies state clearing. + */ + public shouldClearState() { + return this.options.state === null; + } } diff --git a/x-pack/plugins/security/server/lib/authentication/authenticator.js b/x-pack/plugins/security/server/lib/authentication/authenticator.js index 2cf2d0e1e0f8b8..f6dacb308e62d8 100644 --- a/x-pack/plugins/security/server/lib/authentication/authenticator.js +++ b/x-pack/plugins/security/server/lib/authentication/authenticator.js @@ -6,6 +6,7 @@ import { getClient } from '../../../../../server/lib/get_client_shield'; import { AuthScopeService } from '../auth_scope_service'; +import { getErrorStatusCode } from '../errors'; import { BasicAuthenticationProvider } from './providers/basic'; import { SAMLAuthenticationProvider } from './providers/saml'; import { TokenAuthenticationProvider } from './providers/token'; @@ -49,15 +50,6 @@ function getProviderOptions(server) { }; } -/** - * Extracts error code from Boom and Elasticsearch "native" errors. - * @param {Error} error Error instance to extract status code from. - * @returns {number} - */ -function getErrorStatusCode(error) { - return error.isBoom ? error.output.statusCode : error.statusCode; -} - /** * Authenticator is responsible for authentication of the request using chain of * authentication providers. The chain is essentially a prioritized list of configured @@ -149,21 +141,24 @@ class Authenticator { ownsSession ? existingSession.state : null ); - if (ownsSession || authenticationResult.state) { + if (ownsSession || authenticationResult.shouldUpdateState()) { // If authentication succeeds or requires redirect we should automatically extend existing user session, // unless authentication has been triggered by a system API request. In case provider explicitly returns new // state we should store it in the session regardless of whether it's a system API request or not. const sessionCanBeUpdated = (authenticationResult.succeeded() || authenticationResult.redirected()) - && (authenticationResult.state || !isSystemApiRequest); - - // If provider owned the session, but failed to authenticate anyway, that likely means - // that session is not valid and we should clear it. - if (authenticationResult.failed() && getErrorStatusCode(authenticationResult.error) === 401) { + && (authenticationResult.shouldUpdateState() || !isSystemApiRequest); + + // If provider owned the session, but failed to authenticate anyway, that likely means that + // session is not valid and we should clear it. Also provider can specifically ask to clear + // session by setting it to `null` even if authentication attempt didn't fail. + if (authenticationResult.shouldClearState() || ( + authenticationResult.failed() && getErrorStatusCode(authenticationResult.error) === 401) + ) { await this._session.clear(request); } else if (sessionCanBeUpdated) { await this._session.set( request, - authenticationResult.state + authenticationResult.shouldUpdateState() ? { state: authenticationResult.state, provider: providerType } : existingSession ); diff --git a/x-pack/plugins/security/server/lib/authentication/providers/__tests__/token.js b/x-pack/plugins/security/server/lib/authentication/providers/__tests__/token.js index ebc33d6b7f596c..b13fc1ce8934f5 100644 --- a/x-pack/plugins/security/server/lib/authentication/providers/__tests__/token.js +++ b/x-pack/plugins/security/server/lib/authentication/providers/__tests__/token.js @@ -6,6 +6,7 @@ import expect from '@kbn/expect'; import sinon from 'sinon'; +import { errors } from 'elasticsearch'; import { requestFixture } from '../../../__tests__/__fixtures__/request'; import { LoginAttempt } from '../../login_attempt'; import { TokenAuthenticationProvider } from '../token'; @@ -327,6 +328,58 @@ describe('TokenAuthenticationProvider', () => { expect(authenticationResult.error).to.be.eql(authenticationError); }); + it('redirects non-AJAX requests to /login and clears session if token refresh fails with 400 error', async () => { + const request = requestFixture({ path: '/some-path' }); + + callWithRequest + .withArgs(sinon.match({ headers: { authorization: 'Bearer foo' } }), 'shield.authenticate') + .rejects({ body: { error: { reason: 'token expired' } } }); + + callWithInternalUser + .withArgs('shield.getAccessToken', { body: { grant_type: 'refresh_token', refresh_token: 'bar' } }) + .rejects(new errors.BadRequest('failed to refresh token')); + + const accessToken = 'foo'; + const refreshToken = 'bar'; + const authenticationResult = await provider.authenticate(request, { accessToken, refreshToken }); + + sinon.assert.calledOnce(callWithRequest); + sinon.assert.calledOnce(callWithInternalUser); + + expect(request.headers).to.not.have.property('authorization'); + expect(authenticationResult.redirected()).to.be(true); + expect(authenticationResult.redirectURL).to.be('/base-path/login?next=%2Fsome-path'); + expect(authenticationResult.user).to.be.eql(undefined); + expect(authenticationResult.state).to.be.eql(null); + expect(authenticationResult.error).to.be.eql(undefined); + }); + + it('does not redirect AJAX requests if token refresh fails with 400 error', async () => { + const request = requestFixture({ headers: { 'kbn-xsrf': 'xsrf' }, path: '/some-path' }); + + callWithRequest + .withArgs(sinon.match({ headers: { authorization: 'Bearer foo' } }), 'shield.authenticate') + .rejects({ body: { error: { reason: 'token expired' } } }); + + const authenticationError = new errors.BadRequest('failed to refresh token'); + callWithInternalUser + .withArgs('shield.getAccessToken', { body: { grant_type: 'refresh_token', refresh_token: 'bar' } }) + .rejects(authenticationError); + + const accessToken = 'foo'; + const refreshToken = 'bar'; + const authenticationResult = await provider.authenticate(request, { accessToken, refreshToken }); + + sinon.assert.calledOnce(callWithRequest); + sinon.assert.calledOnce(callWithInternalUser); + + expect(request.headers).to.not.have.property('authorization'); + expect(authenticationResult.failed()).to.be(true); + expect(authenticationResult.error).to.be(authenticationError); + expect(authenticationResult.user).to.be.eql(undefined); + expect(authenticationResult.state).to.be.eql(undefined); + }); + it('fails if new access token is rejected after successful refresh', async () => { const request = requestFixture(); diff --git a/x-pack/plugins/security/server/lib/authentication/providers/token.js b/x-pack/plugins/security/server/lib/authentication/providers/token.js index 74056bce742cef..96d3c304c34458 100644 --- a/x-pack/plugins/security/server/lib/authentication/providers/token.js +++ b/x-pack/plugins/security/server/lib/authentication/providers/token.js @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import { getErrorStatusCode } from '../../errors'; import { canRedirectRequest } from '../../can_redirect_request'; import { AuthenticationResult } from '../authentication_result'; import { DeauthenticationResult } from '../deauthentication_result'; @@ -91,10 +92,7 @@ export class TokenAuthenticationProvider { // finally, if authentication still can not be handled for this // request/state combination, redirect to the login page if appropriate if (authenticationResult.notHandled() && canRedirectRequest(request)) { - const nextURL = encodeURIComponent(`${request.getBasePath()}${request.url.path}`); - authenticationResult = AuthenticationResult.redirectTo( - `${this._options.basePath}/login?next=${nextURL}` - ); + authenticationResult = AuthenticationResult.redirectTo(this._getLoginPageURL(request)); } return authenticationResult; @@ -356,7 +354,30 @@ export class TokenAuthenticationProvider { // it's called with this request once again down the line (e.g. in the next authentication provider). delete request.headers.authorization; + // If refresh fails with `400` then refresh token is no longer valid and we should clear session + // and redirect user to the login page to re-authenticate. + if (getErrorStatusCode(err) === 400 && canRedirectRequest(request)) { + this._options.log( + ['debug', 'security', 'token'], + 'Clearing session since both access and refresh tokens are expired.' + ); + + // Set state to `null` to let `Authenticator` know that we want to clear current session. + return AuthenticationResult.redirectTo(this._getLoginPageURL(request), null); + } + return AuthenticationResult.failed(err); } } + + /** + * Constructs login page URL using current url path as `next` query string parameter. + * @param {Hapi.Request} request HapiJS request instance. + * @returns {string} + * @private + */ + _getLoginPageURL(request) { + const nextURL = encodeURIComponent(`${request.getBasePath()}${request.url.path}`); + return `${this._options.basePath}/login?next=${nextURL}`; + } } diff --git a/x-pack/plugins/security/server/lib/errors.js b/x-pack/plugins/security/server/lib/errors.js deleted file mode 100644 index 0f8a0f0d8c0a9b..00000000000000 --- a/x-pack/plugins/security/server/lib/errors.js +++ /dev/null @@ -1,11 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { boomify } from 'boom'; - -export function wrapError(error) { - return boomify(error, { statusCode: error.status }); -} diff --git a/x-pack/plugins/security/server/lib/errors.test.ts b/x-pack/plugins/security/server/lib/errors.test.ts new file mode 100644 index 00000000000000..7c4668b245b0e3 --- /dev/null +++ b/x-pack/plugins/security/server/lib/errors.test.ts @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import Boom from 'boom'; +import { errors as esErrors } from 'elasticsearch'; +import * as errors from './errors'; + +describe('lib/errors', () => { + describe('#wrapError', () => { + it('returns given object', () => { + const err = new Error(); + const returned = errors.wrapError(err); + expect(returned).toEqual(err); + }); + + it('error becomes boom error', () => { + const err = new Error(); + errors.wrapError(err); + expect(err).toHaveProperty('isBoom', true); + }); + + it('defaults output.statusCode to 500', () => { + const err = new Error(); + errors.wrapError(err); + expect(err).toHaveProperty('output.statusCode', 500); + }); + + it('sets output.statusCode to .status if given', () => { + const err: any = new Error(); + err.status = 400; + errors.wrapError(err); + expect(err).toHaveProperty('output.statusCode', 400); + }); + + it('defaults message to "Internal Server Error"', () => { + const err = new Error(); + errors.wrapError(err); + expect(err.message).toBe('Internal Server Error'); + }); + + it('sets custom message if a 400 level error', () => { + const err: any = new Error('wat'); + err.status = 499; + errors.wrapError(err); + expect(err).toHaveProperty('output.payload.message', 'wat'); + }); + }); + + describe('#getErrorStatusCode', () => { + it('extracts status code from Boom error', () => { + expect(errors.getErrorStatusCode(Boom.badRequest())).toBe(400); + expect(errors.getErrorStatusCode(Boom.unauthorized())).toBe(401); + }); + + it('extracts status code from Elasticsearch client error', () => { + expect(errors.getErrorStatusCode(new esErrors.BadRequest())).toBe(400); + expect(errors.getErrorStatusCode(new esErrors.AuthenticationException())).toBe(401); + }); + + it('extracts status code from `status` property', () => { + expect(errors.getErrorStatusCode({ statusText: 'Bad Request', status: 400 })).toBe(400); + expect(errors.getErrorStatusCode({ statusText: 'Unauthorized', status: 401 })).toBe(401); + }); + }); +}); diff --git a/x-pack/plugins/security/server/lib/errors.ts b/x-pack/plugins/security/server/lib/errors.ts new file mode 100644 index 00000000000000..e0c2918991696c --- /dev/null +++ b/x-pack/plugins/security/server/lib/errors.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import Boom from 'boom'; + +export function wrapError(error: any) { + return Boom.boomify(error, { statusCode: getErrorStatusCode(error) }); +} + +/** + * Extracts error code from Boom and Elasticsearch "native" errors. + * @param error Error instance to extract status code from. + */ +export function getErrorStatusCode(error: any): number { + return Boom.isBoom(error) ? error.output.statusCode : error.statusCode || error.status; +} From 2f9ad0a814aa7d69da29f3bbf362ca019d792049 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Tue, 26 Mar 2019 06:27:20 -0700 Subject: [PATCH 52/56] Improve performance of the Logstash Pipeline Viewer (#33793) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves #27513. _This PR is a combination of #31293 (the code changes) + #33570 (test updates). These two PRs were individually reviewed and merged into a feature branch. This combo PR here simply sets up the merge from the feature branch to `master`._ Summary of changes, taken from #31293: ## Before this PR The Logstash Pipeline Viewer UI would make a single Kibana API call to fetch all the information necessary to render the Logstash pipeline. This included information necessary to render the detail drawer that opens up when a user clicks on an individual vertex in the pipeline. Naturally, this single API call fetched _a lot_ of data, not just from the Kibana server but also, in turn, from Elasticsearch as well. The "pro" of this approach was that the user would see instantaneous results if they clicked on a vertex in a pipeline and opened the detail drawer for that vertex. The "cons" were the amount of computation Elasticsearch had to perform and the amount of data being transferred over the wire between Elasticsearch and the Kibana server as well as between the Kibana server and the browser. ## With this PR This PR makes the Kibana API call to fetch data necessary for **initially** rendering the pipeline — that is, with the detail drawer closed — much lighter. When the user clicks on a vertex in a pipeline, a second API call is then made to fetch data necessary for the detail drawer. ## Gains, by the numbers Based on a simple, 1-input, 1-filter, and 1-output pipeline. * Before this PR, the Elasticsearch `logstash_stats` API responses (multiple calls were made using the `composite` aggregation over the `date_histogram` aggregation) generated a total of 1228 aggregation buckets (before any `filter_path`s were applied but across all `composite` "pages"). With this PR, the single `logstash_stats` API response (note that this is just for the initial rendering of the pipeline, with the detail drawer closed) generated 12 buckets (also before any `filter_path`s were applied). That's a **99.02% reduction** in number of buckets. * Before this PR, the Elasticsearch `logstash_stats` API responses added up to 70319 bytes. With this PR, the single `logstash_stats` API response for the same pipeline is 746 bytes. That's a **98.93% reduction** in size. * Before this PR, the Elasticsearch `logstash_state` API response was 7718 bytes. With this PR, the API response for the same pipeline is 2328 bytes. That's a **69.83% reduction** in size. * Before this PR the Kibana API response was 51777 bytes. With this PR, the API response for the same pipeline is 2567 bytes (again, note that this is just for the initial rendering of the pipeline, with the detail drawer closed). That's a **95.04% reduction** in size. --- .../models/graph/__tests__/plugin_vertex.js | 38 +- .../models/graph/plugin_vertex.js | 34 +- .../pipeline_viewer.test.js.snap | 30 +- .../views/__test__/pipeline_viewer.test.js | 30 +- .../pipeline_viewer/views/pipeline_viewer.js | 36 +- .../public/views/logstash/pipeline/index.js | 33 +- .../lib/logstash/__tests__/get_pipeline.js | 344 ++++-------------- .../server/lib/logstash/get_pipeline.js | 94 ++--- .../logstash/get_pipeline_state_document.js | 5 +- .../get_pipeline_stats_aggregation.js | 84 ++--- .../lib/logstash/get_pipeline_versions.js | 3 +- .../lib/logstash/get_pipeline_vertex.js | 121 ++++++ .../get_pipeline_vertex_stats_aggregation.js | 189 ++++++++++ .../server/routes/api/v1/logstash/pipeline.js | 40 +- 14 files changed, 547 insertions(+), 534 deletions(-) create mode 100644 x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex.js create mode 100644 x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex_stats_aggregation.js diff --git a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/__tests__/plugin_vertex.js b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/__tests__/plugin_vertex.js index 8d9ccc17c2829b..5e158c5fa97a19 100644 --- a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/__tests__/plugin_vertex.js +++ b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/__tests__/plugin_vertex.js @@ -25,30 +25,10 @@ describe('PluginVertex', () => { vertexJson = { config_name: 'some-name', stats: { - millis_per_event: { - data: [ - [ 1516667383000, 10 ], - [ 1516667386000, 50 ] - ] - }, - percent_of_total_processor_duration: { - data: [ - [ 1516667383000, 0.25 ], - [ 1516667386000, 0.3 ] - ] - }, - events_in_per_millisecond: { - data: [ - [ 1516667383000, 0.01 ], - [ 1516667386000, 0.02 ] - ] - }, - events_out_per_millisecond: { - data: [ - [ 1516667383000, 0.01 ], - [ 1516667386000, 0.03 ] - ] - } + millis_per_event: 50, + percent_of_total_processor_duration: 0.3, + events_in_per_millisecond: 0.01, + events_out_per_millisecond: 0.01 } }; }); @@ -80,7 +60,7 @@ describe('PluginVertex', () => { it('should have the correct events-per-second stat', () => { const pluginVertex = new PluginVertex(graph, vertexJson); - expect(pluginVertex.latestEventsPerSecond).to.be(20); + expect(pluginVertex.latestEventsPerSecond).to.be(10); }); describe('isTimeConsuming', () => { @@ -91,13 +71,13 @@ describe('PluginVertex', () => { }); it('should have a false isTimeConsuming result when the plugin consumes an average amount of execution time', () => { - vertexJson.stats.percent_of_total_processor_duration.data[1][1] = percentExecution; + vertexJson.stats.percent_of_total_processor_duration = percentExecution; const pluginVertex = new PluginVertex(graph, vertexJson); expect(pluginVertex.isTimeConsuming()).to.be(false); }); it('should have a true isTimeConsuming result when the plugin consumes a large amount of execution time', () => { - vertexJson.stats.percent_of_total_processor_duration.data[1][1] = 0.1 + + vertexJson.stats.percent_of_total_processor_duration = 0.1 + (percentExecution * (TIME_CONSUMING_PROCESSOR_THRESHOLD_COEFFICIENT)); const pluginVertex = new PluginVertex(graph, vertexJson); expect(pluginVertex.isTimeConsuming()).to.be(true); @@ -111,13 +91,13 @@ describe('PluginVertex', () => { }); it('should have a true isSlow result when the plugin\'s seconds per event is 2 standard deviations above the mean', () => { - vertexJson.stats.millis_per_event.data[1][1] = 999999999999999999; + vertexJson.stats.millis_per_event = 999999999999999999; const pluginVertex = new PluginVertex(graph, vertexJson); expect(pluginVertex.isSlow()).to.be(true); }); it('should have a false isSlow result when the plugin\'s seconds per event is 2 standard deviations above the mean', () => { - vertexJson.stats.millis_per_event.data[1][1] = 1; + vertexJson.stats.millis_per_event = 1; const pluginVertex = new PluginVertex(graph, vertexJson); expect(pluginVertex.isSlow()).to.be(false); }); diff --git a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/plugin_vertex.js b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/plugin_vertex.js index 0c74318982bd34..23f316a9351cad 100644 --- a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/plugin_vertex.js +++ b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/models/graph/plugin_vertex.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { last, get, omit } from 'lodash'; +import { get } from 'lodash'; import { Vertex } from './vertex'; export const TIME_CONSUMING_PROCESSOR_THRESHOLD_COEFFICIENT = 2; @@ -44,28 +44,36 @@ export class PluginVertex extends Vertex { } get latestMillisPerEvent() { - const latestMillisPerEventBucket = last(get(this.stats, 'millis_per_event.data', [])) || []; - return latestMillisPerEventBucket[1]; + return get(this.stats, 'millis_per_event'); } get percentOfTotalProcessorTime() { - const latestPercentOfTotalProcessorDurationBucket = last(get(this.stats, 'percent_of_total_processor_duration.data', [])) || []; - return latestPercentOfTotalProcessorDurationBucket[1]; + return get(this.stats, 'percent_of_total_processor_duration'); } - get eventsPerSecond() { - const eventsPerMillisecond = this.isInput + get eventsPerMillisecond() { + return this.isInput ? this.stats.events_out_per_millisecond : this.stats.events_in_per_millisecond; - return { - ...omit(eventsPerMillisecond, 'data'), - data: get(eventsPerMillisecond, 'data', []).map(([x, y]) => [x, y * 1000]) - }; + } + + get eventsPerSecond() { + if (!this.eventsPerMillisecond.hasOwnProperty('data')) { + return this.eventsPerMillisecond * 1000; + } + + const eps = { ...this.eventsPerMillisecond }; // Clone the object so we don't modify the original one + eps.data = this.eventsPerMillisecond.data.map(([timestamp, value]) => [ timestamp, value * 1000]); + return eps; } get latestEventsPerSecond() { - const latestBucket = last(get(this.eventsPerSecond, 'data', [])) || []; - return latestBucket[1]; + if (!this.eventsPerSecond.hasOwnProperty('data')) { + return this.eventsPerSecond; + } + + const numTimeseriesBuckets = this.eventsPerSecond.data.length; + return this.eventsPerSecond.data[numTimeseriesBuckets - 1][1]; } isTimeConsuming() { diff --git a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/__test__/__snapshots__/pipeline_viewer.test.js.snap b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/__test__/__snapshots__/pipeline_viewer.test.js.snap index fb22a53cf25b06..aaa012c7a534ea 100644 --- a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/__test__/__snapshots__/pipeline_viewer.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/__test__/__snapshots__/pipeline_viewer.test.js.snap @@ -14,7 +14,6 @@ exports[`PipelineViewer component passes expected props 1`] = ` verticalPosition="center" > @@ -90,11 +87,6 @@ exports[`PipelineViewer component renders DetailDrawer when selected vertex is n verticalPosition="center" > { let pipeline; @@ -44,7 +43,7 @@ describe('PipelineViewer component', () => { }, }; - component = ; + component = ; }); it('passes expected props', () => { @@ -53,33 +52,12 @@ describe('PipelineViewer component', () => { expect(renderedComponent).toMatchSnapshot(); }); - it('changes selected vertex', () => { - const vertex = { id: 'stdin' }; - - const instance = shallowWithIntl(component).instance(); - instance.onShowVertexDetails(vertex); - - expect(get(instance, 'state.detailDrawer.vertex')).toBe(vertex); - }); - - it('toggles selected vertex on second pass', () => { - const vertex = { id: 'stdin' }; - - const instance = shallowWithIntl(component).instance(); - instance.onShowVertexDetails(vertex); - instance.onShowVertexDetails(vertex); - - expect(get(instance, 'state.detailDrawer.vertex')).toBeNull(); - }); - it('renders DetailDrawer when selected vertex is not null', () => { const vertex = { id: 'stdin' }; + component = ; - const wrapper = shallowWithIntl(component); - const instance = wrapper.instance(); - instance.onShowVertexDetails(vertex); - wrapper.update(); + const renderedComponent = shallowWithIntl(component); - expect(wrapper).toMatchSnapshot(); + expect(renderedComponent).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/pipeline_viewer.js b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/pipeline_viewer.js index ddebfc74fb53aa..64970a846f0bfb 100644 --- a/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/pipeline_viewer.js +++ b/x-pack/plugins/monitoring/public/components/logstash/pipeline_viewer/views/pipeline_viewer.js @@ -27,36 +27,15 @@ class PipelineViewerUi extends React.Component { }; } - onShowVertexDetails = (vertex) => { - if (vertex === this.state.detailDrawer.vertex) { - this.onHideVertexDetails(); - } - else { - this.setState({ - detailDrawer: { - vertex - } - }); - } - } - - onHideVertexDetails = () => { - this.setState({ - detailDrawer: { - vertex: null - } - }); - } - renderDetailDrawer = () => { - if (!this.state.detailDrawer.vertex) { + if (!this.props.detailVertex) { return null; } return ( this.props.setDetailVertexId(undefined)} timeseriesTooltipXValueFormatter={this.props.timeseriesTooltipXValueFormatter} /> ); @@ -79,8 +58,7 @@ class PipelineViewerUi extends React.Component { iconType="logstashInput" headingText={intl.formatMessage({ id: 'xpack.monitoring.logstash.pipelineViewer.inputsTitle', defaultMessage: 'Inputs' })} elements={inputs} - onShowVertexDetails={this.onShowVertexDetails} - detailVertex={this.state.detailDrawer.vertex} + onShowVertexDetails={this.props.setDetailVertexId} /> @@ -89,16 +67,14 @@ class PipelineViewerUi extends React.Component { iconType="logstashFilter" headingText={intl.formatMessage({ id: 'xpack.monitoring.logstash.pipelineViewer.filtersTitle', defaultMessage: 'Filters' })} elements={filters} - onShowVertexDetails={this.onShowVertexDetails} - detailVertex={this.state.detailDrawer.vertex} + onShowVertexDetails={this.props.setDetailVertexId} /> { this.renderDetailDrawer() } diff --git a/x-pack/plugins/monitoring/public/views/logstash/pipeline/index.js b/x-pack/plugins/monitoring/public/views/logstash/pipeline/index.js index 671cdd3a1b609f..9ff09d731c48a4 100644 --- a/x-pack/plugins/monitoring/public/views/logstash/pipeline/index.js +++ b/x-pack/plugins/monitoring/public/views/logstash/pipeline/index.js @@ -20,6 +20,7 @@ import { List } from 'plugins/monitoring/components/logstash/pipeline_viewer/mod import { PipelineState } from 'plugins/monitoring/components/logstash/pipeline_viewer/models/pipeline_state'; import { PipelineViewer } from 'plugins/monitoring/components/logstash/pipeline_viewer'; import { Pipeline } from 'plugins/monitoring/components/logstash/pipeline_viewer/models/pipeline'; +import { vertexFactory } from 'plugins/monitoring/components/logstash/pipeline_viewer/models/graph/vertex_factory'; import { MonitoringViewBaseController } from '../../base_controller'; import { I18nContext } from 'ui/i18n'; import { @@ -28,6 +29,9 @@ import { EuiPageContent, } from '@elastic/eui'; +let previousPipelineHash = undefined; +let detailVertexId = undefined; + function getPageData($injector) { const $route = $injector.get('$route'); const $http = $injector.get('$http'); @@ -38,11 +42,20 @@ function getPageData($injector) { const { ccs, cluster_uuid: clusterUuid } = globalState; const pipelineId = $route.current.params.id; const pipelineHash = $route.current.params.hash || ''; + + // Pipeline version was changed, so clear out detailVertexId since that vertex won't + // exist in the updated pipeline version + if (pipelineHash !== previousPipelineHash) { + previousPipelineHash = pipelineHash; + detailVertexId = undefined; + } + const url = pipelineHash ? `../api/monitoring/v1/clusters/${clusterUuid}/logstash/pipeline/${pipelineId}/${pipelineHash}` : `../api/monitoring/v1/clusters/${clusterUuid}/logstash/pipeline/${pipelineId}`; return $http.post(url, { - ccs + ccs, + detailVertexId }) .then(response => response.data) .then(data => { @@ -107,11 +120,22 @@ uiRoutes.when('/logstash/pipelines/:id/:hash?', { const timeseriesTooltipXValueFormatter = xValue => moment(xValue).format(dateFormat); + const setDetailVertexId = vertex => { + if (!vertex) { + detailVertexId = undefined; + } else { + detailVertexId = vertex.id; + } + + return this.updateData(); + }; + $scope.$watch(() => this.data, data => { if (!data || !data.pipeline) { return; } this.pipelineState = new PipelineState(data.pipeline); + this.detailVertex = data.vertex ? vertexFactory(null, data.vertex) : null; this.renderReact( @@ -122,6 +146,8 @@ uiRoutes.when('/logstash/pipelines/:id/:hash?', { Pipeline.fromPipelineGraph(this.pipelineState.config.graph) )} timeseriesTooltipXValueFormatter={timeseriesTooltipXValueFormatter} + setDetailVertexId={setDetailVertexId} + detailVertex={this.detailVertex} /> @@ -129,6 +155,11 @@ uiRoutes.when('/logstash/pipelines/:id/:hash?', { ); }); + + $scope.$on('$destroy', () => { + previousPipelineHash = undefined; + detailVertexId = undefined; + }); } } }); diff --git a/x-pack/plugins/monitoring/server/lib/logstash/__tests__/get_pipeline.js b/x-pack/plugins/monitoring/server/lib/logstash/__tests__/get_pipeline.js index f0e81eb63dddc1..71732b6a2d7fab 100644 --- a/x-pack/plugins/monitoring/server/lib/logstash/__tests__/get_pipeline.js +++ b/x-pack/plugins/monitoring/server/lib/logstash/__tests__/get_pipeline.js @@ -37,13 +37,8 @@ describe('get_pipeline', () => { it('returns correct stats', () => { const result = _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds); expect(result).to.eql({ - events_in: 10000, - events_out: 9000, - duration_in_millis: 18000, events_out_per_millisecond: 0.01, millis_per_event: 2, - queue_push_duration_in_millis: 100000, - queue_push_duration_in_millis_per_event: 11.11111111111111 }); }); @@ -57,9 +52,6 @@ describe('get_pipeline', () => { it('returns correct stats', () => { const result = _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds); expect(result).to.eql({ - events_in: 10000, - events_out: 9000, - duration_in_millis: 18000, events_in_per_millisecond: 0.011111111111111112, events_out_per_millisecond: 0.01, millis_per_event: 1.8, @@ -78,9 +70,6 @@ describe('get_pipeline', () => { it('returns correct stats', () => { const result = _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds); expect(result).to.eql({ - events_in: 10000, - events_out: 9000, - duration_in_millis: 18000, events_in_per_millisecond: 0.011111111111111112, events_out_per_millisecond: 0.01, millis_per_event: 1.8, @@ -93,7 +82,6 @@ describe('get_pipeline', () => { describe('_enrichStateWithStatsAggregation function', () => { let stateDocument; let statsAggregation; - let version; let timeseriesInterval; beforeEach(() => { @@ -160,278 +148,96 @@ describe('get_pipeline', () => { }; statsAggregation = { - timeseriesStats: [ - { - key: { time_bucket: 1516131120000 }, - pipelines: { - scoped: { - vertices: { - vertex_id: { - buckets: [ - { - key: 'mystdout', - events_in_total: { value: 1000 }, - events_out_total: { value: 1000 }, - duration_in_millis_total: { value: 15 }, - queue_push_duration_in_millis_total: { value: 0 } - }, - { - key: 'mystdin', - events_in_total: { value: 0 }, - events_out_total: { value: 1000 }, - duration_in_millis_total: { value: 0 }, - queue_push_duration_in_millis_total: { value: 13547 } - } - ] - } - }, - total_processor_duration_stats: { - count: 276, - min: 0, - max: 15904756, - avg: 6591773.384057971, - sum: 1819329454 - } - } - } - }, - { - key: { time_bucket: 1516131180000 }, - pipelines: { - scoped: { - vertices: { - vertex_id: { - buckets: [ - { - key: 'mystdout', - events_in_total: { value: 2000 }, - events_out_total: { value: 2000 }, - duration_in_millis_total: { value: 20 }, - queue_push_duration_in_millis_total: { value: 0 } - }, - { - key: 'mystdin', - events_in_total: { value: 0 }, - events_out_total: { value: 2000 }, - duration_in_millis_total: { value: 0 }, - queue_push_duration_in_millis_total: { value: 25073 } - } - ] - } - }, - total_processor_duration_stats: { - count: 276, - min: 0, - max: 15953756, - avg: 6591773.384057971, - sum: 1819329454 + aggregations: { + pipelines: { + scoped: { + vertices: { + vertex_id: { + buckets: [ + { + key: 'mystdout', + events_in_total: { value: 1000 }, + events_out_total: { value: 1000 }, + duration_in_millis_total: { value: 15 }, + }, + { + key: 'mystdin', + events_in_total: { value: 0 }, + events_out_total: { value: 1000 }, + duration_in_millis_total: { value: 0 }, + } + ] } + }, + total_processor_duration_stats: { + count: 276, + min: 0, + max: 15904756, + avg: 6591773.384057971, + sum: 1819329454 } } } - ] - }; - - version = { - hash: 'eada8baceee81726f6be9d0a071beefad3d9a2fd1b5f5d916011dca9fa66d081', - firstSeen: 1516131138639, - lastSeen: 1516135440463 + } }; - timeseriesInterval = 30; }); it('enriches the state document correctly with stats', () => { - const enrichedStateDocument = _enrichStateWithStatsAggregation(stateDocument, statsAggregation, version, timeseriesInterval); + const enrichedStateDocument = _enrichStateWithStatsAggregation(stateDocument, statsAggregation, timeseriesInterval); expect(enrichedStateDocument).to.eql({ - pipeline: { - batch_size: 125, - ephemeral_id: '2c53e689-62e8-4ef3-bc57-ea968531a848', + batch_size: 125, + ephemeral_id: '2c53e689-62e8-4ef3-bc57-ea968531a848', + hash: 'eada8baceee81726f6be9d0a071beefad3d9a2fd1b5f5d916011dca9fa66d081', + id: 'main', + representation: { + type: 'lir', + version: '0.0.0', hash: 'eada8baceee81726f6be9d0a071beefad3d9a2fd1b5f5d916011dca9fa66d081', - id: 'main', - representation: { - type: 'lir', - version: '0.0.0', - hash: 'eada8baceee81726f6be9d0a071beefad3d9a2fd1b5f5d916011dca9fa66d081', - graph: { - vertices: [ - { - config_name: 'stdin', - id: 'mystdin', - type: 'plugin', - plugin_type: 'input', - stats: { - duration_in_millis: { - data: [ - [ 1516131120000, 0 ], - [ 1516131180000, 0 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - events_in: { - data: [ - [ 1516131120000, 0 ], - [ 1516131180000, 0 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - events_out: { - data: [ - [ 1516131120000, 1000 ], - [ 1516131180000, 2000 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - events_out_per_millisecond: { - data: [ - [ 1516131120000, 0.03333333333333333 ], - [ 1516131180000, 0.06666666666666667 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - millis_per_event: { - data: [ - [ 1516131120000, 0 ], - [ 1516131180000, 0 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - queue_push_duration_in_millis: { - data: [ - [ 1516131120000, 13547 ], - [ 1516131180000, 25073 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - queue_push_duration_in_millis_per_event: { - data: [ - [ 1516131120000, 13.547 ], - [ 1516131180000, 12.5365 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - } - } - }, - { - config_name: 'stdout', - id: 'mystdout', - type: 'plugin', - plugin_type: 'output', - stats: { - duration_in_millis: { - data: [ - [ 1516131120000, 15 ], - [ 1516131180000, 20 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - events_in: { - data: [ - [ 1516131120000, 1000 ], - [ 1516131180000, 2000 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - events_out: { - data: [ - [ 1516131120000, 1000 ], - [ 1516131180000, 2000 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - events_in_per_millisecond: { - data: [ - [1516131120000, 0.03333333333333333], - [1516131180000, 0.06666666666666667] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - events_out_per_millisecond: { - data: [ - [ 1516131120000, 0.03333333333333333 ], - [ 1516131180000, 0.06666666666666667 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - millis_per_event: { - data: [ - [ 1516131120000, 0.015 ], - [ 1516131180000, 0.01 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - }, - percent_of_total_processor_duration: { - data: [ - [ 1516131120000, 0.0000009431141225932671 ], - [ 1516131180000, 0.0000012536232846986 ] - ], - timeRange: { - min: 1516131138639, - max: 1516135440463 - } - } - } + graph: { + vertices: [ + { + config_name: 'stdin', + id: 'mystdin', + type: 'plugin', + plugin_type: 'input', + stats: { + events_out_per_millisecond: 0.03333333333333333, + millis_per_event: 0 } - ], - edges: [ - { - id: 'c56369ba2e160c8add43e8f105ca17c374b27f4b4627ea4566f066b0ead0bcc7', - from: 'mystdin', - to: '__QUEUE__', - type: 'plain' - }, - { - id: '8a5222282b023399a14195011f2a14aa54a4d97810cd9e0a63c5cd98856bb70f', - from: '__QUEUE__', - to: 'mystdout', - type: 'plain' + }, + { + config_name: 'stdout', + id: 'mystdout', + type: 'plugin', + plugin_type: 'output', + stats: { + events_in_per_millisecond: 0.03333333333333333, + events_out_per_millisecond: 0.03333333333333333, + millis_per_event: 0.015, + percent_of_total_processor_duration: 0.0000009431141225932671 } - ] - }, - plugins: [] + } + ], + edges: [ + { + id: 'c56369ba2e160c8add43e8f105ca17c374b27f4b4627ea4566f066b0ead0bcc7', + from: 'mystdin', + to: '__QUEUE__', + type: 'plain' + }, + { + id: '8a5222282b023399a14195011f2a14aa54a4d97810cd9e0a63c5cd98856bb70f', + from: '__QUEUE__', + to: 'mystdout', + type: 'plain' + } + ] }, - workers: 1 - } + plugins: [] + }, + workers: 1 }); }); }); diff --git a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline.js b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline.js index 63f0f2389033a8..8461f880e37f5a 100644 --- a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline.js +++ b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline.js @@ -9,7 +9,6 @@ import { get } from 'lodash'; import { checkParam } from '../error_missing_required'; import { getPipelineStateDocument } from './get_pipeline_state_document'; import { getPipelineStatsAggregation } from './get_pipeline_stats_aggregation'; -import { getPipelineVersions } from './get_pipeline_versions'; import { calculateTimeseriesInterval } from '../calculate_timeseries_interval'; export function _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds) { @@ -24,7 +23,6 @@ export function _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationI const durationInMillis = vertexStatsBucket.duration_in_millis_total.value; - const inputStats = {}; const processorStats = {}; const eventsProcessedStats = { events_out_per_millisecond: eventsOutTotal / timeseriesIntervalInMillis @@ -34,8 +32,6 @@ export function _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationI if (isInput) { eventsTotal = eventsOutTotal; - inputStats.queue_push_duration_in_millis = vertexStatsBucket.queue_push_duration_in_millis_total.value; - inputStats.queue_push_duration_in_millis_per_event = inputStats.queue_push_duration_in_millis / eventsTotal; } if (isProcessor) { @@ -45,11 +41,7 @@ export function _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationI } return { - events_in: eventsInTotal, - events_out: eventsOutTotal, - duration_in_millis: durationInMillis, millis_per_event: durationInMillis / eventsTotal, - ...inputStats, ...processorStats, ...eventsProcessedStats }; @@ -57,15 +49,15 @@ export function _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationI /** * The UI needs a list of all vertices for the requested pipeline version, with each vertex in the list having its timeseries metrics associated with it. The - * stateDocument object provides the list of vertices while the statsAggregation object provides timeseries metrics. This function stitches the two together - * and returns the modified stateDocument object. + * stateDocument object provides the list of vertices while the statsAggregation object provides the latest metrics for each of these vertices. + * This function stitches the two together and returns the modified stateDocument object. * * @param {Object} stateDocument * @param {Object} statsAggregation * @param {Object} First and last seen timestamps for pipeline version we're getting data for * @param {Integer} timeseriesIntervalInSeconds The size of each timeseries bucket, in seconds */ -export function _enrichStateWithStatsAggregation(stateDocument, statsAggregation, { firstSeen, lastSeen }, timeseriesIntervalInSeconds) { +export function _enrichStateWithStatsAggregation(stateDocument, statsAggregation, timeseriesIntervalInSeconds) { const logstashState = stateDocument.logstash_state; const vertices = logstashState.pipeline.representation.graph.vertices; @@ -75,67 +67,27 @@ export function _enrichStateWithStatsAggregation(stateDocument, statsAggregation vertex.stats = {}; }); - // The statsAggregation object buckets by time first, then by vertex ID. However, the logstashState object (which is part of the - // stateDocument object) buckets by vertex ID first. The UI desires the latter structure so it can look up stats by vertex. So we - // transpose statsAggregation to bucket by vertex ID first, then by time. This then allows us to stitch the per-vertex timeseries stats - // from the transposed statsAggregation object onto the logstashState object. - const timeseriesBuckets = statsAggregation.timeseriesStats; - timeseriesBuckets.forEach(timeseriesBucket => { - // each bucket calculates stats for total pipeline CPU time for the associated timeseries - const totalDurationStats = timeseriesBucket.pipelines.scoped.total_processor_duration_stats; - const totalProcessorsDurationInMillis = totalDurationStats.max - totalDurationStats.min; - - // Each timeseriesBucket contains a list of vertices and their stats for a single timeseries interval - const timestamp = timeseriesBucket.key.time_bucket; - const vertexStatsByIdBuckets = get(timeseriesBucket, 'pipelines.scoped.vertices.vertex_id.buckets', []); - - vertexStatsByIdBuckets.forEach(vertexStatsBucket => { - // Each vertexStats bucket contains a list of stats for a single vertex within a single timeseries interval - const vertexId = vertexStatsBucket.key; - const vertex = verticesById[vertexId]; - - if (vertex !== undefined) { - // We extract this vertex's stats from vertexStatsBucket - const vertexStats = _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds); - - // For each stat (metric), we add it to the stats property of the vertex object in logstashState - const metrics = Object.keys(vertexStats); - metrics.forEach(metric => { - // Create metric object if it doesn't already exist - if (!vertex.stats.hasOwnProperty(metric)) { - vertex.stats[metric] = { - timeRange: { - min: firstSeen, - max: lastSeen - }, - data: [] - }; - } - - vertex.stats[metric].data.push([ timestamp, vertexStats[metric]]); - }); - } - }); + const totalDurationStats = statsAggregation.aggregations.pipelines.scoped.total_processor_duration_stats; + const totalProcessorsDurationInMillis = totalDurationStats.max - totalDurationStats.min; + + const verticesWithStatsBuckets = statsAggregation.aggregations.pipelines.scoped.vertices.vertex_id.buckets; + verticesWithStatsBuckets.forEach(vertexStatsBucket => { + // Each vertexStats bucket contains a list of stats for a single vertex within a single timeseries interval + const vertexId = vertexStatsBucket.key; + const vertex = verticesById[vertexId]; + + if (vertex !== undefined) { + // We extract this vertex's stats from vertexStatsBucket + vertex.stats = _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds); + } }); - return stateDocument.logstash_state; + return stateDocument.logstash_state.pipeline; } -export async function getPipeline(req, config, lsIndexPattern, clusterUuid, pipelineId, pipelineHash) { +export async function getPipeline(req, config, lsIndexPattern, clusterUuid, pipelineId, version) { checkParam(lsIndexPattern, 'lsIndexPattern in getPipeline'); - const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring'); - const versions = await getPipelineVersions(callWithRequest, req, config, lsIndexPattern, clusterUuid, pipelineId); - - let version; - if (pipelineHash) { - // Find version corresponding to given hash - version = versions.find(({ hash }) => hash === pipelineHash); - } else { - // Go with latest version - version = versions[0]; - } - const options = { clusterUuid, pipelineId, @@ -147,17 +99,13 @@ export async function getPipeline(req, config, lsIndexPattern, clusterUuid, pipe const timeseriesInterval = calculateTimeseriesInterval(version.firstSeen, version.lastSeen, minIntervalSeconds); const [ stateDocument, statsAggregation ] = await Promise.all([ - getPipelineStateDocument(callWithRequest, req, lsIndexPattern, options), - getPipelineStatsAggregation(callWithRequest, req, lsIndexPattern, timeseriesInterval, options) + getPipelineStateDocument(req, lsIndexPattern, options), + getPipelineStatsAggregation(req, lsIndexPattern, timeseriesInterval, options), ]); if (stateDocument === null) { return boom.notFound(`Pipeline [${pipelineId} @ ${version.hash}] not found in the selected time range for cluster [${clusterUuid}].`); } - const result = { - ..._enrichStateWithStatsAggregation(stateDocument, statsAggregation, version, timeseriesInterval), - versions - }; - return result; + return _enrichStateWithStatsAggregation(stateDocument, statsAggregation, timeseriesInterval); } diff --git a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_state_document.js b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_state_document.js index ccccb84ceb9a1a..eb88342eee06f1 100644 --- a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_state_document.js +++ b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_state_document.js @@ -8,8 +8,10 @@ import { createQuery } from '../create_query'; import { LogstashMetric } from '../metrics'; import { get } from 'lodash'; -export async function getPipelineStateDocument(callWithRequest, req, logstashIndexPattern, +export async function getPipelineStateDocument(req, logstashIndexPattern, { clusterUuid, pipelineId, version }) { + + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring'); const filters = [ { term: { 'logstash_state.pipeline.id': pipelineId } }, { term: { 'logstash_state.pipeline.hash': version.hash } } @@ -32,6 +34,7 @@ export async function getPipelineStateDocument(callWithRequest, req, logstashInd size: 1, ignoreUnavailable: true, body: { + _source: { excludes: 'logstash_state.pipeline.representation.plugins' }, sort: { timestamp: { order: 'desc' } }, query, terminate_after: 1 // Safe to do because all these documents are functionally identical diff --git a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_stats_aggregation.js b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_stats_aggregation.js index 49ca02e204ae2b..e59299f0bd6732 100644 --- a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_stats_aggregation.js +++ b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_stats_aggregation.js @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import { get, last } from 'lodash'; import { createQuery } from '../create_query'; import { LogstashMetric } from '../metrics'; @@ -62,7 +61,6 @@ function nestedVertices(maxBucketSize) { ...scalarCounterAggregation('events_in', fieldPath, ephemeralIdField, maxBucketSize), ...scalarCounterAggregation('events_out', fieldPath, ephemeralIdField, maxBucketSize), ...scalarCounterAggregation('duration_in_millis', fieldPath, ephemeralIdField, maxBucketSize), - ...scalarCounterAggregation('queue_push_duration_in_millis', fieldPath, ephemeralIdField, maxBucketSize) } } } @@ -90,62 +88,37 @@ function createScopedAgg(pipelineId, pipelineHash, agg) { }; } -function createTimeseriesAggs(pipelineId, pipelineHash, maxBucketSize, timeseriesInterval, lastTimeBucket) { - return { - by_time: { - composite: { - sources: [ - { - time_bucket: { - date_histogram: { - field: 'logstash_stats.timestamp', - interval: timeseriesInterval + 's' - } - } - } - ], - after: { - time_bucket: lastTimeBucket - } - }, - aggs: createScopedAgg(pipelineId, pipelineHash, { - vertices: nestedVertices(maxBucketSize), - total_processor_duration_stats: { - stats: { - field: 'logstash_stats.pipelines.events.duration_in_millis' - } - } - }) - } - }; -} - -function fetchPipelineTimeseriesStats(query, logstashIndexPattern, pipelineId, version, - maxBucketSize, timeseriesInterval, callWithRequest, req, lastTimeBucket = 0) { +function fetchPipelineLatestStats(query, logstashIndexPattern, pipelineId, version, maxBucketSize, callWithRequest, req) { const params = { index: logstashIndexPattern, size: 0, ignoreUnavailable: true, filterPath: [ - 'aggregations.by_time.buckets.key.time_bucket', - 'aggregations.by_time.buckets.pipelines.scoped.vertices.vertex_id.buckets.key', - 'aggregations.by_time.buckets.pipelines.scoped.vertices.vertex_id.buckets.events_in_total', - 'aggregations.by_time.buckets.pipelines.scoped.vertices.vertex_id.buckets.events_out_total', - 'aggregations.by_time.buckets.pipelines.scoped.vertices.vertex_id.buckets.duration_in_millis_total', - 'aggregations.by_time.buckets.pipelines.scoped.vertices.vertex_id.buckets.queue_push_duration_in_millis_total', - 'aggregations.by_time.buckets.pipelines.scoped.total_processor_duration_stats' + 'aggregations.pipelines.scoped.vertices.vertex_id.buckets.key', + 'aggregations.pipelines.scoped.vertices.vertex_id.buckets.events_in_total', + 'aggregations.pipelines.scoped.vertices.vertex_id.buckets.events_out_total', + 'aggregations.pipelines.scoped.vertices.vertex_id.buckets.duration_in_millis_total', + 'aggregations.pipelines.scoped.total_processor_duration_stats' ], body: { query: query, - aggs: createTimeseriesAggs(pipelineId, version.hash, maxBucketSize, timeseriesInterval, lastTimeBucket) + aggs: createScopedAgg(pipelineId, version.hash, { + vertices: nestedVertices(maxBucketSize), + total_processor_duration_stats: { + stats: { + field: 'logstash_stats.pipelines.events.duration_in_millis' + } + } + }) } }; return callWithRequest(req, 'search', params); } -export async function getPipelineStatsAggregation(callWithRequest, req, logstashIndexPattern, timeseriesInterval, +export function getPipelineStatsAggregation(req, logstashIndexPattern, timeseriesInterval, { clusterUuid, start, end, pipelineId, version }) { + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring'); const filters = [ { nested: { @@ -162,6 +135,9 @@ export async function getPipelineStatsAggregation(callWithRequest, req, logstash } ]; + start = version.lastSeen - (timeseriesInterval * 1000); + end = version.lastSeen; + const query = createQuery({ type: 'logstash_stats', start, @@ -173,24 +149,6 @@ export async function getPipelineStatsAggregation(callWithRequest, req, logstash const config = req.server.config(); - const timeBuckets = []; - let paginatedTimeBuckets; - do { - const lastTimeBucket = get(last(paginatedTimeBuckets), 'key.time_bucket', 0); - const paginatedResponse = await fetchPipelineTimeseriesStats(query, logstashIndexPattern, pipelineId, version, - config.get('xpack.monitoring.max_bucket_size'), timeseriesInterval, callWithRequest, req, lastTimeBucket); - - paginatedTimeBuckets = get(paginatedResponse, 'aggregations.by_time.buckets', []); - timeBuckets.push(...paginatedTimeBuckets); - } while (paginatedTimeBuckets.length > 0); - - // Drop the last bucket if it is partial (spoiler alert: this will be the case most of the time) - const lastTimeBucket = last(timeBuckets); - if (version.lastSeen - lastTimeBucket.key.time_bucket < timeseriesInterval * 1000) { - timeBuckets.pop(); - } - - return { - timeseriesStats: timeBuckets - }; + return fetchPipelineLatestStats(query, logstashIndexPattern, pipelineId, version, + config.get('xpack.monitoring.max_bucket_size'), callWithRequest, req); } diff --git a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_versions.js b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_versions.js index b66aad3dcfcfee..39b3df6220f0fa 100644 --- a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_versions.js +++ b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_versions.js @@ -10,8 +10,9 @@ import { get } from 'lodash'; import { checkParam } from '../error_missing_required'; function fetchPipelineVersions(...args) { - const [ callWithRequest, req, config, logstashIndexPattern, clusterUuid, pipelineId ] = args; + const [ req, config, logstashIndexPattern, clusterUuid, pipelineId ] = args; checkParam(logstashIndexPattern, 'logstashIndexPattern in getPipelineVersions'); + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring'); const filters = [ { diff --git a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex.js b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex.js new file mode 100644 index 00000000000000..f0d3fc4008b3f3 --- /dev/null +++ b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import boom from 'boom'; +import { get } from 'lodash'; +import { checkParam } from '../error_missing_required'; +import { getPipelineStateDocument } from './get_pipeline_state_document'; +import { getPipelineVertexStatsAggregation } from './get_pipeline_vertex_stats_aggregation'; +import { calculateTimeseriesInterval } from '../calculate_timeseries_interval'; + +export function _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds) { + + const isInput = vertex.plugin_type === 'input'; + const isProcessor = vertex.plugin_type === 'filter' || vertex.plugin_type === 'output'; + + const timeseriesIntervalInMillis = timeseriesIntervalInSeconds * 1000; + + const eventsInTotal = vertexStatsBucket.events_in_total.value; + const eventsOutTotal = get(vertexStatsBucket, 'events_out_total.value', null); + + const durationInMillis = vertexStatsBucket.duration_in_millis_total.value; + + const inputStats = {}; + const processorStats = {}; + const eventsProcessedStats = { + events_out_per_millisecond: eventsOutTotal / timeseriesIntervalInMillis + }; + + let eventsTotal; + + if (isInput) { + eventsTotal = eventsOutTotal; + inputStats.queue_push_duration_in_millis = vertexStatsBucket.queue_push_duration_in_millis_total.value; + inputStats.queue_push_duration_in_millis_per_event = inputStats.queue_push_duration_in_millis / eventsTotal; + } + + if (isProcessor) { + eventsTotal = eventsInTotal; + processorStats.percent_of_total_processor_duration = durationInMillis / totalProcessorsDurationInMillis; + eventsProcessedStats.events_in_per_millisecond = eventsInTotal / timeseriesIntervalInMillis; + } + + return { + events_in: eventsInTotal, + events_out: eventsOutTotal, + duration_in_millis: durationInMillis, + millis_per_event: durationInMillis / eventsTotal, + ...inputStats, + ...processorStats, + ...eventsProcessedStats + }; +} + +/** + * The UI needs a list of all vertices for the requested pipeline version, with each vertex in the list having its timeseries metrics associated with it. The + * stateDocument object provides the list of vertices while the statsAggregation object provides the timeseries metrics for each of these vertices. + * This function stitches the two together and returns the modified stateDocument object. + * + * @param {Object} stateDocument + * @param {Object} vertexStatsAggregation + * @param {Object} First and last seen timestamps for pipeline version we're getting data for + * @param {Integer} timeseriesIntervalInSeconds The size of each timeseries bucket, in seconds + */ +export function _enrichVertexStateWithStatsAggregation(stateDocument, vertexStatsAggregation, vertexId, timeseriesIntervalInSeconds) { + const logstashState = stateDocument.logstash_state; + const vertices = logstashState.pipeline.representation.graph.vertices; + + // First, filter out the vertex we care about + const vertex = vertices.find(v => v.id === vertexId); + vertex.stats = {}; + + // Next, iterate over timeseries metrics and attach them to vertex + const timeSeriesBuckets = vertexStatsAggregation.aggregations.timeseries.buckets; + timeSeriesBuckets.forEach(timeSeriesBucket => { + // each bucket calculates stats for total pipeline CPU time for the associated timeseries + const totalDurationStats = timeSeriesBucket.pipelines.scoped.total_processor_duration_stats; + const totalProcessorsDurationInMillis = totalDurationStats.max - totalDurationStats.min; + + const timestamp = timeSeriesBucket.key; + + const vertexStatsBucket = timeSeriesBucket.pipelines.scoped.vertices.vertex_id; + const vertexStats = _vertexStats(vertex, vertexStatsBucket, totalProcessorsDurationInMillis, timeseriesIntervalInSeconds); + Object.keys(vertexStats).forEach(stat => { + if (!vertex.stats.hasOwnProperty(stat)) { + vertex.stats[stat] = { data: [] }; + } + vertex.stats[stat].data.push([ timestamp, vertexStats[stat] ]); + }); + }); + + return vertex; +} + +export async function getPipelineVertex(req, config, lsIndexPattern, clusterUuid, pipelineId, version, vertexId) { + checkParam(lsIndexPattern, 'lsIndexPattern in getPipeline'); + + const options = { + clusterUuid, + pipelineId, + version, + vertexId + }; + + // Determine metrics' timeseries interval based on version's timespan + const minIntervalSeconds = config.get('xpack.monitoring.min_interval_seconds'); + const timeseriesInterval = calculateTimeseriesInterval(version.firstSeen, version.lastSeen, minIntervalSeconds); + + const [ stateDocument, statsAggregation ] = await Promise.all([ + getPipelineStateDocument(req, lsIndexPattern, options), + getPipelineVertexStatsAggregation(req, lsIndexPattern, timeseriesInterval, options), + ]); + + if (stateDocument === null) { + return boom.notFound(`Pipeline [${pipelineId} @ ${version.hash}] not found in the selected time range for cluster [${clusterUuid}].`); + } + + return _enrichVertexStateWithStatsAggregation(stateDocument, statsAggregation, vertexId, timeseriesInterval); +} diff --git a/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex_stats_aggregation.js b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex_stats_aggregation.js new file mode 100644 index 00000000000000..5c80165e74bf4a --- /dev/null +++ b/x-pack/plugins/monitoring/server/lib/logstash/get_pipeline_vertex_stats_aggregation.js @@ -0,0 +1,189 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createQuery } from '../create_query'; +import { LogstashMetric } from '../metrics'; + +function scalarCounterAggregation(field, fieldPath, ephemeralIdField, maxBucketSize) { + const fullPath = `${fieldPath}.${field}`; + + const byEphemeralIdName = `${field}_temp_by_ephemeral_id`; + const sumName = `${field}_total`; + + const aggs = {}; + + aggs[byEphemeralIdName] = { + terms: { + field: ephemeralIdField, + size: maxBucketSize, + }, + aggs: { + stats: { + stats: { field: fullPath } + }, + difference: { + bucket_script: { + script: 'params.max - params.min', + buckets_path: { + min: 'stats.min', + max: 'stats.max' + } + } + } + } + }; + + aggs[sumName] = { + sum_bucket: { + buckets_path: `${byEphemeralIdName}>difference` + } + }; + + return aggs; +} + + +function createAggsObjectFromAggsList(aggsList) { + return aggsList.reduce((aggsSoFar, agg) => ({ ...aggsSoFar, ...agg }), {}); +} + +function createNestedVertexAgg(vertexId, maxBucketSize) { + const fieldPath = 'logstash_stats.pipelines.vertices'; + const ephemeralIdField = 'logstash_stats.pipelines.vertices.pipeline_ephemeral_id'; + + return { + vertices: { + nested: { path: 'logstash_stats.pipelines.vertices' }, + aggs: { + vertex_id: { + filter: { + term: { + 'logstash_stats.pipelines.vertices.id': vertexId + } + }, + aggs: { + ...scalarCounterAggregation('events_in', fieldPath, ephemeralIdField, maxBucketSize), + ...scalarCounterAggregation('events_out', fieldPath, ephemeralIdField, maxBucketSize), + ...scalarCounterAggregation('duration_in_millis', fieldPath, ephemeralIdField, maxBucketSize), + ...scalarCounterAggregation('queue_push_duration_in_millis', fieldPath, ephemeralIdField, maxBucketSize) + } + } + } + } + }; +} + +function createTotalProcessorDurationStatsAgg() { + return { + total_processor_duration_stats: { + stats: { + field: 'logstash_stats.pipelines.events.duration_in_millis' + } + } + }; +} + +function createScopedAgg(pipelineId, pipelineHash, ...aggsList) { + return { + pipelines: { + nested: { path: 'logstash_stats.pipelines' }, + aggs: { + scoped: { + filter: { + bool: { + filter: [ + { term: { 'logstash_stats.pipelines.id': pipelineId } }, + { term: { 'logstash_stats.pipelines.hash': pipelineHash } } + ] + } + }, + aggs: createAggsObjectFromAggsList(aggsList) + } + } + } + }; +} + +function createTimeSeriesAgg(timeSeriesIntervalInSeconds, ...aggsList) { + return { + timeseries: { + date_histogram: { + field: 'timestamp', + interval: timeSeriesIntervalInSeconds + 's' + }, + aggs: createAggsObjectFromAggsList(aggsList) + } + }; +} + +function fetchPipelineVertexTimeSeriesStats(query, logstashIndexPattern, pipelineId, version, vertexId, + timeSeriesIntervalInSeconds, maxBucketSize, callWithRequest, req) { + const aggs = { + ...createTimeSeriesAgg(timeSeriesIntervalInSeconds, + createScopedAgg(pipelineId, version.hash, + createNestedVertexAgg(vertexId, maxBucketSize), + createTotalProcessorDurationStatsAgg() + ) + ) + }; + + const params = { + index: logstashIndexPattern, + size: 0, + ignoreUnavailable: true, + filterPath: [ + 'aggregations.timeseries.buckets.key', + 'aggregations.timeseries.buckets.pipelines.scoped.vertices.vertex_id.events_in_total', + 'aggregations.timeseries.buckets.pipelines.scoped.vertices.vertex_id.events_out_total', + 'aggregations.timeseries.buckets.pipelines.scoped.vertices.vertex_id.duration_in_millis_total', + 'aggregations.timeseries.buckets.pipelines.scoped.vertices.vertex_id.queue_push_duration_in_millis_total', + 'aggregations.timeseries.buckets.pipelines.scoped.total_processor_duration_stats' + ], + body: { + query: query, + aggs + } + }; + + return callWithRequest(req, 'search', params); +} + +export function getPipelineVertexStatsAggregation(req, logstashIndexPattern, timeSeriesIntervalInSeconds, + { clusterUuid, start, end, pipelineId, version, vertexId }) { + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring'); + const filters = [ + { + nested: { + path: 'logstash_stats.pipelines', + query: { + bool: { + must: [ + { term: { 'logstash_stats.pipelines.hash': version.hash } }, + { term: { 'logstash_stats.pipelines.id': pipelineId } }, + ] + } + } + } + } + ]; + + start = version.firstSeen; + end = version.lastSeen; + + const query = createQuery({ + type: 'logstash_stats', + start, + end, + metric: LogstashMetric.getMetricFields(), + clusterUuid, + filters + }); + + const config = req.server.config(); + + return fetchPipelineVertexTimeSeriesStats(query, logstashIndexPattern, pipelineId, version, vertexId, + timeSeriesIntervalInSeconds, config.get('xpack.monitoring.max_bucket_size'), callWithRequest, req); +} diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/logstash/pipeline.js b/x-pack/plugins/monitoring/server/routes/api/v1/logstash/pipeline.js index 433c48f02b3eaa..fdd9342cf9eaef 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/logstash/pipeline.js +++ b/x-pack/plugins/monitoring/server/routes/api/v1/logstash/pipeline.js @@ -6,10 +6,18 @@ import Joi from 'joi'; import { handleError } from '../../../../lib/errors'; +import { getPipelineVersions } from '../../../../lib/logstash/get_pipeline_versions'; import { getPipeline } from '../../../../lib/logstash/get_pipeline'; +import { getPipelineVertex } from '../../../../lib/logstash/get_pipeline_vertex'; import { prefixIndexPattern } from '../../../../lib/ccs_utils'; import { INDEX_PATTERN_LOGSTASH } from '../../../../../common/constants'; +function getPipelineVersion(versions, pipelineHash) { + return pipelineHash + ? versions.find(({ hash }) => hash === pipelineHash) + : versions[0]; +} + /* * Logstash Pipeline route. */ @@ -34,22 +42,46 @@ export function logstashPipelineRoute(server) { pipelineHash: Joi.string().optional() }), payload: Joi.object({ - ccs: Joi.string().optional() + ccs: Joi.string().optional(), + detailVertexId: Joi.string().optional() }) } }, - handler: (req) => { + handler: async (req) => { const config = server.config(); const ccs = req.payload.ccs; const clusterUuid = req.params.clusterUuid; + const detailVertexId = req.payload.detailVertexId; const lsIndexPattern = prefixIndexPattern(config, INDEX_PATTERN_LOGSTASH, ccs); const pipelineId = req.params.pipelineId; // Optional params default to empty string, set to null to be more explicit. const pipelineHash = req.params.pipelineHash || null; - return getPipeline(req, config, lsIndexPattern, clusterUuid, pipelineId, pipelineHash) - .catch(err => handleError(err, req)); + // Figure out which version of the pipeline we want to show + let versions; + try { + versions = await getPipelineVersions(req, config, lsIndexPattern, clusterUuid, pipelineId); + } catch (err) { + return handleError(err, req); + } + const version = getPipelineVersion(versions, pipelineHash); + + const promises = [ getPipeline(req, config, lsIndexPattern, clusterUuid, pipelineId, version) ]; + if (detailVertexId) { + promises.push(getPipelineVertex(req, config, lsIndexPattern, clusterUuid, pipelineId, version, detailVertexId)); + } + + try { + const [ pipeline, vertex ] = await Promise.all(promises); + return { + versions, + pipeline, + vertex + }; + } catch (err) { + return handleError(err, req); + } } }); } From e247609e8b525e0b6ea200b6e65ecb5e00be6ab9 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Tue, 26 Mar 2019 10:00:53 -0600 Subject: [PATCH 53/56] [Maps] split settings into layer and source panels (#33788) * [Maps] split settings into layer and source panels * fix SCSS import --- .../__snapshots__/view.test.js.snap | 7 +-- .../public/components/layer_panel/_index.scss | 2 +- .../__snapshots__/layer_errors.test.js.snap | 22 ++++++++ .../layer_panel/layer_errors/index.js | 18 ++++++ .../layer_panel/layer_errors/layer_errors.js | 37 +++++++++++++ .../layer_errors/layer_errors.test.js | 39 +++++++++++++ .../_layer_settings.scss} | 0 .../index.js | 8 +-- .../layer_settings.js} | 42 ++------------ .../source_settings.test.js.snap | 39 +++++++++++++ .../layer_panel/source_settings/index.js | 25 +++++++++ .../source_settings/source_settings.js | 55 +++++++++++++++++++ .../source_settings/source_settings.test.js | 42 ++++++++++++++ .../public/components/layer_panel/view.js | 15 ++++- .../components/layer_panel/view.test.js | 20 +++++-- 15 files changed, 317 insertions(+), 54 deletions(-) create mode 100644 x-pack/plugins/maps/public/components/layer_panel/layer_errors/__snapshots__/layer_errors.test.js.snap create mode 100644 x-pack/plugins/maps/public/components/layer_panel/layer_errors/index.js create mode 100644 x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.js create mode 100644 x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.test.js rename x-pack/plugins/maps/public/components/layer_panel/{settings_panel/_settings_panel.scss => layer_settings/_layer_settings.scss} (100%) rename x-pack/plugins/maps/public/components/layer_panel/{settings_panel => layer_settings}/index.js (79%) rename x-pack/plugins/maps/public/components/layer_panel/{settings_panel/settings_panel.js => layer_settings/layer_settings.js} (78%) create mode 100644 x-pack/plugins/maps/public/components/layer_panel/source_settings/__snapshots__/source_settings.test.js.snap create mode 100644 x-pack/plugins/maps/public/components/layer_panel/source_settings/index.js create mode 100644 x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.js create mode 100644 x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.test.js diff --git a/x-pack/plugins/maps/public/components/layer_panel/__snapshots__/view.test.js.snap b/x-pack/plugins/maps/public/components/layer_panel/__snapshots__/view.test.js.snap index 1774258d998349..d260aebd67d5fb 100644 --- a/x-pack/plugins/maps/public/components/layer_panel/__snapshots__/view.test.js.snap +++ b/x-pack/plugins/maps/public/components/layer_panel/__snapshots__/view.test.js.snap @@ -82,10 +82,9 @@ exports[`LayerPanel is rendered 1`] = ` - - + + + + +

    + simulated layer error +

    +
    + + +`; + +exports[`should render nothing when layer has no errors 1`] = `""`; diff --git a/x-pack/plugins/maps/public/components/layer_panel/layer_errors/index.js b/x-pack/plugins/maps/public/components/layer_panel/layer_errors/index.js new file mode 100644 index 00000000000000..21ff81e32f607c --- /dev/null +++ b/x-pack/plugins/maps/public/components/layer_panel/layer_errors/index.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { connect } from 'react-redux'; +import { LayerErrors } from './layer_errors'; +import { getSelectedLayer } from '../../../selectors/map_selectors'; + +function mapStateToProps(state = {}) { + return { + layer: getSelectedLayer(state) + }; +} + +const connectedLayerErrors = connect(mapStateToProps, null)(LayerErrors); +export { connectedLayerErrors as LayerErrors }; diff --git a/x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.js b/x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.js new file mode 100644 index 00000000000000..755a1ed39ff8d3 --- /dev/null +++ b/x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Fragment } from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiCallOut, + EuiSpacer, +} from '@elastic/eui'; + +export function LayerErrors({ layer }) { + + if (!layer.hasErrors()) { + return null; + } + + return ( + + +

    + {layer.getErrors()} +

    +
    + +
    + ); +} diff --git a/x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.test.js b/x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.test.js new file mode 100644 index 00000000000000..fd2b8540bee16e --- /dev/null +++ b/x-pack/plugins/maps/public/components/layer_panel/layer_errors/layer_errors.test.js @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { LayerErrors } from './layer_errors'; + +test('Should render errors when layer has errors', () => { + const mockLayer = { + hasErrors: () => { return true; }, + getErrors: () => { return 'simulated layer error'; } + }; + const component = shallow( + + ); + + expect(component) + .toMatchSnapshot(); +}); + +test('should render nothing when layer has no errors', () => { + const mockLayer = { + hasErrors: () => { return false; }, + }; + const component = shallow( + + ); + + expect(component) + .toMatchSnapshot(); +}); diff --git a/x-pack/plugins/maps/public/components/layer_panel/settings_panel/_settings_panel.scss b/x-pack/plugins/maps/public/components/layer_panel/layer_settings/_layer_settings.scss similarity index 100% rename from x-pack/plugins/maps/public/components/layer_panel/settings_panel/_settings_panel.scss rename to x-pack/plugins/maps/public/components/layer_panel/layer_settings/_layer_settings.scss diff --git a/x-pack/plugins/maps/public/components/layer_panel/settings_panel/index.js b/x-pack/plugins/maps/public/components/layer_panel/layer_settings/index.js similarity index 79% rename from x-pack/plugins/maps/public/components/layer_panel/settings_panel/index.js rename to x-pack/plugins/maps/public/components/layer_panel/layer_settings/index.js index b82e2e0e62a27e..e0a12751552119 100644 --- a/x-pack/plugins/maps/public/components/layer_panel/settings_panel/index.js +++ b/x-pack/plugins/maps/public/components/layer_panel/layer_settings/index.js @@ -5,14 +5,13 @@ */ import { connect } from 'react-redux'; -import { SettingsPanel } from './settings_panel'; +import { LayerSettings } from './layer_settings'; import { getSelectedLayer } from '../../../selectors/map_selectors'; import { updateLayerLabel, updateLayerMaxZoom, updateLayerMinZoom, updateLayerAlpha, - updateSourceProp, } from '../../../actions/store_actions'; function mapStateToProps(state = {}) { @@ -33,9 +32,8 @@ function mapDispatchToProps(dispatch) { updateMinZoom: (id, minZoom) => dispatch(updateLayerMinZoom(id, minZoom)), updateMaxZoom: (id, maxZoom) => dispatch(updateLayerMaxZoom(id, maxZoom)), updateAlpha: (id, alpha) => dispatch(updateLayerAlpha(id, alpha)), - updateSourceProp: (id, propName, value) => dispatch(updateSourceProp(id, propName, value)), }; } -const connectedSettingsPanel = connect(mapStateToProps, mapDispatchToProps)(SettingsPanel); -export { connectedSettingsPanel as SettingsPanel }; +const connectedLayerSettings = connect(mapStateToProps, mapDispatchToProps)(LayerSettings); +export { connectedLayerSettings as LayerSettings }; diff --git a/x-pack/plugins/maps/public/components/layer_panel/settings_panel/settings_panel.js b/x-pack/plugins/maps/public/components/layer_panel/layer_settings/layer_settings.js similarity index 78% rename from x-pack/plugins/maps/public/components/layer_panel/settings_panel/settings_panel.js rename to x-pack/plugins/maps/public/components/layer_panel/layer_settings/layer_settings.js index 61563f4375af0e..0a01498986e907 100644 --- a/x-pack/plugins/maps/public/components/layer_panel/settings_panel/settings_panel.js +++ b/x-pack/plugins/maps/public/components/layer_panel/layer_settings/layer_settings.js @@ -14,7 +14,6 @@ import { EuiFormRow, EuiFieldText, EuiSpacer, - EuiCallOut } from '@elastic/eui'; import { ValidatedRange } from '../../../shared/components/validated_range'; @@ -25,7 +24,7 @@ import { ValidatedDualRange } from 'ui/validated_range'; const MIN_ZOOM = 0; const MAX_ZOOM = 24; -export function SettingsPanel(props) { +export function LayerSettings(props) { const onLabelChange = (event) => { const label = event.target.value; @@ -41,34 +40,6 @@ export function SettingsPanel(props) { props.updateAlpha(props.layerId, alpha); }; - const onSourceChange = ({ propName, value }) => { - props.updateSourceProp(props.layerId, propName, value); - }; - - const renderLayerErrors = () => { - if (!props.layer.hasErrors()) { - return null; - } - - return ( - - -

    - {props.layer.getErrors()} -

    -
    - -
    - ); - }; - const renderZoomSliders = () => { return ( - - {renderLayerErrors()} -
    @@ -170,9 +138,9 @@ export function SettingsPanel(props) { {renderZoomSliders()} {renderAlphaSlider()} - - {props.layer.renderSourceSettingsEditor({ onChange: onSourceChange })}
    + + ); } diff --git a/x-pack/plugins/maps/public/components/layer_panel/source_settings/__snapshots__/source_settings.test.js.snap b/x-pack/plugins/maps/public/components/layer_panel/source_settings/__snapshots__/source_settings.test.js.snap new file mode 100644 index 00000000000000..48af4ec7286cb2 --- /dev/null +++ b/x-pack/plugins/maps/public/components/layer_panel/source_settings/__snapshots__/source_settings.test.js.snap @@ -0,0 +1,39 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Should render source settings editor 1`] = ` + + + + + +
    + +
    +
    +
    +
    + +
    + mockSourceEditor +
    +
    + +
    +`; + +exports[`should render nothing when source has no editor 1`] = `""`; diff --git a/x-pack/plugins/maps/public/components/layer_panel/source_settings/index.js b/x-pack/plugins/maps/public/components/layer_panel/source_settings/index.js new file mode 100644 index 00000000000000..04885c5b5c485a --- /dev/null +++ b/x-pack/plugins/maps/public/components/layer_panel/source_settings/index.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { connect } from 'react-redux'; +import { SourceSettings } from './source_settings'; +import { getSelectedLayer } from '../../../selectors/map_selectors'; +import { updateSourceProp } from '../../../actions/store_actions'; + +function mapStateToProps(state = {}) { + return { + layer: getSelectedLayer(state) + }; +} + +function mapDispatchToProps(dispatch) { + return { + updateSourceProp: (id, propName, value) => dispatch(updateSourceProp(id, propName, value)), + }; +} + +const connectedSourceSettings = connect(mapStateToProps, mapDispatchToProps)(SourceSettings); +export { connectedSourceSettings as SourceSettings }; diff --git a/x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.js b/x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.js new file mode 100644 index 00000000000000..6a1a75327427aa --- /dev/null +++ b/x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.js @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Fragment } from 'react'; + +import { + EuiFlexGroup, + EuiFlexItem, + EuiTitle, + EuiPanel, + EuiSpacer, +} from '@elastic/eui'; + +import { FormattedMessage } from '@kbn/i18n/react'; + +export function SourceSettings({ layer, updateSourceProp }) { + + const onSourceChange = ({ propName, value }) => { + updateSourceProp(layer.getId(), propName, value); + }; + + const sourceSettingsEditor = layer.renderSourceSettingsEditor({ onChange: onSourceChange }); + + if (!sourceSettingsEditor) { + return null; + } + + return ( + + + + + +
    + +
    +
    +
    +
    + + + + {sourceSettingsEditor} +
    + + +
    + ); +} diff --git a/x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.test.js b/x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.test.js new file mode 100644 index 00000000000000..090d30054ba814 --- /dev/null +++ b/x-pack/plugins/maps/public/components/layer_panel/source_settings/source_settings.test.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { SourceSettings } from './source_settings'; + +test('Should render source settings editor', () => { + const mockLayer = { + renderSourceSettingsEditor: () => { + return (
    mockSourceEditor
    ); + }, + }; + const component = shallow( + + ); + + expect(component) + .toMatchSnapshot(); +}); + +test('should render nothing when source has no editor', () => { + const mockLayer = { + renderSourceSettingsEditor: () => { + return null; + }, + }; + const component = shallow( + + ); + + expect(component) + .toMatchSnapshot(); +}); diff --git a/x-pack/plugins/maps/public/components/layer_panel/view.js b/x-pack/plugins/maps/public/components/layer_panel/view.js index 36e4ac6f484f6d..20a5a2669484b9 100644 --- a/x-pack/plugins/maps/public/components/layer_panel/view.js +++ b/x-pack/plugins/maps/public/components/layer_panel/view.js @@ -9,7 +9,9 @@ import React, { Fragment } from 'react'; import { StyleTabs } from './style_tabs'; import { JoinEditor } from './join_editor'; import { FlyoutFooter } from './flyout_footer'; -import { SettingsPanel } from './settings_panel'; +import { LayerErrors } from './layer_errors'; +import { LayerSettings } from './layer_settings'; +import { SourceSettings } from './source_settings'; import { EuiButtonIcon, EuiFlexItem, @@ -175,10 +177,17 @@ export class LayerPanel extends React.Component { - - + + + + + + + {this._renderJoinSection()} + + diff --git a/x-pack/plugins/maps/public/components/layer_panel/view.test.js b/x-pack/plugins/maps/public/components/layer_panel/view.test.js index 200345bf92b742..6a5208ce13c0bb 100644 --- a/x-pack/plugins/maps/public/components/layer_panel/view.test.js +++ b/x-pack/plugins/maps/public/components/layer_panel/view.test.js @@ -22,9 +22,21 @@ jest.mock('./flyout_footer', () => ({ } })); -jest.mock('./settings_panel', () => ({ - SettingsPanel: () => { - return (
    mockSettingsPanel
    ); +jest.mock('./layer_errors', () => ({ + LayerErrors: () => { + return (
    mockLayerErrors
    ); + } +})); + +jest.mock('./layer_settings', () => ({ + LayerSettings: () => { + return (
    mockLayerSettings
    ); + } +})); + +jest.mock('./source_settings', () => ({ + SourceSettings: () => { + return (
    mockSourceSettings
    ); } })); @@ -42,7 +54,7 @@ const mockLayer = { ]; }, isJoinable: () => { return true; }, - getLayerTypeIconName: () => { return 'vector'; } + getLayerTypeIconName: () => { return 'vector'; }, }; const defaultProps = { From 369f0f2922ffb3cb5243dffebe8e4e209ac579e3 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Tue, 26 Mar 2019 11:20:41 -0500 Subject: [PATCH 54/56] [env] exit if starting as root (#21563) * [env] exit if starting as root * fix windows * s/--allow-root --- src/setup_node_env/index.js | 1 + src/setup_node_env/root/force.js | 25 ++++++++++++++++ src/setup_node_env/root/force.test.js | 39 +++++++++++++++++++++++++ src/setup_node_env/root/index.js | 28 ++++++++++++++++++ src/setup_node_env/root/is_root.js | 22 ++++++++++++++ src/setup_node_env/root/is_root.test.js | 32 ++++++++++++++++++++ 6 files changed, 147 insertions(+) create mode 100644 src/setup_node_env/root/force.js create mode 100644 src/setup_node_env/root/force.test.js create mode 100644 src/setup_node_env/root/index.js create mode 100644 src/setup_node_env/root/is_root.js create mode 100644 src/setup_node_env/root/is_root.test.js diff --git a/src/setup_node_env/index.js b/src/setup_node_env/index.js index 6592fa9fd2424a..a3fe8d938ba2bf 100644 --- a/src/setup_node_env/index.js +++ b/src/setup_node_env/index.js @@ -17,5 +17,6 @@ * under the License. */ +require('./root'); require('./node_version_validator'); require('./babel_register'); diff --git a/src/setup_node_env/root/force.js b/src/setup_node_env/root/force.js new file mode 100644 index 00000000000000..5c5370aec6b152 --- /dev/null +++ b/src/setup_node_env/root/force.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = function (argv) { + var rootIndex = argv.indexOf('--allow-root'); + var force = rootIndex >= 0; + if (force) argv.splice(rootIndex, 1); + return force; +}; diff --git a/src/setup_node_env/root/force.test.js b/src/setup_node_env/root/force.test.js new file mode 100644 index 00000000000000..df013349e57ed2 --- /dev/null +++ b/src/setup_node_env/root/force.test.js @@ -0,0 +1,39 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +var forceRoot = require('./force'); + +describe('forceRoot', function () { + + it('with flag', function () { + expect(forceRoot(['--allow-root'])).toBeTruthy(); + }); + + it('without flag', function () { + expect(forceRoot(['--foo'])).toBeFalsy(); + + }); + + test('remove argument', function () { + var args = ['--allow-root', 'foo']; + forceRoot(args); + expect(args.includes('--allow-root')).toBeFalsy(); + }); + +}); diff --git a/src/setup_node_env/root/index.js b/src/setup_node_env/root/index.js new file mode 100644 index 00000000000000..5a402dfcb4eeb8 --- /dev/null +++ b/src/setup_node_env/root/index.js @@ -0,0 +1,28 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +var force = require('./force')(process.argv); + +var uid = process.getuid && process.getuid(); +var isRoot = require('./is_root')(uid); + +if(isRoot && !force) { + console.error('Kibana should not be run as root. Use --allow-root to continue.'); + process.exit(1); +} diff --git a/src/setup_node_env/root/is_root.js b/src/setup_node_env/root/is_root.js new file mode 100644 index 00000000000000..e2eaaf6af51540 --- /dev/null +++ b/src/setup_node_env/root/is_root.js @@ -0,0 +1,22 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = function (uid) { + return uid === 0; +}; diff --git a/src/setup_node_env/root/is_root.test.js b/src/setup_node_env/root/is_root.test.js new file mode 100644 index 00000000000000..a976299cd5d5b4 --- /dev/null +++ b/src/setup_node_env/root/is_root.test.js @@ -0,0 +1,32 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +var isRoot = require('./is_root'); + + +describe('isRoot', function () { + + test('0 is root', function () { + expect(isRoot(0)).toBeTruthy(); + }); + + test('not 0 is not root', function () { + expect(isRoot(5)).toBeFalsy(); + }); +}); From f5010cc8e6122eb89a507e34e0d89c28febe7728 Mon Sep 17 00:00:00 2001 From: Stacey Gammon Date: Tue, 26 Mar 2019 12:31:10 -0400 Subject: [PATCH 55/56] Typescript sample panel action (#33602) * Typescript sample panel action * Update EUI version to match main cabana version * update yarn.lock * add back typings include * use correct relative path --- package.json | 3 +-- src/dev/typescript/projects.ts | 3 +++ .../embeddable/context_menu_actions/index.ts | 1 + .../{index.js => index.ts} | 16 +++++++----- .../kbn_tp_sample_panel_action/package.json | 13 ++++++++-- ...anel_action.js => sample_panel_action.tsx} | 10 ++++--- ...ple_panel_link.js => sample_panel_link.ts} | 10 +++---- .../kbn_tp_sample_panel_action/tsconfig.json | 14 ++++++++++ test/scripts/jenkins_ci_group.sh | 6 ++++- test/tsconfig.json | 6 ++++- yarn.lock | 26 +++++++++++++++++++ 11 files changed, 87 insertions(+), 21 deletions(-) rename test/plugin_functional/plugins/kbn_tp_sample_panel_action/{index.js => index.ts} (75%) rename test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/{sample_panel_action.js => sample_panel_action.tsx} (93%) rename test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/{sample_panel_link.js => sample_panel_link.ts} (90%) create mode 100644 test/plugin_functional/plugins/kbn_tp_sample_panel_action/tsconfig.json diff --git a/package.json b/package.json index 30bd3f9d52897b..43f6c6704c6004 100644 --- a/package.json +++ b/package.json @@ -90,8 +90,7 @@ "**/@types/*/**", "**/grunt-*", "**/grunt-*/**", - "x-pack/typescript", - "kbn_tp_*/**" + "x-pack/typescript" ] }, "dependencies": { diff --git a/src/dev/typescript/projects.ts b/src/dev/typescript/projects.ts index 540441ab6b8de6..7ef3419751be54 100644 --- a/src/dev/typescript/projects.ts +++ b/src/dev/typescript/projects.ts @@ -35,6 +35,9 @@ export const PROJECTS = [ ...glob .sync('packages/*/tsconfig.json', { cwd: REPO_ROOT }) .map(path => new Project(resolve(REPO_ROOT, path))), + ...glob + .sync('test/plugin_functional/plugins/*/tsconfig.json', { cwd: REPO_ROOT }) + .map(path => new Project(resolve(REPO_ROOT, path))), ]; export function filterProjectsByFlag(projectFlag?: string) { diff --git a/src/legacy/ui/public/embeddable/context_menu_actions/index.ts b/src/legacy/ui/public/embeddable/context_menu_actions/index.ts index 152fdee9f7fff6..d43f1d16aefd1a 100644 --- a/src/legacy/ui/public/embeddable/context_menu_actions/index.ts +++ b/src/legacy/ui/public/embeddable/context_menu_actions/index.ts @@ -21,3 +21,4 @@ export { ContextMenuPanel } from './context_menu_panel'; export { ContextMenuAction } from './context_menu_action'; export { ContextMenuActionsRegistryProvider } from './context_menu_actions_registry'; export { buildEuiContextMenuPanels } from './build_eui_context_menu_panels'; +export { PanelActionAPI } from './types'; diff --git a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/index.js b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/index.ts similarity index 75% rename from test/plugin_functional/plugins/kbn_tp_sample_panel_action/index.js rename to test/plugin_functional/plugins/kbn_tp_sample_panel_action/index.ts index c4aaaa857cecd1..dd069010e0742b 100644 --- a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/index.js +++ b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/index.ts @@ -17,8 +17,15 @@ * under the License. */ -function samplePanelAction(kibana) { +import { resolve } from 'path'; + +// TODO: use something better once https://github.com/elastic/kibana/issues/26555 is +// figured out. +type KibanaPlugin = any; + +function samplePanelAction(kibana: KibanaPlugin) { return new kibana.Plugin({ + publicDir: resolve(__dirname, './public'), uiExports: { contextMenuActions: [ 'plugins/kbn_tp_sample_panel_action/sample_panel_action', @@ -28,9 +35,6 @@ function samplePanelAction(kibana) { }); } -module.exports = function (kibana) { - return [ - samplePanelAction(kibana), - ]; +module.exports = (kibana: KibanaPlugin) => { + return [samplePanelAction(kibana)]; }; - diff --git a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/package.json b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/package.json index ae68ac4f5c5435..462f5448d7cff1 100644 --- a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/package.json +++ b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/package.json @@ -1,13 +1,22 @@ { "name": "kbn_tp_sample_panel_action", "version": "1.0.0", + "main":"target/test/plugin_functional/plugins/kbn_tp_sample_panel_action", "kibana": { "version": "kibana", "templateVersion": "1.0.0" }, "license": "Apache-2.0", "dependencies": { - "@elastic/eui": "9.4.0", + "@elastic/eui": "9.4.2", "react": "^16.8.0" + }, + "scripts": { + "kbn": "node ../../../../scripts/kbn.js", + "build": "rm -rf './target' && tsc" + }, + "devDependencies": { + "@kbn/plugin-helpers" : "9.0.2", + "typescript": "^3.3.3333" } -} +} \ No newline at end of file diff --git a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.js b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.tsx similarity index 93% rename from test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.js rename to test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.tsx index 1310ff027e35e4..41c867b5526d5c 100644 --- a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.js +++ b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_action.tsx @@ -23,6 +23,7 @@ import { openFlyout } from 'ui/flyout'; import { ContextMenuAction, ContextMenuActionsRegistryProvider, + PanelActionAPI, } from 'ui/embeddable'; class SamplePanelAction extends ContextMenuAction { @@ -33,7 +34,10 @@ class SamplePanelAction extends ContextMenuAction { parentPanelId: 'mainMenu', }); } - onClick({ embeddable }) { + public onClick = ({ embeddable }: PanelActionAPI) => { + if (!embeddable) { + return; + } openFlyout( @@ -47,9 +51,9 @@ class SamplePanelAction extends ContextMenuAction { , { 'data-test-subj': 'samplePanelActionFlyout', - }, + } ); - } + }; } ContextMenuActionsRegistryProvider.register(() => new SamplePanelAction()); diff --git a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.js b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.ts similarity index 90% rename from test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.js rename to test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.ts index 0b99b7eadb3c79..7092c783125d93 100644 --- a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.js +++ b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/public/sample_panel_link.ts @@ -16,10 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { - ContextMenuAction, - ContextMenuActionsRegistryProvider, -} from 'ui/embeddable'; +import { ContextMenuAction, ContextMenuActionsRegistryProvider } from 'ui/embeddable'; class SamplePanelLink extends ContextMenuAction { constructor() { @@ -29,9 +26,10 @@ class SamplePanelLink extends ContextMenuAction { parentPanelId: 'mainMenu', }); } - getHref() { + + public getHref = () => { return 'https://example.com/kibana/test'; - } + }; } ContextMenuActionsRegistryProvider.register(() => new SamplePanelLink()); diff --git a/test/plugin_functional/plugins/kbn_tp_sample_panel_action/tsconfig.json b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/tsconfig.json new file mode 100644 index 00000000000000..aba7203377affa --- /dev/null +++ b/test/plugin_functional/plugins/kbn_tp_sample_panel_action/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./target", + "skipLibCheck": true + }, + "include": [ + "index.ts", + "public/**/*.ts", + "public/**/*.tsx", + "../../../../typings/**/*", + ], + "exclude": [] +} \ No newline at end of file diff --git a/test/scripts/jenkins_ci_group.sh b/test/scripts/jenkins_ci_group.sh index c9eec36cdc743a..a4bc597316dcb1 100755 --- a/test/scripts/jenkins_ci_group.sh +++ b/test/scripts/jenkins_ci_group.sh @@ -22,6 +22,10 @@ export TEST_BROWSER_HEADLESS=1 "$(FORCE_COLOR=0 yarn bin)/grunt" "run:functionalTests_ciGroup${CI_GROUP}"; if [ "$CI_GROUP" == "1" ]; then - "$(FORCE_COLOR=0 yarn bin)/grunt" run:pluginFunctionalTestsRelease; + # build kbn_tp_sample_panel_action + cd test/plugin_functional/plugins/kbn_tp_sample_panel_action; + yarn build; + cd -; + "$(FORCE_COLOR=0 yarn bin)/grunt" run:pluginFunctionalTestsRelease --from=source; "$(FORCE_COLOR=0 yarn bin)/grunt" run:interpreterFunctionalTestsRelease; fi diff --git a/test/tsconfig.json b/test/tsconfig.json index 5df729fbde21b4..d620d28f3d1de4 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -7,6 +7,10 @@ ] }, "include": [ - "**/*.ts" + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "plugin_functional/plugins/**/*" ] } diff --git a/yarn.lock b/yarn.lock index 1bd20968683819..e15a2219367b63 100644 --- a/yarn.lock +++ b/yarn.lock @@ -822,6 +822,32 @@ tabbable "^1.1.0" uuid "^3.1.0" +"@elastic/eui@9.4.2": + version "9.4.2" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-9.4.2.tgz#530ec18f9b1cb3972824a707cc0cb3005c6c5028" + integrity sha512-2fH+WiYYq1tPn5mEvg5NR5b9TjVYY0cM26HPERMRMZyAenGFQtjhansO8qFlTl/MAYz5GsQ7ejgdtzu095opdw== + dependencies: + "@types/lodash" "^4.14.116" + "@types/numeral" "^0.0.25" + classnames "^2.2.5" + core-js "^2.5.1" + highlight.js "^9.12.0" + html "^1.0.0" + keymirror "^0.1.1" + lodash "^4.17.11" + numeral "^2.0.6" + prop-types "^15.6.0" + react-ace "^5.5.0" + react-color "^2.13.8" + react-focus-lock "^1.17.7" + react-input-autosize "^2.2.1" + react-is "~16.3.0" + react-virtualized "^9.18.5" + react-vis "1.10.2" + resize-observer-polyfill "^1.5.0" + tabbable "^1.1.0" + uuid "^3.1.0" + "@elastic/eui@9.5.0": version "9.5.0" resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-9.5.0.tgz#233b4722b0cd2506793472ec1c6b97640a365229" From 57c7572367d658d2ee3707ba6925ac05aac3fdb4 Mon Sep 17 00:00:00 2001 From: Philipp B Date: Tue, 26 Mar 2019 19:40:58 +0300 Subject: [PATCH 56/56] Home page "recent links" should communicate saved object type #21896 (#33694) * adds object type for screen order * adds object type for pointer hovering * Update src/legacy/ui/public/chrome/directives/header_global_nav/components/header.tsx Co-Authored-By: rockfield --- .../header_global_nav/components/header.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/legacy/ui/public/chrome/directives/header_global_nav/components/header.tsx b/src/legacy/ui/public/chrome/directives/header_global_nav/components/header.tsx index d8426805f57ba7..d8aec7997fdbf2 100644 --- a/src/legacy/ui/public/chrome/directives/header_global_nav/components/header.tsx +++ b/src/legacy/ui/public/chrome/directives/header_global_nav/components/header.tsx @@ -54,6 +54,7 @@ import { HeaderBreadcrumbs } from './header_breadcrumbs'; import { HeaderHelpMenu } from './header_help_menu'; import { HeaderNavControls } from './header_nav_controls'; +import { i18n } from '@kbn/i18n'; import { InjectedIntl, injectI18n } from '@kbn/i18n/react'; import chrome, { NavLink } from 'ui/chrome'; import { HelpExtension } from 'ui/chrome'; @@ -88,10 +89,23 @@ function extendRecentlyAccessedHistoryItem( const href = relativeToAbsolute(chrome.addBasePath(recentlyAccessed.link)); const navLink = navLinks.find(nl => href.startsWith(nl.subUrlBase)); + let titleAndAriaLabel = recentlyAccessed.label; + if (navLink) { + const objectTypeForAriaAppendix = navLink.title; + titleAndAriaLabel = i18n.translate('common.ui.recentLinks.linkItem.screenReaderLabel', { + defaultMessage: '{recentlyAccessedItemLinklabel}, type: {pageType}', + values: { + recentlyAccessedItemLinklabel: recentlyAccessed.label, + pageType: objectTypeForAriaAppendix, + }, + }); + } + return { ...recentlyAccessed, href, euiIconType: navLink ? navLink.euiIconType : undefined, + title: titleAndAriaLabel, }; } @@ -248,9 +262,8 @@ class HeaderUI extends Component { }), listItems: recentlyAccessed.map(item => ({ label: truncateRecentItemLabel(item.label), - // TODO: Add what type of app/saved object to title attr - title: `${item.label}`, - 'aria-label': item.label, + title: item.title, + 'aria-label': item.title, href: item.href, iconType: item.euiIconType, })),