From 87fd4a4c6736b4cfe429dbba34b62dbd87a90cbf Mon Sep 17 00:00:00 2001
From: Nicolas Chaulet
Date: Tue, 19 Apr 2022 13:08:35 -0400
Subject: [PATCH 01/25] [Fleet] Update the link to logstash ssl documentation
(#130510)
---
packages/kbn-doc-links/src/get_doc_links.ts | 1 +
packages/kbn-doc-links/src/types.ts | 1 +
.../settings/components/logstash_instructions/index.tsx | 2 +-
3 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts
index 80760520da27f..18bdfcb0b11a3 100644
--- a/packages/kbn-doc-links/src/get_doc_links.ts
+++ b/packages/kbn-doc-links/src/get_doc_links.ts
@@ -601,6 +601,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => {
learnMoreBlog: `${ELASTIC_WEBSITE_URL}blog/elastic-agent-and-fleet-make-it-easier-to-integrate-your-systems-with-elastic`,
apiKeysLearnMore: `${KIBANA_DOCS}api-keys.html`,
onPremRegistry: `${FLEET_DOCS}air-gapped.html`,
+ secureLogstash: `${FLEET_DOCS}secure-logstash-connections.html`,
},
ecs: {
guide: `${ELASTIC_WEBSITE_URL}guide/en/ecs/current/index.html`,
diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts
index 57a48219b973c..e39dd039edd16 100644
--- a/packages/kbn-doc-links/src/types.ts
+++ b/packages/kbn-doc-links/src/types.ts
@@ -358,6 +358,7 @@ export interface DocLinks {
learnMoreBlog: string;
apiKeysLearnMore: string;
onPremRegistry: string;
+ secureLogstash: string;
}>;
readonly ecs: {
readonly guide: string;
diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx
index e87e0049bde89..c3d43f85038c0 100644
--- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx
+++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx
@@ -188,7 +188,7 @@ const LogstashInstructionSteps = () => {
defaultMessage="Replace the parts between the brackets with your generated SSL certificate file paths. View {documentationLink} to generate the certificates."
values={{
documentationLink: (
-
+
Date: Tue, 19 Apr 2022 12:14:42 -0500
Subject: [PATCH 02/25] [Enterprise Search] Add documentation link for BYOEI
(#130494)
* Add link and type to doc links packages
* Add link to UI
---
packages/kbn-doc-links/src/get_doc_links.ts | 1 +
packages/kbn-doc-links/src/types.ts | 1 +
.../components/engine_creation/engine_creation.tsx | 6 +++++-
.../public/applications/shared/doc_links/doc_links.ts | 4 ++++
4 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts
index 18bdfcb0b11a3..f4d01b8f12353 100644
--- a/packages/kbn-doc-links/src/get_doc_links.ts
+++ b/packages/kbn-doc-links/src/get_doc_links.ts
@@ -96,6 +96,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => {
crawlRules: `${APP_SEARCH_DOCS}crawl-web-content.html#crawl-web-content-manage-crawl-rules`,
curations: `${APP_SEARCH_DOCS}curations-guide.html`,
duplicateDocuments: `${APP_SEARCH_DOCS}web-crawler-reference.html#web-crawler-reference-content-deduplication`,
+ elasticsearchIndexedEngines: `${APP_SEARCH_DOCS}elasticsearch-engines.html`,
entryPoints: `${APP_SEARCH_DOCS}crawl-web-content.html#crawl-web-content-manage-entry-points`,
guide: `${APP_SEARCH_DOCS}index.html`,
indexingDocuments: `${APP_SEARCH_DOCS}indexing-documents-guide.html`,
diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts
index e39dd039edd16..e51ef91ac43b1 100644
--- a/packages/kbn-doc-links/src/types.ts
+++ b/packages/kbn-doc-links/src/types.ts
@@ -82,6 +82,7 @@ export interface DocLinks {
readonly crawlRules: string;
readonly curations: string;
readonly duplicateDocuments: string;
+ readonly elasticsearchIndexedEngines: string;
readonly entryPoints: string;
readonly guide: string;
readonly indexingDocuments: string;
diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx
index 28cbc818b60c7..33a8135fa63d4 100644
--- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx
+++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx
@@ -33,6 +33,7 @@ import {
import { i18n } from '@kbn/i18n';
+import { docLinks } from '../../../shared/doc_links';
import { parseQueryParams } from '../../../shared/query_params';
import { ENGINES_TITLE } from '../engines';
import { AppSearchPageTemplate } from '../layout';
@@ -212,7 +213,10 @@ export const EngineCreation: React.FC = () => {
-
+
{i18n.translate(
'xpack.enterpriseSearch.engineCreation.elasticsearchIndexedLink',
{
diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts
index 5911b76e723a3..b507e5466f13f 100644
--- a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts
+++ b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts
@@ -16,6 +16,7 @@ class DocLinks {
public appSearchCurations: string;
public appSearchDuplicateDocuments: string;
public appSearchEntryPoints: string;
+ public appSearchElasticsearchIndexedEngines: string;
public appSearchGuide: string;
public appSearchIndexingDocs: string;
public appSearchIndexingDocsSchema: string;
@@ -95,6 +96,7 @@ class DocLinks {
this.appSearchCurations = '';
this.appSearchDuplicateDocuments = '';
this.appSearchEntryPoints = '';
+ this.appSearchElasticsearchIndexedEngines = '';
this.appSearchGuide = '';
this.appSearchIndexingDocs = '';
this.appSearchIndexingDocsSchema = '';
@@ -174,6 +176,8 @@ class DocLinks {
this.appSearchCrawlRules = docLinks.links.appSearch.crawlRules;
this.appSearchCurations = docLinks.links.appSearch.curations;
this.appSearchDuplicateDocuments = docLinks.links.appSearch.duplicateDocuments;
+ this.appSearchElasticsearchIndexedEngines =
+ docLinks.links.appSearch.elasticsearchIndexedEngines;
this.appSearchEntryPoints = docLinks.links.appSearch.entryPoints;
this.appSearchGuide = docLinks.links.appSearch.guide;
this.appSearchIndexingDocs = docLinks.links.appSearch.indexingDocuments;
From 2a78f350e175b496d9a0105675b694bb3146f1fc Mon Sep 17 00:00:00 2001
From: Spencer
Date: Tue, 19 Apr 2022 12:24:58 -0500
Subject: [PATCH 03/25] break out parts of @kbn/dev-utils (#130509)
* break out parts of @kbn/dev-utils
* autofix imports and kbn/pm dist
* update readme for @kbn/stdio-dev-helpers
* finish renames
---
package.json | 14 +
packages/BUILD.bazel | 14 +
.../elastic-eslint-config-kibana/.eslintrc.js | 84 +++
packages/kbn-ci-stats-client/BUILD.bazel | 120 ++++
packages/kbn-ci-stats-client/README.md | 3 +
packages/kbn-ci-stats-client/jest.config.js | 13 +
packages/kbn-ci-stats-client/package.json | 10 +
.../src}/ci_stats_client.ts | 5 +-
.../src}/index.ts | 3 +-
packages/kbn-ci-stats-client/tsconfig.json | 17 +
packages/kbn-ci-stats-core/BUILD.bazel | 116 +++
packages/kbn-ci-stats-core/README.md | 3 +
packages/kbn-ci-stats-core/jest.config.js | 13 +
packages/kbn-ci-stats-core/package.json | 10 +
.../src}/ci_stats_config.ts | 2 +-
.../src}/ci_stats_metadata.ts | 0
.../src}/index.ts | 7 +-
packages/kbn-ci-stats-core/tsconfig.json | 17 +
packages/kbn-ci-stats-reporter/BUILD.bazel | 122 ++++
.../README.md | 0
packages/kbn-ci-stats-reporter/jest.config.js | 13 +
packages/kbn-ci-stats-reporter/package.json | 10 +
.../src}/ci_stats_reporter.ts | 5 +-
.../src}/ci_stats_test_group_types.ts | 2 +-
packages/kbn-ci-stats-reporter/src/index.ts | 23 +
.../src}/report_time.ts | 4 +-
packages/kbn-ci-stats-reporter/tsconfig.json | 17 +
.../kbn-cli-dev-mode/src/cli_dev_mode.test.ts | 6 +-
packages/kbn-cli-dev-mode/src/cli_dev_mode.ts | 2 +-
packages/kbn-cli-dev-mode/src/dev_server.ts | 2 +-
.../src/get_server_watch_paths.test.ts | 2 +-
packages/kbn-cli-dev-mode/src/log.ts | 2 +-
.../kbn-cli-dev-mode/src/optimizer.test.ts | 3 +-
packages/kbn-cli-dev-mode/src/optimizer.ts | 2 +-
packages/kbn-dev-utils/BUILD.bazel | 14 +-
.../ci_stats_reporter/package.json | 4 -
.../sort_package_json/package.json | 4 -
packages/kbn-dev-utils/src/index.ts | 6 +-
.../kbn-dev-utils/src/proc_runner/proc.ts | 4 +-
.../src/proc_runner/proc_runner.ts | 2 +-
.../src/proc_runner/with_proc_runner.test.ts | 2 +-
.../src/proc_runner/with_proc_runner.ts | 3 +-
packages/kbn-dev-utils/src/run/cleanup.ts | 2 +-
packages/kbn-dev-utils/src/run/flags.ts | 2 +-
packages/kbn-dev-utils/src/run/help.ts | 2 +-
packages/kbn-dev-utils/src/run/metrics.ts | 4 +-
packages/kbn-dev-utils/src/run/run.ts | 2 +-
.../src/run/run_with_commands.test.ts | 2 +-
.../src/run/run_with_commands.ts | 2 +-
.../ship_ci_stats_cli.ts | 5 +-
packages/kbn-dev-utils/stdio/package.json | 4 -
.../kbn-dev-utils/tooling_log/package.json | 4 -
.../buid_api_declaration.test.ts | 2 +-
.../build_api_declaration.ts | 2 +-
.../extract_import_refs.test.ts | 2 +-
.../extract_import_refs.ts | 2 +-
.../build_api_declarations/get_references.ts | 2 +-
.../build_api_declarations/get_signature.ts | 2 +-
.../api_docs/build_api_declarations/types.ts | 2 +-
.../src/api_docs/build_api_docs_cli.ts | 3 +-
.../get_declaration_nodes_for_plugin.ts | 2 +-
.../src/api_docs/get_plugin_api.ts | 2 +-
.../src/api_docs/get_plugin_api_map.ts | 2 +-
.../mdx/build_plugin_deprecations_table.ts | 2 +-
.../api_docs/mdx/split_apis_by_folder.test.ts | 2 +-
.../kbn-docs-utils/src/api_docs/mdx/types.ts | 2 +-
.../mdx/write_deprecations_doc_by_api.ts | 2 +-
.../mdx/write_deprecations_doc_by_plugin.ts | 2 +-
.../mdx/write_deprecations_due_by_team.ts | 2 +-
.../mdx/write_plugin_directory_doc.ts | 2 +-
.../mdx/write_plugin_split_by_folder.test.ts | 2 +-
.../src/api_docs/tests/api_doc_suite.test.ts | 2 +-
.../kbn-docs-utils/src/api_docs/utils.test.ts | 2 +-
packages/kbn-docs-utils/src/api_docs/utils.ts | 2 +-
packages/kbn-es-archiver/src/actions/edit.ts | 2 +-
.../src/actions/empty_kibana_index.ts | 2 +-
packages/kbn-es-archiver/src/actions/load.ts | 2 +-
.../src/actions/rebuild_all.ts | 2 +-
packages/kbn-es-archiver/src/actions/save.ts | 2 +-
.../kbn-es-archiver/src/actions/unload.ts | 2 +-
packages/kbn-es-archiver/src/es_archiver.ts | 2 +-
.../docs/generate_doc_records_stream.test.ts | 2 +-
.../lib/docs/index_doc_records_stream.test.ts | 3 +-
.../src/lib/indices/__mocks__/stubs.ts | 2 +-
.../src/lib/indices/create_index_stream.ts | 2 +-
.../src/lib/indices/delete_index.ts | 2 +-
.../src/lib/indices/delete_index_stream.ts | 2 +-
.../src/lib/indices/kibana_index.ts | 2 +-
packages/kbn-es-archiver/src/lib/progress.ts | 2 +-
.../kbn-es-archiver/src/lib/stats.test.ts | 2 +-
packages/kbn-es-archiver/src/lib/stats.ts | 2 +-
packages/kbn-es/src/artifact.test.js | 2 +-
packages/kbn-es/src/artifact.ts | 2 +-
packages/kbn-es/src/cli_commands/snapshot.js | 3 +-
.../kbn-es/src/install/install_archive.ts | 3 +-
.../kbn-es/src/install/install_snapshot.ts | 2 +-
packages/kbn-es/src/install/install_source.ts | 2 +-
.../src/integration_tests/cluster.test.js | 10 +-
packages/kbn-es/src/utils/build_snapshot.ts | 3 +-
packages/kbn-es/src/utils/log.ts | 2 +-
.../kbn-es/src/utils/native_realm.test.js | 2 +-
packages/kbn-generate/BUILD.bazel | 2 +
.../src/commands/package_command.ts | 3 +-
packages/kbn-generate/src/lib/render.ts | 3 +-
.../kbn-generate/src/lib/validate_file.ts | 3 +-
.../integration_tests/import_resolver.test.ts | 2 +-
packages/kbn-jest-serializers/BUILD.bazel | 118 ++++
packages/kbn-jest-serializers/README.md | 11 +
packages/kbn-jest-serializers/jest.config.js | 13 +
packages/kbn-jest-serializers/package.json | 10 +
.../src}/absolute_path_serializer.ts | 0
.../src}/any_instance_serizlizer.ts | 0
packages/kbn-jest-serializers/src/index.ts | 13 +
.../src}/recursive_serializer.ts | 0
.../src}/replace_serializer.ts | 0
.../src}/strip_ansi_serializer.ts | 0
packages/kbn-jest-serializers/tsconfig.json | 17 +
.../basic_optimization.test.ts | 3 +-
.../integration_tests/bundle_cache.test.ts | 2 +-
.../optimizer_built_paths.test.ts | 2 +-
packages/kbn-optimizer/src/limits.ts | 4 +-
.../src/log_optimizer_progress.ts | 2 +-
.../kbn-optimizer/src/log_optimizer_state.ts | 2 +-
.../src/optimizer/get_plugin_bundles.test.ts | 2 +-
.../optimizer/kibana_platform_plugins.test.ts | 2 +-
.../src/optimizer/optimizer_cache_key.test.ts | 2 +-
.../src/optimizer/optimizer_config.test.ts | 2 +-
.../src/report_optimizer_timings.ts | 3 +-
.../src/worker/bundle_metrics_plugin.ts | 2 +-
.../integration_tests/generate_plugin.test.ts | 2 +-
.../kbn-plugin-helpers/src/build_context.ts | 2 +-
packages/kbn-plugin-helpers/src/config.ts | 2 +-
.../src/integration_tests/build.test.ts | 2 +-
packages/kbn-pm/dist/index.js | 665 ++++++++++--------
packages/kbn-pm/src/cli.ts | 2 +-
packages/kbn-pm/src/commands/bootstrap.ts | 2 +-
packages/kbn-pm/src/run.ts | 2 +-
packages/kbn-pm/src/utils/bazel/run.ts | 2 +-
.../utils/link_project_executables.test.ts | 2 +-
packages/kbn-pm/src/utils/log.ts | 2 +-
.../src/utils/regenerate_package_json.ts | 2 +-
packages/kbn-sort-package-json/BUILD.bazel | 116 +++
packages/kbn-sort-package-json/README.md | 3 +
packages/kbn-sort-package-json/jest.config.js | 13 +
packages/kbn-sort-package-json/package.json | 10 +
.../src/index.ts} | 0
packages/kbn-sort-package-json/tsconfig.json | 17 +
packages/kbn-stdio-dev-helpers/BUILD.bazel | 118 ++++
packages/kbn-stdio-dev-helpers/README.md | 3 +
packages/kbn-stdio-dev-helpers/jest.config.js | 13 +
packages/kbn-stdio-dev-helpers/package.json | 10 +
.../src}/index.ts | 7 +-
.../src}/observe_lines.ts | 0
.../src}/observe_readable.ts | 0
packages/kbn-stdio-dev-helpers/tsconfig.json | 17 +
packages/kbn-test/src/es/test_es_cluster.ts | 2 +-
.../add_messages_to_report.test.ts | 2 +-
.../add_messages_to_report.ts | 2 +-
.../existing_failed_test_issues.test.ts | 3 +-
.../existing_failed_test_issues.ts | 3 +-
.../src/failed_tests_reporter/github_api.ts | 3 +-
.../report_failures_to_es.ts | 3 +-
.../report_failures_to_file.ts | 2 +-
.../run_failed_tests_reporter_cli.ts | 3 +-
.../src/functional_test_runner/cli.ts | 4 +-
.../functional_test_runner.ts | 2 +-
.../lib/config/read_config_file.test.js | 2 +-
.../lib/config/read_config_file.ts | 2 +-
.../lib/docker_servers/container_logs.ts | 3 +-
.../lib/docker_servers/container_running.ts | 2 +-
.../docker_servers/docker_servers_service.ts | 2 +-
.../lib/mocha/filter_suites.ts | 2 +-
.../mocha/reporter/ci_stats_ftr_reporter.ts | 6 +-
.../lib/mocha/reporter/reporter.js | 3 +-
.../lib/providers/provider_collection.ts | 2 +-
.../lib/providers/verbose_instance.ts | 2 +-
.../functional_test_runner/public_types.ts | 2 +-
.../functional_tests/cli/run_tests/args.js | 2 +-
.../cli/run_tests/args.test.js | 2 +-
.../cli/start_servers/args.js | 2 +-
.../cli/start_servers/args.test.js | 2 +-
.../functional_tests/lib/run_elasticsearch.ts | 2 +-
.../src/functional_tests/lib/run_ftr.ts | 2 +-
.../kbn-test/src/functional_tests/tasks.ts | 4 +-
.../src/jest/ci_stats_jest_reporter.ts | 3 +-
packages/kbn-test/src/jest/run.ts | 3 +-
.../kbn-test/src/kbn_client/kbn_client.ts | 2 +-
.../kbn_client/kbn_client_import_export.ts | 3 +-
.../src/kbn_client/kbn_client_requester.ts | 3 +-
.../kbn_client/kbn_client_saved_objects.ts | 3 +-
.../src/kbn_client/kbn_client_ui_settings.ts | 2 +-
packages/kbn-tooling-log/BUILD.bazel | 118 ++++
packages/kbn-tooling-log/README.md | 3 +
packages/kbn-tooling-log/jest.config.js | 13 +
packages/kbn-tooling-log/package.json | 10 +
.../__snapshots__/log_levels.test.ts.snap | 0
.../__snapshots__/tooling_log.test.ts.snap | 0
.../tooling_log_text_writer.test.ts.snap | 0
.../src}/index.ts | 8 +-
.../src}/log_levels.test.ts | 0
.../src}/log_levels.ts | 0
.../src}/message.ts | 0
.../src}/tooling_log.test.ts | 3 +-
.../src}/tooling_log.ts | 0
.../src}/tooling_log_collecting_writer.ts | 0
.../src}/tooling_log_text_writer.test.ts | 0
.../src}/tooling_log_text_writer.ts | 0
.../src}/writer.ts | 0
packages/kbn-tooling-log/tsconfig.json | 17 +
src/cli_plugin/install/settings.test.js | 2 +-
src/cli_plugin/remove/settings.test.js | 2 +-
.../server/plugins/plugins_service.test.ts | 2 +-
src/core/test_helpers/kbn_server.ts | 2 +-
src/dev/build/README.md | 4 +-
src/dev/build/args.test.ts | 3 +-
src/dev/build/args.ts | 2 +-
src/dev/build/build_distributables.ts | 2 +-
src/dev/build/lib/build.test.ts | 2 +-
src/dev/build/lib/config.test.ts | 2 +-
src/dev/build/lib/download.ts | 3 +-
src/dev/build/lib/exec.test.ts | 8 +-
src/dev/build/lib/exec.ts | 2 +-
src/dev/build/lib/fs.ts | 2 +-
.../lib/integration_tests/download.test.ts | 8 +-
src/dev/build/lib/runner.test.ts | 8 +-
src/dev/build/lib/runner.ts | 4 +-
.../tasks/build_kibana_platform_plugins.ts | 2 +-
src/dev/build/tasks/create_archives_task.ts | 2 +-
.../generate_packages_optimized_assets.ts | 2 +-
.../nodejs/download_node_builds_task.test.ts | 7 +-
.../nodejs/extract_node_builds_task.test.ts | 8 +-
.../build/tasks/nodejs/node_shasums.test.ts | 2 +-
src/dev/build/tasks/nodejs/node_shasums.ts | 2 +-
.../verify_existing_node_builds_task.test.ts | 8 +-
.../docker_generator/bundle_dockerfiles.ts | 2 +-
.../tasks/os_packages/docker_generator/run.ts | 2 +-
src/dev/build/tasks/os_packages/run_fpm.ts | 2 +-
.../build/tasks/patch_native_modules_task.ts | 2 +-
src/dev/chromium_version.ts | 3 +-
.../__tests__/enumerate_patterns.test.js | 2 +-
.../__tests__/transforms.test.js | 2 +-
src/dev/eslint/lint_files.ts | 3 +-
src/dev/eslint/pick_files_to_lint.ts | 2 +-
src/dev/github/search_and_save_pr_list.ts | 2 +-
src/dev/i18n/integrate_locale_files.ts | 2 +-
src/dev/i18n/tasks/check_compatibility.ts | 2 +-
src/dev/notice/cli.js | 2 +-
src/dev/notice/generate_notice_from_source.ts | 2 +-
src/dev/run_check_published_api_changes.ts | 3 +-
src/dev/run_i18n_check.ts | 4 +-
src/dev/storybook/commands/clean.ts | 2 +-
src/dev/typescript/build_ts_refs.ts | 3 +-
.../typescript/ref_output_cache/archives.ts | 2 +-
.../integration_tests/archives.test.ts | 5 +-
.../ref_output_cache.test.ts | 8 +-
.../ref_output_cache/ref_output_cache.ts | 3 +-
.../typescript/ref_output_cache/repo_info.ts | 2 +-
src/dev/typescript/root_refs_config.ts | 2 +-
test/common/services/randomness.ts | 2 +-
.../services/retry/retry_for_success.ts | 2 +-
.../common/services/retry/retry_for_truthy.ts | 2 +-
.../saved_object_info/saved_object_info.ts | 2 +-
.../services/saved_object_info/utils.ts | 3 +-
test/common/services/security/role.ts | 2 +-
.../common/services/security/role_mappings.ts | 2 +-
.../services/security/system_indices_user.ts | 2 +-
test/common/services/security/user.ts | 2 +-
test/functional/services/lib/compare_pngs.ts | 2 +-
.../web_element_wrapper.ts | 2 +-
test/functional/services/remote/webdriver.ts | 2 +-
.../install_all_packages.ts | 2 +-
.../common/random_policy_id_generator.ts | 2 +-
.../endpoint/resolver_generator_script.ts | 3 +-
.../scripts/endpoint/trusted_apps/index.ts | 2 +-
x-pack/tasks/build.ts | 3 +-
.../tests/alerts/wait_for_rule_status.ts | 2 +-
.../tests/create_endpoint_exceptions.ts | 2 +-
.../utils/count_down_es.ts | 2 +-
.../utils/count_down_test.ts | 2 +-
.../create_container_with_endpoint_entries.ts | 2 +-
.../utils/create_container_with_entries.ts | 2 +-
.../utils/create_exception_list.ts | 2 +-
.../utils/create_exception_list_item.ts | 2 +-
.../utils/create_new_action.ts | 2 +-
.../utils/create_rule.ts | 2 +-
.../create_rule_with_exception_entries.ts | 2 +-
.../utils/create_signals_index.ts | 2 +-
.../utils/delete_all_alerts.ts | 2 +-
.../delete_all_event_log_execution_events.ts | 2 +-
.../utils/delete_all_rule_execution_info.ts | 2 +-
.../utils/delete_exception_list.ts | 2 +-
.../utils/delete_rule.ts | 2 +-
.../utils/delete_signals_index.ts | 2 +-
.../utils/downgrade_immutable_rule.ts | 2 +-
.../utils/finalize_signals_migration.ts | 2 +-
.../utils/find_immutable_rule_by_id.ts | 2 +-
.../get_event_log_execute_complete_by_id.ts | 2 +-
.../utils/get_open_signals.ts | 2 +-
.../utils/get_prepackaged_rule_status.ts | 2 +-
.../utils/get_rule.ts | 2 +-
.../utils/get_security_telemetry_stats.ts | 2 +-
.../utils/get_signals_by_id.ts | 2 +-
.../utils/get_signals_by_ids.ts | 2 +-
.../utils/get_signals_by_rule_ids.ts | 2 +-
.../utils/get_stats.ts | 2 +-
.../utils/index_event_log_execution_events.ts | 2 +-
.../utils/install_prepackaged_rules.ts | 2 +-
.../utils/start_signals_migration.ts | 2 +-
.../utils/update_rule.ts | 2 +-
.../utils/wait_for.ts | 2 +-
.../utils/wait_for_alert_to_complete.ts | 2 +-
.../wait_for_event_log_execute_complete.ts | 2 +-
.../utils/wait_for_index_to_populate.ts | 2 +-
.../utils/wait_for_rule_success_or_status.ts | 2 +-
.../utils/wait_for_signals_to_be_present.ts | 2 +-
x-pack/test/fleet_api_integration/helpers.ts | 2 +-
x-pack/test/fleet_cypress/agent.ts | 2 +-
x-pack/test/fleet_cypress/fleet_server.ts | 2 +-
.../apps/api_keys/api_keys_helpers.ts | 2 +-
.../functional/page_objects/log_wrapper.ts | 2 +-
x-pack/test/functional_synthetics/helpers.ts | 2 +-
x-pack/test/lists_api_integration/utils.ts | 2 +-
x-pack/test/osquery_cypress/agent.ts | 2 +-
x-pack/test/osquery_cypress/fleet_server.ts | 2 +-
.../test/saved_objects_field_count/runner.ts | 2 +-
...onfig.stack_functional_integration_base.js | 2 +-
.../common/services/features.ts | 2 +-
.../common/services/ui_capabilities.ts | 2 +-
yarn.lock | 56 ++
329 files changed, 2067 insertions(+), 633 deletions(-)
create mode 100644 packages/kbn-ci-stats-client/BUILD.bazel
create mode 100644 packages/kbn-ci-stats-client/README.md
create mode 100644 packages/kbn-ci-stats-client/jest.config.js
create mode 100644 packages/kbn-ci-stats-client/package.json
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-client/src}/ci_stats_client.ts (93%)
rename packages/{kbn-dev-utils/src/stdio => kbn-ci-stats-client/src}/index.ts (83%)
create mode 100644 packages/kbn-ci-stats-client/tsconfig.json
create mode 100644 packages/kbn-ci-stats-core/BUILD.bazel
create mode 100644 packages/kbn-ci-stats-core/README.md
create mode 100644 packages/kbn-ci-stats-core/jest.config.js
create mode 100644 packages/kbn-ci-stats-core/package.json
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-core/src}/ci_stats_config.ts (97%)
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-core/src}/ci_stats_metadata.ts (100%)
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-core/src}/index.ts (66%)
create mode 100644 packages/kbn-ci-stats-core/tsconfig.json
create mode 100644 packages/kbn-ci-stats-reporter/BUILD.bazel
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter}/README.md (100%)
create mode 100644 packages/kbn-ci-stats-reporter/jest.config.js
create mode 100644 packages/kbn-ci-stats-reporter/package.json
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter/src}/ci_stats_reporter.ts (98%)
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter/src}/ci_stats_test_group_types.ts (97%)
create mode 100644 packages/kbn-ci-stats-reporter/src/index.ts
rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter/src}/report_time.ts (87%)
create mode 100644 packages/kbn-ci-stats-reporter/tsconfig.json
delete mode 100644 packages/kbn-dev-utils/ci_stats_reporter/package.json
delete mode 100644 packages/kbn-dev-utils/sort_package_json/package.json
rename packages/kbn-dev-utils/src/{ci_stats_reporter => }/ship_ci_stats_cli.ts (94%)
delete mode 100644 packages/kbn-dev-utils/stdio/package.json
delete mode 100644 packages/kbn-dev-utils/tooling_log/package.json
create mode 100644 packages/kbn-jest-serializers/BUILD.bazel
create mode 100644 packages/kbn-jest-serializers/README.md
create mode 100644 packages/kbn-jest-serializers/jest.config.js
create mode 100644 packages/kbn-jest-serializers/package.json
rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/absolute_path_serializer.ts (100%)
rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/any_instance_serizlizer.ts (100%)
create mode 100644 packages/kbn-jest-serializers/src/index.ts
rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/recursive_serializer.ts (100%)
rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/replace_serializer.ts (100%)
rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/strip_ansi_serializer.ts (100%)
create mode 100644 packages/kbn-jest-serializers/tsconfig.json
create mode 100644 packages/kbn-sort-package-json/BUILD.bazel
create mode 100644 packages/kbn-sort-package-json/README.md
create mode 100644 packages/kbn-sort-package-json/jest.config.js
create mode 100644 packages/kbn-sort-package-json/package.json
rename packages/{kbn-dev-utils/src/sort_package_json.ts => kbn-sort-package-json/src/index.ts} (100%)
create mode 100644 packages/kbn-sort-package-json/tsconfig.json
create mode 100644 packages/kbn-stdio-dev-helpers/BUILD.bazel
create mode 100644 packages/kbn-stdio-dev-helpers/README.md
create mode 100644 packages/kbn-stdio-dev-helpers/jest.config.js
create mode 100644 packages/kbn-stdio-dev-helpers/package.json
rename packages/{kbn-dev-utils/src/serializers => kbn-stdio-dev-helpers/src}/index.ts (63%)
rename packages/{kbn-dev-utils/src/stdio => kbn-stdio-dev-helpers/src}/observe_lines.ts (100%)
rename packages/{kbn-dev-utils/src/stdio => kbn-stdio-dev-helpers/src}/observe_readable.ts (100%)
create mode 100644 packages/kbn-stdio-dev-helpers/tsconfig.json
create mode 100644 packages/kbn-tooling-log/BUILD.bazel
create mode 100644 packages/kbn-tooling-log/README.md
create mode 100644 packages/kbn-tooling-log/jest.config.js
create mode 100644 packages/kbn-tooling-log/package.json
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/__snapshots__/log_levels.test.ts.snap (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/__snapshots__/tooling_log.test.ts.snap (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/__snapshots__/tooling_log_text_writer.test.ts.snap (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/index.ts (85%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/log_levels.test.ts (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/log_levels.ts (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/message.ts (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log.test.ts (98%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log.ts (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log_collecting_writer.ts (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log_text_writer.test.ts (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log_text_writer.ts (100%)
rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/writer.ts (100%)
create mode 100644 packages/kbn-tooling-log/tsconfig.json
diff --git a/package.json b/package.json
index 9c96dc4b6f665..fdd508d18c0ac 100644
--- a/package.json
+++ b/package.json
@@ -481,6 +481,9 @@
"@kbn/babel-plugin-synthetic-packages": "link:bazel-bin/packages/kbn-babel-plugin-synthetic-packages",
"@kbn/babel-preset": "link:bazel-bin/packages/kbn-babel-preset",
"@kbn/bazel-packages": "link:bazel-bin/packages/kbn-bazel-packages",
+ "@kbn/ci-stats-client": "link:bazel-bin/packages/kbn-ci-stats-client",
+ "@kbn/ci-stats-core": "link:bazel-bin/packages/kbn-ci-stats-core",
+ "@kbn/ci-stats-reporter": "link:bazel-bin/packages/kbn-ci-stats-reporter",
"@kbn/cli-dev-mode": "link:bazel-bin/packages/kbn-cli-dev-mode",
"@kbn/dev-utils": "link:bazel-bin/packages/kbn-dev-utils",
"@kbn/docs-utils": "link:bazel-bin/packages/kbn-docs-utils",
@@ -491,17 +494,21 @@
"@kbn/find-used-node-modules": "link:bazel-bin/packages/kbn-find-used-node-modules",
"@kbn/generate": "link:bazel-bin/packages/kbn-generate",
"@kbn/import-resolver": "link:bazel-bin/packages/kbn-import-resolver",
+ "@kbn/jest-serializers": "link:bazel-bin/packages/kbn-jest-serializers",
"@kbn/optimizer": "link:bazel-bin/packages/kbn-optimizer",
"@kbn/plugin-generator": "link:bazel-bin/packages/kbn-plugin-generator",
"@kbn/plugin-helpers": "link:bazel-bin/packages/kbn-plugin-helpers",
"@kbn/pm": "link:packages/kbn-pm",
+ "@kbn/sort-package-json": "link:bazel-bin/packages/kbn-sort-package-json",
"@kbn/spec-to-console": "link:bazel-bin/packages/kbn-spec-to-console",
+ "@kbn/stdio-dev-helpers": "link:bazel-bin/packages/kbn-stdio-dev-helpers",
"@kbn/storybook": "link:bazel-bin/packages/kbn-storybook",
"@kbn/synthetic-package-map": "link:bazel-bin/packages/kbn-synthetic-package-map",
"@kbn/telemetry-tools": "link:bazel-bin/packages/kbn-telemetry-tools",
"@kbn/test": "link:bazel-bin/packages/kbn-test",
"@kbn/test-jest-helpers": "link:bazel-bin/packages/kbn-test-jest-helpers",
"@kbn/test-subj-selector": "link:bazel-bin/packages/kbn-test-subj-selector",
+ "@kbn/tooling-log": "link:bazel-bin/packages/kbn-tooling-log",
"@kbn/type-summarizer": "link:bazel-bin/packages/kbn-type-summarizer",
"@loaders.gl/polyfills": "^2.3.5",
"@mapbox/vector-tile": "1.3.1",
@@ -600,6 +607,9 @@
"@types/kbn__apm-utils": "link:bazel-bin/packages/kbn-apm-utils/npm_module_types",
"@types/kbn__axe-config": "link:bazel-bin/packages/kbn-axe-config/npm_module_types",
"@types/kbn__bazel-packages": "link:bazel-bin/packages/kbn-bazel-packages/npm_module_types",
+ "@types/kbn__ci-stats-client": "link:bazel-bin/packages/kbn-ci-stats-client/npm_module_types",
+ "@types/kbn__ci-stats-core": "link:bazel-bin/packages/kbn-ci-stats-core/npm_module_types",
+ "@types/kbn__ci-stats-reporter": "link:bazel-bin/packages/kbn-ci-stats-reporter/npm_module_types",
"@types/kbn__cli-dev-mode": "link:bazel-bin/packages/kbn-cli-dev-mode/npm_module_types",
"@types/kbn__coloring": "link:bazel-bin/packages/kbn-coloring/npm_module_types",
"@types/kbn__config": "link:bazel-bin/packages/kbn-config/npm_module_types",
@@ -620,6 +630,7 @@
"@types/kbn__import-resolver": "link:bazel-bin/packages/kbn-import-resolver/npm_module_types",
"@types/kbn__interpreter": "link:bazel-bin/packages/kbn-interpreter/npm_module_types",
"@types/kbn__io-ts-utils": "link:bazel-bin/packages/kbn-io-ts-utils/npm_module_types",
+ "@types/kbn__jest-serializers": "link:bazel-bin/packages/kbn-jest-serializers/npm_module_types",
"@types/kbn__logging": "link:bazel-bin/packages/kbn-logging/npm_module_types",
"@types/kbn__logging-mocks": "link:bazel-bin/packages/kbn-logging-mocks/npm_module_types",
"@types/kbn__mapbox-gl": "link:bazel-bin/packages/kbn-mapbox-gl/npm_module_types",
@@ -651,11 +662,14 @@
"@types/kbn__shared-ux-services": "link:bazel-bin/packages/kbn-shared-ux-services/npm_module_types",
"@types/kbn__shared-ux-storybook": "link:bazel-bin/packages/kbn-shared-ux-storybook/npm_module_types",
"@types/kbn__shared-ux-utility": "link:bazel-bin/packages/kbn-shared-ux-utility/npm_module_types",
+ "@types/kbn__sort-package-json": "link:bazel-bin/packages/kbn-sort-package-json/npm_module_types",
"@types/kbn__std": "link:bazel-bin/packages/kbn-std/npm_module_types",
+ "@types/kbn__stdio-dev-helpers": "link:bazel-bin/packages/kbn-stdio-dev-helpers/npm_module_types",
"@types/kbn__storybook": "link:bazel-bin/packages/kbn-storybook/npm_module_types",
"@types/kbn__telemetry-tools": "link:bazel-bin/packages/kbn-telemetry-tools/npm_module_types",
"@types/kbn__test": "link:bazel-bin/packages/kbn-test/npm_module_types",
"@types/kbn__test-jest-helpers": "link:bazel-bin/packages/kbn-test-jest-helpers/npm_module_types",
+ "@types/kbn__tooling-log": "link:bazel-bin/packages/kbn-tooling-log/npm_module_types",
"@types/kbn__typed-react-router-config": "link:bazel-bin/packages/kbn-typed-react-router-config/npm_module_types",
"@types/kbn__ui-shared-deps-npm": "link:bazel-bin/packages/kbn-ui-shared-deps-npm/npm_module_types",
"@types/kbn__ui-shared-deps-src": "link:bazel-bin/packages/kbn-ui-shared-deps-src/npm_module_types",
diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel
index 3e05f7f745b6e..de953cfd93af0 100644
--- a/packages/BUILD.bazel
+++ b/packages/BUILD.bazel
@@ -24,6 +24,9 @@ filegroup(
"//packages/kbn-babel-plugin-synthetic-packages:build",
"//packages/kbn-babel-preset:build",
"//packages/kbn-bazel-packages:build",
+ "//packages/kbn-ci-stats-client:build",
+ "//packages/kbn-ci-stats-core:build",
+ "//packages/kbn-ci-stats-reporter:build",
"//packages/kbn-cli-dev-mode:build",
"//packages/kbn-coloring:build",
"//packages/kbn-config-schema:build",
@@ -48,6 +51,7 @@ filegroup(
"//packages/kbn-import-resolver:build",
"//packages/kbn-interpreter:build",
"//packages/kbn-io-ts-utils:build",
+ "//packages/kbn-jest-serializers:build",
"//packages/kbn-logging-mocks:build",
"//packages/kbn-logging:build",
"//packages/kbn-mapbox-gl:build",
@@ -78,8 +82,10 @@ filegroup(
"//packages/kbn-shared-ux-services:build",
"//packages/kbn-shared-ux-storybook:build",
"//packages/kbn-shared-ux-utility:build",
+ "//packages/kbn-sort-package-json:build",
"//packages/kbn-spec-to-console:build",
"//packages/kbn-std:build",
+ "//packages/kbn-stdio-dev-helpers:build",
"//packages/kbn-storybook:build",
"//packages/kbn-synthetic-package-map:build",
"//packages/kbn-telemetry-tools:build",
@@ -88,6 +94,7 @@ filegroup(
"//packages/kbn-test:build",
"//packages/kbn-timelion-grammar:build",
"//packages/kbn-tinymath:build",
+ "//packages/kbn-tooling-log:build",
"//packages/kbn-type-summarizer:build",
"//packages/kbn-typed-react-router-config:build",
"//packages/kbn-ui-framework:build",
@@ -114,6 +121,9 @@ filegroup(
"//packages/kbn-apm-utils:build_types",
"//packages/kbn-axe-config:build_types",
"//packages/kbn-bazel-packages:build_types",
+ "//packages/kbn-ci-stats-client:build_types",
+ "//packages/kbn-ci-stats-core:build_types",
+ "//packages/kbn-ci-stats-reporter:build_types",
"//packages/kbn-cli-dev-mode:build_types",
"//packages/kbn-coloring:build_types",
"//packages/kbn-config-schema:build_types",
@@ -134,6 +144,7 @@ filegroup(
"//packages/kbn-import-resolver:build_types",
"//packages/kbn-interpreter:build_types",
"//packages/kbn-io-ts-utils:build_types",
+ "//packages/kbn-jest-serializers:build_types",
"//packages/kbn-logging-mocks:build_types",
"//packages/kbn-logging:build_types",
"//packages/kbn-mapbox-gl:build_types",
@@ -164,11 +175,14 @@ filegroup(
"//packages/kbn-shared-ux-services:build_types",
"//packages/kbn-shared-ux-storybook:build_types",
"//packages/kbn-shared-ux-utility:build_types",
+ "//packages/kbn-sort-package-json:build_types",
"//packages/kbn-std:build_types",
+ "//packages/kbn-stdio-dev-helpers:build_types",
"//packages/kbn-storybook:build_types",
"//packages/kbn-telemetry-tools:build_types",
"//packages/kbn-test-jest-helpers:build_types",
"//packages/kbn-test:build_types",
+ "//packages/kbn-tooling-log:build_types",
"//packages/kbn-type-summarizer:build_types",
"//packages/kbn-typed-react-router-config:build_types",
"//packages/kbn-ui-shared-deps-npm:build_types",
diff --git a/packages/elastic-eslint-config-kibana/.eslintrc.js b/packages/elastic-eslint-config-kibana/.eslintrc.js
index 5882dbc57c2f9..eba5332ca71e3 100644
--- a/packages/elastic-eslint-config-kibana/.eslintrc.js
+++ b/packages/elastic-eslint-config-kibana/.eslintrc.js
@@ -105,6 +105,90 @@ module.exports = {
],
],
+ /**
+ * ESLint rule to aid with breaking up packages:
+ *
+ * `fromPacakge` the package name which was broken up
+ * `toPackage` the package where the removed exports were placed
+ * `exportNames` the list of exports which used to be found in `fromPacakge` and are now found in `toPackage`
+ *
+ * TODO(@spalger): once packages have types we should be able to filter this rule based on the package type
+ * of the file being linted so that we could re-route imports from `plugin-client` types to a different package
+ * than `plugin-server` types.
+ */
+ '@kbn/imports/exports_moved_packages': ['error', [
+ {
+ fromPackage: '@kbn/dev-utils',
+ toPackage: '@kbn/tooling-log',
+ exportNames: [
+ 'DEFAULT_LOG_LEVEL',
+ 'getLogLevelFlagsHelp',
+ 'LOG_LEVEL_FLAGS',
+ 'LogLevel',
+ 'Message',
+ 'ParsedLogLevel',
+ 'parseLogLevel',
+ 'pickLevelFromFlags',
+ 'ToolingLog',
+ 'ToolingLogCollectingWriter',
+ 'ToolingLogOptions',
+ 'ToolingLogTextWriter',
+ 'ToolingLogTextWriterConfig',
+ 'Writer',
+ ]
+ },
+ {
+ fromPackage: '@kbn/dev-utils',
+ toPackage: '@kbn/ci-stats-reporter',
+ exportNames: [
+ 'CiStatsMetric',
+ 'CiStatsReporter',
+ 'CiStatsReportTestsOptions',
+ 'CiStatsTestGroupInfo',
+ 'CiStatsTestResult',
+ 'CiStatsTestRun',
+ 'CiStatsTestType',
+ 'CiStatsTiming',
+ 'getTimeReporter',
+ 'MetricsOptions',
+ 'TimingsOptions',
+ ]
+ },
+ {
+ fromPackage: '@kbn/dev-utils',
+ toPackage: '@kbn/ci-stats-core',
+ exportNames: [
+ 'Config',
+ ]
+ },
+ {
+ fromPackage: '@kbn/dev-utils',
+ toPackage: '@kbn/jest-serializers',
+ exportNames: [
+ 'createAbsolutePathSerializer',
+ 'createStripAnsiSerializer',
+ 'createRecursiveSerializer',
+ 'createAnyInstanceSerializer',
+ 'createReplaceSerializer',
+ ]
+ },
+ {
+ fromPackage: '@kbn/dev-utils',
+ toPackage: '@kbn/stdio-dev-helpers',
+ exportNames: [
+ 'observeReadable',
+ 'observeLines',
+ ]
+ },
+ {
+ fromPackage: '@kbn/dev-utils',
+ toPackage: '@kbn/sort-package-json',
+ exportNames: [
+ 'sortPackageJson',
+ ]
+ },
+ ]],
+
'@kbn/eslint/no_async_promise_body': 'error',
'@kbn/eslint/no_async_foreach': 'error',
'@kbn/eslint/no_trailing_import_slash': 'error',
diff --git a/packages/kbn-ci-stats-client/BUILD.bazel b/packages/kbn-ci-stats-client/BUILD.bazel
new file mode 100644
index 0000000000000..7017adc604416
--- /dev/null
+++ b/packages/kbn-ci-stats-client/BUILD.bazel
@@ -0,0 +1,120 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_config")
+load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
+load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")
+
+PKG_DIRNAME = "kbn-ci-stats-client"
+PKG_REQUIRE_NAME = "@kbn/ci-stats-client"
+
+SOURCE_FILES = glob(
+ [
+ "src/**/*.ts",
+ ],
+ exclude = [
+ "**/*.test.*",
+ ],
+)
+
+SRCS = SOURCE_FILES
+
+filegroup(
+ name = "srcs",
+ srcs = SRCS,
+)
+
+NPM_MODULE_EXTRA_FILES = [
+ "package.json",
+]
+
+# In this array place runtime dependencies, including other packages and NPM packages
+# which must be available for this code to run.
+#
+# To reference other packages use:
+# "//repo/relative/path/to/package"
+# eg. "//packages/kbn-utils"
+#
+# To reference a NPM package use:
+# "@npm//name-of-package"
+# eg. "@npm//lodash"
+RUNTIME_DEPS = [
+ "@npm//axios",
+ "//packages/kbn-ci-stats-core",
+ "//packages/kbn-tooling-log",
+]
+
+# In this array place dependencies necessary to build the types, which will include the
+# :npm_module_types target of other packages and packages from NPM, including @types/*
+# packages.
+#
+# To reference the types for another package use:
+# "//repo/relative/path/to/package:npm_module_types"
+# eg. "//packages/kbn-utils:npm_module_types"
+#
+# References to NPM packages work the same as RUNTIME_DEPS
+TYPES_DEPS = [
+ "@npm//@types/node",
+ "@npm//@types/jest",
+ "@npm//axios",
+ "//packages/kbn-ci-stats-core:npm_module_types",
+ "//packages/kbn-tooling-log:npm_module_types",
+]
+
+jsts_transpiler(
+ name = "target_node",
+ srcs = SRCS,
+ build_pkg_name = package_name(),
+)
+
+ts_config(
+ name = "tsconfig",
+ src = "tsconfig.json",
+ deps = [
+ "//:tsconfig.base.json",
+ "//:tsconfig.bazel.json",
+ ],
+)
+
+ts_project(
+ name = "tsc_types",
+ args = ['--pretty'],
+ srcs = SRCS,
+ deps = TYPES_DEPS,
+ declaration = True,
+ emit_declaration_only = True,
+ out_dir = "target_types",
+ root_dir = "src",
+ tsconfig = ":tsconfig",
+)
+
+js_library(
+ name = PKG_DIRNAME,
+ srcs = NPM_MODULE_EXTRA_FILES,
+ deps = RUNTIME_DEPS + [":target_node"],
+ package_name = PKG_REQUIRE_NAME,
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm(
+ name = "npm_module",
+ deps = [":" + PKG_DIRNAME],
+)
+
+filegroup(
+ name = "build",
+ srcs = [":npm_module"],
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm_types(
+ name = "npm_module_types",
+ srcs = SRCS,
+ deps = [":tsc_types"],
+ package_name = PKG_REQUIRE_NAME,
+ tsconfig = ":tsconfig",
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "build_types",
+ srcs = [":npm_module_types"],
+ visibility = ["//visibility:public"],
+)
diff --git a/packages/kbn-ci-stats-client/README.md b/packages/kbn-ci-stats-client/README.md
new file mode 100644
index 0000000000000..d1f6c59e978c9
--- /dev/null
+++ b/packages/kbn-ci-stats-client/README.md
@@ -0,0 +1,3 @@
+# @kbn/ci-stats-client
+
+Client for reading data stored at https://ci-stats.kibana.dev
\ No newline at end of file
diff --git a/packages/kbn-ci-stats-client/jest.config.js b/packages/kbn-ci-stats-client/jest.config.js
new file mode 100644
index 0000000000000..d855d7886d0d7
--- /dev/null
+++ b/packages/kbn-ci-stats-client/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+ preset: '@kbn/test/jest_node',
+ rootDir: '../..',
+ roots: ['/packages/kbn-ci-stats-client'],
+};
diff --git a/packages/kbn-ci-stats-client/package.json b/packages/kbn-ci-stats-client/package.json
new file mode 100644
index 0000000000000..709f6a3454d59
--- /dev/null
+++ b/packages/kbn-ci-stats-client/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@kbn/ci-stats-client",
+ "private": true,
+ "version": "1.0.0",
+ "main": "./target_node/index.js",
+ "license": "SSPL-1.0 OR Elastic License 2.0",
+ "kibana": {
+ "devOnly": true
+ }
+}
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts b/packages/kbn-ci-stats-client/src/ci_stats_client.ts
similarity index 93%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts
rename to packages/kbn-ci-stats-client/src/ci_stats_client.ts
index 77b3769fe62c1..a7ab6f1cc4cb8 100644
--- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts
+++ b/packages/kbn-ci-stats-client/src/ci_stats_client.ts
@@ -7,10 +7,9 @@
*/
import Axios from 'axios';
-import { ToolingLog } from '../tooling_log';
+import { ToolingLog } from '@kbn/tooling-log';
-import { parseConfig, Config } from './ci_stats_config';
-import { CiStatsMetadata } from './ci_stats_metadata';
+import { parseConfig, Config, CiStatsMetadata } from '@kbn/ci-stats-core';
interface LatestTestGroupStatsOptions {
/** The Kibana branch to get stats for, eg "main" */
diff --git a/packages/kbn-dev-utils/src/stdio/index.ts b/packages/kbn-ci-stats-client/src/index.ts
similarity index 83%
rename from packages/kbn-dev-utils/src/stdio/index.ts
rename to packages/kbn-ci-stats-client/src/index.ts
index cdbd1808db255..ac32c69b9f7b7 100644
--- a/packages/kbn-dev-utils/src/stdio/index.ts
+++ b/packages/kbn-ci-stats-client/src/index.ts
@@ -6,5 +6,4 @@
* Side Public License, v 1.
*/
-export * from './observe_lines';
-export * from './observe_readable';
+export { CiStatsClient } from './ci_stats_client';
diff --git a/packages/kbn-ci-stats-client/tsconfig.json b/packages/kbn-ci-stats-client/tsconfig.json
new file mode 100644
index 0000000000000..a8cfc2cceb08b
--- /dev/null
+++ b/packages/kbn-ci-stats-client/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.bazel.json",
+ "compilerOptions": {
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "target_types",
+ "rootDir": "src",
+ "stripInternal": false,
+ "types": [
+ "jest",
+ "node"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
diff --git a/packages/kbn-ci-stats-core/BUILD.bazel b/packages/kbn-ci-stats-core/BUILD.bazel
new file mode 100644
index 0000000000000..421ec5e1961d9
--- /dev/null
+++ b/packages/kbn-ci-stats-core/BUILD.bazel
@@ -0,0 +1,116 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_config")
+load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
+load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")
+
+PKG_DIRNAME = "kbn-ci-stats-core"
+PKG_REQUIRE_NAME = "@kbn/ci-stats-core"
+
+SOURCE_FILES = glob(
+ [
+ "src/**/*.ts",
+ ],
+ exclude = [
+ "**/*.test.*",
+ ],
+)
+
+SRCS = SOURCE_FILES
+
+filegroup(
+ name = "srcs",
+ srcs = SRCS,
+)
+
+NPM_MODULE_EXTRA_FILES = [
+ "package.json",
+]
+
+# In this array place runtime dependencies, including other packages and NPM packages
+# which must be available for this code to run.
+#
+# To reference other packages use:
+# "//repo/relative/path/to/package"
+# eg. "//packages/kbn-utils"
+#
+# To reference a NPM package use:
+# "@npm//name-of-package"
+# eg. "@npm//lodash"
+RUNTIME_DEPS = [
+ "//packages/kbn-tooling-log",
+]
+
+# In this array place dependencies necessary to build the types, which will include the
+# :npm_module_types target of other packages and packages from NPM, including @types/*
+# packages.
+#
+# To reference the types for another package use:
+# "//repo/relative/path/to/package:npm_module_types"
+# eg. "//packages/kbn-utils:npm_module_types"
+#
+# References to NPM packages work the same as RUNTIME_DEPS
+TYPES_DEPS = [
+ "@npm//@types/node",
+ "@npm//@types/jest",
+ "//packages/kbn-tooling-log:npm_module_types",
+]
+
+jsts_transpiler(
+ name = "target_node",
+ srcs = SRCS,
+ build_pkg_name = package_name(),
+)
+
+ts_config(
+ name = "tsconfig",
+ src = "tsconfig.json",
+ deps = [
+ "//:tsconfig.base.json",
+ "//:tsconfig.bazel.json",
+ ],
+)
+
+ts_project(
+ name = "tsc_types",
+ args = ['--pretty'],
+ srcs = SRCS,
+ deps = TYPES_DEPS,
+ declaration = True,
+ emit_declaration_only = True,
+ out_dir = "target_types",
+ root_dir = "src",
+ tsconfig = ":tsconfig",
+)
+
+js_library(
+ name = PKG_DIRNAME,
+ srcs = NPM_MODULE_EXTRA_FILES,
+ deps = RUNTIME_DEPS + [":target_node"],
+ package_name = PKG_REQUIRE_NAME,
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm(
+ name = "npm_module",
+ deps = [":" + PKG_DIRNAME],
+)
+
+filegroup(
+ name = "build",
+ srcs = [":npm_module"],
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm_types(
+ name = "npm_module_types",
+ srcs = SRCS,
+ deps = [":tsc_types"],
+ package_name = PKG_REQUIRE_NAME,
+ tsconfig = ":tsconfig",
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "build_types",
+ srcs = [":npm_module_types"],
+ visibility = ["//visibility:public"],
+)
diff --git a/packages/kbn-ci-stats-core/README.md b/packages/kbn-ci-stats-core/README.md
new file mode 100644
index 0000000000000..b2e34a492b745
--- /dev/null
+++ b/packages/kbn-ci-stats-core/README.md
@@ -0,0 +1,3 @@
+# @kbn/ci-stats-core
+
+Config and types used by `@kbn/ci-stats-client` and `@kbn/ci-stats-reporter`.
\ No newline at end of file
diff --git a/packages/kbn-ci-stats-core/jest.config.js b/packages/kbn-ci-stats-core/jest.config.js
new file mode 100644
index 0000000000000..0feb7b4e1b872
--- /dev/null
+++ b/packages/kbn-ci-stats-core/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+ preset: '@kbn/test/jest_node',
+ rootDir: '../..',
+ roots: ['/packages/kbn-ci-stats-core'],
+};
diff --git a/packages/kbn-ci-stats-core/package.json b/packages/kbn-ci-stats-core/package.json
new file mode 100644
index 0000000000000..d1141ec3c55a8
--- /dev/null
+++ b/packages/kbn-ci-stats-core/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@kbn/ci-stats-core",
+ "private": true,
+ "version": "1.0.0",
+ "main": "./target_node/index.js",
+ "license": "SSPL-1.0 OR Elastic License 2.0",
+ "kibana": {
+ "devOnly": true
+ }
+}
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts b/packages/kbn-ci-stats-core/src/ci_stats_config.ts
similarity index 97%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts
rename to packages/kbn-ci-stats-core/src/ci_stats_config.ts
index f73b9c830a2ab..c97d99c53bf6a 100644
--- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts
+++ b/packages/kbn-ci-stats-core/src/ci_stats_config.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import type { ToolingLog } from '../tooling_log';
+import type { ToolingLog } from '@kbn/tooling-log';
/**
* Information about how CiStatsReporter should talk to the ci-stats service. Normally
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_metadata.ts b/packages/kbn-ci-stats-core/src/ci_stats_metadata.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_metadata.ts
rename to packages/kbn-ci-stats-core/src/ci_stats_metadata.ts
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/index.ts b/packages/kbn-ci-stats-core/src/index.ts
similarity index 66%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/index.ts
rename to packages/kbn-ci-stats-core/src/index.ts
index fab2e61755a5c..5b39370eb17e1 100644
--- a/packages/kbn-dev-utils/src/ci_stats_reporter/index.ts
+++ b/packages/kbn-ci-stats-core/src/index.ts
@@ -6,9 +6,6 @@
* Side Public License, v 1.
*/
-export * from './ci_stats_reporter';
export type { Config } from './ci_stats_config';
-export * from './ship_ci_stats_cli';
-export { getTimeReporter } from './report_time';
-export * from './ci_stats_test_group_types';
-export * from './ci_stats_client';
+export { parseConfig } from './ci_stats_config';
+export type { CiStatsMetadata } from './ci_stats_metadata';
diff --git a/packages/kbn-ci-stats-core/tsconfig.json b/packages/kbn-ci-stats-core/tsconfig.json
new file mode 100644
index 0000000000000..a8cfc2cceb08b
--- /dev/null
+++ b/packages/kbn-ci-stats-core/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.bazel.json",
+ "compilerOptions": {
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "target_types",
+ "rootDir": "src",
+ "stripInternal": false,
+ "types": [
+ "jest",
+ "node"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
diff --git a/packages/kbn-ci-stats-reporter/BUILD.bazel b/packages/kbn-ci-stats-reporter/BUILD.bazel
new file mode 100644
index 0000000000000..41ff5a697977c
--- /dev/null
+++ b/packages/kbn-ci-stats-reporter/BUILD.bazel
@@ -0,0 +1,122 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_config")
+load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
+load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")
+
+PKG_DIRNAME = "kbn-ci-stats-reporter"
+PKG_REQUIRE_NAME = "@kbn/ci-stats-reporter"
+
+SOURCE_FILES = glob(
+ [
+ "src/**/*.ts",
+ ],
+ exclude = [
+ "**/*.test.*",
+ ],
+)
+
+SRCS = SOURCE_FILES
+
+filegroup(
+ name = "srcs",
+ srcs = SRCS,
+)
+
+NPM_MODULE_EXTRA_FILES = [
+ "package.json",
+]
+
+# In this array place runtime dependencies, including other packages and NPM packages
+# which must be available for this code to run.
+#
+# To reference other packages use:
+# "//repo/relative/path/to/package"
+# eg. "//packages/kbn-utils"
+#
+# To reference a NPM package use:
+# "@npm//name-of-package"
+# eg. "@npm//lodash"
+RUNTIME_DEPS = [
+ "@npm//axios",
+ "@npm//execa",
+ "//packages/kbn-tooling-log",
+ "//packages/kbn-ci-stats-core",
+]
+
+# In this array place dependencies necessary to build the types, which will include the
+# :npm_module_types target of other packages and packages from NPM, including @types/*
+# packages.
+#
+# To reference the types for another package use:
+# "//repo/relative/path/to/package:npm_module_types"
+# eg. "//packages/kbn-utils:npm_module_types"
+#
+# References to NPM packages work the same as RUNTIME_DEPS
+TYPES_DEPS = [
+ "@npm//axios",
+ "@npm//execa",
+ "@npm//@types/node",
+ "@npm//@types/jest",
+ "//packages/kbn-tooling-log:npm_module_types",
+ "//packages/kbn-ci-stats-core:npm_module_types",
+]
+
+jsts_transpiler(
+ name = "target_node",
+ srcs = SRCS,
+ build_pkg_name = package_name(),
+)
+
+ts_config(
+ name = "tsconfig",
+ src = "tsconfig.json",
+ deps = [
+ "//:tsconfig.base.json",
+ "//:tsconfig.bazel.json",
+ ],
+)
+
+ts_project(
+ name = "tsc_types",
+ args = ['--pretty'],
+ srcs = SRCS,
+ deps = TYPES_DEPS,
+ declaration = True,
+ emit_declaration_only = True,
+ out_dir = "target_types",
+ root_dir = "src",
+ tsconfig = ":tsconfig",
+)
+
+js_library(
+ name = PKG_DIRNAME,
+ srcs = NPM_MODULE_EXTRA_FILES,
+ deps = RUNTIME_DEPS + [":target_node"],
+ package_name = PKG_REQUIRE_NAME,
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm(
+ name = "npm_module",
+ deps = [":" + PKG_DIRNAME],
+)
+
+filegroup(
+ name = "build",
+ srcs = [":npm_module"],
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm_types(
+ name = "npm_module_types",
+ srcs = SRCS,
+ deps = [":tsc_types"],
+ package_name = PKG_REQUIRE_NAME,
+ tsconfig = ":tsconfig",
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "build_types",
+ srcs = [":npm_module_types"],
+ visibility = ["//visibility:public"],
+)
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/README.md b/packages/kbn-ci-stats-reporter/README.md
similarity index 100%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/README.md
rename to packages/kbn-ci-stats-reporter/README.md
diff --git a/packages/kbn-ci-stats-reporter/jest.config.js b/packages/kbn-ci-stats-reporter/jest.config.js
new file mode 100644
index 0000000000000..bf58324f440a3
--- /dev/null
+++ b/packages/kbn-ci-stats-reporter/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+ preset: '@kbn/test/jest_node',
+ rootDir: '../..',
+ roots: ['/packages/kbn-ci-stats-reporter'],
+};
diff --git a/packages/kbn-ci-stats-reporter/package.json b/packages/kbn-ci-stats-reporter/package.json
new file mode 100644
index 0000000000000..01743bced98d5
--- /dev/null
+++ b/packages/kbn-ci-stats-reporter/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@kbn/ci-stats-reporter",
+ "private": true,
+ "version": "1.0.0",
+ "main": "./target_node/index.js",
+ "license": "SSPL-1.0 OR Elastic License 2.0",
+ "kibana": {
+ "devOnly": true
+ }
+}
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts
similarity index 98%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts
rename to packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts
index 367a1be175266..d709927787b0e 100644
--- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts
+++ b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts
@@ -16,11 +16,10 @@ import execa from 'execa';
import Axios, { AxiosRequestConfig } from 'axios';
// @ts-expect-error not "public", but necessary to prevent Jest shimming from breaking things
import httpAdapter from 'axios/lib/adapters/http';
+import { ToolingLog } from '@kbn/tooling-log';
-import { ToolingLog } from '../tooling_log';
-import { parseConfig, Config } from './ci_stats_config';
+import { parseConfig, Config, CiStatsMetadata } from '@kbn/ci-stats-core';
import type { CiStatsTestGroupInfo, CiStatsTestRun } from './ci_stats_test_group_types';
-import { CiStatsMetadata } from './ci_stats_metadata';
const BASE_URL = 'https://ci-stats.kibana.dev';
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts b/packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts
similarity index 97%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts
rename to packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts
index b786981fb8437..223273ca82cd3 100644
--- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts
+++ b/packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import type { CiStatsMetadata } from './ci_stats_metadata';
+import type { CiStatsMetadata } from '@kbn/ci-stats-core';
export type CiStatsTestResult = 'fail' | 'pass' | 'skip';
export type CiStatsTestType =
diff --git a/packages/kbn-ci-stats-reporter/src/index.ts b/packages/kbn-ci-stats-reporter/src/index.ts
new file mode 100644
index 0000000000000..aa797f97f2603
--- /dev/null
+++ b/packages/kbn-ci-stats-reporter/src/index.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export type {
+ CiStatsMetric,
+ CiStatsReportTestsOptions,
+ CiStatsTiming,
+ MetricsOptions,
+ TimingsOptions,
+} from './ci_stats_reporter';
+export { CiStatsReporter } from './ci_stats_reporter';
+export { getTimeReporter } from './report_time';
+export type {
+ CiStatsTestGroupInfo,
+ CiStatsTestResult,
+ CiStatsTestRun,
+ CiStatsTestType,
+} from './ci_stats_test_group_types';
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts b/packages/kbn-ci-stats-reporter/src/report_time.ts
similarity index 87%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts
rename to packages/kbn-ci-stats-reporter/src/report_time.ts
index d10250a03f091..20cb8fc9ef86d 100644
--- a/packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts
+++ b/packages/kbn-ci-stats-reporter/src/report_time.ts
@@ -6,7 +6,9 @@
* Side Public License, v 1.
*/
-import { CiStatsReporter, ToolingLog } from '..';
+import { ToolingLog } from '@kbn/tooling-log';
+
+import { CiStatsReporter } from './ci_stats_reporter';
export const getTimeReporter = (log: ToolingLog, group: string) => {
const reporter = CiStatsReporter.fromEnv(log);
diff --git a/packages/kbn-ci-stats-reporter/tsconfig.json b/packages/kbn-ci-stats-reporter/tsconfig.json
new file mode 100644
index 0000000000000..a8cfc2cceb08b
--- /dev/null
+++ b/packages/kbn-ci-stats-reporter/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.bazel.json",
+ "compilerOptions": {
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "target_types",
+ "rootDir": "src",
+ "stripInternal": false,
+ "types": [
+ "jest",
+ "node"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
diff --git a/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts b/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts
index 0066644d0825a..6dd96cbb0634b 100644
--- a/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts
+++ b/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts
@@ -8,7 +8,7 @@
import Path from 'path';
import * as Rx from 'rxjs';
-import { createAbsolutePathSerializer, createAnyInstanceSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer, createAnyInstanceSerializer } from '@kbn/jest-serializers';
import { REPO_ROOT } from '@kbn/utils';
@@ -32,8 +32,8 @@ const { DevServer } = jest.requireMock('./dev_server');
jest.mock('./base_path_proxy_server');
const { BasePathProxyServer } = jest.requireMock('./base_path_proxy_server');
-jest.mock('@kbn/dev-utils/ci_stats_reporter');
-const { CiStatsReporter } = jest.requireMock('@kbn/dev-utils/ci_stats_reporter');
+jest.mock('@kbn/ci-stats-reporter');
+const { CiStatsReporter } = jest.requireMock('@kbn/ci-stats-reporter');
jest.mock('./get_server_watch_paths', () => ({
getServerWatchPaths: jest.fn(() => ({
diff --git a/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts b/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts
index 9cf688b675e67..ccd3e61214463 100644
--- a/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts
+++ b/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts
@@ -22,7 +22,7 @@ import {
takeUntil,
} from 'rxjs/operators';
import { CliArgs } from '@kbn/config';
-import { CiStatsReporter } from '@kbn/dev-utils';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
import { REPO_ROOT } from '@kbn/utils';
import { Log, CliLog } from './log';
diff --git a/packages/kbn-cli-dev-mode/src/dev_server.ts b/packages/kbn-cli-dev-mode/src/dev_server.ts
index 750f93dd6c58c..bed1afe126c15 100644
--- a/packages/kbn-cli-dev-mode/src/dev_server.ts
+++ b/packages/kbn-cli-dev-mode/src/dev_server.ts
@@ -18,7 +18,7 @@ import {
takeUntil,
ignoreElements,
} from 'rxjs/operators';
-import { observeLines } from '@kbn/dev-utils';
+import { observeLines } from '@kbn/stdio-dev-helpers';
import { usingServerProcess } from './using_server_process';
import { Watcher } from './watcher';
diff --git a/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts b/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts
index 12074bf493218..6291c07b4f266 100644
--- a/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts
+++ b/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts
@@ -8,7 +8,7 @@
import Path from 'path';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { REPO_ROOT } from '@kbn/utils';
import { getServerWatchPaths } from './get_server_watch_paths';
diff --git a/packages/kbn-cli-dev-mode/src/log.ts b/packages/kbn-cli-dev-mode/src/log.ts
index dc38639f29e6e..4ddc4b0ebdbe2 100644
--- a/packages/kbn-cli-dev-mode/src/log.ts
+++ b/packages/kbn-cli-dev-mode/src/log.ts
@@ -9,7 +9,7 @@
/* eslint-disable max-classes-per-file */
import Chalk from 'chalk';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
export interface Log {
toolingLog: ToolingLog;
diff --git a/packages/kbn-cli-dev-mode/src/optimizer.test.ts b/packages/kbn-cli-dev-mode/src/optimizer.test.ts
index c300b34d514d2..3cb847c9594e3 100644
--- a/packages/kbn-cli-dev-mode/src/optimizer.test.ts
+++ b/packages/kbn-cli-dev-mode/src/optimizer.test.ts
@@ -11,7 +11,8 @@ import { PassThrough } from 'stream';
import * as Rx from 'rxjs';
import { toArray } from 'rxjs/operators';
import { OptimizerUpdate } from '@kbn/optimizer';
-import { observeLines, createReplaceSerializer } from '@kbn/dev-utils';
+import { observeLines } from '@kbn/stdio-dev-helpers';
+import { createReplaceSerializer } from '@kbn/jest-serializers';
import { Optimizer, Options } from './optimizer';
diff --git a/packages/kbn-cli-dev-mode/src/optimizer.ts b/packages/kbn-cli-dev-mode/src/optimizer.ts
index 3f7a6edc22314..60d84d2b42c85 100644
--- a/packages/kbn-cli-dev-mode/src/optimizer.ts
+++ b/packages/kbn-cli-dev-mode/src/optimizer.ts
@@ -15,7 +15,7 @@ import {
pickLevelFromFlags,
ToolingLogTextWriter,
parseLogLevel,
-} from '@kbn/dev-utils';
+} from '@kbn/tooling-log';
import * as Rx from 'rxjs';
import { ignoreElements } from 'rxjs/operators';
import {
diff --git a/packages/kbn-dev-utils/BUILD.bazel b/packages/kbn-dev-utils/BUILD.bazel
index 7b60e46d030a3..8138ff946fc29 100644
--- a/packages/kbn-dev-utils/BUILD.bazel
+++ b/packages/kbn-dev-utils/BUILD.bazel
@@ -36,17 +36,17 @@ filegroup(
NPM_MODULE_EXTRA_FILES = [
"package.json",
"README.md",
- ":certs",
- "ci_stats_reporter/package.json",
- "sort_package_json/package.json",
- "stdio/package.json",
- "tooling_log/package.json"
+ ":certs"
]
RUNTIME_DEPS = [
"//packages/kbn-std",
"//packages/kbn-utils",
"//packages/kbn-plugin-discovery",
+ "//packages/kbn-tooling-log",
+ "//packages/kbn-stdio-dev-helpers",
+ "//packages/kbn-ci-stats-reporter",
+ "//packages/kbn-jest-serializers",
"@npm//@babel/core",
"@npm//axios",
"@npm//chalk",
@@ -73,6 +73,10 @@ TYPES_DEPS = [
"//packages/kbn-std:npm_module_types",
"//packages/kbn-utils:npm_module_types",
"//packages/kbn-plugin-discovery:npm_module_types",
+ "//packages/kbn-tooling-log:npm_module_types",
+ "//packages/kbn-stdio-dev-helpers:npm_module_types",
+ "//packages/kbn-ci-stats-reporter:npm_module_types",
+ "//packages/kbn-jest-serializers:npm_module_types",
"@npm//@babel/parser",
"@npm//@babel/types",
"@npm//@types/babel__core",
diff --git a/packages/kbn-dev-utils/ci_stats_reporter/package.json b/packages/kbn-dev-utils/ci_stats_reporter/package.json
deleted file mode 100644
index e20bd531a77ef..0000000000000
--- a/packages/kbn-dev-utils/ci_stats_reporter/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "main": "../target_node/ci_stats_reporter/ci_stats_reporter",
- "types": "../target_types/ci_stats_reporter/ci_stats_reporter"
-}
\ No newline at end of file
diff --git a/packages/kbn-dev-utils/sort_package_json/package.json b/packages/kbn-dev-utils/sort_package_json/package.json
deleted file mode 100644
index e075ec436de33..0000000000000
--- a/packages/kbn-dev-utils/sort_package_json/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "main": "../target_node/sort_package_json",
- "types": "../target_types/sort_package_json"
-}
\ No newline at end of file
diff --git a/packages/kbn-dev-utils/src/index.ts b/packages/kbn-dev-utils/src/index.ts
index cb75cbdf62782..ce8c54e0c7aba 100644
--- a/packages/kbn-dev-utils/src/index.ts
+++ b/packages/kbn-dev-utils/src/index.ts
@@ -7,8 +7,6 @@
*/
export { withProcRunner, ProcRunner } from './proc_runner';
-export * from './tooling_log';
-export * from './serializers';
export {
CA_CERT_PATH,
ES_KEY_PATH,
@@ -24,12 +22,10 @@ export {
} from './certs';
export * from './run';
export * from './axios';
-export * from './stdio';
-export * from './ci_stats_reporter';
+export * from './ship_ci_stats_cli';
export * from './plugin_list';
export * from './streams';
export * from './babel';
export * from './extract';
export * from './vscode_config';
-export * from './sort_package_json';
export * from './diff_strings';
diff --git a/packages/kbn-dev-utils/src/proc_runner/proc.ts b/packages/kbn-dev-utils/src/proc_runner/proc.ts
index 8238e29413309..0402feec99d47 100644
--- a/packages/kbn-dev-utils/src/proc_runner/proc.ts
+++ b/packages/kbn-dev-utils/src/proc_runner/proc.ts
@@ -17,8 +17,8 @@ import treeKill from 'tree-kill';
import { promisify } from 'util';
const treeKillAsync = promisify((...args: [number, string, any]) => treeKill(...args));
-import { ToolingLog } from '../tooling_log';
-import { observeLines } from '../stdio';
+import { ToolingLog } from '@kbn/tooling-log';
+import { observeLines } from '@kbn/stdio-dev-helpers';
import { createFailError } from '../run';
const SECOND = 1000;
diff --git a/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts b/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts
index cb2ac2604e035..3b7cf008df9a6 100644
--- a/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts
+++ b/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts
@@ -10,7 +10,7 @@ import * as Rx from 'rxjs';
import { filter, first, catchError, map } from 'rxjs/operators';
import exitHook from 'exit-hook';
-import { ToolingLog } from '../tooling_log';
+import { ToolingLog } from '@kbn/tooling-log';
import { createFailError } from '../run';
import { Proc, ProcOptions, startProc } from './proc';
diff --git a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts
index 87a28e547ca33..4855744cfccca 100644
--- a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts
+++ b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '../tooling_log';
+import { ToolingLog } from '@kbn/tooling-log';
import { withProcRunner } from './with_proc_runner';
import { ProcRunner } from './proc_runner';
diff --git a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts
index 1292bf45ad414..5c9bc8103bc62 100644
--- a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts
+++ b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts
@@ -6,8 +6,9 @@
* Side Public License, v 1.
*/
+import { ToolingLog } from '@kbn/tooling-log';
+
import { ProcRunner } from './proc_runner';
-import { ToolingLog } from '../tooling_log';
/**
* Create a ProcRunner and pass it to an async function. When
diff --git a/packages/kbn-dev-utils/src/run/cleanup.ts b/packages/kbn-dev-utils/src/run/cleanup.ts
index ba0b762a562ad..87da0f1e704df 100644
--- a/packages/kbn-dev-utils/src/run/cleanup.ts
+++ b/packages/kbn-dev-utils/src/run/cleanup.ts
@@ -9,8 +9,8 @@
import { inspect } from 'util';
import exitHook from 'exit-hook';
+import { ToolingLog } from '@kbn/tooling-log';
-import { ToolingLog } from '../tooling_log';
import { isFailError } from './fail';
/**
diff --git a/packages/kbn-dev-utils/src/run/flags.ts b/packages/kbn-dev-utils/src/run/flags.ts
index 822ac261d4908..20357c8204ae7 100644
--- a/packages/kbn-dev-utils/src/run/flags.ts
+++ b/packages/kbn-dev-utils/src/run/flags.ts
@@ -8,8 +8,8 @@
import getopts from 'getopts';
+import { LOG_LEVEL_FLAGS, DEFAULT_LOG_LEVEL } from '@kbn/tooling-log';
import { RunOptions } from './run';
-import { LOG_LEVEL_FLAGS, DEFAULT_LOG_LEVEL } from '../tooling_log/log_levels';
export interface Flags {
verbose: boolean;
diff --git a/packages/kbn-dev-utils/src/run/help.ts b/packages/kbn-dev-utils/src/run/help.ts
index 0da4e8146d198..3bf2738b82748 100644
--- a/packages/kbn-dev-utils/src/run/help.ts
+++ b/packages/kbn-dev-utils/src/run/help.ts
@@ -11,9 +11,9 @@ import Path from 'path';
import chalk from 'chalk';
import 'core-js/features/string/repeat';
import dedent from 'dedent';
+import { getLogLevelFlagsHelp } from '@kbn/tooling-log';
import { Command } from './run_with_commands';
-import { getLogLevelFlagsHelp } from '../tooling_log/log_levels';
const DEFAULT_GLOBAL_USAGE = `node ${Path.relative(process.cwd(), process.argv[1])}`;
export const GLOBAL_FLAGS = dedent`
diff --git a/packages/kbn-dev-utils/src/run/metrics.ts b/packages/kbn-dev-utils/src/run/metrics.ts
index 90a005bfc64dd..36c80c659b016 100644
--- a/packages/kbn-dev-utils/src/run/metrics.ts
+++ b/packages/kbn-dev-utils/src/run/metrics.ts
@@ -9,8 +9,8 @@
import path from 'path';
import { REPO_ROOT } from '@kbn/utils';
import normalizePath from 'normalize-path';
-import { CiStatsReporter } from '../ci_stats_reporter';
-import { ToolingLog } from '../tooling_log';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
+import { ToolingLog } from '@kbn/tooling-log';
export type MetricsMeta = Map;
diff --git a/packages/kbn-dev-utils/src/run/run.ts b/packages/kbn-dev-utils/src/run/run.ts
index 8afed4339884c..17630826299f2 100644
--- a/packages/kbn-dev-utils/src/run/run.ts
+++ b/packages/kbn-dev-utils/src/run/run.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { pickLevelFromFlags, ToolingLog, LogLevel } from '../tooling_log';
+import { pickLevelFromFlags, ToolingLog, LogLevel } from '@kbn/tooling-log';
import { createFlagError } from './fail';
import { Flags, getFlags, FlagOptions } from './flags';
import { ProcRunner, withProcRunner } from '../proc_runner';
diff --git a/packages/kbn-dev-utils/src/run/run_with_commands.test.ts b/packages/kbn-dev-utils/src/run/run_with_commands.test.ts
index 357908bd2f56d..0005ab8f27c01 100644
--- a/packages/kbn-dev-utils/src/run/run_with_commands.test.ts
+++ b/packages/kbn-dev-utils/src/run/run_with_commands.test.ts
@@ -7,7 +7,7 @@
*/
import { RunWithCommands } from './run_with_commands';
-import { ToolingLog, ToolingLogCollectingWriter } from '../tooling_log';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
import { ProcRunner } from '../proc_runner';
const testLog = new ToolingLog();
diff --git a/packages/kbn-dev-utils/src/run/run_with_commands.ts b/packages/kbn-dev-utils/src/run/run_with_commands.ts
index 701f3fa965fc8..eb6df27a5fa53 100644
--- a/packages/kbn-dev-utils/src/run/run_with_commands.ts
+++ b/packages/kbn-dev-utils/src/run/run_with_commands.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog, pickLevelFromFlags } from '../tooling_log';
+import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log';
import { RunContext, RunOptions } from './run';
import { getFlags, FlagOptions, mergeFlagOptions } from './flags';
import { Cleanup } from './cleanup';
diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ship_ci_stats_cli.ts b/packages/kbn-dev-utils/src/ship_ci_stats_cli.ts
similarity index 94%
rename from packages/kbn-dev-utils/src/ci_stats_reporter/ship_ci_stats_cli.ts
rename to packages/kbn-dev-utils/src/ship_ci_stats_cli.ts
index 4d07b54b8cf03..6afd85e49361d 100644
--- a/packages/kbn-dev-utils/src/ci_stats_reporter/ship_ci_stats_cli.ts
+++ b/packages/kbn-dev-utils/src/ship_ci_stats_cli.ts
@@ -9,8 +9,9 @@
import Path from 'path';
import Fs from 'fs';
-import { CiStatsReporter } from './ci_stats_reporter';
-import { run, createFlagError, createFailError } from '../run';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
+
+import { run, createFlagError, createFailError } from './run';
export function shipCiStatsCli() {
run(
diff --git a/packages/kbn-dev-utils/stdio/package.json b/packages/kbn-dev-utils/stdio/package.json
deleted file mode 100644
index 9aa2d96e19f3f..0000000000000
--- a/packages/kbn-dev-utils/stdio/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "main": "../target_node/stdio",
- "types": "../target_types/stdio"
-}
\ No newline at end of file
diff --git a/packages/kbn-dev-utils/tooling_log/package.json b/packages/kbn-dev-utils/tooling_log/package.json
deleted file mode 100644
index 711a55b9ba335..0000000000000
--- a/packages/kbn-dev-utils/tooling_log/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "main": "../target_node/tooling_log",
- "types": "../target_types/tooling_log"
-}
\ No newline at end of file
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts
index 75c0bf4985b84..9b86db445c225 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts
@@ -8,7 +8,7 @@
import Path from 'path';
import { Project, Node } from 'ts-morph';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { TypeKind, ApiScope, PluginOrPackage } from '../types';
import { getKibanaPlatformPlugin } from '../tests/kibana_platform_plugin_mock';
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts
index bf8beadea4d91..809097ee73818 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts
@@ -7,7 +7,7 @@
*/
import { FunctionTypeNode, Node } from 'ts-morph';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { buildClassDec } from './build_class_dec';
import { buildFunctionDec } from './build_function_dec';
import { isNamedNode } from '../tsmorph_utils';
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts
index bf3f85114c660..63c02e4d8ea82 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts
@@ -7,7 +7,7 @@
*/
import { REPO_ROOT } from '@kbn/utils';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { getPluginApiDocId } from '../utils';
import { extractImportReferences } from './extract_import_refs';
import { ApiScope, PluginOrPackage, Reference } from '../types';
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts
index 8420a0cee4cd0..e72367f5fd783 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { getApiSectionId, getPluginApiDocId, getPluginForPath } from '../utils';
import { ApiScope, PluginOrPackage, TextWithLinks } from '../types';
import { getRelativePath, pathsOutsideScopes } from './utils';
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts
index 108e018f82c85..9bc48a55b3415 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts
@@ -7,7 +7,7 @@
*/
import { Node, ReferenceFindableNode } from 'ts-morph';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { getPluginForPath } from '../utils';
import { getSourceForNode } from './utils';
import { ApiDeclaration, ApiReference, PluginOrPackage } from '../types';
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts
index 81daa3bb5df6d..67960dfe6a898 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts
@@ -8,7 +8,7 @@
/* eslint-disable no-bitwise */
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Node, TypeFormatFlags } from 'ts-morph';
import { isNamedNode } from '../tsmorph_utils';
import { PluginOrPackage, Reference } from '../types';
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts
index cf88a51d69ba4..9f44646b7de2d 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { ApiScope, PluginOrPackage } from '../types';
export interface BuildApiDecOpts {
diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts b/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts
index fcb06da4ea975..0617e35a88615 100644
--- a/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts
+++ b/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts
@@ -9,7 +9,8 @@
import Fs from 'fs';
import Path from 'path';
-import { run, CiStatsReporter, createFlagError } from '@kbn/dev-utils';
+import { run, createFlagError } from '@kbn/dev-utils';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
import { REPO_ROOT } from '@kbn/utils';
import { Project } from 'ts-morph';
diff --git a/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts b/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts
index 0d587559d3512..10eb466a4b4ae 100644
--- a/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts
+++ b/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts
@@ -7,7 +7,7 @@
*/
import Path from 'path';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Project, SourceFile, Node } from 'ts-morph';
import { ApiScope, PluginOrPackage } from './types';
import { isNamedNode, getSourceFileMatching } from './tsmorph_utils';
diff --git a/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts b/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts
index e0169f964dd99..b8850059aa366 100644
--- a/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts
+++ b/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts
@@ -8,7 +8,7 @@
import Path from 'path';
import { Node, Project } from 'ts-morph';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { ApiScope, Lifecycle, PluginOrPackage } from './types';
import { ApiDeclaration, PluginApi } from './types';
import { buildApiDeclarationTopNode } from './build_api_declarations/build_api_declaration';
diff --git a/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts b/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts
index 5709ec2a2f639..08ffafe81a2df 100644
--- a/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts
+++ b/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Project } from 'ts-morph';
import { getPluginApi } from './get_plugin_api';
import {
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts b/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts
index 4e4d5e2bf0ceb..bd2d973bf58ff 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import Path from 'path';
import { ApiDeclaration, ApiReference, ReferencedDeprecationsByPlugin } from '../types';
import { getPluginApiDocId } from '../utils';
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts b/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts
index 022cce8cbfe2d..b1862f9bc2165 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts
@@ -8,7 +8,7 @@
import Path from 'path';
import { Project } from 'ts-morph';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { PluginApi, PluginOrPackage } from '../types';
import { getKibanaPlatformPlugin } from '../tests/kibana_platform_plugin_mock';
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/types.ts b/packages/kbn-docs-utils/src/api_docs/mdx/types.ts
index 8ad7c22486d60..9299e41d06999 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/types.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/types.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { ApiStats, PluginApi, PluginOrPackage } from '../types';
export interface WritePluginDocsOpts {
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts
index 031dc8cf35bce..156e09b2fce1b 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts
@@ -7,7 +7,7 @@
*/
import moment from 'moment';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import dedent from 'dedent';
import fs from 'fs';
import Path from 'path';
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts
index 6be1ca11d3d4f..e79c109311c0b 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts
@@ -7,7 +7,7 @@
*/
import moment from 'moment';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import dedent from 'dedent';
import fs from 'fs';
import Path from 'path';
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts
index 8397f84eb9812..712dd9c8e637f 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import moment from 'moment';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import dedent from 'dedent';
import fs from 'fs';
import Path from 'path';
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts
index f7099e6c1a23b..c98621356439c 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts
@@ -9,7 +9,7 @@ import moment from 'moment';
import fs from 'fs';
import Path from 'path';
import dedent from 'dedent';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { PluginApi, PluginMetaInfo } from '../types';
import { getPluginApiDocId } from '../utils';
diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts
index 9e96544b0143b..be947bc13b469 100644
--- a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts
+++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts
@@ -7,7 +7,7 @@
*/
import { Project } from 'ts-morph';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { splitApisByFolder } from './write_plugin_split_by_folder';
import { getPluginApi } from '../get_plugin_api';
import { getKibanaPlatformPlugin } from '../tests/kibana_platform_plugin_mock';
diff --git a/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts b/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts
index cf536ce5158c1..fa7ea46b093bf 100644
--- a/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts
+++ b/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts
@@ -10,7 +10,7 @@ import fs from 'fs';
import Path from 'path';
import { Project } from 'ts-morph';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { writePluginDocs } from '../mdx/write_plugin_mdx_docs';
import {
diff --git a/packages/kbn-docs-utils/src/api_docs/utils.test.ts b/packages/kbn-docs-utils/src/api_docs/utils.test.ts
index 0cfa0331fd202..7c98f0dd99b72 100644
--- a/packages/kbn-docs-utils/src/api_docs/utils.test.ts
+++ b/packages/kbn-docs-utils/src/api_docs/utils.test.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import Path from 'path';
import { Project } from 'ts-morph';
import { findPlugins } from './find_plugins';
diff --git a/packages/kbn-docs-utils/src/api_docs/utils.ts b/packages/kbn-docs-utils/src/api_docs/utils.ts
index c4c89cd070034..c479228533f49 100644
--- a/packages/kbn-docs-utils/src/api_docs/utils.ts
+++ b/packages/kbn-docs-utils/src/api_docs/utils.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import path from 'path';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import {
ApiDeclaration,
ScopeApi,
diff --git a/packages/kbn-es-archiver/src/actions/edit.ts b/packages/kbn-es-archiver/src/actions/edit.ts
index 7a97bf08f3675..1d6742a20a3dc 100644
--- a/packages/kbn-es-archiver/src/actions/edit.ts
+++ b/packages/kbn-es-archiver/src/actions/edit.ts
@@ -11,7 +11,7 @@ import Fs from 'fs';
import { createGunzip, createGzip, constants } from 'zlib';
import { promisify } from 'util';
import globby from 'globby';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { createPromiseFromStreams } from '@kbn/utils';
const unlinkAsync = promisify(Fs.unlink);
diff --git a/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts b/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts
index 96b5b5f8e98e5..c9b67e4745d45 100644
--- a/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts
+++ b/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts
@@ -7,7 +7,7 @@
*/
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
import { migrateKibanaIndex, createStats, cleanKibanaIndices } from '../lib';
diff --git a/packages/kbn-es-archiver/src/actions/load.ts b/packages/kbn-es-archiver/src/actions/load.ts
index 0a318f895deb3..82462a9421520 100644
--- a/packages/kbn-es-archiver/src/actions/load.ts
+++ b/packages/kbn-es-archiver/src/actions/load.ts
@@ -9,7 +9,7 @@
import { resolve, relative } from 'path';
import { createReadStream } from 'fs';
import { Readable } from 'stream';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import { KbnClient } from '@kbn/test';
import type { Client } from '@elastic/elasticsearch';
diff --git a/packages/kbn-es-archiver/src/actions/rebuild_all.ts b/packages/kbn-es-archiver/src/actions/rebuild_all.ts
index 27fcae0c7cec5..74062125fd795 100644
--- a/packages/kbn-es-archiver/src/actions/rebuild_all.ts
+++ b/packages/kbn-es-archiver/src/actions/rebuild_all.ts
@@ -10,7 +10,7 @@ import { resolve, relative } from 'path';
import { Stats, createReadStream, createWriteStream } from 'fs';
import { stat, rename } from 'fs/promises';
import { Readable, Writable } from 'stream';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { createPromiseFromStreams, REPO_ROOT } from '@kbn/utils';
import {
prioritizeMappings,
diff --git a/packages/kbn-es-archiver/src/actions/save.ts b/packages/kbn-es-archiver/src/actions/save.ts
index e5e3f06b8436d..16f0cbc3c1846 100644
--- a/packages/kbn-es-archiver/src/actions/save.ts
+++ b/packages/kbn-es-archiver/src/actions/save.ts
@@ -10,7 +10,7 @@ import { resolve, relative } from 'path';
import { createWriteStream, mkdirSync } from 'fs';
import { Readable, Writable } from 'stream';
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { createListStream, createPromiseFromStreams, REPO_ROOT } from '@kbn/utils';
import {
diff --git a/packages/kbn-es-archiver/src/actions/unload.ts b/packages/kbn-es-archiver/src/actions/unload.ts
index 22830b7289174..2d4b16d718689 100644
--- a/packages/kbn-es-archiver/src/actions/unload.ts
+++ b/packages/kbn-es-archiver/src/actions/unload.ts
@@ -10,7 +10,7 @@ import { resolve, relative } from 'path';
import { createReadStream } from 'fs';
import { Readable, Writable } from 'stream';
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
import { createPromiseFromStreams, REPO_ROOT } from '@kbn/utils';
diff --git a/packages/kbn-es-archiver/src/es_archiver.ts b/packages/kbn-es-archiver/src/es_archiver.ts
index e13e20f25a703..0a9937ca3d9b4 100644
--- a/packages/kbn-es-archiver/src/es_archiver.ts
+++ b/packages/kbn-es-archiver/src/es_archiver.ts
@@ -10,7 +10,7 @@ import Fs from 'fs';
import Path from 'path';
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import { KbnClient } from '@kbn/test';
diff --git a/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts b/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts
index edcf5c32f1085..e102ac50c3876 100644
--- a/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts
+++ b/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import {
createListStream,
diff --git a/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts b/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts
index 9c0ff4a8f91ec..5dc9b4b7bd8dd 100644
--- a/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts
+++ b/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts
@@ -6,7 +6,8 @@
* Side Public License, v 1.
*/
-import { ToolingLog, createRecursiveSerializer } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { createRecursiveSerializer } from '@kbn/jest-serializers';
import { createListStream, createPromiseFromStreams } from '@kbn/utils';
diff --git a/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts b/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts
index ded56ddfdf0de..c60c920100174 100644
--- a/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts
+++ b/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts
@@ -8,7 +8,7 @@
import type { Client } from '@elastic/elasticsearch';
import sinon from 'sinon';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Stats } from '../../stats';
type StubStats = Stats & {
diff --git a/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts b/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts
index 26472d72bef0f..2ab53a2ca012c 100644
--- a/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts
+++ b/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts
@@ -11,7 +11,7 @@ import { inspect } from 'util';
import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Stats } from '../stats';
import { deleteKibanaIndices } from './kibana_index';
diff --git a/packages/kbn-es-archiver/src/lib/indices/delete_index.ts b/packages/kbn-es-archiver/src/lib/indices/delete_index.ts
index 3bba96d32ba95..20067a1f54bcf 100644
--- a/packages/kbn-es-archiver/src/lib/indices/delete_index.ts
+++ b/packages/kbn-es-archiver/src/lib/indices/delete_index.ts
@@ -7,7 +7,7 @@
*/
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Stats } from '../stats';
import { ES_CLIENT_HEADERS } from '../../client_headers';
diff --git a/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts b/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts
index e7763ca251e6f..450d575181529 100644
--- a/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts
+++ b/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts
@@ -8,7 +8,7 @@
import { Transform } from 'stream';
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Stats } from '../stats';
import { deleteIndex } from './delete_index';
diff --git a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts
index eaae1de46f1e6..6a02113bbf733 100644
--- a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts
+++ b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts
@@ -9,7 +9,7 @@
import { inspect } from 'util';
import type { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
import { Stats } from '../stats';
import { deleteIndex } from './delete_index';
diff --git a/packages/kbn-es-archiver/src/lib/progress.ts b/packages/kbn-es-archiver/src/lib/progress.ts
index 5e54aba335b97..59be205eb1283 100644
--- a/packages/kbn-es-archiver/src/lib/progress.ts
+++ b/packages/kbn-es-archiver/src/lib/progress.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
const SECOND = 1000;
diff --git a/packages/kbn-es-archiver/src/lib/stats.test.ts b/packages/kbn-es-archiver/src/lib/stats.test.ts
index 49dd75232d83a..5634bda070763 100644
--- a/packages/kbn-es-archiver/src/lib/stats.test.ts
+++ b/packages/kbn-es-archiver/src/lib/stats.test.ts
@@ -8,7 +8,7 @@
import { uniq } from 'lodash';
import sinon from 'sinon';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { createStats } from './stats';
diff --git a/packages/kbn-es-archiver/src/lib/stats.ts b/packages/kbn-es-archiver/src/lib/stats.ts
index 64dd6a9273efe..9ff16d57b8661 100644
--- a/packages/kbn-es-archiver/src/lib/stats.ts
+++ b/packages/kbn-es-archiver/src/lib/stats.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { cloneDeep } from 'lodash';
export interface IndexStats {
diff --git a/packages/kbn-es/src/artifact.test.js b/packages/kbn-es/src/artifact.test.js
index 8888c8ca2f989..b16cb3ab54548 100644
--- a/packages/kbn-es/src/artifact.test.js
+++ b/packages/kbn-es/src/artifact.test.js
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
jest.mock('node-fetch');
import fetch from 'node-fetch';
const { Response } = jest.requireActual('node-fetch');
diff --git a/packages/kbn-es/src/artifact.ts b/packages/kbn-es/src/artifact.ts
index 9ec3b96801dda..04cde128181b3 100644
--- a/packages/kbn-es/src/artifact.ts
+++ b/packages/kbn-es/src/artifact.ts
@@ -16,7 +16,7 @@ import { setTimeout } from 'timers/promises';
import fetch, { Headers } from 'node-fetch';
import AbortController from 'abort-controller';
import chalk from 'chalk';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { cache } from './utils/cache';
import { resolveCustomSnapshotUrl } from './custom_snapshots';
diff --git a/packages/kbn-es/src/cli_commands/snapshot.js b/packages/kbn-es/src/cli_commands/snapshot.js
index 095ce3cb04299..c0256fafbae7d 100644
--- a/packages/kbn-es/src/cli_commands/snapshot.js
+++ b/packages/kbn-es/src/cli_commands/snapshot.js
@@ -8,7 +8,8 @@
const dedent = require('dedent');
const getopts = require('getopts');
-import { ToolingLog, getTimeReporter } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { getTimeReporter } from '@kbn/ci-stats-reporter';
const { Cluster } = require('../cluster');
const { parseTimeoutToMs } = require('../utils');
diff --git a/packages/kbn-es/src/install/install_archive.ts b/packages/kbn-es/src/install/install_archive.ts
index ee04d9e4b62b5..9ccf00e09cf85 100644
--- a/packages/kbn-es/src/install/install_archive.ts
+++ b/packages/kbn-es/src/install/install_archive.ts
@@ -12,7 +12,8 @@ import path from 'path';
import chalk from 'chalk';
import execa from 'execa';
import del from 'del';
-import { extract, ToolingLog } from '@kbn/dev-utils';
+import { extract } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { BASE_PATH, ES_CONFIG, ES_KEYSTORE_BIN } from '../paths';
import { Artifact } from '../artifact';
diff --git a/packages/kbn-es/src/install/install_snapshot.ts b/packages/kbn-es/src/install/install_snapshot.ts
index 84d713745eb82..1ab0facfd2601 100644
--- a/packages/kbn-es/src/install/install_snapshot.ts
+++ b/packages/kbn-es/src/install/install_snapshot.ts
@@ -9,7 +9,7 @@
import path from 'path';
import chalk from 'chalk';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { BASE_PATH } from '../paths';
import { installArchive } from './install_archive';
diff --git a/packages/kbn-es/src/install/install_source.ts b/packages/kbn-es/src/install/install_source.ts
index d8c272677058e..a641e6eed513a 100644
--- a/packages/kbn-es/src/install/install_source.ts
+++ b/packages/kbn-es/src/install/install_source.ts
@@ -13,7 +13,7 @@ import crypto from 'crypto';
import chalk from 'chalk';
import simpleGit from 'simple-git/promise';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { installArchive } from './install_archive';
import { log as defaultLog } from '../utils/log';
diff --git a/packages/kbn-es/src/integration_tests/cluster.test.js b/packages/kbn-es/src/integration_tests/cluster.test.js
index 271942158dc94..250bc9ac883b3 100644
--- a/packages/kbn-es/src/integration_tests/cluster.test.js
+++ b/packages/kbn-es/src/integration_tests/cluster.test.js
@@ -6,13 +6,9 @@
* Side Public License, v 1.
*/
-const {
- ToolingLog,
- ToolingLogCollectingWriter,
- ES_NOPASSWORD_P12_PATH,
- createAnyInstanceSerializer,
- createStripAnsiSerializer,
-} = require('@kbn/dev-utils');
+const { ES_NOPASSWORD_P12_PATH } = require('@kbn/dev-utils');
+const { ToolingLog, ToolingLogCollectingWriter } = require('@kbn/tooling-log');
+const { createAnyInstanceSerializer, createStripAnsiSerializer } = require('@kbn/jest-serializers');
const execa = require('execa');
const { Cluster } = require('../cluster');
const { installSource, installSnapshot, installArchive } = require('../install');
diff --git a/packages/kbn-es/src/utils/build_snapshot.ts b/packages/kbn-es/src/utils/build_snapshot.ts
index 542e63dcc0748..2f5181a369f96 100644
--- a/packages/kbn-es/src/utils/build_snapshot.ts
+++ b/packages/kbn-es/src/utils/build_snapshot.ts
@@ -9,7 +9,8 @@
import path from 'path';
import os from 'os';
-import { ToolingLog, withProcRunner } from '@kbn/dev-utils';
+import { withProcRunner } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { createCliError } from '../errors';
import { findMostRecentlyChanged } from './find_most_recently_changed';
diff --git a/packages/kbn-es/src/utils/log.ts b/packages/kbn-es/src/utils/log.ts
index a0299f885cf6a..e74ec837649c7 100644
--- a/packages/kbn-es/src/utils/log.ts
+++ b/packages/kbn-es/src/utils/log.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
export const log = new ToolingLog({
level: 'verbose',
diff --git a/packages/kbn-es/src/utils/native_realm.test.js b/packages/kbn-es/src/utils/native_realm.test.js
index d3eaf6bd97b72..87a7092ca502e 100644
--- a/packages/kbn-es/src/utils/native_realm.test.js
+++ b/packages/kbn-es/src/utils/native_realm.test.js
@@ -7,7 +7,7 @@
*/
const { NativeRealm } = require('./native_realm');
-const { ToolingLog } = require('@kbn/dev-utils');
+const { ToolingLog } = require('@kbn/tooling-log');
const mockClient = {
xpack: {
diff --git a/packages/kbn-generate/BUILD.bazel b/packages/kbn-generate/BUILD.bazel
index ee73f358df9ca..eba297de0516e 100644
--- a/packages/kbn-generate/BUILD.bazel
+++ b/packages/kbn-generate/BUILD.bazel
@@ -29,6 +29,7 @@ RUNTIME_DEPS = [
"//packages/kbn-dev-utils",
"//packages/kbn-bazel-packages",
"//packages/kbn-utils",
+ "//packages/kbn-sort-package-json",
"@npm//ejs",
"@npm//micromatch",
"@npm//normalize-path",
@@ -38,6 +39,7 @@ TYPES_DEPS = [
"//packages/kbn-dev-utils:npm_module_types",
"//packages/kbn-bazel-packages:npm_module_types",
"//packages/kbn-utils:npm_module_types",
+ "//packages/kbn-sort-package-json:npm_module_types",
"@npm//@types/micromatch",
"@npm//ejs",
"@npm//micromatch",
diff --git a/packages/kbn-generate/src/commands/package_command.ts b/packages/kbn-generate/src/commands/package_command.ts
index b18e63724469a..9b369c3201939 100644
--- a/packages/kbn-generate/src/commands/package_command.ts
+++ b/packages/kbn-generate/src/commands/package_command.ts
@@ -15,7 +15,8 @@ import globby from 'globby';
import micromatch from 'micromatch';
import { REPO_ROOT } from '@kbn/utils';
import { discoverBazelPackages, BAZEL_PACKAGE_DIRS } from '@kbn/bazel-packages';
-import { createFailError, createFlagError, isFailError, sortPackageJson } from '@kbn/dev-utils';
+import { createFailError, createFlagError, isFailError } from '@kbn/dev-utils';
+import { sortPackageJson } from '@kbn/sort-package-json';
import { TEMPLATE_DIR, ROOT_PKG_DIR, PKG_TEMPLATE_DIR } from '../paths';
import type { GenerateCommand } from '../generate_command';
diff --git a/packages/kbn-generate/src/lib/render.ts b/packages/kbn-generate/src/lib/render.ts
index 23595dbbe43d0..33c6a903875f4 100644
--- a/packages/kbn-generate/src/lib/render.ts
+++ b/packages/kbn-generate/src/lib/render.ts
@@ -11,7 +11,8 @@ import Fsp from 'fs/promises';
import Ejs from 'ejs';
import normalizePath from 'normalize-path';
-import { ToolingLog, sortPackageJson } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { sortPackageJson } from '@kbn/sort-package-json';
import { REPO_ROOT } from '@kbn/utils';
export type Vars = Record;
diff --git a/packages/kbn-generate/src/lib/validate_file.ts b/packages/kbn-generate/src/lib/validate_file.ts
index d4f3640a45471..9a9ca28691537 100644
--- a/packages/kbn-generate/src/lib/validate_file.ts
+++ b/packages/kbn-generate/src/lib/validate_file.ts
@@ -9,7 +9,8 @@
import Fsp from 'fs/promises';
import Path from 'path';
-import { ToolingLog, createFailError, diffStrings } from '@kbn/dev-utils';
+import { createFailError, diffStrings } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
export async function validateFile(log: ToolingLog, usage: string, path: string, expected: string) {
const relPath = Path.relative(process.cwd(), path);
diff --git a/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts b/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts
index b811151942bc5..1857e6ef26453 100644
--- a/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts
+++ b/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts
@@ -7,7 +7,7 @@
*/
import Path from 'path';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { ImportResolver } from '../import_resolver';
diff --git a/packages/kbn-jest-serializers/BUILD.bazel b/packages/kbn-jest-serializers/BUILD.bazel
new file mode 100644
index 0000000000000..23f0c76ab17dd
--- /dev/null
+++ b/packages/kbn-jest-serializers/BUILD.bazel
@@ -0,0 +1,118 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_config")
+load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
+load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")
+
+PKG_DIRNAME = "kbn-jest-serializers"
+PKG_REQUIRE_NAME = "@kbn/jest-serializers"
+
+SOURCE_FILES = glob(
+ [
+ "src/**/*.ts",
+ ],
+ exclude = [
+ "**/*.test.*",
+ ],
+)
+
+SRCS = SOURCE_FILES
+
+filegroup(
+ name = "srcs",
+ srcs = SRCS,
+)
+
+NPM_MODULE_EXTRA_FILES = [
+ "package.json",
+]
+
+# In this array place runtime dependencies, including other packages and NPM packages
+# which must be available for this code to run.
+#
+# To reference other packages use:
+# "//repo/relative/path/to/package"
+# eg. "//packages/kbn-utils"
+#
+# To reference a NPM package use:
+# "@npm//name-of-package"
+# eg. "@npm//lodash"
+RUNTIME_DEPS = [
+ "@npm//strip-ansi",
+ "//packages/kbn-utils",
+]
+
+# In this array place dependencies necessary to build the types, which will include the
+# :npm_module_types target of other packages and packages from NPM, including @types/*
+# packages.
+#
+# To reference the types for another package use:
+# "//repo/relative/path/to/package:npm_module_types"
+# eg. "//packages/kbn-utils:npm_module_types"
+#
+# References to NPM packages work the same as RUNTIME_DEPS
+TYPES_DEPS = [
+ "@npm//strip-ansi",
+ "@npm//@types/node",
+ "@npm//@types/jest",
+ "//packages/kbn-utils:npm_module_types",
+]
+
+jsts_transpiler(
+ name = "target_node",
+ srcs = SRCS,
+ build_pkg_name = package_name(),
+)
+
+ts_config(
+ name = "tsconfig",
+ src = "tsconfig.json",
+ deps = [
+ "//:tsconfig.base.json",
+ "//:tsconfig.bazel.json",
+ ],
+)
+
+ts_project(
+ name = "tsc_types",
+ args = ['--pretty'],
+ srcs = SRCS,
+ deps = TYPES_DEPS,
+ declaration = True,
+ emit_declaration_only = True,
+ out_dir = "target_types",
+ root_dir = "src",
+ tsconfig = ":tsconfig",
+)
+
+js_library(
+ name = PKG_DIRNAME,
+ srcs = NPM_MODULE_EXTRA_FILES,
+ deps = RUNTIME_DEPS + [":target_node"],
+ package_name = PKG_REQUIRE_NAME,
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm(
+ name = "npm_module",
+ deps = [":" + PKG_DIRNAME],
+)
+
+filegroup(
+ name = "build",
+ srcs = [":npm_module"],
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm_types(
+ name = "npm_module_types",
+ srcs = SRCS,
+ deps = [":tsc_types"],
+ package_name = PKG_REQUIRE_NAME,
+ tsconfig = ":tsconfig",
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "build_types",
+ srcs = [":npm_module_types"],
+ visibility = ["//visibility:public"],
+)
diff --git a/packages/kbn-jest-serializers/README.md b/packages/kbn-jest-serializers/README.md
new file mode 100644
index 0000000000000..20d411e0db535
--- /dev/null
+++ b/packages/kbn-jest-serializers/README.md
@@ -0,0 +1,11 @@
+# @kbn/jest-serializers
+
+Shared serializers that may be useful when you're writing jest tests. To use them import the package and call one of the functions, passing the result to `expect.addSnapshotSerializer()`.
+
+Example:
+
+```ts
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers'
+
+expect.addSnapshotSerializer(createAbsolutePathSerializer());
+```
\ No newline at end of file
diff --git a/packages/kbn-jest-serializers/jest.config.js b/packages/kbn-jest-serializers/jest.config.js
new file mode 100644
index 0000000000000..23fad67c028bf
--- /dev/null
+++ b/packages/kbn-jest-serializers/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+ preset: '@kbn/test/jest_node',
+ rootDir: '../..',
+ roots: ['/packages/kbn-jest-serializers'],
+};
diff --git a/packages/kbn-jest-serializers/package.json b/packages/kbn-jest-serializers/package.json
new file mode 100644
index 0000000000000..c049ef6725157
--- /dev/null
+++ b/packages/kbn-jest-serializers/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@kbn/jest-serializers",
+ "private": true,
+ "version": "1.0.0",
+ "main": "./target_node/index.js",
+ "license": "SSPL-1.0 OR Elastic License 2.0",
+ "kibana": {
+ "devOnly": true
+ }
+}
diff --git a/packages/kbn-dev-utils/src/serializers/absolute_path_serializer.ts b/packages/kbn-jest-serializers/src/absolute_path_serializer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/serializers/absolute_path_serializer.ts
rename to packages/kbn-jest-serializers/src/absolute_path_serializer.ts
diff --git a/packages/kbn-dev-utils/src/serializers/any_instance_serizlizer.ts b/packages/kbn-jest-serializers/src/any_instance_serizlizer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/serializers/any_instance_serizlizer.ts
rename to packages/kbn-jest-serializers/src/any_instance_serizlizer.ts
diff --git a/packages/kbn-jest-serializers/src/index.ts b/packages/kbn-jest-serializers/src/index.ts
new file mode 100644
index 0000000000000..134f97da3ed82
--- /dev/null
+++ b/packages/kbn-jest-serializers/src/index.ts
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+export { createAbsolutePathSerializer } from './absolute_path_serializer';
+export { createStripAnsiSerializer } from './strip_ansi_serializer';
+export { createRecursiveSerializer } from './recursive_serializer';
+export { createAnyInstanceSerializer } from './any_instance_serizlizer';
+export { createReplaceSerializer } from './replace_serializer';
diff --git a/packages/kbn-dev-utils/src/serializers/recursive_serializer.ts b/packages/kbn-jest-serializers/src/recursive_serializer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/serializers/recursive_serializer.ts
rename to packages/kbn-jest-serializers/src/recursive_serializer.ts
diff --git a/packages/kbn-dev-utils/src/serializers/replace_serializer.ts b/packages/kbn-jest-serializers/src/replace_serializer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/serializers/replace_serializer.ts
rename to packages/kbn-jest-serializers/src/replace_serializer.ts
diff --git a/packages/kbn-dev-utils/src/serializers/strip_ansi_serializer.ts b/packages/kbn-jest-serializers/src/strip_ansi_serializer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/serializers/strip_ansi_serializer.ts
rename to packages/kbn-jest-serializers/src/strip_ansi_serializer.ts
diff --git a/packages/kbn-jest-serializers/tsconfig.json b/packages/kbn-jest-serializers/tsconfig.json
new file mode 100644
index 0000000000000..a8cfc2cceb08b
--- /dev/null
+++ b/packages/kbn-jest-serializers/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.bazel.json",
+ "compilerOptions": {
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "target_types",
+ "rootDir": "src",
+ "stripInternal": false,
+ "types": [
+ "jest",
+ "node"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
diff --git a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts
index cafd8ab996577..e83fb083e9868 100644
--- a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts
+++ b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts
@@ -16,7 +16,8 @@ import cpy from 'cpy';
import del from 'del';
import { tap, filter } from 'rxjs/operators';
import { REPO_ROOT } from '@kbn/utils';
-import { ToolingLog, createReplaceSerializer } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { createReplaceSerializer } from '@kbn/jest-serializers';
import { runOptimizer, OptimizerConfig, OptimizerUpdate, logOptimizerState } from '..';
import { allValuesFrom } from '../common';
diff --git a/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts b/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts
index 99f0c0bd9696e..bfec5800abebe 100644
--- a/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts
+++ b/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts
@@ -10,7 +10,7 @@ import Path from 'path';
import cpy from 'cpy';
import del from 'del';
-import { createAbsolutePathSerializer, createStripAnsiSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer, createStripAnsiSerializer } from '@kbn/jest-serializers';
import { OptimizerConfig } from '../optimizer/optimizer_config';
import { allValuesFrom, Bundle, Hashes, ParsedDllManifest } from '../common';
diff --git a/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts b/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts
index c5ac22e2faa9b..164a855e76896 100644
--- a/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts
+++ b/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts
@@ -8,7 +8,7 @@
// @ts-expect-error
import { getOptimizerBuiltPaths } from '@kbn/optimizer/target_node/optimizer/optimizer_built_paths';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
expect.addSnapshotSerializer(createAbsolutePathSerializer());
diff --git a/packages/kbn-optimizer/src/limits.ts b/packages/kbn-optimizer/src/limits.ts
index b2f8b6fda6c6f..a63012f37a52e 100644
--- a/packages/kbn-optimizer/src/limits.ts
+++ b/packages/kbn-optimizer/src/limits.ts
@@ -11,7 +11,9 @@ import Path from 'path';
import dedent from 'dedent';
import Yaml from 'js-yaml';
-import { createFailError, ToolingLog, CiStatsMetric } from '@kbn/dev-utils';
+import { createFailError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { CiStatsMetric } from '@kbn/ci-stats-reporter';
import { OptimizerConfig, Limits } from './optimizer';
diff --git a/packages/kbn-optimizer/src/log_optimizer_progress.ts b/packages/kbn-optimizer/src/log_optimizer_progress.ts
index d07c9dc6eff32..a4ad2d16d17c3 100644
--- a/packages/kbn-optimizer/src/log_optimizer_progress.ts
+++ b/packages/kbn-optimizer/src/log_optimizer_progress.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import * as Rx from 'rxjs';
import { tap } from 'rxjs/operators';
diff --git a/packages/kbn-optimizer/src/log_optimizer_state.ts b/packages/kbn-optimizer/src/log_optimizer_state.ts
index 060f05a445eb5..6271ab17e1e2d 100644
--- a/packages/kbn-optimizer/src/log_optimizer_state.ts
+++ b/packages/kbn-optimizer/src/log_optimizer_state.ts
@@ -8,7 +8,7 @@
import { inspect } from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { tap } from 'rxjs/operators';
import { OptimizerConfig } from './optimizer';
diff --git a/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts b/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts
index e4cdddbf56dcb..fd8c6b9c37f27 100644
--- a/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts
+++ b/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { getPluginBundles } from './get_plugin_bundles';
diff --git a/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts b/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts
index ff3b7cd8c6174..2b95b5ccc5c04 100644
--- a/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts
+++ b/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts
@@ -8,7 +8,7 @@
import Path from 'path';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { findKibanaPlatformPlugins } from './kibana_platform_plugins';
diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts b/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts
index b8a2aaa592a5c..1cfc1b184d87a 100644
--- a/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts
+++ b/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts
@@ -7,7 +7,7 @@
*/
import { REPO_ROOT } from '@kbn/utils';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { getOptimizerCacheKey } from './optimizer_cache_key';
import { OptimizerConfig } from './optimizer_config';
diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts b/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts
index df9e35a406e69..ccee62e7f1e50 100644
--- a/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts
+++ b/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts
@@ -24,7 +24,7 @@ jest.mock('os', () => {
import Path from 'path';
import { REPO_ROOT } from '@kbn/utils';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { OptimizerConfig, ParsedOptions } from './optimizer_config';
import { parseThemeTags } from '../common';
diff --git a/packages/kbn-optimizer/src/report_optimizer_timings.ts b/packages/kbn-optimizer/src/report_optimizer_timings.ts
index e57d0b9a641c6..2102821c80e2c 100644
--- a/packages/kbn-optimizer/src/report_optimizer_timings.ts
+++ b/packages/kbn-optimizer/src/report_optimizer_timings.ts
@@ -7,7 +7,8 @@
*/
import { concatMap } from 'rxjs/operators';
-import { CiStatsReporter, ToolingLog } from '@kbn/dev-utils';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
+import { ToolingLog } from '@kbn/tooling-log';
import { OptimizerConfig } from './optimizer';
import { OptimizerUpdate$ } from './run_optimizer';
diff --git a/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts b/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts
index d9e1bee22557b..ac1bcb02a0349 100644
--- a/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts
+++ b/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts
@@ -10,7 +10,7 @@ import Path from 'path';
import webpack from 'webpack';
import { RawSource } from 'webpack-sources';
-import { CiStatsMetric } from '@kbn/dev-utils';
+import { CiStatsMetric } from '@kbn/ci-stats-reporter';
import { Bundle } from '../common';
diff --git a/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts b/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts
index 3b5a2bd272329..a9df7fdd2be90 100644
--- a/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts
+++ b/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts
@@ -11,7 +11,7 @@ import Path from 'path';
import del from 'del';
import execa from 'execa';
import { REPO_ROOT } from '@kbn/utils';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import globby from 'globby';
const GENERATED_DIR = Path.resolve(REPO_ROOT, `plugins`);
diff --git a/packages/kbn-plugin-helpers/src/build_context.ts b/packages/kbn-plugin-helpers/src/build_context.ts
index 40bf1dfa3cd04..75ba365c8f4e1 100644
--- a/packages/kbn-plugin-helpers/src/build_context.ts
+++ b/packages/kbn-plugin-helpers/src/build_context.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Plugin } from './load_kibana_platform_plugin';
import { Config } from './config';
diff --git a/packages/kbn-plugin-helpers/src/config.ts b/packages/kbn-plugin-helpers/src/config.ts
index 6c41ba7ac019c..c398bc9bd6d87 100644
--- a/packages/kbn-plugin-helpers/src/config.ts
+++ b/packages/kbn-plugin-helpers/src/config.ts
@@ -10,7 +10,7 @@ import Path from 'path';
import loadJsonFile from 'load-json-file';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Plugin } from './load_kibana_platform_plugin';
export interface Config {
diff --git a/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts b/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts
index 2d7664aa13326..9df98159c4e4d 100644
--- a/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts
+++ b/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts
@@ -11,7 +11,7 @@ import Fs from 'fs';
import execa from 'execa';
import { REPO_ROOT } from '@kbn/utils';
-import { createStripAnsiSerializer, createReplaceSerializer } from '@kbn/dev-utils';
+import { createStripAnsiSerializer, createReplaceSerializer } from '@kbn/jest-serializers';
import extract from 'extract-zip';
import del from 'del';
import globby from 'globby';
diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js
index 6c41471e8ed65..8e99101ed76ff 100644
--- a/packages/kbn-pm/dist/index.js
+++ b/packages/kbn-pm/dist/index.js
@@ -1346,22 +1346,7 @@ module.exports = _interopRequireDefault, module.exports.__esModule = true, modul
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive":
-/***/ (function(module, exports) {
-
-function webpackEmptyContext(req) {
- var e = new Error("Cannot find module '" + req + "'");
- e.code = 'MODULE_NOT_FOUND';
- throw e;
-}
-webpackEmptyContext.keys = function() { return []; };
-webpackEmptyContext.resolve = webpackEmptyContext;
-module.exports = webpackEmptyContext;
-webpackEmptyContext.id = "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive";
-
-/***/ }),
-
-/***/ "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_config.js":
+/***/ "../../node_modules/@kbn/ci-stats-core/target_node/ci_stats_config.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -1428,7 +1413,42 @@ function parseConfig(log) {
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_reporter.js":
+/***/ "../../node_modules/@kbn/ci-stats-core/target_node/index.js":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "parseConfig", {
+ enumerable: true,
+ get: function () {
+ return _ci_stats_config.parseConfig;
+ }
+});
+
+var _ci_stats_config = __webpack_require__("../../node_modules/@kbn/ci-stats-core/target_node/ci_stats_config.js");
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive":
+/***/ (function(module, exports) {
+
+function webpackEmptyContext(req) {
+ var e = new Error("Cannot find module '" + req + "'");
+ e.code = 'MODULE_NOT_FOUND';
+ throw e;
+}
+webpackEmptyContext.keys = function() { return []; };
+webpackEmptyContext.resolve = webpackEmptyContext;
+module.exports = webpackEmptyContext;
+webpackEmptyContext.id = "../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive";
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node/ci_stats_reporter.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -1457,7 +1477,7 @@ var _axios = _interopRequireDefault(__webpack_require__("../../node_modules/axio
var _http = _interopRequireDefault(__webpack_require__("../../node_modules/axios/lib/adapters/http.js"));
-var _ci_stats_config = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_config.js");
+var _ciStatsCore = __webpack_require__("../../node_modules/@kbn/ci-stats-core/target_node/index.js");
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -1476,7 +1496,7 @@ class CiStatsReporter {
* Create a CiStatsReporter by inspecting the ENV for the necessary config
*/
static fromEnv(log) {
- return new CiStatsReporter((0, _ci_stats_config.parseConfig)(log), log);
+ return new CiStatsReporter((0, _ciStatsCore.parseConfig)(log), log);
}
constructor(config, log) {
@@ -1655,7 +1675,7 @@ class CiStatsReporter {
const {
kibanaPackageJson
- } = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive")(hideFromWebpack.join(''));
+ } = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive")(hideFromWebpack.join(''));
return kibanaPackageJson.branch;
}
@@ -1672,7 +1692,7 @@ class CiStatsReporter {
const {
REPO_ROOT
- } = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive")(hideFromWebpack.join(''));
+ } = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive")(hideFromWebpack.join(''));
try {
return _fs.default.readFileSync(_path.default.resolve(REPO_ROOT, 'data/uuid'), 'utf-8').trim();
@@ -1755,20 +1775,46 @@ exports.CiStatsReporter = CiStatsReporter;
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/sort_package_json.js":
+/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node/index.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "CiStatsReporter", {
+ enumerable: true,
+ get: function () {
+ return _ci_stats_reporter.CiStatsReporter;
+ }
+});
+Object.defineProperty(exports, "getTimeReporter", {
+ enumerable: true,
+ get: function () {
+ return _report_time.getTimeReporter;
+ }
+});
+
+var _ci_stats_reporter = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/ci_stats_reporter.js");
+
+var _report_time = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/report_time.js");
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node/report_time.js":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.sortPackageJson = sortPackageJson;
+exports.getTimeReporter = void 0;
-var _sortPackageJson = _interopRequireDefault(__webpack_require__("../../node_modules/sort-package-json/index.js"));
+var _ci_stats_reporter = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/ci_stats_reporter.js");
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -1777,16 +1823,26 @@ var _sortPackageJson = _interopRequireDefault(__webpack_require__("../../node_mo
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
-function sortPackageJson(json) {
- return JSON.stringify((0, _sortPackageJson.default)(JSON.parse(json), {
- // top level keys in the order they were written when this was implemented
- sortOrder: ['name', 'description', 'keywords', 'private', 'version', 'branch', 'main', 'browser', 'types', 'tsdocMetadata', 'build', 'homepage', 'bugs', 'license', 'kibana', 'author', 'scripts', 'repository', 'engines', 'resolutions']
- }), null, 2) + '\n';
-}
+const getTimeReporter = (log, group) => {
+ const reporter = _ci_stats_reporter.CiStatsReporter.fromEnv(log);
+
+ return async (startTime, id, meta) => {
+ await reporter.timings({
+ timings: [{
+ group,
+ id,
+ ms: Date.now() - startTime,
+ meta
+ }]
+ });
+ };
+};
+
+exports.getTimeReporter = getTimeReporter;
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/stdio/index.js":
+/***/ "../../node_modules/@kbn/plugin-discovery/target_node/index.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -1796,35 +1852,266 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
-var _observe_lines = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/observe_lines.js");
+var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js");
+
+Object.keys(_parse_kibana_platform_plugin).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _parse_kibana_platform_plugin[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _parse_kibana_platform_plugin[key];
+ }
+ });
+});
+
+var _plugin_search_paths = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js");
-Object.keys(_observe_lines).forEach(function (key) {
+Object.keys(_plugin_search_paths).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
- if (key in exports && exports[key] === _observe_lines[key]) return;
+ if (key in exports && exports[key] === _plugin_search_paths[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
- return _observe_lines[key];
+ return _plugin_search_paths[key];
}
});
});
-var _observe_readable = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/observe_readable.js");
+var _simple_kibana_platform_plugin_discovery = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js");
-Object.keys(_observe_readable).forEach(function (key) {
+Object.keys(_simple_kibana_platform_plugin_discovery).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
- if (key in exports && exports[key] === _observe_readable[key]) return;
+ if (key in exports && exports[key] === _simple_kibana_platform_plugin_discovery[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
- return _observe_readable[key];
+ return _simple_kibana_platform_plugin_discovery[key];
}
});
});
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/stdio/observe_lines.js":
+/***/ "../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.parseKibanaPlatformPlugin = parseKibanaPlatformPlugin;
+
+var _path = _interopRequireDefault(__webpack_require__("path"));
+
+var _loadJsonFile = _interopRequireDefault(__webpack_require__("../../node_modules/load-json-file/index.js"));
+
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+function isValidDepsDeclaration(input, type) {
+ if (typeof input === 'undefined') return [];
+
+ if (Array.isArray(input) && input.every(i => typeof i === 'string')) {
+ return input;
+ }
+
+ throw new TypeError(`The "${type}" in plugin manifest should be an array of strings.`);
+}
+
+function parseKibanaPlatformPlugin(manifestPath) {
+ if (!_path.default.isAbsolute(manifestPath)) {
+ throw new TypeError('expected new platform manifest path to be absolute');
+ }
+
+ const manifest = _loadJsonFile.default.sync(manifestPath);
+
+ if (!manifest || typeof manifest !== 'object' || Array.isArray(manifest)) {
+ throw new TypeError('expected new platform plugin manifest to be a JSON encoded object');
+ }
+
+ if (typeof manifest.id !== 'string') {
+ throw new TypeError('expected new platform plugin manifest to have a string id');
+ }
+
+ if (typeof manifest.version !== 'string') {
+ throw new TypeError('expected new platform plugin manifest to have a string version');
+ }
+
+ if (!manifest.owner || typeof manifest.owner.name !== 'string') {
+ throw new TypeError(`Expected plugin ${manifest.id} manifest to have an owner with name specified (${manifestPath})`);
+ }
+
+ return {
+ directory: _path.default.dirname(manifestPath),
+ manifestPath,
+ manifest: { ...manifest,
+ ui: !!manifest.ui,
+ server: !!manifest.server,
+ id: manifest.id,
+ version: manifest.version,
+ kibanaVersion: manifest.kibanaVersion || manifest.version,
+ serviceFolders: manifest.serviceFolders || [],
+ owner: manifest.owner,
+ description: manifest.description,
+ enabledOnAnonymousPages: Boolean(manifest.enabledOnAnonymousPages),
+ requiredPlugins: isValidDepsDeclaration(manifest.requiredPlugins, 'requiredPlugins'),
+ optionalPlugins: isValidDepsDeclaration(manifest.optionalPlugins, 'optionalPlugins'),
+ requiredBundles: isValidDepsDeclaration(manifest.requiredBundles, 'requiredBundles'),
+ extraPublicDirs: isValidDepsDeclaration(manifest.extraPublicDirs, 'extraPublicDirs')
+ }
+ };
+}
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getPluginSearchPaths = getPluginSearchPaths;
+
+var _path = __webpack_require__("path");
+
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+function getPluginSearchPaths({
+ rootDir,
+ oss,
+ examples,
+ testPlugins
+}) {
+ return [(0, _path.resolve)(rootDir, 'src', 'plugins'), ...(oss ? [] : [(0, _path.resolve)(rootDir, 'x-pack', 'plugins')]), (0, _path.resolve)(rootDir, 'plugins'), ...(examples ? [(0, _path.resolve)(rootDir, 'examples')] : []), ...(examples && !oss ? [(0, _path.resolve)(rootDir, 'x-pack', 'examples')] : []), (0, _path.resolve)(rootDir, '..', 'kibana-extra'), ...(testPlugins ? [(0, _path.resolve)(rootDir, 'test/analytics/__fixtures__/plugins'), (0, _path.resolve)(rootDir, 'test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'test/interpreter_functional/plugins'), (0, _path.resolve)(rootDir, 'test/common/fixtures/plugins')] : []), ...(testPlugins && !oss ? [(0, _path.resolve)(rootDir, 'x-pack/test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/functional_with_es_ssl/fixtures/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/alerting_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_perf/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/licensing_plugin/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/usage_collection/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/security_functional/fixtures/common')] : [])];
+}
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.simpleKibanaPlatformPluginDiscovery = simpleKibanaPlatformPluginDiscovery;
+
+var _path = _interopRequireDefault(__webpack_require__("path"));
+
+var _globby = _interopRequireDefault(__webpack_require__("../../node_modules/globby/index.js"));
+
+var _normalizePath = _interopRequireDefault(__webpack_require__("../../node_modules/normalize-path/index.js"));
+
+var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js");
+
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+/**
+ * Helper to find the new platform plugins.
+ */
+function simpleKibanaPlatformPluginDiscovery(scanDirs, pluginPaths) {
+ const patterns = Array.from(new Set([// find kibana.json files up to 5 levels within the scan dir
+ ...scanDirs.reduce((acc, dir) => [...acc, _path.default.resolve(dir, '*/kibana.json'), _path.default.resolve(dir, '*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/*/kibana.json')], []), ...pluginPaths.map(path => _path.default.resolve(path, `kibana.json`))])).map(path => (0, _normalizePath.default)(path));
+
+ const manifestPaths = _globby.default.sync(patterns, {
+ absolute: true
+ }).map(path => // absolute paths returned from globby are using normalize or
+ // something so the path separators are `/` even on windows,
+ // Path.resolve solves this
+ _path.default.resolve(path));
+
+ return manifestPaths.map(_parse_kibana_platform_plugin.parseKibanaPlatformPlugin);
+}
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/sort-package-json/target_node/index.js":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.sortPackageJson = sortPackageJson;
+
+var _sortPackageJson = _interopRequireDefault(__webpack_require__("../../node_modules/sort-package-json/index.js"));
+
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+function sortPackageJson(json) {
+ return JSON.stringify((0, _sortPackageJson.default)(JSON.parse(json), {
+ // top level keys in the order they were written when this was implemented
+ sortOrder: ['name', 'description', 'keywords', 'private', 'version', 'branch', 'main', 'browser', 'types', 'tsdocMetadata', 'build', 'homepage', 'bugs', 'license', 'kibana', 'author', 'scripts', 'repository', 'engines', 'resolutions']
+ }), null, 2) + '\n';
+}
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/stdio-dev-helpers/target_node/index.js":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "observeLines", {
+ enumerable: true,
+ get: function () {
+ return _observe_lines.observeLines;
+ }
+});
+Object.defineProperty(exports, "observeReadable", {
+ enumerable: true,
+ get: function () {
+ return _observe_readable.observeReadable;
+ }
+});
+
+var _observe_lines = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_lines.js");
+
+var _observe_readable = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_readable.js");
+
+/***/ }),
+
+/***/ "../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_lines.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -1839,7 +2126,7 @@ var Rx = _interopRequireWildcard(__webpack_require__("../../node_modules/rxjs/di
var _operators = __webpack_require__("../../node_modules/rxjs/dist/esm5/operators/index.js");
-var _observe_readable = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/observe_readable.js");
+var _observe_readable = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_readable.js");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -1903,7 +2190,7 @@ function observeLines(readable) {
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/stdio/observe_readable.js":
+/***/ "../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_readable.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -1941,7 +2228,7 @@ function observeReadable(readable) {
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/index.js":
+/***/ "../../node_modules/@kbn/tooling-log/target_node/index.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -1950,6 +2237,18 @@ function observeReadable(readable) {
Object.defineProperty(exports, "__esModule", {
value: true
});
+Object.defineProperty(exports, "DEFAULT_LOG_LEVEL", {
+ enumerable: true,
+ get: function () {
+ return _log_levels.DEFAULT_LOG_LEVEL;
+ }
+});
+Object.defineProperty(exports, "LOG_LEVEL_FLAGS", {
+ enumerable: true,
+ get: function () {
+ return _log_levels.LOG_LEVEL_FLAGS;
+ }
+});
Object.defineProperty(exports, "ToolingLog", {
enumerable: true,
get: function () {
@@ -1968,6 +2267,12 @@ Object.defineProperty(exports, "ToolingLogTextWriter", {
return _tooling_log_text_writer.ToolingLogTextWriter;
}
});
+Object.defineProperty(exports, "getLogLevelFlagsHelp", {
+ enumerable: true,
+ get: function () {
+ return _log_levels.getLogLevelFlagsHelp;
+ }
+});
Object.defineProperty(exports, "parseLogLevel", {
enumerable: true,
get: function () {
@@ -1981,17 +2286,17 @@ Object.defineProperty(exports, "pickLevelFromFlags", {
}
});
-var _tooling_log = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log.js");
+var _tooling_log = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log.js");
-var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js");
+var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js");
-var _log_levels = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/log_levels.js");
+var _log_levels = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/log_levels.js");
-var _tooling_log_collecting_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_collecting_writer.js");
+var _tooling_log_collecting_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_collecting_writer.js");
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/log_levels.js":
+/***/ "../../node_modules/@kbn/tooling-log/target_node/log_levels.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -2071,7 +2376,7 @@ function parseLogLevel(name) {
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log.js":
+/***/ "../../node_modules/@kbn/tooling-log/target_node/tooling_log.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -2088,7 +2393,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__("../../node_mo
var Rx = _interopRequireWildcard(__webpack_require__("../../node_modules/rxjs/dist/esm5/index.js"));
-var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js");
+var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -2240,7 +2545,7 @@ exports.ToolingLog = ToolingLog;
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_collecting_writer.js":
+/***/ "../../node_modules/@kbn/tooling-log/target_node/tooling_log_collecting_writer.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -2255,7 +2560,7 @@ exports.ToolingLogCollectingWriter = void 0;
var _defineProperty2 = _interopRequireDefault(__webpack_require__("../../node_modules/@babel/runtime/helpers/defineProperty.js"));
-var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js");
+var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js");
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -2298,7 +2603,7 @@ exports.ToolingLogCollectingWriter = ToolingLogCollectingWriter;
/***/ }),
-/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js":
+/***/ "../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -2317,7 +2622,7 @@ var _util = __webpack_require__("util");
var _chalk = _interopRequireDefault(__webpack_require__("../../node_modules/chalk/source/index.js"));
-var _log_levels = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/log_levels.js");
+var _log_levels = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/log_levels.js");
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -2429,216 +2734,6 @@ exports.ToolingLogTextWriter = ToolingLogTextWriter;
/***/ }),
-/***/ "../../node_modules/@kbn/plugin-discovery/target_node/index.js":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-
-var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js");
-
-Object.keys(_parse_kibana_platform_plugin).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- if (key in exports && exports[key] === _parse_kibana_platform_plugin[key]) return;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _parse_kibana_platform_plugin[key];
- }
- });
-});
-
-var _plugin_search_paths = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js");
-
-Object.keys(_plugin_search_paths).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- if (key in exports && exports[key] === _plugin_search_paths[key]) return;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _plugin_search_paths[key];
- }
- });
-});
-
-var _simple_kibana_platform_plugin_discovery = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js");
-
-Object.keys(_simple_kibana_platform_plugin_discovery).forEach(function (key) {
- if (key === "default" || key === "__esModule") return;
- if (key in exports && exports[key] === _simple_kibana_platform_plugin_discovery[key]) return;
- Object.defineProperty(exports, key, {
- enumerable: true,
- get: function () {
- return _simple_kibana_platform_plugin_discovery[key];
- }
- });
-});
-
-/***/ }),
-
-/***/ "../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.parseKibanaPlatformPlugin = parseKibanaPlatformPlugin;
-
-var _path = _interopRequireDefault(__webpack_require__("path"));
-
-var _loadJsonFile = _interopRequireDefault(__webpack_require__("../../node_modules/load-json-file/index.js"));
-
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-function isValidDepsDeclaration(input, type) {
- if (typeof input === 'undefined') return [];
-
- if (Array.isArray(input) && input.every(i => typeof i === 'string')) {
- return input;
- }
-
- throw new TypeError(`The "${type}" in plugin manifest should be an array of strings.`);
-}
-
-function parseKibanaPlatformPlugin(manifestPath) {
- if (!_path.default.isAbsolute(manifestPath)) {
- throw new TypeError('expected new platform manifest path to be absolute');
- }
-
- const manifest = _loadJsonFile.default.sync(manifestPath);
-
- if (!manifest || typeof manifest !== 'object' || Array.isArray(manifest)) {
- throw new TypeError('expected new platform plugin manifest to be a JSON encoded object');
- }
-
- if (typeof manifest.id !== 'string') {
- throw new TypeError('expected new platform plugin manifest to have a string id');
- }
-
- if (typeof manifest.version !== 'string') {
- throw new TypeError('expected new platform plugin manifest to have a string version');
- }
-
- if (!manifest.owner || typeof manifest.owner.name !== 'string') {
- throw new TypeError(`Expected plugin ${manifest.id} manifest to have an owner with name specified (${manifestPath})`);
- }
-
- return {
- directory: _path.default.dirname(manifestPath),
- manifestPath,
- manifest: { ...manifest,
- ui: !!manifest.ui,
- server: !!manifest.server,
- id: manifest.id,
- version: manifest.version,
- kibanaVersion: manifest.kibanaVersion || manifest.version,
- serviceFolders: manifest.serviceFolders || [],
- owner: manifest.owner,
- description: manifest.description,
- enabledOnAnonymousPages: Boolean(manifest.enabledOnAnonymousPages),
- requiredPlugins: isValidDepsDeclaration(manifest.requiredPlugins, 'requiredPlugins'),
- optionalPlugins: isValidDepsDeclaration(manifest.optionalPlugins, 'optionalPlugins'),
- requiredBundles: isValidDepsDeclaration(manifest.requiredBundles, 'requiredBundles'),
- extraPublicDirs: isValidDepsDeclaration(manifest.extraPublicDirs, 'extraPublicDirs')
- }
- };
-}
-
-/***/ }),
-
-/***/ "../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.getPluginSearchPaths = getPluginSearchPaths;
-
-var _path = __webpack_require__("path");
-
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-function getPluginSearchPaths({
- rootDir,
- oss,
- examples,
- testPlugins
-}) {
- return [(0, _path.resolve)(rootDir, 'src', 'plugins'), ...(oss ? [] : [(0, _path.resolve)(rootDir, 'x-pack', 'plugins')]), (0, _path.resolve)(rootDir, 'plugins'), ...(examples ? [(0, _path.resolve)(rootDir, 'examples')] : []), ...(examples && !oss ? [(0, _path.resolve)(rootDir, 'x-pack', 'examples')] : []), (0, _path.resolve)(rootDir, '..', 'kibana-extra'), ...(testPlugins ? [(0, _path.resolve)(rootDir, 'test/analytics/__fixtures__/plugins'), (0, _path.resolve)(rootDir, 'test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'test/interpreter_functional/plugins'), (0, _path.resolve)(rootDir, 'test/common/fixtures/plugins')] : []), ...(testPlugins && !oss ? [(0, _path.resolve)(rootDir, 'x-pack/test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/functional_with_es_ssl/fixtures/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/alerting_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_perf/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/licensing_plugin/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/usage_collection/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/security_functional/fixtures/common')] : [])];
-}
-
-/***/ }),
-
-/***/ "../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.simpleKibanaPlatformPluginDiscovery = simpleKibanaPlatformPluginDiscovery;
-
-var _path = _interopRequireDefault(__webpack_require__("path"));
-
-var _globby = _interopRequireDefault(__webpack_require__("../../node_modules/globby/index.js"));
-
-var _normalizePath = _interopRequireDefault(__webpack_require__("../../node_modules/normalize-path/index.js"));
-
-var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js");
-
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
- * in compliance with, at your election, the Elastic License 2.0 or the Server
- * Side Public License, v 1.
- */
-
-/**
- * Helper to find the new platform plugins.
- */
-function simpleKibanaPlatformPluginDiscovery(scanDirs, pluginPaths) {
- const patterns = Array.from(new Set([// find kibana.json files up to 5 levels within the scan dir
- ...scanDirs.reduce((acc, dir) => [...acc, _path.default.resolve(dir, '*/kibana.json'), _path.default.resolve(dir, '*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/*/kibana.json')], []), ...pluginPaths.map(path => _path.default.resolve(path, `kibana.json`))])).map(path => (0, _normalizePath.default)(path));
-
- const manifestPaths = _globby.default.sync(patterns, {
- absolute: true
- }).map(path => // absolute paths returned from globby are using normalize or
- // something so the path separators are `/` even on windows,
- // Path.resolve solves this
- _path.default.resolve(path));
-
- return manifestPaths.map(_parse_kibana_platform_plugin.parseKibanaPlatformPlugin);
-}
-
-/***/ }),
-
/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/async/for-each.js":
/***/ (function(module, exports, __webpack_require__) {
@@ -86028,8 +86123,8 @@ module.exports.sync = (filePath, data, options) => {
/* harmony import */ var getopts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(getopts__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("path");
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/index.js");
-/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/index.js");
+/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/commands/index.ts");
/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/run.ts");
/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts");
@@ -86080,7 +86175,7 @@ function help() {
}
async function run(argv) {
- _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].setLogLevel(Object(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__["pickLevelFromFlags"])(getopts__WEBPACK_IMPORTED_MODULE_1___default()(argv, {
+ _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].setLogLevel(Object(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3__["pickLevelFromFlags"])(getopts__WEBPACK_IMPORTED_MODULE_1___default()(argv, {
boolean: ['verbose', 'debug', 'quiet', 'silent', 'skip-missing']
}))); // We can simplify this setup (and remove this extra handling) once Yarn
// starts forwarding the `--` directly to this script, see
@@ -86141,8 +86236,8 @@ async function run(argv) {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BootstrapCommand; });
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("path");
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_reporter.js");
-/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/index.js");
+/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/log.ts");
/* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/child_process.ts");
/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/link_project_executables.ts");
@@ -86193,7 +86288,7 @@ const BootstrapCommand = {
const batchedNonBazelProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__[/* topologicallyBatchProjects */ "f"])(nonBazelProjectsOnly, projectGraph);
const kibanaProjectPath = ((_projects$get = projects.get('kibana')) === null || _projects$get === void 0 ? void 0 : _projects$get.path) || '';
const runOffline = (options === null || options === void 0 ? void 0 : options.offline) === true;
- const reporter = _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_2__[/* log */ "a"]);
+ const reporter = _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_2__[/* log */ "a"]);
const timings = [];
const time = async (id, body) => {
@@ -87090,8 +87185,8 @@ async function copyToBuild(project, kibanaRoot, buildRoot) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return runCommand; });
-/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_reporter.js");
-/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/index.js");
+/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _kbn_plugin_discovery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/index.js");
/* harmony import */ var _kbn_plugin_discovery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_plugin_discovery__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/errors.ts");
@@ -87157,7 +87252,7 @@ async function runCommand(command, config) {
return;
}
- const reporter = _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"]);
+ const reporter = _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"]);
try {
await reporter.timings({
@@ -87444,8 +87539,8 @@ async function installBazelTools(repoRootPath) {
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js");
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/merge.js");
/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/tap.js");
-/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/index.js");
-/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__);
+/* harmony import */ var _kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/index.js");
+/* harmony import */ var _kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/child_process.ts");
/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts");
/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/errors.ts");
@@ -87484,7 +87579,7 @@ async function runBazelCommandWithRunner(bazelCommandRunner, bazelArgs, offline
const bazelLogs$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"](); // Bazel outputs machine readable output into stdout and human readable output goes to stderr.
// Therefore we need to get both. In order to get errors we need to parse the actual text line
- const bazelLogSubscription = rxjs__WEBPACK_IMPORTED_MODULE_2__[/* merge */ "a"](Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stdout).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`))), Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stderr).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`)))).subscribe(bazelLogs$); // Wait for process and logs to finish, unsubscribing in the end
+ const bazelLogSubscription = rxjs__WEBPACK_IMPORTED_MODULE_2__[/* merge */ "a"](Object(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stdout).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`))), Object(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stderr).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`)))).subscribe(bazelLogs$); // Wait for process and logs to finish, unsubscribing in the end
try {
await bazelProc;
@@ -88216,8 +88311,8 @@ async function linkProjectExecutables(projectsByName, projectGraph) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return log; });
/* unused harmony export Log */
-/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/index.js");
-/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/index.js");
+/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__);
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; }
/*
@@ -88229,7 +88324,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
*/
-class Log extends _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLog"] {
+class Log extends _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLog"] {
constructor() {
super();
@@ -88239,8 +88334,8 @@ class Log extends _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["Tooli
}
setLogLevel(level) {
- this.logLevel = Object(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["parseLogLevel"])(level);
- this.setWriters([new _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLogTextWriter"]({
+ this.logLevel = Object(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__["parseLogLevel"])(level);
+ this.setWriters([new _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLogTextWriter"]({
level: this.logLevel.name,
writeTo: process.stdout
})]);
@@ -88983,8 +89078,8 @@ async function regenerateBaseTsconfig(plugins, repoRoot) {
/* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs_promises__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("path");
/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/sort_package_json.js");
-/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/@kbn/sort-package-json/target_node/index.js");
+/* harmony import */ var _kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2__);
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
@@ -88998,7 +89093,7 @@ async function regenerateBaseTsconfig(plugins, repoRoot) {
async function regeneratePackageJson(rootPath) {
const path = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(rootPath, 'package.json');
const json = await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.readFile(path, 'utf8');
- await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.writeFile(path, Object(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2__["sortPackageJson"])(json));
+ await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.writeFile(path, Object(_kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2__["sortPackageJson"])(json));
}
/***/ }),
diff --git a/packages/kbn-pm/src/cli.ts b/packages/kbn-pm/src/cli.ts
index f6ea4d7124ab2..8b313be500841 100644
--- a/packages/kbn-pm/src/cli.ts
+++ b/packages/kbn-pm/src/cli.ts
@@ -9,7 +9,7 @@
import dedent from 'dedent';
import getopts from 'getopts';
import { resolve } from 'path';
-import { pickLevelFromFlags } from '@kbn/dev-utils/tooling_log';
+import { pickLevelFromFlags } from '@kbn/tooling-log';
import { commands } from './commands';
import { runCommand } from './run';
diff --git a/packages/kbn-pm/src/commands/bootstrap.ts b/packages/kbn-pm/src/commands/bootstrap.ts
index 5b6f4fe3baeb7..3ea1a5f19b13b 100644
--- a/packages/kbn-pm/src/commands/bootstrap.ts
+++ b/packages/kbn-pm/src/commands/bootstrap.ts
@@ -7,7 +7,7 @@
*/
import { resolve, sep } from 'path';
-import { CiStatsReporter } from '@kbn/dev-utils/ci_stats_reporter';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
import { log } from '../utils/log';
import { spawnStreaming } from '../utils/child_process';
diff --git a/packages/kbn-pm/src/run.ts b/packages/kbn-pm/src/run.ts
index 559fcbcf8b668..0529ebd6425ca 100644
--- a/packages/kbn-pm/src/run.ts
+++ b/packages/kbn-pm/src/run.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { CiStatsReporter, CiStatsTiming } from '@kbn/dev-utils/ci_stats_reporter';
+import { CiStatsReporter, CiStatsTiming } from '@kbn/ci-stats-reporter';
import { simpleKibanaPlatformPluginDiscovery, getPluginSearchPaths } from '@kbn/plugin-discovery';
import { ICommand, ICommandConfig } from './commands';
diff --git a/packages/kbn-pm/src/utils/bazel/run.ts b/packages/kbn-pm/src/utils/bazel/run.ts
index 18a6cacdf6d2a..4d7b82cc4eac0 100644
--- a/packages/kbn-pm/src/utils/bazel/run.ts
+++ b/packages/kbn-pm/src/utils/bazel/run.ts
@@ -10,7 +10,7 @@ import chalk from 'chalk';
import execa from 'execa';
import * as Rx from 'rxjs';
import { tap } from 'rxjs/operators';
-import { observeLines } from '@kbn/dev-utils/stdio';
+import { observeLines } from '@kbn/stdio-dev-helpers';
import { spawn } from '../child_process';
import { log } from '../log';
import { CliError } from '../errors';
diff --git a/packages/kbn-pm/src/utils/link_project_executables.test.ts b/packages/kbn-pm/src/utils/link_project_executables.test.ts
index 7470ea6295490..5045474321ce5 100644
--- a/packages/kbn-pm/src/utils/link_project_executables.test.ts
+++ b/packages/kbn-pm/src/utils/link_project_executables.test.ts
@@ -12,7 +12,7 @@ jest.mock('./fs');
import { resolve } from 'path';
-import { ToolingLogCollectingWriter } from '@kbn/dev-utils/tooling_log';
+import { ToolingLogCollectingWriter } from '@kbn/tooling-log';
import { absolutePathSnapshotSerializer, stripAnsiSnapshotSerializer } from '../test_helpers';
import { linkProjectExecutables } from './link_project_executables';
diff --git a/packages/kbn-pm/src/utils/log.ts b/packages/kbn-pm/src/utils/log.ts
index ba4ee6941f540..a70f967adc400 100644
--- a/packages/kbn-pm/src/utils/log.ts
+++ b/packages/kbn-pm/src/utils/log.ts
@@ -12,7 +12,7 @@ import {
LogLevel,
parseLogLevel,
ParsedLogLevel,
-} from '@kbn/dev-utils/tooling_log';
+} from '@kbn/tooling-log';
class Log extends ToolingLog {
private logLevel!: ParsedLogLevel;
diff --git a/packages/kbn-pm/src/utils/regenerate_package_json.ts b/packages/kbn-pm/src/utils/regenerate_package_json.ts
index 88460132df2a6..6124aebc38879 100644
--- a/packages/kbn-pm/src/utils/regenerate_package_json.ts
+++ b/packages/kbn-pm/src/utils/regenerate_package_json.ts
@@ -9,7 +9,7 @@
import Fsp from 'fs/promises';
import Path from 'path';
-import { sortPackageJson } from '@kbn/dev-utils/sort_package_json';
+import { sortPackageJson } from '@kbn/sort-package-json';
export async function regeneratePackageJson(rootPath: string) {
const path = Path.resolve(rootPath, 'package.json');
diff --git a/packages/kbn-sort-package-json/BUILD.bazel b/packages/kbn-sort-package-json/BUILD.bazel
new file mode 100644
index 0000000000000..515e9009615c8
--- /dev/null
+++ b/packages/kbn-sort-package-json/BUILD.bazel
@@ -0,0 +1,116 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_config")
+load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
+load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")
+
+PKG_DIRNAME = "kbn-sort-package-json"
+PKG_REQUIRE_NAME = "@kbn/sort-package-json"
+
+SOURCE_FILES = glob(
+ [
+ "src/**/*.ts",
+ ],
+ exclude = [
+ "**/*.test.*",
+ ],
+)
+
+SRCS = SOURCE_FILES
+
+filegroup(
+ name = "srcs",
+ srcs = SRCS,
+)
+
+NPM_MODULE_EXTRA_FILES = [
+ "package.json",
+]
+
+# In this array place runtime dependencies, including other packages and NPM packages
+# which must be available for this code to run.
+#
+# To reference other packages use:
+# "//repo/relative/path/to/package"
+# eg. "//packages/kbn-utils"
+#
+# To reference a NPM package use:
+# "@npm//name-of-package"
+# eg. "@npm//lodash"
+RUNTIME_DEPS = [
+ "@npm//sort-package-json",
+]
+
+# In this array place dependencies necessary to build the types, which will include the
+# :npm_module_types target of other packages and packages from NPM, including @types/*
+# packages.
+#
+# To reference the types for another package use:
+# "//repo/relative/path/to/package:npm_module_types"
+# eg. "//packages/kbn-utils:npm_module_types"
+#
+# References to NPM packages work the same as RUNTIME_DEPS
+TYPES_DEPS = [
+ "@npm//@types/node",
+ "@npm//@types/jest",
+ "@npm//sort-package-json",
+]
+
+jsts_transpiler(
+ name = "target_node",
+ srcs = SRCS,
+ build_pkg_name = package_name(),
+)
+
+ts_config(
+ name = "tsconfig",
+ src = "tsconfig.json",
+ deps = [
+ "//:tsconfig.base.json",
+ "//:tsconfig.bazel.json",
+ ],
+)
+
+ts_project(
+ name = "tsc_types",
+ args = ['--pretty'],
+ srcs = SRCS,
+ deps = TYPES_DEPS,
+ declaration = True,
+ emit_declaration_only = True,
+ out_dir = "target_types",
+ root_dir = "src",
+ tsconfig = ":tsconfig",
+)
+
+js_library(
+ name = PKG_DIRNAME,
+ srcs = NPM_MODULE_EXTRA_FILES,
+ deps = RUNTIME_DEPS + [":target_node"],
+ package_name = PKG_REQUIRE_NAME,
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm(
+ name = "npm_module",
+ deps = [":" + PKG_DIRNAME],
+)
+
+filegroup(
+ name = "build",
+ srcs = [":npm_module"],
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm_types(
+ name = "npm_module_types",
+ srcs = SRCS,
+ deps = [":tsc_types"],
+ package_name = PKG_REQUIRE_NAME,
+ tsconfig = ":tsconfig",
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "build_types",
+ srcs = [":npm_module_types"],
+ visibility = ["//visibility:public"],
+)
diff --git a/packages/kbn-sort-package-json/README.md b/packages/kbn-sort-package-json/README.md
new file mode 100644
index 0000000000000..915f210547b73
--- /dev/null
+++ b/packages/kbn-sort-package-json/README.md
@@ -0,0 +1,3 @@
+# @kbn/sort-package-json
+
+Empty package generated by @kbn/generate
diff --git a/packages/kbn-sort-package-json/jest.config.js b/packages/kbn-sort-package-json/jest.config.js
new file mode 100644
index 0000000000000..ae0651be19e61
--- /dev/null
+++ b/packages/kbn-sort-package-json/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+ preset: '@kbn/test/jest_node',
+ rootDir: '../..',
+ roots: ['/packages/kbn-sort-package-json'],
+};
diff --git a/packages/kbn-sort-package-json/package.json b/packages/kbn-sort-package-json/package.json
new file mode 100644
index 0000000000000..9a875835d7450
--- /dev/null
+++ b/packages/kbn-sort-package-json/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@kbn/sort-package-json",
+ "private": true,
+ "version": "1.0.0",
+ "main": "./target_node/index.js",
+ "license": "SSPL-1.0 OR Elastic License 2.0",
+ "kibana": {
+ "devOnly": true
+ }
+}
diff --git a/packages/kbn-dev-utils/src/sort_package_json.ts b/packages/kbn-sort-package-json/src/index.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/sort_package_json.ts
rename to packages/kbn-sort-package-json/src/index.ts
diff --git a/packages/kbn-sort-package-json/tsconfig.json b/packages/kbn-sort-package-json/tsconfig.json
new file mode 100644
index 0000000000000..a8cfc2cceb08b
--- /dev/null
+++ b/packages/kbn-sort-package-json/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.bazel.json",
+ "compilerOptions": {
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "target_types",
+ "rootDir": "src",
+ "stripInternal": false,
+ "types": [
+ "jest",
+ "node"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
diff --git a/packages/kbn-stdio-dev-helpers/BUILD.bazel b/packages/kbn-stdio-dev-helpers/BUILD.bazel
new file mode 100644
index 0000000000000..05b76bbc0508d
--- /dev/null
+++ b/packages/kbn-stdio-dev-helpers/BUILD.bazel
@@ -0,0 +1,118 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_config")
+load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
+load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")
+
+PKG_DIRNAME = "kbn-stdio-dev-helpers"
+PKG_REQUIRE_NAME = "@kbn/stdio-dev-helpers"
+
+SOURCE_FILES = glob(
+ [
+ "src/**/*.ts",
+ ],
+ exclude = [
+ "**/*.test.*",
+ ],
+)
+
+SRCS = SOURCE_FILES
+
+filegroup(
+ name = "srcs",
+ srcs = SRCS,
+)
+
+NPM_MODULE_EXTRA_FILES = [
+ "package.json",
+]
+
+# In this array place runtime dependencies, including other packages and NPM packages
+# which must be available for this code to run.
+#
+# To reference other packages use:
+# "//repo/relative/path/to/package"
+# eg. "//packages/kbn-utils"
+#
+# To reference a NPM package use:
+# "@npm//name-of-package"
+# eg. "@npm//lodash"
+RUNTIME_DEPS = [
+ "@npm//rxjs",
+ "@npm//tslib",
+]
+
+# In this array place dependencies necessary to build the types, which will include the
+# :npm_module_types target of other packages and packages from NPM, including @types/*
+# packages.
+#
+# To reference the types for another package use:
+# "//repo/relative/path/to/package:npm_module_types"
+# eg. "//packages/kbn-utils:npm_module_types"
+#
+# References to NPM packages work the same as RUNTIME_DEPS
+TYPES_DEPS = [
+ "@npm//@types/node",
+ "@npm//@types/jest",
+ "@npm//rxjs",
+ "@npm//tslib",
+]
+
+jsts_transpiler(
+ name = "target_node",
+ srcs = SRCS,
+ build_pkg_name = package_name(),
+)
+
+ts_config(
+ name = "tsconfig",
+ src = "tsconfig.json",
+ deps = [
+ "//:tsconfig.base.json",
+ "//:tsconfig.bazel.json",
+ ],
+)
+
+ts_project(
+ name = "tsc_types",
+ args = ['--pretty'],
+ srcs = SRCS,
+ deps = TYPES_DEPS,
+ declaration = True,
+ emit_declaration_only = True,
+ out_dir = "target_types",
+ root_dir = "src",
+ tsconfig = ":tsconfig",
+)
+
+js_library(
+ name = PKG_DIRNAME,
+ srcs = NPM_MODULE_EXTRA_FILES,
+ deps = RUNTIME_DEPS + [":target_node"],
+ package_name = PKG_REQUIRE_NAME,
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm(
+ name = "npm_module",
+ deps = [":" + PKG_DIRNAME],
+)
+
+filegroup(
+ name = "build",
+ srcs = [":npm_module"],
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm_types(
+ name = "npm_module_types",
+ srcs = SRCS,
+ deps = [":tsc_types"],
+ package_name = PKG_REQUIRE_NAME,
+ tsconfig = ":tsconfig",
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "build_types",
+ srcs = [":npm_module_types"],
+ visibility = ["//visibility:public"],
+)
diff --git a/packages/kbn-stdio-dev-helpers/README.md b/packages/kbn-stdio-dev-helpers/README.md
new file mode 100644
index 0000000000000..6ad7f282149ca
--- /dev/null
+++ b/packages/kbn-stdio-dev-helpers/README.md
@@ -0,0 +1,3 @@
+# @kbn/stdio-dev-helpers
+
+RxJS helpers for dealing with stdio from child processes
diff --git a/packages/kbn-stdio-dev-helpers/jest.config.js b/packages/kbn-stdio-dev-helpers/jest.config.js
new file mode 100644
index 0000000000000..31a8aab16c7e5
--- /dev/null
+++ b/packages/kbn-stdio-dev-helpers/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+ preset: '@kbn/test/jest_node',
+ rootDir: '../..',
+ roots: ['/packages/kbn-stdio-dev-helpers'],
+};
diff --git a/packages/kbn-stdio-dev-helpers/package.json b/packages/kbn-stdio-dev-helpers/package.json
new file mode 100644
index 0000000000000..23b0a1cf65a76
--- /dev/null
+++ b/packages/kbn-stdio-dev-helpers/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@kbn/stdio-dev-helpers",
+ "private": true,
+ "version": "1.0.0",
+ "main": "./target_node/index.js",
+ "license": "SSPL-1.0 OR Elastic License 2.0",
+ "kibana": {
+ "devOnly": true
+ }
+}
diff --git a/packages/kbn-dev-utils/src/serializers/index.ts b/packages/kbn-stdio-dev-helpers/src/index.ts
similarity index 63%
rename from packages/kbn-dev-utils/src/serializers/index.ts
rename to packages/kbn-stdio-dev-helpers/src/index.ts
index 44db5fb56a9f7..a898037b1673e 100644
--- a/packages/kbn-dev-utils/src/serializers/index.ts
+++ b/packages/kbn-stdio-dev-helpers/src/index.ts
@@ -6,8 +6,5 @@
* Side Public License, v 1.
*/
-export * from './absolute_path_serializer';
-export * from './strip_ansi_serializer';
-export * from './recursive_serializer';
-export * from './any_instance_serizlizer';
-export * from './replace_serializer';
+export { observeLines } from './observe_lines';
+export { observeReadable } from './observe_readable';
diff --git a/packages/kbn-dev-utils/src/stdio/observe_lines.ts b/packages/kbn-stdio-dev-helpers/src/observe_lines.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/stdio/observe_lines.ts
rename to packages/kbn-stdio-dev-helpers/src/observe_lines.ts
diff --git a/packages/kbn-dev-utils/src/stdio/observe_readable.ts b/packages/kbn-stdio-dev-helpers/src/observe_readable.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/stdio/observe_readable.ts
rename to packages/kbn-stdio-dev-helpers/src/observe_readable.ts
diff --git a/packages/kbn-stdio-dev-helpers/tsconfig.json b/packages/kbn-stdio-dev-helpers/tsconfig.json
new file mode 100644
index 0000000000000..a8cfc2cceb08b
--- /dev/null
+++ b/packages/kbn-stdio-dev-helpers/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.bazel.json",
+ "compilerOptions": {
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "target_types",
+ "rootDir": "src",
+ "stripInternal": false,
+ "types": [
+ "jest",
+ "node"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
diff --git a/packages/kbn-test/src/es/test_es_cluster.ts b/packages/kbn-test/src/es/test_es_cluster.ts
index b75b7f47e0743..a12b1d852ced9 100644
--- a/packages/kbn-test/src/es/test_es_cluster.ts
+++ b/packages/kbn-test/src/es/test_es_cluster.ts
@@ -12,7 +12,7 @@ import del from 'del';
// @ts-expect-error in js
import { Cluster } from '@kbn/es';
import { Client, HttpConnection } from '@elastic/elasticsearch';
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import { CI_PARALLEL_PROCESS_PREFIX } from '../ci_parallel_process_prefix';
import { esTestConfig } from './es_test_config';
diff --git a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts
index b2416fe8eec4c..220a336915bf1 100644
--- a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts
@@ -8,7 +8,7 @@
import Path from 'path';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
// @ts-ignore
import { createPatch } from 'diff';
diff --git a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts
index 06604f4b2c7ab..984fd698bfa12 100644
--- a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts
@@ -9,7 +9,7 @@
import Fs from 'fs';
import { promisify } from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import xml2js from 'xml2js';
import { TestReport, makeFailedTestCaseIter } from './test_report';
diff --git a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts
index 7c28f105fba75..25062c4e5d5cb 100644
--- a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts
@@ -6,7 +6,8 @@
* Side Public License, v 1.
*/
-import { ToolingLog, ToolingLogCollectingWriter, createStripAnsiSerializer } from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createStripAnsiSerializer } from '@kbn/jest-serializers';
import type { TestFailure } from './get_failures';
import { ExistingFailedTestIssues, FailedTestIssue } from './existing_failed_test_issues';
diff --git a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts
index 9a38cb0c659d3..b08835b655175 100644
--- a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts
@@ -9,7 +9,8 @@
import { setTimeout } from 'timers/promises';
import Axios from 'axios';
-import { ToolingLog, isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils';
+import { isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { GithubIssueMini } from './github_api';
import { TestFailure } from './get_failures';
diff --git a/packages/kbn-test/src/failed_tests_reporter/github_api.ts b/packages/kbn-test/src/failed_tests_reporter/github_api.ts
index bf870045c5a6e..5ad0f8417d651 100644
--- a/packages/kbn-test/src/failed_tests_reporter/github_api.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/github_api.ts
@@ -9,7 +9,8 @@
import Url from 'url';
import Axios, { AxiosRequestConfig, AxiosInstance } from 'axios';
-import { ToolingLog, isAxiosResponseError, isAxiosRequestError } from '@kbn/dev-utils';
+import { isAxiosResponseError, isAxiosRequestError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
const BASE_URL = 'https://api.github.com/repos/elastic/kibana/';
diff --git a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts
index a96ca5822775d..061a5feafa994 100644
--- a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts
@@ -7,7 +7,8 @@
*/
import { Client, HttpConnection } from '@elastic/elasticsearch';
-import { createFailError, ToolingLog } from '@kbn/dev-utils';
+import { createFailError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { TestFailure } from './get_failures';
diff --git a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts
index 33dab240ec8b4..6985ad32c0808 100644
--- a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts
@@ -10,7 +10,7 @@ import { createHash } from 'crypto';
import { mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'fs';
import { join, basename, resolve } from 'path';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import { escape } from 'he';
diff --git a/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts b/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts
index 2f5519a163abc..4c539b3ab12b1 100644
--- a/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts
+++ b/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts
@@ -9,7 +9,8 @@
import Path from 'path';
import { REPO_ROOT } from '@kbn/utils';
-import { run, createFailError, createFlagError, CiStatsReporter } from '@kbn/dev-utils';
+import { run, createFailError, createFlagError } from '@kbn/dev-utils';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
import globby from 'globby';
import normalize from 'normalize-path';
diff --git a/packages/kbn-test/src/functional_test_runner/cli.ts b/packages/kbn-test/src/functional_test_runner/cli.ts
index ac254c6ec92fd..ee01b0ccfde9c 100644
--- a/packages/kbn-test/src/functional_test_runner/cli.ts
+++ b/packages/kbn-test/src/functional_test_runner/cli.ts
@@ -9,7 +9,9 @@
import { resolve } from 'path';
import { inspect } from 'util';
-import { run, createFlagError, Flags, ToolingLog, getTimeReporter } from '@kbn/dev-utils';
+import { run, createFlagError, Flags } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { getTimeReporter } from '@kbn/ci-stats-reporter';
import exitHook from 'exit-hook';
import { FunctionalTestRunner } from './functional_test_runner';
diff --git a/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts b/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts
index c8caad3049f14..1ba99fc69a5d3 100644
--- a/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts
+++ b/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts
@@ -8,7 +8,7 @@
import { writeFileSync, mkdirSync } from 'fs';
import Path, { dirname } from 'path';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import { Suite, Test } from './fake_mocha_types';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js
index 27434ce5a09ca..d1ce17cc95b7b 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js
+++ b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { readConfigFile } from './read_config_file';
import { Config } from './config';
import { EsVersion } from '../es_version';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts
index fd836f338edf0..d026842f3a4f1 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { defaultsDeep } from 'lodash';
import { Config } from './config';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts
index 188465fb7eb65..52fe9cb90d5fc 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts
@@ -9,7 +9,8 @@
import execa from 'execa';
import * as Rx from 'rxjs';
import { tap } from 'rxjs/operators';
-import { ToolingLog, observeLines } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { observeLines } from '@kbn/stdio-dev-helpers';
/**
* Observe the logs for a container, reflecting the log lines
diff --git a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts
index 632f94d0550e6..b15b2bf3df075 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts
@@ -8,7 +8,7 @@
import execa from 'execa';
import * as Rx from 'rxjs';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
/**
* Create an observable that errors if a docker
diff --git a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts
index fd10551bb17ef..b6af2b5c8df9f 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts
@@ -10,7 +10,7 @@ import Url from 'url';
import execa from 'execa';
import * as Rx from 'rxjs';
import { filter, take, map } from 'rxjs/operators';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Lifecycle } from '../lifecycle';
import { observeContainerRunning } from './container_running';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts
index 90bb3a894bc6c..98db434b3b088 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Suite, Test } from '../../fake_mocha_types';
import { EsVersion } from '../es_version';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts
index 61eb7eccce430..838b8ee9b9aa5 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts
@@ -9,7 +9,11 @@
import * as Path from 'path';
import { REPO_ROOT } from '@kbn/utils';
-import { CiStatsReporter, CiStatsReportTestsOptions, CiStatsTestType } from '@kbn/dev-utils';
+import {
+ CiStatsReporter,
+ CiStatsReportTestsOptions,
+ CiStatsTestType,
+} from '@kbn/ci-stats-reporter';
import { Config } from '../../config';
import { Runner } from '../../../fake_mocha_types';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js
index 84299cba14eaa..973a552ebb728 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js
+++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js
@@ -9,7 +9,8 @@
import { format } from 'util';
import Mocha from 'mocha';
-import { ToolingLogTextWriter, CiStatsReporter } from '@kbn/dev-utils';
+import { ToolingLogTextWriter } from '@kbn/tooling-log';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
import moment from 'moment';
import { recordLog, snapshotLogsForRunnable, setupJUnitReportGeneration } from '../../../../mocha';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts b/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts
index 97d7d43417f91..8723a424f6e22 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { loadTracer } from '../load_tracer';
import { createAsyncInstance, isAsyncInstance } from './async_instance';
diff --git a/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts b/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts
index 6031a580e64dc..ca4109961b51c 100644
--- a/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts
+++ b/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts
@@ -8,7 +8,7 @@
import { inspect } from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
function printArgs(args: any[]): string {
return args
diff --git a/packages/kbn-test/src/functional_test_runner/public_types.ts b/packages/kbn-test/src/functional_test_runner/public_types.ts
index 426fdda74d313..2d632b28d6e21 100644
--- a/packages/kbn-test/src/functional_test_runner/public_types.ts
+++ b/packages/kbn-test/src/functional_test_runner/public_types.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type { Config, Lifecycle, TestMetadata, DockerServersService, EsVersion } from './lib';
import type { Test, Suite } from './fake_mocha_types';
diff --git a/packages/kbn-test/src/functional_tests/cli/run_tests/args.js b/packages/kbn-test/src/functional_tests/cli/run_tests/args.js
index 20aa65df7299b..d94adcfe615a5 100644
--- a/packages/kbn-test/src/functional_tests/cli/run_tests/args.js
+++ b/packages/kbn-test/src/functional_tests/cli/run_tests/args.js
@@ -9,7 +9,7 @@
import { resolve } from 'path';
import dedent from 'dedent';
-import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils';
+import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log';
import { EsVersion } from '../../../functional_test_runner';
const options = {
diff --git a/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js b/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js
index 72ba541466960..888708a2b9d69 100644
--- a/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js
+++ b/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { displayHelp, processOptions } from './args';
diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/args.js b/packages/kbn-test/src/functional_tests/cli/start_servers/args.js
index d6b8054da3608..527e3ce64613d 100644
--- a/packages/kbn-test/src/functional_tests/cli/start_servers/args.js
+++ b/packages/kbn-test/src/functional_tests/cli/start_servers/args.js
@@ -9,7 +9,7 @@
import { resolve } from 'path';
import dedent from 'dedent';
-import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils';
+import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log';
const options = {
help: { desc: 'Display this menu and exit.' },
diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js b/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js
index 164cf36b915c7..7d6c77be2539e 100644
--- a/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js
+++ b/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js
@@ -7,7 +7,7 @@
*/
import { displayHelp, processOptions } from './args';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
expect.addSnapshotSerializer(createAbsolutePathSerializer(process.cwd()));
diff --git a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts
index 879eb8bec8cd0..adbb18b5312d0 100644
--- a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts
+++ b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts
@@ -7,7 +7,7 @@
*/
import { resolve } from 'path';
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import getPort from 'get-port';
import { KIBANA_ROOT } from './paths';
import type { Config } from '../../functional_test_runner';
diff --git a/packages/kbn-test/src/functional_tests/lib/run_ftr.ts b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts
index e339347b07eb5..6887a664d6657 100644
--- a/packages/kbn-test/src/functional_tests/lib/run_ftr.ts
+++ b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts
@@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import { FunctionalTestRunner, readConfigFile, EsVersion } from '../../functional_test_runner';
import { CliError } from './run_cli';
diff --git a/packages/kbn-test/src/functional_tests/tasks.ts b/packages/kbn-test/src/functional_tests/tasks.ts
index b1213ceef2905..8116fa25650a1 100644
--- a/packages/kbn-test/src/functional_tests/tasks.ts
+++ b/packages/kbn-test/src/functional_tests/tasks.ts
@@ -9,7 +9,9 @@
import { relative } from 'path';
import * as Rx from 'rxjs';
import { startWith, switchMap, take } from 'rxjs/operators';
-import { withProcRunner, ToolingLog, getTimeReporter } from '@kbn/dev-utils';
+import { withProcRunner } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { getTimeReporter } from '@kbn/ci-stats-reporter';
import { REPO_ROOT } from '@kbn/utils';
import dedent from 'dedent';
diff --git a/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts b/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts
index 94675d87a3a24..6294594ff6cf5 100644
--- a/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts
+++ b/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts
@@ -9,7 +9,8 @@
import * as Path from 'path';
import getopts from 'getopts';
-import { CiStatsReporter, ToolingLog, CiStatsReportTestsOptions } from '@kbn/dev-utils';
+import { CiStatsReporter, CiStatsReportTestsOptions } from '@kbn/ci-stats-reporter';
+import { ToolingLog } from '@kbn/tooling-log';
import type { Config } from '@jest/types';
import { BaseReporter, Test, TestResult } from '@jest/reporters';
import { ConsoleBuffer } from '@jest/console';
diff --git a/packages/kbn-test/src/jest/run.ts b/packages/kbn-test/src/jest/run.ts
index b8617317d6d9f..04e047d694502 100644
--- a/packages/kbn-test/src/jest/run.ts
+++ b/packages/kbn-test/src/jest/run.ts
@@ -21,7 +21,8 @@ import { resolve, relative, sep as osSep } from 'path';
import { existsSync } from 'fs';
import { run } from 'jest';
import { buildArgv } from 'jest-cli/build/cli';
-import { ToolingLog, getTimeReporter } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { getTimeReporter } from '@kbn/ci-stats-reporter';
import { REPO_ROOT } from '@kbn/utils';
import { map } from 'lodash';
diff --git a/packages/kbn-test/src/kbn_client/kbn_client.ts b/packages/kbn-test/src/kbn_client/kbn_client.ts
index e44f500593300..4abf272946e79 100644
--- a/packages/kbn-test/src/kbn_client/kbn_client.ts
+++ b/packages/kbn-test/src/kbn_client/kbn_client.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClientImportExport } from './kbn_client_import_export';
import { KbnClientPlugins } from './kbn_client_plugins';
diff --git a/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts b/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts
index 6da34228bbe7f..c63864857c253 100644
--- a/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts
+++ b/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts
@@ -12,7 +12,8 @@ import { existsSync } from 'fs';
import Path from 'path';
import FormData from 'form-data';
-import { ToolingLog, isAxiosResponseError, createFailError } from '@kbn/dev-utils';
+import { isAxiosResponseError, createFailError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import { KbnClientRequester, uriencode, ReqOptions } from './kbn_client_requester';
diff --git a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts
index c2e4247df1ab0..a57515474faf9 100644
--- a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts
+++ b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts
@@ -11,7 +11,8 @@ import Https from 'https';
import Qs from 'querystring';
import Axios, { AxiosResponse, ResponseType } from 'axios';
-import { ToolingLog, isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils';
+import { isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
const isConcliftOnGetError = (error: any) => {
return (
diff --git a/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts b/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts
index 97292b0268bc4..02640cd2b8268 100644
--- a/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts
+++ b/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts
@@ -10,7 +10,8 @@ import { inspect } from 'util';
import * as Rx from 'rxjs';
import { mergeMap } from 'rxjs/operators';
-import { ToolingLog, isAxiosResponseError, createFailError } from '@kbn/dev-utils';
+import { isAxiosResponseError, createFailError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClientRequester, uriencode } from './kbn_client_requester';
diff --git a/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts b/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts
index 7ea685667d48b..7be72e7b484ba 100644
--- a/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts
+++ b/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClientRequester, pathWithSpace } from './kbn_client_requester';
diff --git a/packages/kbn-tooling-log/BUILD.bazel b/packages/kbn-tooling-log/BUILD.bazel
new file mode 100644
index 0000000000000..a4953521171cb
--- /dev/null
+++ b/packages/kbn-tooling-log/BUILD.bazel
@@ -0,0 +1,118 @@
+load("@npm//@bazel/typescript:index.bzl", "ts_config")
+load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
+load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")
+
+PKG_DIRNAME = "kbn-tooling-log"
+PKG_REQUIRE_NAME = "@kbn/tooling-log"
+
+SOURCE_FILES = glob(
+ [
+ "src/**/*.ts",
+ ],
+ exclude = [
+ "**/*.test.*",
+ ],
+)
+
+SRCS = SOURCE_FILES
+
+filegroup(
+ name = "srcs",
+ srcs = SRCS,
+)
+
+NPM_MODULE_EXTRA_FILES = [
+ "package.json",
+]
+
+# In this array place runtime dependencies, including other packages and NPM packages
+# which must be available for this code to run.
+#
+# To reference other packages use:
+# "//repo/relative/path/to/package"
+# eg. "//packages/kbn-utils"
+#
+# To reference a NPM package use:
+# "@npm//name-of-package"
+# eg. "@npm//lodash"
+RUNTIME_DEPS = [
+ "@npm//rxjs",
+ "@npm//tslib",
+]
+
+# In this array place dependencies necessary to build the types, which will include the
+# :npm_module_types target of other packages and packages from NPM, including @types/*
+# packages.
+#
+# To reference the types for another package use:
+# "//repo/relative/path/to/package:npm_module_types"
+# eg. "//packages/kbn-utils:npm_module_types"
+#
+# References to NPM packages work the same as RUNTIME_DEPS
+TYPES_DEPS = [
+ "@npm//rxjs",
+ "@npm//tslib",
+ "@npm//@types/node",
+ "@npm//@types/jest",
+]
+
+jsts_transpiler(
+ name = "target_node",
+ srcs = SRCS,
+ build_pkg_name = package_name(),
+)
+
+ts_config(
+ name = "tsconfig",
+ src = "tsconfig.json",
+ deps = [
+ "//:tsconfig.base.json",
+ "//:tsconfig.bazel.json",
+ ],
+)
+
+ts_project(
+ name = "tsc_types",
+ args = ['--pretty'],
+ srcs = SRCS,
+ deps = TYPES_DEPS,
+ declaration = True,
+ emit_declaration_only = True,
+ out_dir = "target_types",
+ root_dir = "src",
+ tsconfig = ":tsconfig",
+)
+
+js_library(
+ name = PKG_DIRNAME,
+ srcs = NPM_MODULE_EXTRA_FILES,
+ deps = RUNTIME_DEPS + [":target_node"],
+ package_name = PKG_REQUIRE_NAME,
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm(
+ name = "npm_module",
+ deps = [":" + PKG_DIRNAME],
+)
+
+filegroup(
+ name = "build",
+ srcs = [":npm_module"],
+ visibility = ["//visibility:public"],
+)
+
+pkg_npm_types(
+ name = "npm_module_types",
+ srcs = SRCS,
+ deps = [":tsc_types"],
+ package_name = PKG_REQUIRE_NAME,
+ tsconfig = ":tsconfig",
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
+ name = "build_types",
+ srcs = [":npm_module_types"],
+ visibility = ["//visibility:public"],
+)
diff --git a/packages/kbn-tooling-log/README.md b/packages/kbn-tooling-log/README.md
new file mode 100644
index 0000000000000..d0cef9945d3a7
--- /dev/null
+++ b/packages/kbn-tooling-log/README.md
@@ -0,0 +1,3 @@
+# @kbn/tooling-log
+
+Empty package generated by @kbn/generate
diff --git a/packages/kbn-tooling-log/jest.config.js b/packages/kbn-tooling-log/jest.config.js
new file mode 100644
index 0000000000000..0aee29901d2a5
--- /dev/null
+++ b/packages/kbn-tooling-log/jest.config.js
@@ -0,0 +1,13 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+module.exports = {
+ preset: '@kbn/test/jest_node',
+ rootDir: '../..',
+ roots: ['/packages/kbn-tooling-log'],
+};
diff --git a/packages/kbn-tooling-log/package.json b/packages/kbn-tooling-log/package.json
new file mode 100644
index 0000000000000..53137ddf6366e
--- /dev/null
+++ b/packages/kbn-tooling-log/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@kbn/tooling-log",
+ "private": true,
+ "version": "1.0.0",
+ "main": "./target_node/index.js",
+ "license": "SSPL-1.0 OR Elastic License 2.0",
+ "kibana": {
+ "devOnly": true
+ }
+}
diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap b/packages/kbn-tooling-log/src/__snapshots__/log_levels.test.ts.snap
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap
rename to packages/kbn-tooling-log/src/__snapshots__/log_levels.test.ts.snap
diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log.test.ts.snap b/packages/kbn-tooling-log/src/__snapshots__/tooling_log.test.ts.snap
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log.test.ts.snap
rename to packages/kbn-tooling-log/src/__snapshots__/tooling_log.test.ts.snap
diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap b/packages/kbn-tooling-log/src/__snapshots__/tooling_log_text_writer.test.ts.snap
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap
rename to packages/kbn-tooling-log/src/__snapshots__/tooling_log_text_writer.test.ts.snap
diff --git a/packages/kbn-dev-utils/src/tooling_log/index.ts b/packages/kbn-tooling-log/src/index.ts
similarity index 85%
rename from packages/kbn-dev-utils/src/tooling_log/index.ts
rename to packages/kbn-tooling-log/src/index.ts
index 2c7216c87c419..47ac551d76f66 100644
--- a/packages/kbn-dev-utils/src/tooling_log/index.ts
+++ b/packages/kbn-tooling-log/src/index.ts
@@ -11,7 +11,13 @@ export type { ToolingLogOptions } from './tooling_log';
export type { ToolingLogTextWriterConfig } from './tooling_log_text_writer';
export { ToolingLogTextWriter } from './tooling_log_text_writer';
export type { LogLevel, ParsedLogLevel } from './log_levels';
-export { pickLevelFromFlags, parseLogLevel } from './log_levels';
+export {
+ DEFAULT_LOG_LEVEL,
+ LOG_LEVEL_FLAGS,
+ pickLevelFromFlags,
+ parseLogLevel,
+ getLogLevelFlagsHelp,
+} from './log_levels';
export { ToolingLogCollectingWriter } from './tooling_log_collecting_writer';
export type { Writer } from './writer';
export type { Message } from './message';
diff --git a/packages/kbn-dev-utils/src/tooling_log/log_levels.test.ts b/packages/kbn-tooling-log/src/log_levels.test.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/log_levels.test.ts
rename to packages/kbn-tooling-log/src/log_levels.test.ts
diff --git a/packages/kbn-dev-utils/src/tooling_log/log_levels.ts b/packages/kbn-tooling-log/src/log_levels.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/log_levels.ts
rename to packages/kbn-tooling-log/src/log_levels.ts
diff --git a/packages/kbn-dev-utils/src/tooling_log/message.ts b/packages/kbn-tooling-log/src/message.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/message.ts
rename to packages/kbn-tooling-log/src/message.ts
diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts b/packages/kbn-tooling-log/src/tooling_log.test.ts
similarity index 98%
rename from packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts
rename to packages/kbn-tooling-log/src/tooling_log.test.ts
index 54ac750332c5f..022d56c1731cf 100644
--- a/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts
+++ b/packages/kbn-tooling-log/src/tooling_log.test.ts
@@ -9,11 +9,12 @@
import * as Rx from 'rxjs';
import { toArray, takeUntil } from 'rxjs/operators';
+import { createStripAnsiSerializer } from '@kbn/jest-serializers';
+
import { ToolingLog } from './tooling_log';
import { Writer } from './writer';
import { ToolingLogTextWriter } from './tooling_log_text_writer';
import { ToolingLogCollectingWriter } from './tooling_log_collecting_writer';
-import { createStripAnsiSerializer } from '../serializers/strip_ansi_serializer';
import { lastValueFrom } from 'rxjs';
expect.addSnapshotSerializer(createStripAnsiSerializer());
diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log.ts b/packages/kbn-tooling-log/src/tooling_log.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/tooling_log.ts
rename to packages/kbn-tooling-log/src/tooling_log.ts
diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts b/packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts
rename to packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts
diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.test.ts b/packages/kbn-tooling-log/src/tooling_log_text_writer.test.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.test.ts
rename to packages/kbn-tooling-log/src/tooling_log_text_writer.test.ts
diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts b/packages/kbn-tooling-log/src/tooling_log_text_writer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts
rename to packages/kbn-tooling-log/src/tooling_log_text_writer.ts
diff --git a/packages/kbn-dev-utils/src/tooling_log/writer.ts b/packages/kbn-tooling-log/src/writer.ts
similarity index 100%
rename from packages/kbn-dev-utils/src/tooling_log/writer.ts
rename to packages/kbn-tooling-log/src/writer.ts
diff --git a/packages/kbn-tooling-log/tsconfig.json b/packages/kbn-tooling-log/tsconfig.json
new file mode 100644
index 0000000000000..a8cfc2cceb08b
--- /dev/null
+++ b/packages/kbn-tooling-log/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tsconfig.bazel.json",
+ "compilerOptions": {
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "outDir": "target_types",
+ "rootDir": "src",
+ "stripInternal": false,
+ "types": [
+ "jest",
+ "node"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
diff --git a/src/cli_plugin/install/settings.test.js b/src/cli_plugin/install/settings.test.js
index c7985763524ed..b0accc83971e3 100644
--- a/src/cli_plugin/install/settings.test.js
+++ b/src/cli_plugin/install/settings.test.js
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { fromRoot } from '@kbn/utils';
import { parseMilliseconds, parse } from './settings';
diff --git a/src/cli_plugin/remove/settings.test.js b/src/cli_plugin/remove/settings.test.js
index ef96bc496d8ce..f369e3e3a1f2f 100644
--- a/src/cli_plugin/remove/settings.test.js
+++ b/src/cli_plugin/remove/settings.test.js
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { parse } from './settings';
diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts
index 7c6938bdde224..e22a6f09edd18 100644
--- a/src/core/server/plugins/plugins_service.test.ts
+++ b/src/core/server/plugins/plugins_service.test.ts
@@ -11,7 +11,7 @@ import { mockDiscover, mockPackage } from './plugins_service.test.mocks';
import { resolve, join } from 'path';
import { BehaviorSubject, from } from 'rxjs';
import { schema } from '@kbn/config-schema';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { REPO_ROOT } from '@kbn/utils';
import { ConfigPath, ConfigService, Env } from '../config';
diff --git a/src/core/test_helpers/kbn_server.ts b/src/core/test_helpers/kbn_server.ts
index 87026fc3fb9b2..c2eca55e59a9e 100644
--- a/src/core/test_helpers/kbn_server.ts
+++ b/src/core/test_helpers/kbn_server.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import {
createTestEsCluster,
diff --git a/src/dev/build/README.md b/src/dev/build/README.md
index 2bf3fbd4bd4f5..776cdf4e4d8d0 100644
--- a/src/dev/build/README.md
+++ b/src/dev/build/README.md
@@ -36,7 +36,7 @@ The majority of this logic is extracted from the legacy grunt build, and is desi
**Platform**: [lib/platform.js] defines the Platform objects, which define the different platforms we build for. Use `config.getTargetPlatforms()` to get the list of platforms we are targeting in this build, `config.getNodePlatforms()` to get the list of platform we will download node for, or `config.getPlatform` to get a specific platform and architecture.
-**Log**: We uses the `ToolingLog` defined in [../tooling_log/tooling_log.js]
+**Log**: We use the `ToolingLog` defined in [@kbn/tooling-log]
**Runner**: [lib/runner.js] defines the runner used to execute tasks. It calls tasks with specific arguments based on whether they are global or not.
@@ -48,4 +48,4 @@ The majority of this logic is extracted from the legacy grunt build, and is desi
[lib/runner.js]: ./lib/runner.js
[lib/build.js]: ./lib/build.js
[build_distributables.js]: ./build_distributables.js
-[../tooling_log/tooling_log.js]: ../tooling_log/tooling_log.js
+[@kbn/tooling-log]: ../../../packages/kbn-tooling-log
diff --git a/src/dev/build/args.test.ts b/src/dev/build/args.test.ts
index d01a73f08395b..6361b6b618b11 100644
--- a/src/dev/build/args.test.ts
+++ b/src/dev/build/args.test.ts
@@ -6,7 +6,8 @@
* Side Public License, v 1.
*/
-import { ToolingLog, createAnyInstanceSerializer } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { createAnyInstanceSerializer } from '@kbn/jest-serializers';
import { readCliArgs } from './args';
diff --git a/src/dev/build/args.ts b/src/dev/build/args.ts
index d1b094e97fdc5..42274cda867a7 100644
--- a/src/dev/build/args.ts
+++ b/src/dev/build/args.ts
@@ -7,7 +7,7 @@
*/
import getopts from 'getopts';
-import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils';
+import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log';
import { BuildOptions } from './build_distributables';
diff --git a/src/dev/build/build_distributables.ts b/src/dev/build/build_distributables.ts
index f8df9ec61609d..3ec908756c9cf 100644
--- a/src/dev/build/build_distributables.ts
+++ b/src/dev/build/build_distributables.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Config, createRunner, Task, GlobalTask } from './lib';
import * as Tasks from './tasks';
diff --git a/src/dev/build/lib/build.test.ts b/src/dev/build/lib/build.test.ts
index 176006167ca44..e8d5331439916 100644
--- a/src/dev/build/lib/build.test.ts
+++ b/src/dev/build/lib/build.test.ts
@@ -7,7 +7,7 @@
*/
import { REPO_ROOT } from '@kbn/utils';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { Config } from './config';
import { Build } from './build';
diff --git a/src/dev/build/lib/config.test.ts b/src/dev/build/lib/config.test.ts
index 67b29ba27ee5c..0e373bb8794c3 100644
--- a/src/dev/build/lib/config.test.ts
+++ b/src/dev/build/lib/config.test.ts
@@ -9,7 +9,7 @@
import { resolve } from 'path';
import { REPO_ROOT, kibanaPackageJson } from '@kbn/utils';
-import { createAbsolutePathSerializer } from '@kbn/dev-utils';
+import { createAbsolutePathSerializer } from '@kbn/jest-serializers';
import { Config } from './config';
diff --git a/src/dev/build/lib/download.ts b/src/dev/build/lib/download.ts
index cb569e8e738ae..d39cb7d77f961 100644
--- a/src/dev/build/lib/download.ts
+++ b/src/dev/build/lib/download.ts
@@ -13,7 +13,8 @@ import { setTimeout } from 'timers/promises';
import chalk from 'chalk';
import { createHash } from 'crypto';
import Axios from 'axios';
-import { ToolingLog, isAxiosResponseError } from '@kbn/dev-utils';
+import { isAxiosResponseError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
// https://github.com/axios/axios/tree/ffea03453f77a8176c51554d5f6c3c6829294649/lib/adapters
// @ts-expect-error untyped internal module used to prevent axios from using xhr adapter in tests
diff --git a/src/dev/build/lib/exec.test.ts b/src/dev/build/lib/exec.test.ts
index 97e7f2607ea4c..614ae8bdca349 100644
--- a/src/dev/build/lib/exec.test.ts
+++ b/src/dev/build/lib/exec.test.ts
@@ -8,12 +8,8 @@
import Path from 'path';
-import {
- ToolingLog,
- ToolingLogCollectingWriter,
- createStripAnsiSerializer,
- createRecursiveSerializer,
-} from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createStripAnsiSerializer, createRecursiveSerializer } from '@kbn/jest-serializers';
import { exec } from './exec';
diff --git a/src/dev/build/lib/exec.ts b/src/dev/build/lib/exec.ts
index 2418c6145e5c2..ae89c23255e4b 100644
--- a/src/dev/build/lib/exec.ts
+++ b/src/dev/build/lib/exec.ts
@@ -8,7 +8,7 @@
import execa from 'execa';
import chalk from 'chalk';
-import { ToolingLog, LogLevel } from '@kbn/dev-utils';
+import { ToolingLog, LogLevel } from '@kbn/tooling-log';
import { watchStdioForLine } from './watch_stdio_for_line';
diff --git a/src/dev/build/lib/fs.ts b/src/dev/build/lib/fs.ts
index 47b98c9cc398a..1239ad60f145d 100644
--- a/src/dev/build/lib/fs.ts
+++ b/src/dev/build/lib/fs.ts
@@ -19,7 +19,7 @@ import File from 'vinyl';
import del from 'del';
import deleteEmpty from 'delete-empty';
import tar, { ExtractOptions } from 'tar';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
const pipelineAsync = promisify(pipeline);
const mkdirAsync = promisify(fs.mkdir);
diff --git a/src/dev/build/lib/integration_tests/download.test.ts b/src/dev/build/lib/integration_tests/download.test.ts
index 26e374fa102db..4c5b7025da098 100644
--- a/src/dev/build/lib/integration_tests/download.test.ts
+++ b/src/dev/build/lib/integration_tests/download.test.ts
@@ -13,12 +13,8 @@ import { readFileSync } from 'fs';
import del from 'del';
import { CI_PARALLEL_PROCESS_PREFIX } from '@kbn/test';
-import {
- ToolingLog,
- ToolingLogCollectingWriter,
- createStripAnsiSerializer,
- createReplaceSerializer,
-} from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createStripAnsiSerializer, createReplaceSerializer } from '@kbn/jest-serializers';
import { mkdirp } from '../fs';
import { downloadToDisk, downloadToString } from '../download';
diff --git a/src/dev/build/lib/runner.test.ts b/src/dev/build/lib/runner.test.ts
index 17dcb8e1e4b24..7e2c29c3c0c98 100644
--- a/src/dev/build/lib/runner.test.ts
+++ b/src/dev/build/lib/runner.test.ts
@@ -6,12 +6,8 @@
* Side Public License, v 1.
*/
-import {
- ToolingLog,
- ToolingLogCollectingWriter,
- createStripAnsiSerializer,
- createRecursiveSerializer,
-} from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createStripAnsiSerializer, createRecursiveSerializer } from '@kbn/jest-serializers';
import { Config } from './config';
import { createRunner } from './runner';
import { Build } from './build';
diff --git a/src/dev/build/lib/runner.ts b/src/dev/build/lib/runner.ts
index e12f7d24cfc49..416f6ae584b3f 100644
--- a/src/dev/build/lib/runner.ts
+++ b/src/dev/build/lib/runner.ts
@@ -7,7 +7,7 @@
*/
import chalk from 'chalk';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { isErrorLogged, markErrorLogged } from './errors';
import { Build } from './build';
@@ -67,7 +67,7 @@ export function createRunner({ config, log }: Options) {
/**
* Run a task by calling its `run()` method with three arguments:
* `config`: an object with methods for determining top-level config values, see `./config.js`
- * `log`: an instance of the `ToolingLog`, see `../../tooling_log/tooling_log.js`
+ * `log`: an instance of the `ToolingLog`
* `builds?`: If task does is not defined as `global: true` then it is called for each build and passed each one here.
*/
return async function run(task: Task | GlobalTask) {
diff --git a/src/dev/build/tasks/build_kibana_platform_plugins.ts b/src/dev/build/tasks/build_kibana_platform_plugins.ts
index aa9101abb507f..ffb73666e4468 100644
--- a/src/dev/build/tasks/build_kibana_platform_plugins.ts
+++ b/src/dev/build/tasks/build_kibana_platform_plugins.ts
@@ -10,7 +10,7 @@ import Path from 'path';
import { REPO_ROOT } from '@kbn/utils';
import { lastValueFrom } from 'rxjs';
-import { CiStatsMetric } from '@kbn/dev-utils';
+import { CiStatsMetric } from '@kbn/ci-stats-reporter';
import {
runOptimizer,
OptimizerConfig,
diff --git a/src/dev/build/tasks/create_archives_task.ts b/src/dev/build/tasks/create_archives_task.ts
index 37c4becae76a8..e9a6b23a3f351 100644
--- a/src/dev/build/tasks/create_archives_task.ts
+++ b/src/dev/build/tasks/create_archives_task.ts
@@ -10,7 +10,7 @@ import Path from 'path';
import Fs from 'fs';
import { promisify } from 'util';
-import { CiStatsMetric } from '@kbn/dev-utils';
+import { CiStatsMetric } from '@kbn/ci-stats-reporter';
import { mkdirp, compressTar, compressZip, Task } from '../lib';
diff --git a/src/dev/build/tasks/generate_packages_optimized_assets.ts b/src/dev/build/tasks/generate_packages_optimized_assets.ts
index c8f215ad7632b..8469a769d8c0b 100644
--- a/src/dev/build/tasks/generate_packages_optimized_assets.ts
+++ b/src/dev/build/tasks/generate_packages_optimized_assets.ts
@@ -19,7 +19,7 @@ import gulpGzip from 'gulp-gzip';
import gulpPostCSS from 'gulp-postcss';
// @ts-expect-error
import gulpTerser from 'gulp-terser';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import terser from 'terser';
import vfs from 'vinyl-fs';
import globby from 'globby';
diff --git a/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts
index ffcf8f7644620..20128c05033de 100644
--- a/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts
+++ b/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts
@@ -6,11 +6,8 @@
* Side Public License, v 1.
*/
-import {
- ToolingLog,
- ToolingLogCollectingWriter,
- createAnyInstanceSerializer,
-} from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createAnyInstanceSerializer } from '@kbn/jest-serializers';
import { Config, Platform } from '../../lib';
import { DownloadNodeBuilds } from './download_node_builds_task';
diff --git a/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts
index b8992bf6e590b..bb417cef3d990 100644
--- a/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts
+++ b/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts
@@ -10,12 +10,8 @@ import { readFileSync } from 'fs';
import Path from 'path';
import { REPO_ROOT } from '@kbn/utils';
-import {
- ToolingLog,
- ToolingLogCollectingWriter,
- createAbsolutePathSerializer,
- createRecursiveSerializer,
-} from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createAbsolutePathSerializer, createRecursiveSerializer } from '@kbn/jest-serializers';
import { Config } from '../../lib';
import { ExtractNodeBuilds } from './extract_node_builds_task';
diff --git a/src/dev/build/tasks/nodejs/node_shasums.test.ts b/src/dev/build/tasks/nodejs/node_shasums.test.ts
index 20d1f297b9ae0..fc888851946e2 100644
--- a/src/dev/build/tasks/nodejs/node_shasums.test.ts
+++ b/src/dev/build/tasks/nodejs/node_shasums.test.ts
@@ -56,7 +56,7 @@ jest.mock('../../lib/download', () => ({
},
}));
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { getNodeShasums } from './node_shasums';
describe('src/dev/build/tasks/nodejs/node_shasums', () => {
diff --git a/src/dev/build/tasks/nodejs/node_shasums.ts b/src/dev/build/tasks/nodejs/node_shasums.ts
index ca588352ce7bb..850e28d5d3ead 100644
--- a/src/dev/build/tasks/nodejs/node_shasums.ts
+++ b/src/dev/build/tasks/nodejs/node_shasums.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { downloadToString } from '../../lib/download';
export async function getNodeShasums(log: ToolingLog, nodeVersion: string) {
diff --git a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts
index 96d8b7cc6336f..5f495bf3b168f 100644
--- a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts
+++ b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts
@@ -10,12 +10,8 @@ import Path from 'path';
import Fs from 'fs';
import { REPO_ROOT } from '@kbn/utils';
-import {
- ToolingLog,
- ToolingLogCollectingWriter,
- createAnyInstanceSerializer,
- createRecursiveSerializer,
-} from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createAnyInstanceSerializer, createRecursiveSerializer } from '@kbn/jest-serializers';
import { Config, Platform } from '../../lib';
import { VerifyExistingNodeBuilds } from './verify_existing_node_builds_task';
diff --git a/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts b/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts
index 9dfff321fc7a2..7f092f399c8ed 100644
--- a/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts
+++ b/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts
@@ -10,7 +10,7 @@ import { resolve } from 'path';
import { readFileSync } from 'fs';
import { copyFile } from 'fs/promises';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import Mustache from 'mustache';
diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts
index c406fe47c1542..264c6e52db0eb 100644
--- a/src/dev/build/tasks/os_packages/docker_generator/run.ts
+++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts
@@ -10,7 +10,7 @@ import { access, link, unlink, chmod } from 'fs';
import { resolve, basename } from 'path';
import { promisify } from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { kibanaPackageJson } from '@kbn/utils';
import { write, copyAll, mkdirp, exec, Config, Build } from '../../../lib';
diff --git a/src/dev/build/tasks/os_packages/run_fpm.ts b/src/dev/build/tasks/os_packages/run_fpm.ts
index 9c3f370ba7e98..d7c0e5f9ac0e1 100644
--- a/src/dev/build/tasks/os_packages/run_fpm.ts
+++ b/src/dev/build/tasks/os_packages/run_fpm.ts
@@ -8,7 +8,7 @@
import { resolve } from 'path';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { exec, Config, Build } from '../../lib';
diff --git a/src/dev/build/tasks/patch_native_modules_task.ts b/src/dev/build/tasks/patch_native_modules_task.ts
index 4bdb5ba7284ee..1c1bebfa86c0e 100644
--- a/src/dev/build/tasks/patch_native_modules_task.ts
+++ b/src/dev/build/tasks/patch_native_modules_task.ts
@@ -8,7 +8,7 @@
import path from 'path';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import {
deleteAll,
diff --git a/src/dev/chromium_version.ts b/src/dev/chromium_version.ts
index eab787a4bd008..0af4c9c2441f1 100644
--- a/src/dev/chromium_version.ts
+++ b/src/dev/chromium_version.ts
@@ -6,7 +6,8 @@
* Side Public License, v 1.
*/
-import { run, ToolingLog } from '@kbn/dev-utils';
+import { run } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import chalk from 'chalk';
import cheerio from 'cheerio';
diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js
index d8b67b677ae1b..8ec97d3fbd385 100644
--- a/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js
+++ b/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js
@@ -7,7 +7,7 @@
*/
import { enumeratePatterns } from '../team_assignment/enumerate_patterns';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
const log = new ToolingLog({
diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js
index 5e33f2ba548aa..266a38dc38e71 100644
--- a/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js
+++ b/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js
@@ -14,7 +14,7 @@ import {
teamAssignment,
last,
} from '../transforms';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
describe(`Transform fns`, () => {
describe(`ciRunUrl`, () => {
diff --git a/src/dev/eslint/lint_files.ts b/src/dev/eslint/lint_files.ts
index 5c6118edeb2ec..d74e3cafc8de6 100644
--- a/src/dev/eslint/lint_files.ts
+++ b/src/dev/eslint/lint_files.ts
@@ -9,7 +9,8 @@
import { CLIEngine } from 'eslint';
import { REPO_ROOT } from '@kbn/utils';
-import { createFailError, ToolingLog } from '@kbn/dev-utils';
+import { createFailError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { File } from '../file';
/**
diff --git a/src/dev/eslint/pick_files_to_lint.ts b/src/dev/eslint/pick_files_to_lint.ts
index 0fd3ab926e14e..c65f4e6343787 100644
--- a/src/dev/eslint/pick_files_to_lint.ts
+++ b/src/dev/eslint/pick_files_to_lint.ts
@@ -8,7 +8,7 @@
import { CLIEngine } from 'eslint';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { File } from '../file';
/**
diff --git a/src/dev/github/search_and_save_pr_list.ts b/src/dev/github/search_and_save_pr_list.ts
index 1c6dbc6c99746..ff5ae8fb67bcc 100644
--- a/src/dev/github/search_and_save_pr_list.ts
+++ b/src/dev/github/search_and_save_pr_list.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { Octokit } from '@octokit/rest';
import fs from 'fs';
diff --git a/src/dev/i18n/integrate_locale_files.ts b/src/dev/i18n/integrate_locale_files.ts
index 773f7659eb082..65558c4624064 100644
--- a/src/dev/i18n/integrate_locale_files.ts
+++ b/src/dev/i18n/integrate_locale_files.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { i18n } from '@kbn/i18n';
import path from 'path';
diff --git a/src/dev/i18n/tasks/check_compatibility.ts b/src/dev/i18n/tasks/check_compatibility.ts
index cf8a294d8a405..b6b94a5aba666 100644
--- a/src/dev/i18n/tasks/check_compatibility.ts
+++ b/src/dev/i18n/tasks/check_compatibility.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { integrateLocaleFiles, I18nConfig } from '..';
export interface I18nFlags {
diff --git a/src/dev/notice/cli.js b/src/dev/notice/cli.js
index 67aae0d5913bc..8aece9f51d9e6 100644
--- a/src/dev/notice/cli.js
+++ b/src/dev/notice/cli.js
@@ -12,7 +12,7 @@ import { resolve } from 'path';
import getopts from 'getopts';
import dedent from 'dedent';
import { REPO_ROOT } from '@kbn/utils';
-import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils';
+import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log';
import { generateNoticeFromSource } from './generate_notice_from_source';
diff --git a/src/dev/notice/generate_notice_from_source.ts b/src/dev/notice/generate_notice_from_source.ts
index fc2da1c4fc7dc..8d162154bc5f0 100644
--- a/src/dev/notice/generate_notice_from_source.ts
+++ b/src/dev/notice/generate_notice_from_source.ts
@@ -7,7 +7,7 @@
*/
import vfs from 'vinyl-fs';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
const NOTICE_COMMENT_RE = /\/\*[\s\n\*]*@notice([\w\W]+?)\*\//g;
const NEWLINE_RE = /\r?\n/g;
diff --git a/src/dev/run_check_published_api_changes.ts b/src/dev/run_check_published_api_changes.ts
index 452922ac56bcd..7ca27e51dd4b5 100644
--- a/src/dev/run_check_published_api_changes.ts
+++ b/src/dev/run_check_published_api_changes.ts
@@ -6,7 +6,8 @@
* Side Public License, v 1.
*/
-import { ToolingLog, getTimeReporter } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { getTimeReporter } from '@kbn/ci-stats-reporter';
import {
Extractor,
IConfigFile,
diff --git a/src/dev/run_i18n_check.ts b/src/dev/run_i18n_check.ts
index 8aa93d33f60fd..074fd47d95683 100644
--- a/src/dev/run_i18n_check.ts
+++ b/src/dev/run_i18n_check.ts
@@ -9,7 +9,9 @@
import chalk from 'chalk';
import Listr from 'listr';
-import { createFailError, run, ToolingLog, getTimeReporter } from '@kbn/dev-utils';
+import { createFailError, run } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
+import { getTimeReporter } from '@kbn/ci-stats-reporter';
import { ErrorReporter, I18nConfig } from './i18n';
import {
extractDefaultMessages,
diff --git a/src/dev/storybook/commands/clean.ts b/src/dev/storybook/commands/clean.ts
index e770939765991..2688ef4bcdb74 100644
--- a/src/dev/storybook/commands/clean.ts
+++ b/src/dev/storybook/commands/clean.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import { join } from 'path';
import del from 'del';
diff --git a/src/dev/typescript/build_ts_refs.ts b/src/dev/typescript/build_ts_refs.ts
index f3896cf676e27..9640e0951965b 100644
--- a/src/dev/typescript/build_ts_refs.ts
+++ b/src/dev/typescript/build_ts_refs.ts
@@ -8,7 +8,8 @@
import Path from 'path';
-import { ToolingLog, ProcRunner } from '@kbn/dev-utils';
+import { ProcRunner } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import { ROOT_REFS_CONFIG_PATH } from './root_refs_config';
diff --git a/src/dev/typescript/ref_output_cache/archives.ts b/src/dev/typescript/ref_output_cache/archives.ts
index 4db4022180997..882315b919031 100644
--- a/src/dev/typescript/ref_output_cache/archives.ts
+++ b/src/dev/typescript/ref_output_cache/archives.ts
@@ -12,7 +12,7 @@ import Path from 'path';
import { promisify } from 'util';
import { pipeline } from 'stream';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import Axios from 'axios';
import del from 'del';
diff --git a/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts b/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts
index 60ba3a4f659b3..b7dc6d28b78ee 100644
--- a/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts
+++ b/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts
@@ -12,13 +12,12 @@ import { Readable } from 'stream';
import del from 'del';
import cpy from 'cpy';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
import {
- ToolingLog,
createAbsolutePathSerializer,
createRecursiveSerializer,
- ToolingLogCollectingWriter,
createStripAnsiSerializer,
-} from '@kbn/dev-utils';
+} from '@kbn/jest-serializers';
expect.addSnapshotSerializer(createAbsolutePathSerializer());
expect.addSnapshotSerializer(createStripAnsiSerializer());
diff --git a/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts b/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts
index 370ef9d17a04e..a44d309cb9ddd 100644
--- a/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts
+++ b/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts
@@ -13,12 +13,8 @@ import del from 'del';
import cpy from 'cpy';
import globby from 'globby';
import normalize from 'normalize-path';
-import {
- ToolingLog,
- createAbsolutePathSerializer,
- createStripAnsiSerializer,
- ToolingLogCollectingWriter,
-} from '@kbn/dev-utils';
+import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log';
+import { createAbsolutePathSerializer, createStripAnsiSerializer } from '@kbn/jest-serializers';
import { RefOutputCache, OUTDIR_MERGE_BASE_FILENAME } from '../ref_output_cache';
import { Archives } from '../archives';
diff --git a/src/dev/typescript/ref_output_cache/ref_output_cache.ts b/src/dev/typescript/ref_output_cache/ref_output_cache.ts
index 32b08ec1ba0df..80d2a6052000b 100644
--- a/src/dev/typescript/ref_output_cache/ref_output_cache.ts
+++ b/src/dev/typescript/ref_output_cache/ref_output_cache.ts
@@ -9,7 +9,8 @@
import Path from 'path';
import Fs from 'fs/promises';
-import { ToolingLog, extract } from '@kbn/dev-utils';
+import { extract } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { kibanaPackageJson } from '@kbn/utils';
import del from 'del';
import tempy from 'tempy';
diff --git a/src/dev/typescript/ref_output_cache/repo_info.ts b/src/dev/typescript/ref_output_cache/repo_info.ts
index 0bba010bc185d..ab6470e5b1401 100644
--- a/src/dev/typescript/ref_output_cache/repo_info.ts
+++ b/src/dev/typescript/ref_output_cache/repo_info.ts
@@ -9,7 +9,7 @@
import Path from 'path';
import execa from 'execa';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
export class RepoInfo {
constructor(
diff --git a/src/dev/typescript/root_refs_config.ts b/src/dev/typescript/root_refs_config.ts
index e20b1ab46cd82..dc06a53988ab4 100644
--- a/src/dev/typescript/root_refs_config.ts
+++ b/src/dev/typescript/root_refs_config.ts
@@ -10,7 +10,7 @@ import Path from 'path';
import Fs from 'fs/promises';
import dedent from 'dedent';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import normalize from 'normalize-path';
diff --git a/test/common/services/randomness.ts b/test/common/services/randomness.ts
index 82f06fb681066..c799c34539f15 100644
--- a/test/common/services/randomness.ts
+++ b/test/common/services/randomness.ts
@@ -7,7 +7,7 @@
*/
import Chance from 'chance';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { FtrService } from '../ftr_provider_context';
diff --git a/test/common/services/retry/retry_for_success.ts b/test/common/services/retry/retry_for_success.ts
index ed2ff480db20d..8b131db4c05e5 100644
--- a/test/common/services/retry/retry_for_success.ts
+++ b/test/common/services/retry/retry_for_success.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { inspect } from 'util';
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
diff --git a/test/common/services/retry/retry_for_truthy.ts b/test/common/services/retry/retry_for_truthy.ts
index 6bee196fa9597..dca9c3f2c02cf 100644
--- a/test/common/services/retry/retry_for_truthy.ts
+++ b/test/common/services/retry/retry_for_truthy.ts
@@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { retryForSuccess } from './retry_for_success';
diff --git a/test/common/services/saved_object_info/saved_object_info.ts b/test/common/services/saved_object_info/saved_object_info.ts
index 3442efcc98438..a1b98cbd408bf 100644
--- a/test/common/services/saved_object_info/saved_object_info.ts
+++ b/test/common/services/saved_object_info/saved_object_info.ts
@@ -12,7 +12,7 @@ import { Either, fromNullable, chain, getOrElse, toError } from 'fp-ts/Either';
import { flow, pipe } from 'fp-ts/function';
import * as TE from 'fp-ts/lib/TaskEither';
import * as T from 'fp-ts/lib/Task';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { FtrService } from '../../ftr_provider_context';
import { print } from './utils';
diff --git a/test/common/services/saved_object_info/utils.ts b/test/common/services/saved_object_info/utils.ts
index f007710f2b14b..24a63dd60636d 100644
--- a/test/common/services/saved_object_info/utils.ts
+++ b/test/common/services/saved_object_info/utils.ts
@@ -7,7 +7,8 @@
*/
import { inspect } from 'util';
-import { createFlagError, ToolingLog } from '@kbn/dev-utils';
+import { createFlagError } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
interface ResolvedPayload {
xs: any;
diff --git a/test/common/services/security/role.ts b/test/common/services/security/role.ts
index 98cf597fc76d4..51b50a5dda82f 100644
--- a/test/common/services/security/role.ts
+++ b/test/common/services/security/role.ts
@@ -7,7 +7,7 @@
*/
import util from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
export class Role {
diff --git a/test/common/services/security/role_mappings.ts b/test/common/services/security/role_mappings.ts
index af9204866ad47..6dad4dec41d78 100644
--- a/test/common/services/security/role_mappings.ts
+++ b/test/common/services/security/role_mappings.ts
@@ -7,7 +7,7 @@
*/
import util from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
export class RoleMappings {
diff --git a/test/common/services/security/system_indices_user.ts b/test/common/services/security/system_indices_user.ts
index 091621207a671..9bfaddd9f0306 100644
--- a/test/common/services/security/system_indices_user.ts
+++ b/test/common/services/security/system_indices_user.ts
@@ -7,7 +7,7 @@
*/
import { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import {
systemIndicesSuperuser,
createEsClientForFtrConfig,
diff --git a/test/common/services/security/user.ts b/test/common/services/security/user.ts
index d6813105ecbf6..8276834fd519c 100644
--- a/test/common/services/security/user.ts
+++ b/test/common/services/security/user.ts
@@ -7,7 +7,7 @@
*/
import util from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
export class User {
diff --git a/test/functional/services/lib/compare_pngs.ts b/test/functional/services/lib/compare_pngs.ts
index 5fb0c4d6ad1dc..7a48bd9e4c6fd 100644
--- a/test/functional/services/lib/compare_pngs.ts
+++ b/test/functional/services/lib/compare_pngs.ts
@@ -8,7 +8,7 @@
import { parse, join } from 'path';
import Jimp from 'jimp';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { promises as fs } from 'fs';
import path from 'path';
diff --git a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts
index ae03721a6e7b8..1a35f7c39aa28 100644
--- a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts
+++ b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts
@@ -11,7 +11,7 @@ import { WebElement, WebDriver, By, Key } from 'selenium-webdriver';
import { PNG } from 'pngjs';
import cheerio from 'cheerio';
import testSubjSelector from '@kbn/test-subj-selector';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { CustomCheerio, CustomCheerioStatic } from './custom_cheerio_api';
// @ts-ignore not supported yet
import { scrollIntoViewIfNecessary } from './scroll_into_view_if_necessary';
diff --git a/test/functional/services/remote/webdriver.ts b/test/functional/services/remote/webdriver.ts
index 2945418f5f4c7..21eae36a67b7c 100644
--- a/test/functional/services/remote/webdriver.ts
+++ b/test/functional/services/remote/webdriver.ts
@@ -12,7 +12,7 @@ import Fs from 'fs';
import * as Rx from 'rxjs';
import { mergeMap, map, takeUntil, catchError, ignoreElements } from 'rxjs/operators';
import { Lifecycle } from '@kbn/test';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import chromeDriver from 'chromedriver';
// @ts-ignore types not available
import geckoDriver from 'geckodriver';
diff --git a/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts b/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts
index 7ff848f79185d..d9998d235a46e 100644
--- a/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts
+++ b/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts
@@ -6,7 +6,7 @@
*/
import fetch from 'node-fetch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import ReadPackage from 'read-pkg';
const REGISTRY_URL = 'https://epr-snapshot.elastic.co';
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts
index 48a9cf82d720d..4160c11fc3521 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
import { AxiosResponse } from 'axios';
import {
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts b/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts
index 1d0b07f1b64e1..a564e627c9909 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts
@@ -10,7 +10,8 @@ import yargs from 'yargs';
import fs from 'fs';
import { Client, errors } from '@elastic/elasticsearch';
import type { ClientOptions } from '@elastic/elasticsearch/lib/client';
-import { ToolingLog, CA_CERT_PATH } from '@kbn/dev-utils';
+import { CA_CERT_PATH } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient, KbnClientOptions } from '@kbn/test';
import { indexHostsAndAlerts } from '../../common/endpoint/index_data';
import { ANCESTRY_LIMIT, EndpointDocGenerator } from '../../common/endpoint/generate_data';
diff --git a/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts b/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts
index 72f7b2688de1c..9df43704da81c 100644
--- a/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts
+++ b/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts
@@ -6,7 +6,7 @@
*/
import minimist from 'minimist';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { KbnClient } from '@kbn/test';
import pMap from 'p-map';
import { basename } from 'path';
diff --git a/x-pack/tasks/build.ts b/x-pack/tasks/build.ts
index 03beae1108bbd..4680464976d79 100644
--- a/x-pack/tasks/build.ts
+++ b/x-pack/tasks/build.ts
@@ -12,7 +12,8 @@ import { promisify } from 'util';
import { pipeline } from 'stream';
import { REPO_ROOT } from '@kbn/utils';
-import { ToolingLog, transformFileStream, transformFileWithBabel } from '@kbn/dev-utils';
+import { transformFileStream, transformFileWithBabel } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import gulp from 'gulp';
import del from 'del';
import fancyLog from 'fancy-log';
diff --git a/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts b/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts
index b31f8b70eab10..f4814358f1636 100644
--- a/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts
+++ b/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts
@@ -4,7 +4,7 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import expect from '@kbn/expect';
import type SuperTest from 'supertest';
diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts
index 76848db5d55e8..231d4138b1d19 100644
--- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts
+++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import expect from '@kbn/expect';
import type SuperTest from 'supertest';
diff --git a/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts b/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts
index d587e5e40864b..cfbcafbc06cb6 100644
--- a/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts
@@ -6,7 +6,7 @@
*/
import type { TransportResult } from '@elastic/elasticsearch';
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import { countDownTest } from './count_down_test';
/**
diff --git a/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts b/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts
index 57cb06243d78e..39292a9cbbbb7 100644
--- a/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
/**
* Does a plain countdown and checks against a boolean to determine if to wait and try again.
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts b/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts
index ae4bfa40a39a3..ca04e01c654e9 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type {
CreateExceptionListItemSchema,
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts b/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts
index 9bd9cef7229bd..169a9bcea239b 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { CreateExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types';
import type { ListArray, NonEmptyEntriesArray } from '@kbn/securitysolution-io-ts-list-types';
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts b/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts
index e2942d0262705..24ebabb5243b2 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type {
CreateExceptionListSchema,
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts b/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts
index c912446b1b08d..fccbd3e243b17 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type {
CreateExceptionListItemSchema,
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts b/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts
index 349a8afdf977c..d5093d8d5d39b 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { getWebHookAction } from './get_web_hook_action';
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_rule.ts b/x-pack/test/detection_engine_api_integration/utils/create_rule.ts
index caedcf357d363..ab162724ecb68 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_rule.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_rule.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type {
CreateRulesSchema,
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts b/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts
index da4b2d1b5a263..5b47de64d9c0f 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { NonEmptyEntriesArray, OsTypeArray } from '@kbn/securitysolution-io-ts-list-types';
import type {
diff --git a/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts b/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts
index 13ddf59a40257..5f490f2dc7c60 100644
--- a/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts
@@ -6,7 +6,7 @@
*/
import type SuperTest from 'supertest';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { DETECTION_ENGINE_INDEX_URL } from '@kbn/security-solution-plugin/common/constants';
import { countDownTest } from './count_down_test';
diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts b/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts
index cd0382d6fed19..95dd94399e414 100644
--- a/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import {
diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts b/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts
index 4e3ba89fcb9c9..6ff1e9fda30be 100644
--- a/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type { Client } from '@elastic/elasticsearch';
import { countDownES } from './count_down_es';
diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts b/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts
index 849c81d4f98db..3a7e3c91fd402 100644
--- a/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts
@@ -6,7 +6,7 @@
*/
import type { Client } from '@elastic/elasticsearch';
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import { countDownES } from './count_down_es';
/**
diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts b/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts
index f5f98d1330401..499f5b94a9752 100644
--- a/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants';
import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request';
diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts b/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts
index cf784df40dc5b..2e01c61c33595 100644
--- a/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request';
diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts b/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts
index a422b54ef9f61..875dfd8025989 100644
--- a/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts
@@ -6,7 +6,7 @@
*/
import type SuperTest from 'supertest';
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import { DETECTION_ENGINE_INDEX_URL } from '@kbn/security-solution-plugin/common/constants';
import { countDownTest } from './count_down_test';
diff --git a/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts b/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts
index 9e49420f34329..36ebfaee231d9 100644
--- a/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type { Client } from '@elastic/elasticsearch';
import { INTERNAL_RULE_ID_KEY } from '@kbn/security-solution-plugin/common/constants';
import { countDownES } from './count_down_es';
diff --git a/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts b/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts
index c3e4a4ada5bae..e52c85c229edb 100644
--- a/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { DETECTION_ENGINE_SIGNALS_FINALIZE_MIGRATION_URL } from '@kbn/security-solution-plugin/common/constants';
diff --git a/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts
index 0281bce218bef..2d77cffcdfe41 100644
--- a/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts
index 29d81e80dded2..b6750c9aa168a 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type { Client } from '@elastic/elasticsearch';
import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/types';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts b/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts
index caf496716f7f2..fcbfadec612d5 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { Client } from '@elastic/elasticsearch';
import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts b/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts
index aa1a32add99ab..b6771cbb85f9c 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { PrePackagedRulesAndTimelinesStatusSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/response';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_rule.ts b/x-pack/test/detection_engine_api_integration/utils/get_rule.ts
index 0a79ab9d7ae40..da28e867bc976 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_rule.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_rule.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { RulesSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/response/rules_schema';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts b/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts
index 073fb920b37b2..dd243dd3ca581 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { SECURITY_TELEMETRY_URL } from '@kbn/security-solution-plugin/common/constants';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts
index 7f90ad1189ca0..088214a52f6ac 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import type { DetectionAlert } from '@kbn/security-solution-plugin/common/detection_engine/schemas/alerts';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts
index 3a8da122fbb4d..b534925b60118 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts
@@ -6,7 +6,7 @@
*/
import { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { DetectionAlert } from '@kbn/security-solution-plugin/common/detection_engine/schemas/alerts';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts
index 0345b22504759..85ad0e3d89acb 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts
@@ -6,7 +6,7 @@
*/
import type { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { DetectionAlert } from '@kbn/security-solution-plugin/common/detection_engine/schemas/alerts';
diff --git a/x-pack/test/detection_engine_api_integration/utils/get_stats.ts b/x-pack/test/detection_engine_api_integration/utils/get_stats.ts
index 239fca801e107..0871012f8749f 100644
--- a/x-pack/test/detection_engine_api_integration/utils/get_stats.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/get_stats.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import type { DetectionMetrics } from '@kbn/security-solution-plugin/server/usage/detections/types';
diff --git a/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts b/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts
index cf2438ebdefbb..63f8c9f2c8e1b 100644
--- a/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type { Client } from '@elastic/elasticsearch';
/**
diff --git a/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts b/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts
index 3c0a32d266202..c75e8203bf6cd 100644
--- a/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { DETECTION_ENGINE_PREPACKAGED_URL } from '@kbn/security-solution-plugin/common/constants';
diff --git a/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts b/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts
index f334ed3bbdb33..0470266714fd2 100644
--- a/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { DETECTION_ENGINE_SIGNALS_MIGRATION_URL } from '@kbn/security-solution-plugin/common/constants';
diff --git a/x-pack/test/detection_engine_api_integration/utils/update_rule.ts b/x-pack/test/detection_engine_api_integration/utils/update_rule.ts
index 8e9b64506a140..c66d86c5594d0 100644
--- a/x-pack/test/detection_engine_api_integration/utils/update_rule.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/update_rule.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { DETECTION_ENGINE_RULES_URL } from '@kbn/security-solution-plugin/common/constants';
diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for.ts
index ff113526798f3..dfa20bd7019d8 100644
--- a/x-pack/test/detection_engine_api_integration/utils/wait_for.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/wait_for.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
// Similar to ReactJs's waitFor from here: https://testing-library.com/docs/dom-testing-library/api-async#waitfor
export const waitFor = async (
diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts
index 3cdf38a7120c8..381116b5a65d2 100644
--- a/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { waitFor } from './wait_for';
diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts
index 7af010055b26e..0b86a028d036a 100644
--- a/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type { Client } from '@elastic/elasticsearch';
import { waitFor } from './wait_for';
diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts
index 2ba7f56813a86..ceba42efd1793 100644
--- a/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type { Client } from '@elastic/elasticsearch';
import { waitFor } from './wait_for';
diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts
index c09ca5c2b9679..0ab4385a54e66 100644
--- a/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { RuleExecutionStatus } from '@kbn/security-solution-plugin/common/detection_engine/schemas/common';
diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts
index 398a921823848..59407b116b2ac 100644
--- a/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts
+++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import type { ToolingLog } from '@kbn/dev-utils';
+import type { ToolingLog } from '@kbn/tooling-log';
import type SuperTest from 'supertest';
import { getSignalsByIds } from './get_signals_by_ids';
diff --git a/x-pack/test/fleet_api_integration/helpers.ts b/x-pack/test/fleet_api_integration/helpers.ts
index 659e28e3d0aed..42b83ea90a47d 100644
--- a/x-pack/test/fleet_api_integration/helpers.ts
+++ b/x-pack/test/fleet_api_integration/helpers.ts
@@ -6,7 +6,7 @@
*/
import { Context } from 'mocha';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { FtrProviderContext } from '../api_integration/ftr_provider_context';
export function warnAndSkipTest(mochaContext: Context, log: ToolingLog) {
diff --git a/x-pack/test/fleet_cypress/agent.ts b/x-pack/test/fleet_cypress/agent.ts
index c0e5b2374889d..2bdecd90efdff 100644
--- a/x-pack/test/fleet_cypress/agent.ts
+++ b/x-pack/test/fleet_cypress/agent.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import axios, { AxiosRequestConfig } from 'axios';
import { ChildProcess, spawn } from 'child_process';
import { getLatestVersion } from './artifact_manager';
diff --git a/x-pack/test/fleet_cypress/fleet_server.ts b/x-pack/test/fleet_cypress/fleet_server.ts
index d3bb4a385185d..1f166093b0353 100644
--- a/x-pack/test/fleet_cypress/fleet_server.ts
+++ b/x-pack/test/fleet_cypress/fleet_server.ts
@@ -6,7 +6,7 @@
*/
import { ChildProcess, spawn } from 'child_process';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import axios, { AxiosRequestConfig } from 'axios';
import { Manager } from './resource_manager';
import { getLatestVersion } from './artifact_manager';
diff --git a/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts b/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts
index 5c9fdb65a503b..80b2795c5bb18 100644
--- a/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts
+++ b/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts
@@ -6,7 +6,7 @@
*/
import { Client } from '@elastic/elasticsearch';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
export default async function clearAllApiKeys(esClient: Client, logger: ToolingLog) {
const existingKeys = await esClient.security.queryApiKeys();
diff --git a/x-pack/test/functional/page_objects/log_wrapper.ts b/x-pack/test/functional/page_objects/log_wrapper.ts
index cc787e14f9333..97f5a7a89369f 100644
--- a/x-pack/test/functional/page_objects/log_wrapper.ts
+++ b/x-pack/test/functional/page_objects/log_wrapper.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
/**
* Wraps the specified object instance with debug log statements of all method calls.
diff --git a/x-pack/test/functional_synthetics/helpers.ts b/x-pack/test/functional_synthetics/helpers.ts
index 959827b7490a5..8635609cf35d9 100644
--- a/x-pack/test/functional_synthetics/helpers.ts
+++ b/x-pack/test/functional_synthetics/helpers.ts
@@ -6,7 +6,7 @@
*/
import { Context } from 'mocha';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { FtrProviderContext } from './ftr_provider_context';
export function warnAndSkipTest(mochaContext: Context, log: ToolingLog) {
diff --git a/x-pack/test/lists_api_integration/utils.ts b/x-pack/test/lists_api_integration/utils.ts
index 7ea7cfcf4b5cd..9407dabcf2763 100644
--- a/x-pack/test/lists_api_integration/utils.ts
+++ b/x-pack/test/lists_api_integration/utils.ts
@@ -21,7 +21,7 @@ import {
LIST_INDEX,
LIST_ITEM_URL,
} from '@kbn/securitysolution-list-constants';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { getImportListItemAsBuffer } from '@kbn/lists-plugin/common/schemas/request/import_list_item_schema.mock';
import { countDownTest } from '../detection_engine_api_integration/utils';
diff --git a/x-pack/test/osquery_cypress/agent.ts b/x-pack/test/osquery_cypress/agent.ts
index c0e5b2374889d..2bdecd90efdff 100644
--- a/x-pack/test/osquery_cypress/agent.ts
+++ b/x-pack/test/osquery_cypress/agent.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import axios, { AxiosRequestConfig } from 'axios';
import { ChildProcess, spawn } from 'child_process';
import { getLatestVersion } from './artifact_manager';
diff --git a/x-pack/test/osquery_cypress/fleet_server.ts b/x-pack/test/osquery_cypress/fleet_server.ts
index b64b1871637bc..77ec56cf20960 100644
--- a/x-pack/test/osquery_cypress/fleet_server.ts
+++ b/x-pack/test/osquery_cypress/fleet_server.ts
@@ -6,7 +6,7 @@
*/
import { ChildProcess, spawn } from 'child_process';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import axios, { AxiosRequestConfig } from 'axios';
import { Manager } from './resource_manager';
import { getLatestVersion } from './artifact_manager';
diff --git a/x-pack/test/saved_objects_field_count/runner.ts b/x-pack/test/saved_objects_field_count/runner.ts
index e6b53f2a2f399..b88f2129ba64d 100644
--- a/x-pack/test/saved_objects_field_count/runner.ts
+++ b/x-pack/test/saved_objects_field_count/runner.ts
@@ -5,7 +5,7 @@
* 2.0.
*/
-import { CiStatsReporter } from '@kbn/dev-utils';
+import { CiStatsReporter } from '@kbn/ci-stats-reporter';
import { FtrProviderContext } from '../functional/ftr_provider_context';
const IGNORED_FIELDS = [
diff --git a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js
index af56540841403..9b768ab61baec 100644
--- a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js
+++ b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js
@@ -7,7 +7,7 @@
import { resolve } from 'path';
import consumeState from './consume_state';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { REPO_ROOT } from '@kbn/utils';
import chalk from 'chalk';
import { esTestConfig, kbnTestConfig } from '@kbn/test';
diff --git a/x-pack/test/ui_capabilities/common/services/features.ts b/x-pack/test/ui_capabilities/common/services/features.ts
index de425b6d166b7..e1c79059e6ecb 100644
--- a/x-pack/test/ui_capabilities/common/services/features.ts
+++ b/x-pack/test/ui_capabilities/common/services/features.ts
@@ -8,7 +8,7 @@
import axios, { AxiosInstance } from 'axios';
import { format as formatUrl } from 'url';
import util from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { FtrProviderContext } from '../ftr_provider_context';
import { Features } from '../features';
diff --git a/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts b/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts
index 2c8db86386bac..3c3febcc30686 100644
--- a/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts
+++ b/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts
@@ -9,7 +9,7 @@ import axios, { AxiosInstance } from 'axios';
import type { Capabilities as UICapabilities } from '@kbn/core/types';
import { format as formatUrl } from 'url';
import util from 'util';
-import { ToolingLog } from '@kbn/dev-utils';
+import { ToolingLog } from '@kbn/tooling-log';
import { FtrProviderContext } from '../ftr_provider_context';
import { FeaturesService, FeaturesProvider } from './features';
diff --git a/yarn.lock b/yarn.lock
index d16c551676039..6875a7cd14062 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2960,6 +2960,18 @@
version "0.0.0"
uid ""
+"@kbn/ci-stats-client@link:bazel-bin/packages/kbn-ci-stats-client":
+ version "0.0.0"
+ uid ""
+
+"@kbn/ci-stats-core@link:bazel-bin/packages/kbn-ci-stats-core":
+ version "0.0.0"
+ uid ""
+
+"@kbn/ci-stats-reporter@link:bazel-bin/packages/kbn-ci-stats-reporter":
+ version "0.0.0"
+ uid ""
+
"@kbn/cli-dev-mode@link:bazel-bin/packages/kbn-cli-dev-mode":
version "0.0.0"
uid ""
@@ -3056,6 +3068,10 @@
version "0.0.0"
uid ""
+"@kbn/jest-serializers@link:bazel-bin/packages/kbn-jest-serializers":
+ version "0.0.0"
+ uid ""
+
"@kbn/logging-mocks@link:bazel-bin/packages/kbn-logging-mocks":
version "0.0.0"
uid ""
@@ -3184,6 +3200,10 @@
version "0.0.0"
uid ""
+"@kbn/sort-package-json@link:bazel-bin/packages/kbn-sort-package-json":
+ version "0.0.0"
+ uid ""
+
"@kbn/spec-to-console@link:bazel-bin/packages/kbn-spec-to-console":
version "0.0.0"
uid ""
@@ -3192,6 +3212,10 @@
version "0.0.0"
uid ""
+"@kbn/stdio-dev-helpers@link:bazel-bin/packages/kbn-stdio-dev-helpers":
+ version "0.0.0"
+ uid ""
+
"@kbn/storybook@link:bazel-bin/packages/kbn-storybook":
version "0.0.0"
uid ""
@@ -3224,6 +3248,10 @@
version "0.0.0"
uid ""
+"@kbn/tooling-log@link:bazel-bin/packages/kbn-tooling-log":
+ version "0.0.0"
+ uid ""
+
"@kbn/type-summarizer@link:bazel-bin/packages/kbn-type-summarizer":
version "0.0.0"
uid ""
@@ -6008,6 +6036,18 @@
version "0.0.0"
uid ""
+"@types/kbn__ci-stats-client@link:bazel-bin/packages/kbn-ci-stats-client/npm_module_types":
+ version "0.0.0"
+ uid ""
+
+"@types/kbn__ci-stats-core@link:bazel-bin/packages/kbn-ci-stats-core/npm_module_types":
+ version "0.0.0"
+ uid ""
+
+"@types/kbn__ci-stats-reporter@link:bazel-bin/packages/kbn-ci-stats-reporter/npm_module_types":
+ version "0.0.0"
+ uid ""
+
"@types/kbn__cli-dev-mode@link:bazel-bin/packages/kbn-cli-dev-mode/npm_module_types":
version "0.0.0"
uid ""
@@ -6088,6 +6128,10 @@
version "0.0.0"
uid ""
+"@types/kbn__jest-serializers@link:bazel-bin/packages/kbn-jest-serializers/npm_module_types":
+ version "0.0.0"
+ uid ""
+
"@types/kbn__logging-mocks@link:bazel-bin/packages/kbn-logging-mocks/npm_module_types":
version "0.0.0"
uid ""
@@ -6212,10 +6256,18 @@
version "0.0.0"
uid ""
+"@types/kbn__sort-package-json@link:bazel-bin/packages/kbn-sort-package-json/npm_module_types":
+ version "0.0.0"
+ uid ""
+
"@types/kbn__std@link:bazel-bin/packages/kbn-std/npm_module_types":
version "0.0.0"
uid ""
+"@types/kbn__stdio-dev-helpers@link:bazel-bin/packages/kbn-stdio-dev-helpers/npm_module_types":
+ version "0.0.0"
+ uid ""
+
"@types/kbn__storybook@link:bazel-bin/packages/kbn-storybook/npm_module_types":
version "0.0.0"
uid ""
@@ -6232,6 +6284,10 @@
version "0.0.0"
uid ""
+"@types/kbn__tooling-log@link:bazel-bin/packages/kbn-tooling-log/npm_module_types":
+ version "0.0.0"
+ uid ""
+
"@types/kbn__typed-react-router-config@link:bazel-bin/packages/kbn-typed-react-router-config/npm_module_types":
version "0.0.0"
uid ""
From 30db753d91e0ec4c0df82d328fbd30290bcf9072 Mon Sep 17 00:00:00 2001
From: Jack
Date: Tue, 19 Apr 2022 13:39:19 -0400
Subject: [PATCH 04/25] [8.2.1] [Session view] Add loading state for session
view when fetching events and alerts (#130516)
* Add loading state for session view when fetching events and alerts
* Move section loading component and add tests
* Remove unneeded styles
---
.../components/session_view/index.test.tsx | 24 ++++++++++++++++---
.../public/components/session_view/index.tsx | 24 ++++++++++---------
2 files changed, 34 insertions(+), 14 deletions(-)
diff --git a/x-pack/plugins/session_view/public/components/session_view/index.test.tsx b/x-pack/plugins/session_view/public/components/session_view/index.test.tsx
index 262de5aba210e..f51bdf16c6e56 100644
--- a/x-pack/plugins/session_view/public/components/session_view/index.test.tsx
+++ b/x-pack/plugins/session_view/public/components/session_view/index.test.tsx
@@ -35,6 +35,24 @@ describe('SessionView component', () => {
});
});
+ it('should show loading state while retrieving empty data and hide it when settled', async () => {
+ let releaseApiResponse: (value?: unknown) => void;
+
+ // make the request wait
+ mockedApi.mockReturnValue(new Promise((resolve) => (releaseApiResponse = resolve)));
+ render();
+ await waitForApiCall();
+
+ // see if loader is present
+ expect(renderResult.getByTestId('sectionLoading')).toBeTruthy();
+
+ // release the request
+ releaseApiResponse!(mockedApi);
+
+ // check the loader is gone
+ await waitForElementToBeRemoved(renderResult.getByTestId('sectionLoading'));
+ });
+
it('should show the Empty message', async () => {
render();
await waitForApiCall();
@@ -55,7 +73,7 @@ describe('SessionView component', () => {
mockedApi.mockResolvedValue(sessionViewProcessEventsMock);
});
- it('should show loading indicator while retrieving data and hide it when it gets it', async () => {
+ it('should show loading state while retrieving data and hide it when settled', async () => {
let releaseApiResponse: (value?: unknown) => void;
// make the request wait
@@ -64,13 +82,13 @@ describe('SessionView component', () => {
await waitForApiCall();
// see if loader is present
- expect(renderResult.getByText('Loading session…')).toBeTruthy();
+ expect(renderResult.getByTestId('sectionLoading')).toBeTruthy();
// release the request
releaseApiResponse!(mockedApi);
// check the loader is gone
- await waitForElementToBeRemoved(renderResult.getByText('Loading session…'));
+ await waitForElementToBeRemoved(renderResult.getByTestId('sectionLoading'));
});
it('should display the search bar', async () => {
diff --git a/x-pack/plugins/session_view/public/components/session_view/index.tsx b/x-pack/plugins/session_view/public/components/session_view/index.tsx
index fee4a67c746fc..f007a595141e7 100644
--- a/x-pack/plugins/session_view/public/components/session_view/index.tsx
+++ b/x-pack/plugins/session_view/public/components/session_view/index.tsx
@@ -115,7 +115,7 @@ export const SessionView = ({
const hasData = alerts && data && data.pages?.[0].events.length > 0;
const hasError = error || alertsError;
- const renderIsLoading = (isFetching || alertsFetching) && !data;
+ const renderIsLoading = (isFetching || alertsFetching) && !(data && alerts);
const renderDetails = isDetailOpen && selectedProcess;
const { data: newUpdatedAlertsStatus } = useFetchAlertStatus(
updatedAlertsStatus,
@@ -154,7 +154,18 @@ export const SessionView = ({
[setDisplayOptions]
);
- if (!isFetching && !hasData) {
+ if (renderIsLoading) {
+ return (
+
+
+
+ );
+ }
+
+ if (!hasData) {
return (
- {renderIsLoading && (
-
-
-
- )}
-
{hasError && (
Date: Tue, 19 Apr 2022 22:40:38 +0500
Subject: [PATCH 05/25] Fix failing test: Jest
Tests.src/plugins/charts/public/services/active_cursor (#130531)
* Fix failing test: Jest Tests.src/plugins/charts/public/services/active_cursor
* Update use_active_cursor.test.ts
---
.../active_cursor/use_active_cursor.test.ts | 116 ++++++++----------
1 file changed, 53 insertions(+), 63 deletions(-)
diff --git a/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts b/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts
index 4cc5e747dcef6..fada0ffa459c7 100644
--- a/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts
+++ b/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts
@@ -5,79 +5,64 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
+
+import { TestScheduler } from 'rxjs/testing';
import { renderHook } from '@testing-library/react-hooks';
+import type { Chart, PointerEvent } from '@elastic/charts';
+import type { Datatable } from '@kbn/expressions-plugin/public';
import type { RefObject } from 'react';
-import { ActiveCursor } from './active_cursor';
+import type { ActiveCursor } from './active_cursor';
import { useActiveCursor } from './use_active_cursor';
import type { ActiveCursorSyncOption, ActiveCursorPayload } from './types';
-import type { Chart, PointerEvent } from '@elastic/charts';
-import type { Datatable } from '@kbn/expressions-plugin/public';
-// FLAKY: https://github.com/elastic/kibana/issues/130177
-describe.skip('useActiveCursor', () => {
- let cursor: ActiveCursorPayload['cursor'];
- let dispatchExternalPointerEvent: jest.Mock;
+/** @internal **/
+type DispatchExternalPointerEventFn = (pointerEvent: PointerEvent) => void;
+
+describe('useActiveCursor', () => {
+ let testScheduler: TestScheduler;
- const act = (
+ beforeEach(() => {
+ testScheduler = new TestScheduler((actual, expected) => expect(actual).toEqual(expected));
+ });
+
+ const act = async (
syncOption: ActiveCursorSyncOption,
- events: Array>,
- eventsTimeout = 1
- ) =>
- new Promise(async (resolve, reject) => {
- try {
- const activeCursor = new ActiveCursor();
- let allEventsExecuted = false;
- activeCursor.setup();
- dispatchExternalPointerEvent.mockImplementation((pointerEvent) => {
- if (allEventsExecuted) {
- resolve(pointerEvent);
- }
- });
+ events: Record>
+ ): Promise<{ dispatchExternalPointerEvent: DispatchExternalPointerEventFn }> =>
+ new Promise((res) => {
+ testScheduler.run(({ cold }) => {
+ const marble = `${Object.keys(events).join(`-`)} |`;
+ const activeCursor$ = cold(marble, events);
+ const dispatchExternalPointerEvent: DispatchExternalPointerEventFn = jest.fn();
+
renderHook(() =>
useActiveCursor(
- activeCursor,
+ {
+ activeCursor$,
+ } as unknown as ActiveCursor,
{
current: {
- dispatchExternalPointerEvent: dispatchExternalPointerEvent as (
- pointerEvent: PointerEvent
- ) => void,
+ dispatchExternalPointerEvent,
},
} as RefObject,
{ ...syncOption, debounce: syncOption.debounce ?? 1 }
)
);
- for (const e of events) {
- await new Promise((eventResolve) =>
- setTimeout(() => {
- if (e === events[events.length - 1]) {
- allEventsExecuted = true;
- }
-
- activeCursor.activeCursor$!.next({
- cursor,
- ...e,
- });
- eventResolve(null);
- }, eventsTimeout)
- );
- }
- } catch (error) {
- reject(error);
- }
+ activeCursor$.subscribe({
+ complete: () => {
+ res({ dispatchExternalPointerEvent });
+ },
+ });
+ });
});
- beforeEach(() => {
- cursor = {} as ActiveCursorPayload['cursor'];
- dispatchExternalPointerEvent = jest.fn();
- });
-
test('should debounce events', async () => {
- await act(
+ const { dispatchExternalPointerEvent } = await act(
{
- debounce: 50,
+ debounce: 5,
datatables: [
{
columns: [
@@ -91,25 +76,30 @@ describe.skip('useActiveCursor', () => {
},
] as Datatable[],
},
- [
- { accessors: ['foo_index:foo_field'] },
- { accessors: ['foo_index:foo_field'] },
- { accessors: ['foo_index:foo_field'] },
- { accessors: ['foo_index:foo_field'] },
- ]
+ {
+ a: { accessors: ['foo_index:foo_field'] },
+ b: { accessors: ['foo_index:foo_field'] },
+ c: { accessors: ['foo_index:foo_field'] },
+ d: { accessors: ['foo_index:foo_field'] },
+ }
);
expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1);
});
test('should trigger cursor pointer update (chart type: time, event type: time)', async () => {
- await act({ isDateHistogram: true }, [{ isDateHistogram: true }]);
+ const { dispatchExternalPointerEvent } = await act(
+ { isDateHistogram: true },
+ {
+ a: { isDateHistogram: true },
+ }
+ );
expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1);
});
test('should trigger cursor pointer update (chart type: datatable - time based, event type: time)', async () => {
- await act(
+ const { dispatchExternalPointerEvent } = await act(
{
datatables: [
{
@@ -127,14 +117,14 @@ describe.skip('useActiveCursor', () => {
},
] as unknown as Datatable[],
},
- [{ isDateHistogram: true }, { accessors: ['foo_index:foo_field'] }]
+ { a: { isDateHistogram: true }, b: { accessors: ['foo_index:foo_field'] } }
);
expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(2);
});
test('should not trigger cursor pointer update (chart type: datatable, event type: time)', async () => {
- await act(
+ const { dispatchExternalPointerEvent } = await act(
{
datatables: [
{
@@ -149,14 +139,14 @@ describe.skip('useActiveCursor', () => {
},
] as Datatable[],
},
- [{ isDateHistogram: true }, { accessors: ['foo_index:foo_field'] }]
+ { a: { isDateHistogram: true }, b: { accessors: ['foo_index:foo_field'] } }
);
expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1);
});
test('should works with multi datatables (intersection)', async () => {
- await act(
+ const { dispatchExternalPointerEvent } = await act(
{
datatables: [
{
@@ -181,7 +171,7 @@ describe.skip('useActiveCursor', () => {
},
] as Datatable[],
},
- [{ accessors: ['foo_index:foo_field', 'ib:fb'] }]
+ { a: { accessors: ['foo_index:foo_field', 'ib:fb'] } }
);
expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1);
From d8b5f37737e918a768bea7b568c6a5f328269560 Mon Sep 17 00:00:00 2001
From: Spencer
Date: Tue, 19 Apr 2022 12:41:44 -0500
Subject: [PATCH 06/25] fix missing testing dep for windows dev (#130579)
---
.github/CODEOWNERS | 1 +
packages/kbn-import-resolver/BUILD.bazel | 1 +
2 files changed, 2 insertions(+)
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index d7c74279d61e4..50c98651ebeea 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -226,6 +226,7 @@
/packages/kbn-es/ @elastic/kibana-operations
/packages/kbn-eslint-plugin-imports/ @elastic/kibana-operations
/packages/kbn-generate/ @elastic/kibana-operations
+/packages/kbn-import-resolver/ @elastic/kibana-operations
/packages/kbn-optimizer/ @elastic/kibana-operations
/packages/kbn-plugin-discovery/ @elastic/kibana-operations
/packages/kbn-pm/ @elastic/kibana-operations
diff --git a/packages/kbn-import-resolver/BUILD.bazel b/packages/kbn-import-resolver/BUILD.bazel
index 50e91c29d1750..f6ad73e494486 100644
--- a/packages/kbn-import-resolver/BUILD.bazel
+++ b/packages/kbn-import-resolver/BUILD.bazel
@@ -55,6 +55,7 @@ RUNTIME_DEPS = [
TYPES_DEPS = [
"//packages/kbn-bazel-packages:npm_module_types",
"//packages/kbn-utils:npm_module_types",
+ "//packages/kbn-dev-utils:npm_module_types", # needed for testing, only required for windows dev
"//packages/kbn-synthetic-package-map:npm_module_types",
"@npm//@types/node",
"@npm//@types/jest",
From 2569ca6fa78b16064a8cf10ba94e3ea081297407 Mon Sep 17 00:00:00 2001
From: Zacqary Adam Xeper
Date: Tue, 19 Apr 2022 12:59:31 -0500
Subject: [PATCH 07/25] [Docs] Update rules list screenshots in docs (#130487)
---
.../alerting/images/bulk-mute-disable.png | Bin 108908 -> 183262 bytes
.../images/rules-and-connectors-ui.png | Bin 281417 -> 409376 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/docs/user/alerting/images/bulk-mute-disable.png b/docs/user/alerting/images/bulk-mute-disable.png
index 7ac4ac8fc3dafc35378eef06fc9da99ea21f9ec1..b2f9c230ffeb22df0aca1a64fd5f7a24c2d7eefc 100644
GIT binary patch
literal 183262
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