Refactored type definitions (#1119)

* Updated types generation script

* Refactored api method definitions

* Updated test
- Removed old test code
- Added tsd dev dependency
- Rewritten test with tsd

* Removed unused dependencies

* Fixed definition

* Updated test

* Updated docs

* Improved events type definitions

* Updated test

* Minor fixes in the type definitons

* More type test

* Improved Transport type definitions

* Updated test

* Addressed comments

* Code generation

* Use RequestBody, Response and Context everywhere, also default Context to unknown

* Updated test

* body -> hasBody

* Fixed conflicts

* Updated code generation

* Improved request body type definition

* Updated code generation

* Use BodyType for both request and reponses generics
- Use extends for defining the RequestBody generic to force the user
  following the same shape.
- BodyType and NDBodyType now accepts a generics to allow injecting
  more specific types in the future

* API generation

* Updated test

* Updated docs

* Use BodyType also in ReponseError

* Removed useless client generics

* Renamed generics and types
- prefixed all generics with a T
- BodyType => RequestBody
- NDBodyType => RequestNDBody
- Added ResponseBody

* Updated test

* Updated docs

* Test ResponseBody as well

* Simplify overloads

* API generation

* Updated test

* Updated error types
This commit is contained in:
Tomas Della Vedova
2020-03-23 11:38:18 +01:00
committed by GitHub
parent a80f510a9a
commit 6c82a4967e
23 changed files with 3838 additions and 955 deletions

67
lib/Connection.d.ts vendored
View File

@ -5,10 +5,11 @@
/// <reference types="node" />
import { URL } from 'url';
import { inspect, InspectOptions } from 'util';
import { inspect, InspectOptions } from 'util'
import { Readable as ReadableStream } from 'stream';
import { ApiKeyAuth, BasicAuth } from './pool'
import * as http from 'http';
import { ConnectionOptions as TlsConnectionOptions } from 'tls';
import * as http from 'http'
import { ConnectionOptions as TlsConnectionOptions } from 'tls'
export declare type agentFn = () => any;
@ -16,24 +17,31 @@ interface ConnectionOptions {
url: URL;
ssl?: TlsConnectionOptions;
id?: string;
headers?: any;
headers?: Record<string, any>;
agent?: AgentOptions | agentFn;
status?: string;
roles?: any;
roles?: ConnectionRoles;
auth?: BasicAuth | ApiKeyAuth;
}
interface ConnectionRoles {
master?: boolean
data?: boolean
ingest?: boolean
ml?: boolean
}
interface RequestOptions extends http.ClientRequestArgs {
asStream?: boolean;
body?: any;
body?: string | Buffer | ReadableStream;
querystring?: string;
}
export interface AgentOptions {
keepAlive: boolean;
keepAliveMsecs: number;
maxSockets: number;
maxFreeSockets: number;
keepAlive?: boolean;
keepAliveMsecs?: number;
maxSockets?: number;
maxFreeSockets?: number;
}
export default class Connection {
@ -47,27 +55,26 @@ export default class Connection {
INGEST: string;
ML: string;
};
url: URL;
ssl: TlsConnectionOptions | null;
id: string;
headers: any;
deadCount: number;
resurrectTimeout: number;
statuses: any;
roles: any;
makeRequest: any;
_openRequests: number;
_status: string;
_agent: http.Agent;
constructor(opts?: ConnectionOptions);
request(params: RequestOptions, callback: (err: Error | null, response: http.IncomingMessage | null) => void): http.ClientRequest;
close(): Connection;
setRole(role: string, enabled: boolean): Connection;
status: string;
buildRequestObject(params: any): http.ClientRequestArgs;
url: URL
ssl: TlsConnectionOptions | null
id: string
headers: Record<string, any>
status: string
roles: ConnectionRoles
deadCount: number
resurrectTimeout: number
makeRequest: any
_openRequests: number
_status: string
_agent: http.Agent
constructor(opts?: ConnectionOptions)
request(params: RequestOptions, callback: (err: Error | null, response: http.IncomingMessage | null) => void): http.ClientRequest
close(): Connection
setRole(role: string, enabled: boolean): Connection
buildRequestObject(params: any): http.ClientRequestArgs
// @ts-ignore
[inspect.custom](object: any, options: InspectOptions): string;
toJSON(): any;
[inspect.custom](object: any, options: InspectOptions): string
toJSON(): any
}
export {};