diff --git a/typescript-generator/client.js b/typescript-generator/client.js
index eb4d030036..ad6733ec4b 100644
--- a/typescript-generator/client.js
+++ b/typescript-generator/client.js
@@ -42,14 +42,27 @@ const clientDefinitions = `/*
* under the License.
*/
-import * as T from './types'
+///
+
import {
- TransportRequestPromise,
+ ClientOptions,
+ ConnectionPool,
+ Serializer,
+ Transport,
+ errors,
+ RequestEvent,
+ ResurrectEvent,
+ ApiError
+} from '../index'
+import Helpers from '../lib/Helpers'
+import {
+ ApiResponse,
TransportRequestCallback,
- TransportRequestOptions,
- ApiError,
- ApiResponse
+ TransportRequestPromise,
+ TransportRequestParams,
+ TransportRequestOptions
} from '../lib/Transport'
+import * as T from './types'
/**
* We are still working on this type, it will arrive soon.
@@ -58,8 +71,42 @@ import {
*/
type TODO = Record
+// Extend API
+interface ClientExtendsCallbackOptions {
+ ConfigurationError: errors.ConfigurationError,
+ makeRequest(params: TransportRequestParams, options?: TransportRequestOptions): Promise | void;
+ result: {
+ body: null,
+ statusCode: null,
+ headers: null,
+ warnings: null
+ }
+}
+declare type extendsCallback = (options: ClientExtendsCallbackOptions) => any;
+// /Extend API
+
declare type callbackFn = (err: ApiError, result: ApiResponse) => void;
-declare class ESAPI {\n`
+interface NewClientTypes {
+ connectionPool: ConnectionPool
+ transport: Transport
+ serializer: Serializer
+ extend(method: string, fn: extendsCallback): void
+ extend(method: string, opts: { force: boolean }, fn: extendsCallback): void;
+ helpers: Helpers
+ child(opts?: ClientOptions): NewClientTypes
+ close(callback: Function): void;
+ close(): Promise;
+ emit(event: string | symbol, ...args: any[]): boolean;
+ on(event: 'request', listener: (err: ApiError, meta: RequestEvent) => void): this;
+ on(event: 'response', listener: (err: ApiError, meta: RequestEvent) => void): this;
+ on(event: 'sniff', listener: (err: ApiError, meta: RequestEvent) => void): this;
+ on(event: 'resurrect', listener: (err: null, meta: ResurrectEvent) => void): this;
+ once(event: 'request', listener: (err: ApiError, meta: RequestEvent) => void): this;
+ once(event: 'response', listener: (err: ApiError, meta: RequestEvent) => void): this;
+ once(event: 'sniff', listener: (err: ApiError, meta: RequestEvent) => void): this;
+ once(event: 'resurrect', listener: (err: null, meta: ResurrectEvent) => void): this;
+ off(event: string | symbol, listener: (...args: any[]) => void): this;
+`
const kibanaDefinitions = `/*
* Licensed to Elasticsearch B.V. under one or more contributor
@@ -175,7 +222,7 @@ function createClientTypes (kibana = false) {
if (kibana) {
definitions += '}\n\nexport { KibanaClient }\n'
} else {
- definitions += '}\n\nexport default ESAPI\n'
+ definitions += '}\n\nexport { NewClientTypes }\n'
}
writeFileSync(
@@ -209,8 +256,11 @@ function createClientTypes (kibana = false) {
let requestGenerics = ''
if (Array.isArray(requestType.generics)) {
- requestDefinition = `T.${requestType.name.name}<${requestType.generics.join(', ')}>`
- requestGenerics = requestType.generics.map(unknownify).join(', ') + ', '
+ requestDefinition = `T.${requestType.name.name}<${requestType.generics.map(unwrapGeneric).join(', ')}>`
+ requestGenerics = requestType.generics
+ .map(unwrapGeneric)
+ .map(unknownify)
+ .join(', ') + ', '
} else if (requestType === null) {
requestDefinition = 'TODO'
} else {
@@ -221,8 +271,12 @@ function createClientTypes (kibana = false) {
let responseGenerics = ''
if (Array.isArray(responseType.generics)) {
- responseDefinition = `T.${responseType.name.name}<${responseType.generics.map(avoidCollisions).join(', ')}>`
- responseGenerics = responseType.generics.map(avoidCollisions).map(unknownify).join(', ') + ', '
+ responseDefinition = `T.${responseType.name.name}<${responseType.generics.map(unwrapGeneric).map(avoidCollisions).join(', ')}>`
+ responseGenerics = responseType.generics
+ .map(unwrapGeneric)
+ .map(avoidCollisions)
+ .map(unknownify)
+ .join(', ') + ', '
} else if (responseType === null) {
responseDefinition = 'TODO'
} else {
@@ -264,7 +318,7 @@ function createClientTypes (kibana = false) {
function avoidCollisions (generic) {
if (requestType === null || !Array.isArray(requestType.generics)) {
return generic
- } else if (requestType.generics.includes(generic)) {
+ } else if (requestType.generics.map(unwrapGeneric).includes(generic)) {
return generic + 'R'
} else {
return generic
@@ -274,6 +328,11 @@ function createClientTypes (kibana = false) {
function unknownify (generic) {
return `${generic} = unknown`
}
+
+ function unwrapGeneric (generic) {
+ if (typeof generic === 'string') return generic
+ return generic.name
+ }
}
function getType (name) {