-
Notifications
You must be signed in to change notification settings - Fork 725
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Export a kibana restricted type definition #1239
Merged
Merged
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
8b282d0
Added --kibana flag to client generator
delvedor b5f474d
Merge branch 'master' into kibana-ts-output
delvedor 3564501
Merge branch 'master' into kibana-ts-output
delvedor c055ea2
Merge branch 'master' into kibana-ts-output
delvedor d642db1
Bumped tsd dependency
delvedor 59086e8
Updated code gen scripts to generate a custom kibana type
delvedor 0897a1c
Added kibana.d.ts type
delvedor b7f55c9
Updated test
delvedor 1943881
Fix typo
delvedor db94125
Improved close API override
delvedor a049ea3
Updated test
delvedor 5dc9349
Merge branch 'master' into kibana-ts-output
delvedor eb617cf
Updated events definition
delvedor File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
// Licensed to Elasticsearch B.V under one or more agreements. | ||
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. | ||
// See the LICENSE file in the project root for more information | ||
|
||
import { expectType, expectNotType, expectError } from 'tsd' | ||
import { Client, RequestEvent, ResurrectEvent, ApiError, ApiResponse } from '../../' | ||
import { KibanaClient } from '../../api/kibana' | ||
import { TransportRequestPromise } from '../../lib/Transport' | ||
|
||
const client: KibanaClient = new Client({ | ||
node: 'http://localhost:9200' | ||
}) | ||
|
||
client.on('request', (err, meta) => { | ||
expectType<ApiError>(err) | ||
expectType<RequestEvent>(meta) | ||
}) | ||
|
||
client.on('response', (err, meta) => { | ||
expectType<ApiError>(err) | ||
expectType<RequestEvent>(meta) | ||
}) | ||
|
||
client.on('sniff', (err, meta) => { | ||
expectType<ApiError>(err) | ||
expectType<RequestEvent>(meta) | ||
}) | ||
|
||
client.on('resurrect', (err, meta) => { | ||
expectType<null>(err) | ||
expectType<ResurrectEvent>(meta) | ||
}) | ||
|
||
// No generics | ||
{ | ||
const response = await client.cat.count({ index: 'test' }) | ||
|
||
expectType<Record<string, any>>(response.body) | ||
expectType<unknown>(response.meta.context) | ||
} | ||
|
||
// Define only the response body | ||
{ | ||
const response = await client.cat.count<string>({ index: 'test' }) | ||
|
||
expectType<string>(response.body) | ||
expectType<unknown>(response.meta.context) | ||
} | ||
|
||
// Define response body and the context | ||
{ | ||
const response = await client.cat.count<string, string>({ index: 'test' }) | ||
|
||
expectType<string>(response.body) | ||
expectType<string>(response.meta.context) | ||
} | ||
|
||
// Check API returned type and optional parameters | ||
{ | ||
const promise = client.info() | ||
expectType<TransportRequestPromise<ApiResponse>>(promise) | ||
promise | ||
.then(result => expectType<ApiResponse>(result)) | ||
.catch((err: ApiError) => expectType<ApiError>(err)) | ||
expectType<void>(promise.abort()) | ||
} | ||
|
||
{ | ||
const promise = client.info({ pretty: true }) | ||
expectType<TransportRequestPromise<ApiResponse>>(promise) | ||
promise | ||
.then(result => expectType<ApiResponse>(result)) | ||
.catch((err: ApiError) => expectType<ApiError>(err)) | ||
expectType<void>(promise.abort()) | ||
} | ||
|
||
{ | ||
const promise = client.info({ pretty: true }, { ignore: [404] }) | ||
expectType<TransportRequestPromise<ApiResponse>>(promise) | ||
promise | ||
.then(result => expectType<ApiResponse>(result)) | ||
.catch((err: ApiError) => expectType<ApiError>(err)) | ||
expectType<void>(promise.abort()) | ||
} | ||
|
||
// body that does not respect the RequestBody constraint | ||
expectError( | ||
client.search({ | ||
index: 'hello', | ||
body: 42 | ||
}).then(console.log) | ||
) | ||
/* | ||
* We cannot test yet the absence of a property because tsd is still shipping | ||
* TypeScript v3.7, as soon as it will be 3.9, we'll uncomment the following test. | ||
|
||
// @ts-expect-error | ||
client.async_search.get() | ||
|
||
*/ | ||
|
||
// callback api is not supported | ||
expectError(client.cat.count({ index: 'test' }, {}, (err: any, result: any) => {})) | ||
|
||
// close api, only promises should be supported | ||
// callback api is not supported | ||
expectType<Promise<void>>(client.close()) | ||
expectError(client.close(() => {})) | ||
|
||
// the child api should return a KibanaClient instance | ||
const child = client.child() | ||
expectType<KibanaClient>(child) | ||
expectNotType<Client>(child) |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: it's easy to forget to update length if we change start token. Do you think you could you refer it explicitly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't expect it to change, also, we could still forget to update it here :D
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@delvedor Jumping in on @restrry comment. The recommended change is not only to cover the case where "start token" would change, but also to avoid "magic" number as per our styleguide (https://github.com/elastic/kibana/blob/master/STYLEGUIDE.md#magic-numbersstrings).
When I read
15
it does not mean anything, when I readstartToken.length
it is explicit what it is. Just my 2 cents 😊