// 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, Context } from '../../lib/Transport' const client: KibanaClient = new Client({ node: 'http://localhost:9200' }) client.on('request', (err, meta) => { expectType(err) expectType(meta) }) client.on('response', (err, meta) => { expectType(err) expectType(meta) }) client.on('sniff', (err, meta) => { expectType(err) expectType(meta) }) client.on('resurrect', (err, meta) => { expectType(err) expectType(meta) }) // No generics { const response = await client.cat.count({ index: 'test' }) expectType>(response.body) expectType(response.meta.context) } // Define only the response body { const response = await client.cat.count({ index: 'test' }) expectType(response.body) expectType(response.meta.context) } // Define response body and the context { const response = await client.cat.count({ index: 'test' }) expectType(response.body) expectType(response.meta.context) } // Check API returned type and optional parameters { const promise = client.info() expectType>(promise) promise .then(result => expectType(result)) .catch((err: ApiError) => expectType(err)) expectType(promise.abort()) } { const promise = client.info({ pretty: true }) expectType>(promise) promise .then(result => expectType(result)) .catch((err: ApiError) => expectType(err)) expectType(promise.abort()) } { const promise = client.info({ pretty: true }, { ignore: [404] }) expectType>(promise) promise .then(result => expectType(result)) .catch((err: ApiError) => expectType(err)) expectType(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>(client.close()) expectError(client.close(() => {})) // the child api should return a KibanaClient instance const child = client.child() expectType(child) expectNotType(child)