From 58117792dea9964ecd49a3b328e77756b4ae7852 Mon Sep 17 00:00:00 2001 From: Tomas Della Vedova Date: Mon, 20 Jul 2020 14:00:24 +0200 Subject: [PATCH] Fix errors in type definitions (#1263) --- lib/Transport.d.ts | 2 +- scripts/utils/generateRequestTypes.js | 27 +++++++++++++++++++++++++-- test/types/transport.test-d.ts | 3 ++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/Transport.d.ts b/lib/Transport.d.ts index 4d41b6633..b53eecd67 100644 --- a/lib/Transport.d.ts +++ b/lib/Transport.d.ts @@ -138,7 +138,7 @@ export default class Transport { _nextSniff: number; _isSniffing: boolean; constructor(opts: TransportOptions); - request(params: TransportRequestParams, options?: TransportRequestOptions): Promise; + request(params: TransportRequestParams, options?: TransportRequestOptions): TransportRequestPromise; request(params: TransportRequestParams, options?: TransportRequestOptions, callback?: (err: ApiError, result: ApiResponse) => void): TransportRequestCallback; getConnection(opts: TransportGetConnectionOptions): Connection | null; sniff(opts?: TransportSniffOptions, callback?: (...args: any[]) => void): void; diff --git a/scripts/utils/generateRequestTypes.js b/scripts/utils/generateRequestTypes.js index b790d8954..4e4f389b2 100644 --- a/scripts/utils/generateRequestTypes.js +++ b/scripts/utils/generateRequestTypes.js @@ -26,7 +26,6 @@ import { RequestBody, RequestNDBody } from '../lib/Transport' export interface Generic { method?: string; - ignore?: number | number[]; filter_path?: string | string[]; pretty?: boolean; human?: boolean; @@ -118,7 +117,31 @@ export interface ${toPascalCase(name)}${body ? `` : ''} exte case 'timeout': return 'string' case 'enum': - return options.map(k => `'${k}'`).join(' | ') + // the following code changes 'true' | 'false' to boolean + let foundTrue = false + let foundFalse = false + options = options + .map(k => { + if (k === 'true') { + foundTrue = true + return true + } else if (k === 'false') { + foundFalse = true + return false + } else { + return `'${k}'` + } + }) + .filter(k => { + if (foundTrue && foundFalse && (k === true || k === false)) { + return false + } + return true + }) + if (foundTrue && foundFalse) { + options.push('boolean') + } + return options.join(' | ') case 'int': case 'double': case 'long': diff --git a/test/types/transport.test-d.ts b/test/types/transport.test-d.ts index bc51fc4c1..b6e7d665c 100644 --- a/test/types/transport.test-d.ts +++ b/test/types/transport.test-d.ts @@ -14,6 +14,7 @@ import { TransportRequestParams, TransportRequestOptions, TransportRequestCallback, + TransportRequestPromise, RequestEvent, ApiError, RequestBody, @@ -152,7 +153,7 @@ transport.request({ }) const promise = transport.request(params, options) -expectType>(promise) +expectType>(promise) promise.then(result => expectType(result)) expectType(await promise)