* implements `extends` to `ObjectSchema` (#68067)
* implements `extends` to `ObjectSchema`
* add unit tests
* use expectType for types assertions
* allow to extends options
* add comment about deep extend
# Conflicts:
# packages/kbn-config-schema/src/types/object_type.test.ts
* add missing import
* fix type
* allow parsing from string for object-ish and array types
* update snapshots
* fix FTR assertion
* add documentation note about using a json string as input
* Update Duration to coerce number strings to numbers (in millis)
* Coerce in a way that's consistent with kbn-config-schema
* Update ByteSizeValue to coerce strings to numbers
* Update Boolean to coerce strings to boolean values
* Fix Jest test
* Address PR review feedback
* Whoops
* Whoops 2
* Whoops 3
* [NP] Allow custom validations in HTTP Routes apart from @kbn/config-schema
* API docs
* Allow validate function in the route handler (run-code validation)
* Prefix RouteXXX + Params and Body Validation Aliases
* Fix test broken by lodash
* Update API docs
* Add default types for simpler manual declaration
* Add run-time validation of the RouteValidateSpec
* Expose RouteValidationError instead of SchemaTypeError
* RouteValidator as a class to match config-schema interface
* Test for not-inline handler (need to check IRouter for #47047)
* Add preValidation of the input for a safer custom validation
* Better types for RouteHandlers
* [NP] Move route validation to RouteValidator wrapper
* Use the class only internally but maintain the same API
* Fix types
* Ensure RouteValidator instance in KibanaRequest.from
* Fix validator.tests (Buffer.from instead of new Buffer)
* Default precheck should allow null values
* Also allow undefined in preChecks
* MR feedback fixes
* Provide RouteValidationResolver to the validation function
* Add functional tests
* Fix new functional tests
* Fix validator additional test
* Fix test with new resolver
* Remove unused import
* Rename ValidationResolver to ValidationResultFactory and change the interface to look more like the KibanaResponseFactory
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Allow routes to define some payload config values
* Documentation typo
* Move hapi `payload` config under `body` + additional validations
* Update API docs
* Amend explanation in API docs
* Add stream and buffer types to @kbn/config-schema
* Fixes based on PR feedback:
- Add 'patch' and 'options' to valid RouteMethod
- Add tests for all the new flags
- Allow `stream` and `buffer` schema in the body validations (findings from tests)
* API documentation update
* Fix type definitions
* Fix the NITs in the PR comments + better typing inheritance
* API docs update
* Fix APM-legacy wrapper's types
* Fix KibanaRequest.from type exposure of hapi in API docs
* Move RouterRoute interface back to private + Expose some public docs
* Update @kbn/config-schema docs
* Update moment related packages
* unify moment version in yarn.lock
* adapt ro pluralization fixes
* update some bad pluralization in fixtures/snapshots
The previous implementation of `schema.nullable()` ends up having
a problem - it only works right for `schema.nullable(schema.string())`.
For other types, like `schema.number()` and `schema.boolean()`, a `null`
value passed in does not validate.
I poked around a bit, but "it's complicated". So, went with the
suggested approach of using a `schema.maybe([V, null])` validation,
which works for number and boolean.
Added some additional tests on the `nullable` type.
The `nullable` type is very similar to the `maybe` type, except that
it validates nulls and undefined values to null, instead of undefined.
Eg,
maybe(T): T | undefined
nullable(T): T | null
* [ts] upgrade to 3.5.3 (#40228)
* [ts] upgrade to 3.5.2
* [ts] run from cwd so that relative paths are correct
* move eslint-disable-line comment into jsx attribute
* autofix eslint violations
* avoid generic type, it's not necessary and problematic
* make elasticsearch.cluster optional, many instances don't have them
* remove invalid prop
* expand AllowUnknownProperties to cleanly handle arrays
* esfilter values can sometimes be an array of strings
* allow exception objects to have unknown properties
* define accumulator as a boolean
* fix return type
* return a 404 if beat isn't found after update
* use Object.values for better types
* define return type of get() call
* define value type for Set
* define return value of get()
* define State property type
* use less get(), so ts can infer types
* define Set item type
* map state type
* make default_operator optional, since it's not always defined
* remove seemingly unused prop
* define return type of get() fn
* define inner type for state
* don't define base types are objects with index signatues
* regenerate public api docs
* make indices privileges optional too
* remove unnecessary index-signature from Exception interface
* use variadic _arg instead
* [core/plugin] use Record<string, any> rather than {}
* replace a couple more instances of {}
* revert some unnecessary changes
* remove unused types
* [reporting] output, payload, and meta are required properties
* bump to latest patch version
# Conflicts:
# x-pack/legacy/plugins/canvas/server/usage/custom_element_collector.ts
# x-pack/legacy/plugins/canvas/server/usage/workpad_collector.ts
* define inner type for Set
* default `config.get()` to any instead of unknown
* support null for literal type
* support schemas withing right operand of conditional type
* add never type to ban usage
* remove never options. add when needed
* add tests for Reference.isReference
* [feat] add reach-like functionality to object
In #36804 we need to validate a `Partial<HttpConfig>` object which may
or may not have all the required keys attached to it. This is the type
of use-case for `Joi.reach`, so we should expose a reach-like method on
the object validation class so that you can return the validator for a
specific key on an object.
* [fix] change to validateKey
* [fix] use throw error matcher
* [fix] use same interface for validate
* [fix] change test name]
In https://github.com/elastic/kibana/pull/31234 there were some extra changes that I've reverted, like use of the `tsconfig-paths` package to magically rewrite import statements to defy the standard node module resolution algorithm, the inclusion of several unnecessary options in the `test/tsconfig.json` file, and changes of the line-endings in the config files. This also brings a few enhancements from https://github.com/elastic/kibana/pull/30190 including a modularized version of the expect.js types, and options for explicit mappings for the PageObjects and services used in ftr tests.
* Update Typescript to the latest version (#32063)
* bump typescript version to 3.3.3333
* fix tests after updating TS version
* suppress type errors until they fixed appropriately
* address comments
* add type def for UnconnectedKibanaLink
* remove fix @ts-ignore
* fix snapshot test. provide displayName
* update lost test
* feat(NA): upgrade node js version on file configs.
* chore(NA): migrate configs and 3rd party dependencies to work on node js 10.x
* fix(NA): add missing async function declaration.
* chore(NA): updated elastic/good package to work with node10
* chore(NA): update lockfiles.
* fix(NA): add missing dep.
* fix(NA): types for node 10.
* test(NA): fix error return type for node10.
* fix(NA): kbn-pm webpack config to unlazy a require using lazy-cache. fix(NA): build to work with node 10.
* test(NA): jest integration test for kbn-pluin-helpers.
* test(NA): fix jest tests for kbn-es.
* fix(NA): use ostmpdir instead of a tmp folder inside the fixtures.
* fix(NA): change afterEach on kbn es decompress test.
* fix(NA): change afterEach on kbn es decompress test.
* fix(NA): readd mock-fs for the tests that still use it on kbn-es and that works on node10.
* fix(NA): readd mock-fs for the tests that still use it on kbn-es and that works on node10.
* refact(NA): rewrite tests using mock-fs and completely remove this dependency.
* fix(NA): failing test implementation using jest mock in order to replace mock-fs.
* fix(NA): update jest snapshots to match new ones generated one node 10.
* fix(NA): cli/cluster mock to spyOn off method instead off spyOn removeListener as this was changed on Node 10.
* fix(NA): tests for cluster_manager to also spyOn off and on instead of addListener and removeListener
* test(NA): fix management advance settings image field test flow.
* fix(NA): apply missing types for src/core/server/plugins/discovery/plugins_discovery.ts.
* test(NA): updated 2 missing snapshots for KuiCodeEditor on kbn-ui-framework.
* refact(NA): fix eslint errors.
* refact(NA): fix ts code with tslint fix. chore(NA): update jest snapshots.
* chore(NA): migrate kbn config schema peer dependency to last used joi version to avoid warning on bootstrap.
* fix(NA): tslint errors.
* chore(NA): upgrade types node to the last version.
* fix(NA): missing utf8 input format encoding when reading a file.
* chore(NA): upgrade to node 10.14.1
* fix(NA): Buffer api usage to avoid deprecation warnings.