From 643bc1de74a5979d1cd00812f36167eab236efd3 Mon Sep 17 00:00:00 2001 From: Alexander Petkov Date: Fri, 24 May 2024 15:22:43 +0300 Subject: [PATCH] feat(client): Add generic typing to @sendgrid/client request function - Made request function generic, so we can get correct response body. - Made ClientResponse generic - Made ClientRequest generic --- packages/client/src/client.d.ts | 25 +++++++++++++++++-------- packages/client/src/request.d.ts | 5 ++++- packages/client/src/response.d.ts | 2 +- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/client/src/client.d.ts b/packages/client/src/client.d.ts index 84075d1f9..782ec48a2 100644 --- a/packages/client/src/client.d.ts +++ b/packages/client/src/client.d.ts @@ -1,6 +1,6 @@ -import {ResponseError} from "@sendgrid/helpers/classes"; -import {ClientRequest} from "@sendgrid/client/src/request"; -import {ClientResponse} from "@sendgrid/client/src/response"; +import { ResponseError } from "@sendgrid/helpers/classes"; +import { ClientRequest } from "@sendgrid/client/src/request"; +import { ClientResponse } from "@sendgrid/client/src/response"; declare class Client { constructor(); @@ -23,12 +23,15 @@ declare class Client { /** * Set default header */ - setDefaultHeader(key: string | { [s: string]: string }, value ?: string): this; + setDefaultHeader(key: string | { [s: string]: string }, value?: string): this; /** * Set default request */ - setDefaultRequest(key: K | ClientRequest, value ?: ClientRequest[K]): this; + setDefaultRequest( + key: K | ClientRequest, + value?: ClientRequest[K] + ): this; /** * Sets the data residency as per region provided @@ -48,11 +51,17 @@ declare class Client { /** * Do a request */ - request(data: ClientRequest, cb?: (err: ResponseError, response: [ClientResponse, any]) => void): Promise<[ClientResponse, any]>; + request( + data: ClientRequest, + cb?: ( + err: ResponseError, + response: [ClientResponse, any] + ) => void + ): Promise<[ClientResponse, any]>; } declare const client: Client; // @ts-ignore -export = client +export = client; -export {Client}; +export { Client }; diff --git a/packages/client/src/request.d.ts b/packages/client/src/request.d.ts index 900454c16..3719d79f3 100644 --- a/packages/client/src/request.d.ts +++ b/packages/client/src/request.d.ts @@ -1,3 +1,6 @@ import RequestOptions from "@sendgrid/helpers/classes/request"; -export type ClientRequest = RequestOptions; +export type ClientRequest = RequestOptions< + TData, + TParams +>; diff --git a/packages/client/src/response.d.ts b/packages/client/src/response.d.ts index 3c84e3735..abc88bf8d 100644 --- a/packages/client/src/response.d.ts +++ b/packages/client/src/response.d.ts @@ -1,3 +1,3 @@ import Response from "@sendgrid/helpers/classes/response"; -export type ClientResponse = Response; +export type ClientResponse = Response;