@@ -42,14 +42,27 @@ const clientDefinitions = `/*
42
42
* under the License.
43
43
*/
44
44
45
- import * as T from './types'
45
+ /// <reference types="node" />
46
+
46
47
import {
47
- TransportRequestPromise,
48
+ ClientOptions,
49
+ ConnectionPool,
50
+ Serializer,
51
+ Transport,
52
+ errors,
53
+ RequestEvent,
54
+ ResurrectEvent,
55
+ ApiError
56
+ } from '../index'
57
+ import Helpers from '../lib/Helpers'
58
+ import {
59
+ ApiResponse,
48
60
TransportRequestCallback,
49
- TransportRequestOptions ,
50
- ApiError ,
51
- ApiResponse
61
+ TransportRequestPromise ,
62
+ TransportRequestParams ,
63
+ TransportRequestOptions
52
64
} from '../lib/Transport'
65
+ import * as T from './types'
53
66
54
67
/**
55
68
* We are still working on this type, it will arrive soon.
@@ -58,8 +71,42 @@ import {
58
71
*/
59
72
type TODO = Record<string, any>
60
73
74
+ // Extend API
75
+ interface ClientExtendsCallbackOptions {
76
+ ConfigurationError: errors.ConfigurationError,
77
+ makeRequest(params: TransportRequestParams, options?: TransportRequestOptions): Promise<void> | void;
78
+ result: {
79
+ body: null,
80
+ statusCode: null,
81
+ headers: null,
82
+ warnings: null
83
+ }
84
+ }
85
+ declare type extendsCallback = (options: ClientExtendsCallbackOptions) => any;
86
+ // /Extend API
87
+
61
88
declare type callbackFn<TResponse, TContext> = (err: ApiError, result: ApiResponse<TResponse, TContext>) => void;
62
- declare class ESAPI {\n`
89
+ interface NewClientTypes {
90
+ connectionPool: ConnectionPool
91
+ transport: Transport
92
+ serializer: Serializer
93
+ extend(method: string, fn: extendsCallback): void
94
+ extend(method: string, opts: { force: boolean }, fn: extendsCallback): void;
95
+ helpers: Helpers
96
+ child(opts?: ClientOptions): NewClientTypes
97
+ close(callback: Function): void;
98
+ close(): Promise<void>;
99
+ emit(event: string | symbol, ...args: any[]): boolean;
100
+ on(event: 'request', listener: (err: ApiError, meta: RequestEvent) => void): this;
101
+ on(event: 'response', listener: (err: ApiError, meta: RequestEvent) => void): this;
102
+ on(event: 'sniff', listener: (err: ApiError, meta: RequestEvent) => void): this;
103
+ on(event: 'resurrect', listener: (err: null, meta: ResurrectEvent) => void): this;
104
+ once(event: 'request', listener: (err: ApiError, meta: RequestEvent) => void): this;
105
+ once(event: 'response', listener: (err: ApiError, meta: RequestEvent) => void): this;
106
+ once(event: 'sniff', listener: (err: ApiError, meta: RequestEvent) => void): this;
107
+ once(event: 'resurrect', listener: (err: null, meta: ResurrectEvent) => void): this;
108
+ off(event: string | symbol, listener: (...args: any[]) => void): this;
109
+ `
63
110
64
111
const kibanaDefinitions = `/*
65
112
* Licensed to Elasticsearch B.V. under one or more contributor
@@ -175,7 +222,7 @@ function createClientTypes (kibana = false) {
175
222
if ( kibana ) {
176
223
definitions += '}\n\nexport { KibanaClient }\n'
177
224
} else {
178
- definitions += '}\n\nexport default ESAPI \n'
225
+ definitions += '}\n\nexport { NewClientTypes } \n'
179
226
}
180
227
181
228
writeFileSync (
@@ -209,8 +256,11 @@ function createClientTypes (kibana = false) {
209
256
let requestGenerics = ''
210
257
211
258
if ( Array . isArray ( requestType . generics ) ) {
212
- requestDefinition = `T.${ requestType . name . name } <${ requestType . generics . join ( ', ' ) } >`
213
- requestGenerics = requestType . generics . map ( unknownify ) . join ( ', ' ) + ', '
259
+ requestDefinition = `T.${ requestType . name . name } <${ requestType . generics . map ( unwrapGeneric ) . join ( ', ' ) } >`
260
+ requestGenerics = requestType . generics
261
+ . map ( unwrapGeneric )
262
+ . map ( unknownify )
263
+ . join ( ', ' ) + ', '
214
264
} else if ( requestType === null ) {
215
265
requestDefinition = 'TODO'
216
266
} else {
@@ -221,8 +271,12 @@ function createClientTypes (kibana = false) {
221
271
let responseGenerics = ''
222
272
223
273
if ( Array . isArray ( responseType . generics ) ) {
224
- responseDefinition = `T.${ responseType . name . name } <${ responseType . generics . map ( avoidCollisions ) . join ( ', ' ) } >`
225
- responseGenerics = responseType . generics . map ( avoidCollisions ) . map ( unknownify ) . join ( ', ' ) + ', '
274
+ responseDefinition = `T.${ responseType . name . name } <${ responseType . generics . map ( unwrapGeneric ) . map ( avoidCollisions ) . join ( ', ' ) } >`
275
+ responseGenerics = responseType . generics
276
+ . map ( unwrapGeneric )
277
+ . map ( avoidCollisions )
278
+ . map ( unknownify )
279
+ . join ( ', ' ) + ', '
226
280
} else if ( responseType === null ) {
227
281
responseDefinition = 'TODO'
228
282
} else {
@@ -264,7 +318,7 @@ function createClientTypes (kibana = false) {
264
318
function avoidCollisions ( generic ) {
265
319
if ( requestType === null || ! Array . isArray ( requestType . generics ) ) {
266
320
return generic
267
- } else if ( requestType . generics . includes ( generic ) ) {
321
+ } else if ( requestType . generics . map ( unwrapGeneric ) . includes ( generic ) ) {
268
322
return generic + 'R'
269
323
} else {
270
324
return generic
@@ -274,6 +328,11 @@ function createClientTypes (kibana = false) {
274
328
function unknownify ( generic ) {
275
329
return `${ generic } = unknown`
276
330
}
331
+
332
+ function unwrapGeneric ( generic ) {
333
+ if ( typeof generic === 'string' ) return generic
334
+ return generic . name
335
+ }
277
336
}
278
337
279
338
function getType ( name ) {
0 commit comments