From b2baf32fba2f09b034324489bd0c2bbb21bcb668 Mon Sep 17 00:00:00 2001 From: Aleh Zasypkin Date: Thu, 4 Oct 2018 09:18:40 +0200 Subject: [PATCH] Expose core config schema validation system as `@kbn/config-schema` package. (#23609) --- .eslintrc.js | 1 + package.json | 1 + packages/kbn-config-schema/package.json | 20 +++++++++++++++++++ .../__snapshots__/index.test.ts.snap | 0 .../src}/byte_size_value/index.test.ts | 0 .../src}/byte_size_value/index.ts | 0 .../kbn-config-schema/src}/duration/index.ts | 0 .../kbn-config-schema/src}/errors/index.ts | 0 .../src}/errors/schema_error.test.ts | 0 .../src}/errors/schema_error.ts | 0 .../src}/errors/schema_type_error.ts | 0 .../src}/errors/schema_types_error.ts | 0 .../src}/errors/validation_error.ts | 0 .../kbn-config-schema/src}/index.ts | 0 .../kbn-config-schema/src}/internals/index.ts | 3 +++ .../src}/references/context_reference.ts | 0 .../src}/references/index.ts | 0 .../src}/references/reference.ts | 0 .../src}/references/sibling_reference.ts | 0 .../types/__snapshots__/any_type.test.ts.snap | 0 .../__snapshots__/array_type.test.ts.snap | 0 .../__snapshots__/boolean_type.test.ts.snap | 0 .../__snapshots__/byte_size_type.test.ts.snap | 0 .../conditional_type.test.ts.snap | 0 .../__snapshots__/duration_type.test.ts.snap | 0 .../__snapshots__/literal_type.test.ts.snap | 0 .../__snapshots__/map_of_type.test.ts.snap | 0 .../__snapshots__/maybe_type.test.ts.snap | 0 .../__snapshots__/number_type.test.ts.snap | 0 .../__snapshots__/object_type.test.ts.snap | 0 .../__snapshots__/one_of_type.test.ts.snap | 0 .../__snapshots__/string_type.test.ts.snap | 0 .../src}/types/any_type.test.ts | 0 .../kbn-config-schema/src}/types/any_type.ts | 0 .../src}/types/array_type.test.ts | 0 .../src}/types/array_type.ts | 0 .../src}/types/boolean_type.test.ts | 0 .../src}/types/boolean_type.ts | 0 .../src}/types/byte_size_type.test.ts | 0 .../src}/types/byte_size_type.ts | 0 .../src}/types/conditional_type.test.ts | 0 .../src}/types/conditional_type.ts | 0 .../src}/types/duration_type.test.ts | 0 .../src}/types/duration_type.ts | 0 .../kbn-config-schema/src}/types/index.ts | 0 .../src}/types/literal_type.test.ts | 0 .../src}/types/literal_type.ts | 0 .../src}/types/map_of_type.test.ts | 0 .../kbn-config-schema/src}/types/map_type.ts | 0 .../src}/types/maybe_type.test.ts | 0 .../src}/types/maybe_type.ts | 0 .../src}/types/number_type.test.ts | 0 .../src}/types/number_type.ts | 0 .../src}/types/object_type.test.ts | 0 .../src}/types/object_type.ts | 0 .../src}/types/one_of_type.test.ts | 0 .../src}/types/string_type.test.ts | 0 .../src}/types/string_type.ts | 0 .../kbn-config-schema/src}/types/type.ts | 3 +++ .../src}/types/union_type.ts | 0 packages/kbn-config-schema/tsconfig.json | 16 +++++++++++++++ .../kbn-config-schema/types/joi.d.ts | 2 +- packages/kbn-config-schema/yarn.lock | 7 +++++++ src/core/server/config/config_service.test.ts | 2 +- src/core/server/config/config_service.ts | 2 +- src/core/server/config/config_with_schema.ts | 2 +- src/core/server/dev/dev_config.ts | 2 +- .../server/http/base_path_proxy_server.ts | 2 +- src/core/server/http/http_config.ts | 2 +- src/core/server/http/http_server.test.ts | 2 +- .../server/http/https_redirect_server.test.ts | 2 +- src/core/server/http/router/request.ts | 2 +- src/core/server/http/router/route.ts | 2 +- src/core/server/http/router/router.ts | 2 +- src/core/server/http/ssl_config.ts | 2 +- .../logging/appenders/legacy_appender.ts | 2 +- .../logging/appenders/appenders.test.ts | 2 +- .../server/logging/appenders/appenders.ts | 2 +- .../console/console_appender.test.ts | 2 +- .../appenders/console/console_appender.ts | 2 +- .../appenders/file/file_appender.test.ts | 2 +- .../logging/appenders/file/file_appender.ts | 2 +- .../server/logging/layouts/json_layout.ts | 2 +- src/core/server/logging/layouts/layouts.ts | 2 +- .../server/logging/layouts/pattern_layout.ts | 2 +- src/core/server/logging/logging_config.ts | 2 +- yarn.lock | 4 ++++ 87 files changed, 79 insertions(+), 24 deletions(-) create mode 100644 packages/kbn-config-schema/package.json rename {src/core/server/config/schema => packages/kbn-config-schema/src}/byte_size_value/__snapshots__/index.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/byte_size_value/index.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/byte_size_value/index.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/duration/index.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/errors/index.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/errors/schema_error.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/errors/schema_error.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/errors/schema_type_error.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/errors/schema_types_error.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/errors/validation_error.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/index.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/internals/index.ts (99%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/references/context_reference.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/references/index.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/references/reference.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/references/sibling_reference.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/any_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/array_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/boolean_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/byte_size_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/conditional_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/duration_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/literal_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/map_of_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/maybe_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/number_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/object_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/one_of_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/__snapshots__/string_type.test.ts.snap (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/any_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/any_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/array_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/array_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/boolean_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/boolean_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/byte_size_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/byte_size_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/conditional_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/conditional_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/duration_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/duration_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/index.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/literal_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/literal_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/map_of_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/map_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/maybe_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/maybe_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/number_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/number_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/object_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/object_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/one_of_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/string_type.test.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/string_type.ts (100%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/type.ts (99%) rename {src/core/server/config/schema => packages/kbn-config-schema/src}/types/union_type.ts (100%) create mode 100644 packages/kbn-config-schema/tsconfig.json rename src/core/server/config/schema/internals/internals_schema.d.ts => packages/kbn-config-schema/types/joi.d.ts (96%) create mode 100644 packages/kbn-config-schema/yarn.lock diff --git a/.eslintrc.js b/.eslintrc.js index ad86cde9dc52..501f7da4d2cc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -32,6 +32,7 @@ module.exports = { files: [ '.eslintrc.js', 'packages/eslint-plugin-kibana-custom/**/*', + 'packages/kbn-config-schema/**/*', 'packages/kbn-pm/**/*', 'packages/kbn-es/**/*', 'packages/kbn-datemath/**/*', diff --git a/package.json b/package.json index 68f5043166b1..a1aeaa5c50b7 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "@elastic/numeral": "2.3.2", "@elastic/ui-ace": "0.2.3", "@kbn/babel-preset": "link:packages/kbn-babel-preset", + "@kbn/config-schema": "link:packages/kbn-config-schema", "@kbn/datemath": "link:packages/kbn-datemath", "@kbn/i18n": "link:packages/kbn-i18n", "@kbn/pm": "link:packages/kbn-pm", diff --git a/packages/kbn-config-schema/package.json b/packages/kbn-config-schema/package.json new file mode 100644 index 000000000000..4d8a017716ac --- /dev/null +++ b/packages/kbn-config-schema/package.json @@ -0,0 +1,20 @@ +{ + "name": "@kbn/config-schema", + "main": "./target/out/index.js", + "types": "./target/types/index.d.ts", + "version": "1.0.0", + "license": "Apache-2.0", + "private": true, + "scripts": { + "build": "tsc", + "kbn:bootstrap": "yarn build" + }, + "devDependencies": { + "typescript": "^3.0.3" + }, + "peerDependencies": { + "joi": "10.4.1", + "moment": "^2.20.1", + "type-detect": "^4.0.8" + } +} diff --git a/src/core/server/config/schema/byte_size_value/__snapshots__/index.test.ts.snap b/packages/kbn-config-schema/src/byte_size_value/__snapshots__/index.test.ts.snap similarity index 100% rename from src/core/server/config/schema/byte_size_value/__snapshots__/index.test.ts.snap rename to packages/kbn-config-schema/src/byte_size_value/__snapshots__/index.test.ts.snap diff --git a/src/core/server/config/schema/byte_size_value/index.test.ts b/packages/kbn-config-schema/src/byte_size_value/index.test.ts similarity index 100% rename from src/core/server/config/schema/byte_size_value/index.test.ts rename to packages/kbn-config-schema/src/byte_size_value/index.test.ts diff --git a/src/core/server/config/schema/byte_size_value/index.ts b/packages/kbn-config-schema/src/byte_size_value/index.ts similarity index 100% rename from src/core/server/config/schema/byte_size_value/index.ts rename to packages/kbn-config-schema/src/byte_size_value/index.ts diff --git a/src/core/server/config/schema/duration/index.ts b/packages/kbn-config-schema/src/duration/index.ts similarity index 100% rename from src/core/server/config/schema/duration/index.ts rename to packages/kbn-config-schema/src/duration/index.ts diff --git a/src/core/server/config/schema/errors/index.ts b/packages/kbn-config-schema/src/errors/index.ts similarity index 100% rename from src/core/server/config/schema/errors/index.ts rename to packages/kbn-config-schema/src/errors/index.ts diff --git a/src/core/server/config/schema/errors/schema_error.test.ts b/packages/kbn-config-schema/src/errors/schema_error.test.ts similarity index 100% rename from src/core/server/config/schema/errors/schema_error.test.ts rename to packages/kbn-config-schema/src/errors/schema_error.test.ts diff --git a/src/core/server/config/schema/errors/schema_error.ts b/packages/kbn-config-schema/src/errors/schema_error.ts similarity index 100% rename from src/core/server/config/schema/errors/schema_error.ts rename to packages/kbn-config-schema/src/errors/schema_error.ts diff --git a/src/core/server/config/schema/errors/schema_type_error.ts b/packages/kbn-config-schema/src/errors/schema_type_error.ts similarity index 100% rename from src/core/server/config/schema/errors/schema_type_error.ts rename to packages/kbn-config-schema/src/errors/schema_type_error.ts diff --git a/src/core/server/config/schema/errors/schema_types_error.ts b/packages/kbn-config-schema/src/errors/schema_types_error.ts similarity index 100% rename from src/core/server/config/schema/errors/schema_types_error.ts rename to packages/kbn-config-schema/src/errors/schema_types_error.ts diff --git a/src/core/server/config/schema/errors/validation_error.ts b/packages/kbn-config-schema/src/errors/validation_error.ts similarity index 100% rename from src/core/server/config/schema/errors/validation_error.ts rename to packages/kbn-config-schema/src/errors/validation_error.ts diff --git a/src/core/server/config/schema/index.ts b/packages/kbn-config-schema/src/index.ts similarity index 100% rename from src/core/server/config/schema/index.ts rename to packages/kbn-config-schema/src/index.ts diff --git a/src/core/server/config/schema/internals/index.ts b/packages/kbn-config-schema/src/internals/index.ts similarity index 99% rename from src/core/server/config/schema/internals/index.ts rename to packages/kbn-config-schema/src/internals/index.ts index f97fcf8b4c1f..b6dbcd7a0018 100644 --- a/src/core/server/config/schema/internals/index.ts +++ b/packages/kbn-config-schema/src/internals/index.ts @@ -66,6 +66,9 @@ const anyCustomRule: Rules = { }, }; +/** + * @internal + */ export const internals = Joi.extend([ { name: 'any', diff --git a/src/core/server/config/schema/references/context_reference.ts b/packages/kbn-config-schema/src/references/context_reference.ts similarity index 100% rename from src/core/server/config/schema/references/context_reference.ts rename to packages/kbn-config-schema/src/references/context_reference.ts diff --git a/src/core/server/config/schema/references/index.ts b/packages/kbn-config-schema/src/references/index.ts similarity index 100% rename from src/core/server/config/schema/references/index.ts rename to packages/kbn-config-schema/src/references/index.ts diff --git a/src/core/server/config/schema/references/reference.ts b/packages/kbn-config-schema/src/references/reference.ts similarity index 100% rename from src/core/server/config/schema/references/reference.ts rename to packages/kbn-config-schema/src/references/reference.ts diff --git a/src/core/server/config/schema/references/sibling_reference.ts b/packages/kbn-config-schema/src/references/sibling_reference.ts similarity index 100% rename from src/core/server/config/schema/references/sibling_reference.ts rename to packages/kbn-config-schema/src/references/sibling_reference.ts diff --git a/src/core/server/config/schema/types/__snapshots__/any_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/any_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/any_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/any_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/array_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/array_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/array_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/array_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/boolean_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/boolean_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/boolean_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/boolean_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/byte_size_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/byte_size_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/byte_size_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/byte_size_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/conditional_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/conditional_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/conditional_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/conditional_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/duration_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/duration_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/duration_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/duration_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/literal_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/literal_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/literal_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/literal_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/map_of_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/map_of_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/map_of_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/map_of_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/maybe_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/maybe_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/maybe_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/maybe_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/number_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/number_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/number_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/number_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/object_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/object_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/object_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/object_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/one_of_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/one_of_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/one_of_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/one_of_type.test.ts.snap diff --git a/src/core/server/config/schema/types/__snapshots__/string_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/string_type.test.ts.snap similarity index 100% rename from src/core/server/config/schema/types/__snapshots__/string_type.test.ts.snap rename to packages/kbn-config-schema/src/types/__snapshots__/string_type.test.ts.snap diff --git a/src/core/server/config/schema/types/any_type.test.ts b/packages/kbn-config-schema/src/types/any_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/any_type.test.ts rename to packages/kbn-config-schema/src/types/any_type.test.ts diff --git a/src/core/server/config/schema/types/any_type.ts b/packages/kbn-config-schema/src/types/any_type.ts similarity index 100% rename from src/core/server/config/schema/types/any_type.ts rename to packages/kbn-config-schema/src/types/any_type.ts diff --git a/src/core/server/config/schema/types/array_type.test.ts b/packages/kbn-config-schema/src/types/array_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/array_type.test.ts rename to packages/kbn-config-schema/src/types/array_type.test.ts diff --git a/src/core/server/config/schema/types/array_type.ts b/packages/kbn-config-schema/src/types/array_type.ts similarity index 100% rename from src/core/server/config/schema/types/array_type.ts rename to packages/kbn-config-schema/src/types/array_type.ts diff --git a/src/core/server/config/schema/types/boolean_type.test.ts b/packages/kbn-config-schema/src/types/boolean_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/boolean_type.test.ts rename to packages/kbn-config-schema/src/types/boolean_type.test.ts diff --git a/src/core/server/config/schema/types/boolean_type.ts b/packages/kbn-config-schema/src/types/boolean_type.ts similarity index 100% rename from src/core/server/config/schema/types/boolean_type.ts rename to packages/kbn-config-schema/src/types/boolean_type.ts diff --git a/src/core/server/config/schema/types/byte_size_type.test.ts b/packages/kbn-config-schema/src/types/byte_size_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/byte_size_type.test.ts rename to packages/kbn-config-schema/src/types/byte_size_type.test.ts diff --git a/src/core/server/config/schema/types/byte_size_type.ts b/packages/kbn-config-schema/src/types/byte_size_type.ts similarity index 100% rename from src/core/server/config/schema/types/byte_size_type.ts rename to packages/kbn-config-schema/src/types/byte_size_type.ts diff --git a/src/core/server/config/schema/types/conditional_type.test.ts b/packages/kbn-config-schema/src/types/conditional_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/conditional_type.test.ts rename to packages/kbn-config-schema/src/types/conditional_type.test.ts diff --git a/src/core/server/config/schema/types/conditional_type.ts b/packages/kbn-config-schema/src/types/conditional_type.ts similarity index 100% rename from src/core/server/config/schema/types/conditional_type.ts rename to packages/kbn-config-schema/src/types/conditional_type.ts diff --git a/src/core/server/config/schema/types/duration_type.test.ts b/packages/kbn-config-schema/src/types/duration_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/duration_type.test.ts rename to packages/kbn-config-schema/src/types/duration_type.test.ts diff --git a/src/core/server/config/schema/types/duration_type.ts b/packages/kbn-config-schema/src/types/duration_type.ts similarity index 100% rename from src/core/server/config/schema/types/duration_type.ts rename to packages/kbn-config-schema/src/types/duration_type.ts diff --git a/src/core/server/config/schema/types/index.ts b/packages/kbn-config-schema/src/types/index.ts similarity index 100% rename from src/core/server/config/schema/types/index.ts rename to packages/kbn-config-schema/src/types/index.ts diff --git a/src/core/server/config/schema/types/literal_type.test.ts b/packages/kbn-config-schema/src/types/literal_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/literal_type.test.ts rename to packages/kbn-config-schema/src/types/literal_type.test.ts diff --git a/src/core/server/config/schema/types/literal_type.ts b/packages/kbn-config-schema/src/types/literal_type.ts similarity index 100% rename from src/core/server/config/schema/types/literal_type.ts rename to packages/kbn-config-schema/src/types/literal_type.ts diff --git a/src/core/server/config/schema/types/map_of_type.test.ts b/packages/kbn-config-schema/src/types/map_of_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/map_of_type.test.ts rename to packages/kbn-config-schema/src/types/map_of_type.test.ts diff --git a/src/core/server/config/schema/types/map_type.ts b/packages/kbn-config-schema/src/types/map_type.ts similarity index 100% rename from src/core/server/config/schema/types/map_type.ts rename to packages/kbn-config-schema/src/types/map_type.ts diff --git a/src/core/server/config/schema/types/maybe_type.test.ts b/packages/kbn-config-schema/src/types/maybe_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/maybe_type.test.ts rename to packages/kbn-config-schema/src/types/maybe_type.test.ts diff --git a/src/core/server/config/schema/types/maybe_type.ts b/packages/kbn-config-schema/src/types/maybe_type.ts similarity index 100% rename from src/core/server/config/schema/types/maybe_type.ts rename to packages/kbn-config-schema/src/types/maybe_type.ts diff --git a/src/core/server/config/schema/types/number_type.test.ts b/packages/kbn-config-schema/src/types/number_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/number_type.test.ts rename to packages/kbn-config-schema/src/types/number_type.test.ts diff --git a/src/core/server/config/schema/types/number_type.ts b/packages/kbn-config-schema/src/types/number_type.ts similarity index 100% rename from src/core/server/config/schema/types/number_type.ts rename to packages/kbn-config-schema/src/types/number_type.ts diff --git a/src/core/server/config/schema/types/object_type.test.ts b/packages/kbn-config-schema/src/types/object_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/object_type.test.ts rename to packages/kbn-config-schema/src/types/object_type.test.ts diff --git a/src/core/server/config/schema/types/object_type.ts b/packages/kbn-config-schema/src/types/object_type.ts similarity index 100% rename from src/core/server/config/schema/types/object_type.ts rename to packages/kbn-config-schema/src/types/object_type.ts diff --git a/src/core/server/config/schema/types/one_of_type.test.ts b/packages/kbn-config-schema/src/types/one_of_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/one_of_type.test.ts rename to packages/kbn-config-schema/src/types/one_of_type.test.ts diff --git a/src/core/server/config/schema/types/string_type.test.ts b/packages/kbn-config-schema/src/types/string_type.test.ts similarity index 100% rename from src/core/server/config/schema/types/string_type.test.ts rename to packages/kbn-config-schema/src/types/string_type.test.ts diff --git a/src/core/server/config/schema/types/string_type.ts b/packages/kbn-config-schema/src/types/string_type.ts similarity index 100% rename from src/core/server/config/schema/types/string_type.ts rename to packages/kbn-config-schema/src/types/string_type.ts diff --git a/src/core/server/config/schema/types/type.ts b/packages/kbn-config-schema/src/types/type.ts similarity index 99% rename from src/core/server/config/schema/types/type.ts rename to packages/kbn-config-schema/src/types/type.ts index b7db6d71668a..61f39d8ae42f 100644 --- a/src/core/server/config/schema/types/type.ts +++ b/packages/kbn-config-schema/src/types/type.ts @@ -81,6 +81,9 @@ export abstract class Type { return validatedValue; } + /** + * @internal + */ public getSchema() { return this.internalSchema; } diff --git a/src/core/server/config/schema/types/union_type.ts b/packages/kbn-config-schema/src/types/union_type.ts similarity index 100% rename from src/core/server/config/schema/types/union_type.ts rename to packages/kbn-config-schema/src/types/union_type.ts diff --git a/packages/kbn-config-schema/tsconfig.json b/packages/kbn-config-schema/tsconfig.json new file mode 100644 index 000000000000..6d228baba066 --- /dev/null +++ b/packages/kbn-config-schema/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "declarationDir": "./target/types", + "outDir": "./target/out", + "stripInternal": true + }, + "include": [ + "./types/joi.d.ts", + "./src/**/*.ts" + ], + "exclude": [ + "target" + ] +} diff --git a/src/core/server/config/schema/internals/internals_schema.d.ts b/packages/kbn-config-schema/types/joi.d.ts similarity index 96% rename from src/core/server/config/schema/internals/internals_schema.d.ts rename to packages/kbn-config-schema/types/joi.d.ts index 41fa611ac205..8f3082e34204 100644 --- a/src/core/server/config/schema/internals/internals_schema.d.ts +++ b/packages/kbn-config-schema/types/joi.d.ts @@ -17,7 +17,7 @@ * under the License. */ import * as Joi from 'joi'; -import { ByteSizeValue } from '../byte_size_value'; +import { ByteSizeValue } from '../src/byte_size_value'; declare module 'joi' { interface BytesSchema extends AnySchema { diff --git a/packages/kbn-config-schema/yarn.lock b/packages/kbn-config-schema/yarn.lock new file mode 100644 index 000000000000..b46114b77878 --- /dev/null +++ b/packages/kbn-config-schema/yarn.lock @@ -0,0 +1,7 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +typescript@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.1.tgz#3362ba9dd1e482ebb2355b02dfe8bcd19a2c7c96" diff --git a/src/core/server/config/config_service.test.ts b/src/core/server/config/config_service.test.ts index 22598b2a971d..086b465b8d42 100644 --- a/src/core/server/config/config_service.test.ts +++ b/src/core/server/config/config_service.test.ts @@ -25,7 +25,7 @@ import { first } from 'rxjs/operators'; const mockPackage = new Proxy({ raw: {} as any }, { get: (obj, prop) => obj.raw[prop] }); jest.mock('../../../utils/package_json', () => ({ pkg: mockPackage })); -import { schema, Type, TypeOf } from './schema'; +import { schema, Type, TypeOf } from '@kbn/config-schema'; import { ConfigService, Env, ObjectToConfigAdapter } from '.'; import { logger } from '../logging/__mocks__'; diff --git a/src/core/server/config/config_service.ts b/src/core/server/config/config_service.ts index a087c6fa3e4b..0d71fbeb5c98 100644 --- a/src/core/server/config/config_service.ts +++ b/src/core/server/config/config_service.ts @@ -17,13 +17,13 @@ * under the License. */ +import { Type } from '@kbn/config-schema'; import { isEqual } from 'lodash'; import { Observable } from 'rxjs'; import { distinctUntilChanged, first, map } from 'rxjs/operators'; import { Config, ConfigPath, ConfigWithSchema, Env } from '.'; import { Logger, LoggerFactory } from '../logging'; -import { Type } from './schema'; export class ConfigService { private readonly log: Logger; diff --git a/src/core/server/config/config_with_schema.ts b/src/core/server/config/config_with_schema.ts index 31de12a95cc9..1c392b93b6a7 100644 --- a/src/core/server/config/config_with_schema.ts +++ b/src/core/server/config/config_with_schema.ts @@ -18,8 +18,8 @@ */ // TODO inline all of these +import { Type, TypeOf } from '@kbn/config-schema'; import { Env } from './env'; -import { Type, TypeOf } from './schema'; /** * Interface that defines the static side of a config class. diff --git a/src/core/server/dev/dev_config.ts b/src/core/server/dev/dev_config.ts index 5c8aca3ce3c5..174b10888379 100644 --- a/src/core/server/dev/dev_config.ts +++ b/src/core/server/dev/dev_config.ts @@ -17,7 +17,7 @@ * under the License. */ -import { schema, TypeOf } from '../config/schema'; +import { schema, TypeOf } from '@kbn/config-schema'; const createDevSchema = schema.object({ basePathProxyTarget: schema.number({ diff --git a/src/core/server/http/base_path_proxy_server.ts b/src/core/server/http/base_path_proxy_server.ts index b0c2144d7189..4f0b92db48d5 100644 --- a/src/core/server/http/base_path_proxy_server.ts +++ b/src/core/server/http/base_path_proxy_server.ts @@ -17,10 +17,10 @@ * under the License. */ +import { ByteSizeValue } from '@kbn/config-schema'; import { Server } from 'hapi-latest'; import { Agent as HttpsAgent, ServerOptions as TlsOptions } from 'https'; import { sample } from 'lodash'; -import { ByteSizeValue } from '../config/schema'; import { DevConfig } from '../dev'; import { Logger } from '../logging'; import { HttpConfig } from './http_config'; diff --git a/src/core/server/http/http_config.ts b/src/core/server/http/http_config.ts index 67578ecc1559..e681d9634abb 100644 --- a/src/core/server/http/http_config.ts +++ b/src/core/server/http/http_config.ts @@ -17,8 +17,8 @@ * under the License. */ +import { ByteSizeValue, schema, TypeOf } from '@kbn/config-schema'; import { Env } from '../config'; -import { ByteSizeValue, schema, TypeOf } from '../config/schema'; import { SslConfig } from './ssl_config'; const validBasePathRegex = /(^$|^\/.*[^\/]$)/; diff --git a/src/core/server/http/http_server.test.ts b/src/core/server/http/http_server.test.ts index 704a6ddf97ab..c5f5bb134124 100644 --- a/src/core/server/http/http_server.test.ts +++ b/src/core/server/http/http_server.test.ts @@ -26,8 +26,8 @@ jest.mock('fs', () => ({ import Chance from 'chance'; import supertest from 'supertest'; +import { ByteSizeValue } from '@kbn/config-schema'; import { HttpConfig, Router } from '.'; -import { ByteSizeValue } from '../config/schema'; import { logger } from '../logging/__mocks__'; import { HttpServer } from './http_server'; diff --git a/src/core/server/http/https_redirect_server.test.ts b/src/core/server/http/https_redirect_server.test.ts index 6d9443335a62..a9fd8ec12e15 100644 --- a/src/core/server/http/https_redirect_server.test.ts +++ b/src/core/server/http/https_redirect_server.test.ts @@ -25,8 +25,8 @@ import Chance from 'chance'; import { Server } from 'http'; import supertest from 'supertest'; +import { ByteSizeValue } from '@kbn/config-schema'; import { HttpConfig } from '.'; -import { ByteSizeValue } from '../config/schema'; import { logger } from '../logging/__mocks__'; import { HttpsRedirectServer } from './https_redirect_server'; diff --git a/src/core/server/http/router/request.ts b/src/core/server/http/router/request.ts index 87f8e5d86615..fb07fa2191d1 100644 --- a/src/core/server/http/router/request.ts +++ b/src/core/server/http/router/request.ts @@ -17,8 +17,8 @@ * under the License. */ +import { ObjectType, TypeOf } from '@kbn/config-schema'; import { Request } from 'hapi-latest'; -import { ObjectType, TypeOf } from '../../config/schema'; import { filterHeaders, Headers } from './headers'; import { RouteSchemas } from './route'; diff --git a/src/core/server/http/router/route.ts b/src/core/server/http/router/route.ts index a8647815c4ed..64ed67e8f940 100644 --- a/src/core/server/http/router/route.ts +++ b/src/core/server/http/router/route.ts @@ -17,7 +17,7 @@ * under the License. */ -import { ObjectType, Schema } from '../../config/schema'; +import { ObjectType, Schema } from '@kbn/config-schema'; export type RouteMethod = 'GET' | 'POST' | 'PUT' | 'DELETE'; export interface RouteConfig

{ diff --git a/src/core/server/http/router/router.ts b/src/core/server/http/router/router.ts index 89296e1f0612..e0a9d7f691b3 100644 --- a/src/core/server/http/router/router.ts +++ b/src/core/server/http/router/router.ts @@ -17,8 +17,8 @@ * under the License. */ +import { ObjectType, schema, TypeOf } from '@kbn/config-schema'; import { Request, ResponseObject, ResponseToolkit } from 'hapi-latest'; -import { ObjectType, schema, TypeOf } from '../../config/schema'; import { KibanaRequest } from './request'; import { KibanaResponse, ResponseFactory, responseFactory } from './response'; diff --git a/src/core/server/http/ssl_config.ts b/src/core/server/http/ssl_config.ts index f7be7ab05d41..fb36cbe58472 100644 --- a/src/core/server/http/ssl_config.ts +++ b/src/core/server/http/ssl_config.ts @@ -17,8 +17,8 @@ * under the License. */ +import { schema, TypeOf } from '@kbn/config-schema'; import crypto from 'crypto'; -import { schema, TypeOf } from '../config/schema'; // `crypto` type definitions doesn't currently include `crypto.constants`, see // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/fa5baf1733f49cf26228a4e509914572c1b74adf/types/node/v6/index.d.ts#L3412 diff --git a/src/core/server/legacy_compat/logging/appenders/legacy_appender.ts b/src/core/server/legacy_compat/logging/appenders/legacy_appender.ts index a890d1620def..011dfae8a5ce 100644 --- a/src/core/server/legacy_compat/logging/appenders/legacy_appender.ts +++ b/src/core/server/legacy_compat/logging/appenders/legacy_appender.ts @@ -17,7 +17,7 @@ * under the License. */ -import { schema } from '../../../config/schema'; +import { schema } from '@kbn/config-schema'; import { DisposableAppender } from '../../../logging/appenders/appenders'; import { LogRecord } from '../../../logging/log_record'; import { LegacyLoggingServer } from '../legacy_logging_server'; diff --git a/src/core/server/logging/appenders/appenders.test.ts b/src/core/server/logging/appenders/appenders.test.ts index 2103f9d8187b..dea4b117b7d4 100644 --- a/src/core/server/logging/appenders/appenders.test.ts +++ b/src/core/server/logging/appenders/appenders.test.ts @@ -19,7 +19,7 @@ const mockCreateLayout = jest.fn(); jest.mock('../layouts/layouts', () => { - const { schema } = require('../../config/schema'); + const { schema } = require('@kbn/config-schema'); return { Layouts: { configSchema: schema.object({ kind: schema.literal('mock') }), diff --git a/src/core/server/logging/appenders/appenders.ts b/src/core/server/logging/appenders/appenders.ts index 69ff6f568454..5639899fde2b 100644 --- a/src/core/server/logging/appenders/appenders.ts +++ b/src/core/server/logging/appenders/appenders.ts @@ -17,7 +17,7 @@ * under the License. */ -import { schema, TypeOf } from '../../config/schema'; +import { schema, TypeOf } from '@kbn/config-schema'; import { assertNever } from '../../../utils'; import { LegacyAppender } from '../../legacy_compat/logging/appenders/legacy_appender'; diff --git a/src/core/server/logging/appenders/console/console_appender.test.ts b/src/core/server/logging/appenders/console/console_appender.test.ts index fe5602a80969..9763ebe19ef2 100644 --- a/src/core/server/logging/appenders/console/console_appender.test.ts +++ b/src/core/server/logging/appenders/console/console_appender.test.ts @@ -18,7 +18,7 @@ */ jest.mock('../../layouts/layouts', () => { - const { schema } = require('../../../config/schema'); + const { schema } = require('@kbn/config-schema'); return { Layouts: { configSchema: schema.object({ diff --git a/src/core/server/logging/appenders/console/console_appender.ts b/src/core/server/logging/appenders/console/console_appender.ts index 63d78496bbaa..67d0ea4d1837 100644 --- a/src/core/server/logging/appenders/console/console_appender.ts +++ b/src/core/server/logging/appenders/console/console_appender.ts @@ -17,7 +17,7 @@ * under the License. */ -import { schema } from '../../../config/schema'; +import { schema } from '@kbn/config-schema'; import { Layout, Layouts } from '../../layouts/layouts'; import { LogRecord } from '../../log_record'; diff --git a/src/core/server/logging/appenders/file/file_appender.test.ts b/src/core/server/logging/appenders/file/file_appender.test.ts index cc8f0196bff7..1d9ef3399595 100644 --- a/src/core/server/logging/appenders/file/file_appender.test.ts +++ b/src/core/server/logging/appenders/file/file_appender.test.ts @@ -18,7 +18,7 @@ */ jest.mock('../../layouts/layouts', () => { - const { schema } = require('../../../config/schema'); + const { schema } = require('@kbn/config-schema'); return { Layouts: { configSchema: schema.object({ diff --git a/src/core/server/logging/appenders/file/file_appender.ts b/src/core/server/logging/appenders/file/file_appender.ts index ac8c18bc72c8..3aca59fb3f42 100644 --- a/src/core/server/logging/appenders/file/file_appender.ts +++ b/src/core/server/logging/appenders/file/file_appender.ts @@ -17,8 +17,8 @@ * under the License. */ +import { schema } from '@kbn/config-schema'; import { createWriteStream, WriteStream } from 'fs'; -import { schema } from '../../../config/schema'; import { Layout, Layouts } from '../../layouts/layouts'; import { LogRecord } from '../../log_record'; diff --git a/src/core/server/logging/layouts/json_layout.ts b/src/core/server/logging/layouts/json_layout.ts index 7983cfc99228..1dcc3fc3ebcf 100644 --- a/src/core/server/logging/layouts/json_layout.ts +++ b/src/core/server/logging/layouts/json_layout.ts @@ -17,7 +17,7 @@ * under the License. */ -import { schema, TypeOf } from '../../config/schema'; +import { schema, TypeOf } from '@kbn/config-schema'; import { LogRecord } from '../log_record'; import { Layout } from './layouts'; diff --git a/src/core/server/logging/layouts/layouts.ts b/src/core/server/logging/layouts/layouts.ts index 85726aaf6090..0e6a6360cab2 100644 --- a/src/core/server/logging/layouts/layouts.ts +++ b/src/core/server/logging/layouts/layouts.ts @@ -17,7 +17,7 @@ * under the License. */ -import { schema } from '../../config/schema'; +import { schema } from '@kbn/config-schema'; import { assertNever } from '../../../utils'; import { LogRecord } from '../log_record'; diff --git a/src/core/server/logging/layouts/pattern_layout.ts b/src/core/server/logging/layouts/pattern_layout.ts index 5f21328e6c7d..c259a29dc686 100644 --- a/src/core/server/logging/layouts/pattern_layout.ts +++ b/src/core/server/logging/layouts/pattern_layout.ts @@ -17,8 +17,8 @@ * under the License. */ +import { schema, TypeOf } from '@kbn/config-schema'; import chalk from 'chalk'; -import { schema, TypeOf } from '../../config/schema'; import { LogLevel } from '../log_level'; import { LogRecord } from '../log_record'; diff --git a/src/core/server/logging/logging_config.ts b/src/core/server/logging/logging_config.ts index b23d32f5e9b3..64de8ed1de21 100644 --- a/src/core/server/logging/logging_config.ts +++ b/src/core/server/logging/logging_config.ts @@ -17,7 +17,7 @@ * under the License. */ -import { schema, TypeOf } from '../config/schema'; +import { schema, TypeOf } from '@kbn/config-schema'; import { AppenderConfigType, Appenders } from './appenders/appenders'; // We need this helper for the types to be correct diff --git a/yarn.lock b/yarn.lock index fc3f14c366bc..d886f0502562 100644 --- a/yarn.lock +++ b/yarn.lock @@ -171,6 +171,10 @@ version "0.0.0" uid "" +"@kbn/config-schema@link:packages/kbn-config-schema": + version "0.0.0" + uid "" + "@kbn/datemath@link:packages/kbn-datemath": version "0.0.0" uid ""