From 670ba34751af0b3869dd656064b4587affb888ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=96=E7=8C=A9?= Date: Tue, 30 Apr 2019 11:47:43 +0800 Subject: [PATCH] fix(typings): optimize declaration of httpclient (#3665) --- index.d.ts | 42 +++++++++++++++---- .../fixtures/apps/app-ts-type-check/normal.ts | 19 +++++++++ 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/index.d.ts b/index.d.ts index 0597b05885..7ea6d76ba1 100644 --- a/index.d.ts +++ b/index.d.ts @@ -222,6 +222,37 @@ declare module 'egg' { loadunit?: boolean; } + export interface HttpClientBaseConfig { + /** Whether use http keepalive */ + keepAlive?: boolean; + /** Free socket after keepalive timeout */ + freeSocketKeepAliveTimeout?: number; + /** Free socket after request timeout */ + freeSocketTimeout?: number; + /** Request timeout */ + timeout?: number; + /** Determines how many concurrent sockets the agent can have open per origin */ + maxSockets?: number; + /** The maximum number of sockets that will be left open in the free state */ + maxFreeSockets?: number; + } + + /** HttpClient config */ + export interface HttpClientConfig extends HttpClientBaseConfig { + /** http.Agent */ + httpAgent?: HttpClientBaseConfig; + /** https.Agent */ + httpsAgent?: HttpClientBaseConfig; + /** Default request args for httpclient */ + request?: RequestOptions; + /** Whether enable dns cache */ + enableDNSCache?: boolean; + /** Enable proxy request, default is false. */ + enableProxy?: boolean; + /** proxy agent uri or options, default is null. */ + proxy?: string | { [key: string]: any }; + } + export interface EggAppConfig { workerStartTimeout: number; baseDir: string; @@ -298,15 +329,8 @@ declare module 'egg' { allowDebugAtProd: boolean; }; - httpclient: { - keepAlive: boolean; - freeSocketKeepAliveTimeout?: number; - freeSocketTimeout: number; - timeout: number; - maxSockets: number; - maxFreeSockets: number; - enableDNSCache: boolean; - }; + /** Configuration of httpclient in egg. */ + httpclient: HttpClientConfig; development: { /** diff --git a/test/fixtures/apps/app-ts-type-check/normal.ts b/test/fixtures/apps/app-ts-type-check/normal.ts index 8a8a574a67..f2e999f954 100644 --- a/test/fixtures/apps/app-ts-type-check/normal.ts +++ b/test/fixtures/apps/app-ts-type-check/normal.ts @@ -119,6 +119,25 @@ config.customLoader = { inject: 'app', } } +const httpclientOption = { + keepAlive: true, + freeSocketKeepAliveTimeout: 10 * 60 * 1000, + freeSocketTimeout: 10 * 60 * 1000, + timeout: 60 * 1000, + maxSockets: 20, + maxFreeSockets: 100, +}; +config.httpclient = { + ...httpclientOption, + httpAgent: httpclientOption, + httpsAgent: httpclientOption, + enableProxy: true, + request: { + method: 'GET', + }, + proxy: 'http://127.0.0.1:8888' +} +config.httpclient = httpclientOption; // partial config const config2 = {} as PowerPartial;