diff --git a/packages/@uppy/companion-client/src/Provider.ts b/packages/@uppy/companion-client/src/Provider.ts index e1e504b0f..81bcb609d 100644 --- a/packages/@uppy/companion-client/src/Provider.ts +++ b/packages/@uppy/companion-client/src/Provider.ts @@ -305,7 +305,7 @@ export default class Provider< return `${this.hostname}/${this.id}/get/${id}` } - protected async request>( + protected async request( ...args: Parameters['request']> ): Promise { await this.#refreshingTokenPromise diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index d39ba09bc..1a4cf011d 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -28,15 +28,16 @@ export type Opts = { companionKeysParams?: Record } -export type RequestOptions = +export type RequestOptions = { + method?: string + data?: Record + skipPostResponse?: boolean + signal?: AbortSignal + qs?: Record +} +type _RequestOptions = | boolean // TODO: remove this on the next major - | { - method?: string - data?: Record - skipPostResponse?: boolean - signal?: AbortSignal - qs?: Record - } + | RequestOptions // Remove the trailing slash so we can always safely append /xyz. function stripSlash(url: string) { @@ -64,9 +65,7 @@ class HttpError extends Error { } } -async function handleJSONResponse>( - res: Response, -): Promise { +async function handleJSONResponse(res: Response): Promise { if (res.status === authErrorStatusCode) { throw new AuthError() } @@ -163,7 +162,7 @@ export default class RequestClient { return `${this.hostname}/${url}` } - protected async request>({ + protected async request({ path, method = 'GET', data, @@ -203,9 +202,9 @@ export default class RequestClient { } } - async get>( + async get( path: string, - options?: RequestOptions, + options?: _RequestOptions, ): Promise { // TODO: remove boolean support for options that was added for backward compatibility. // eslint-disable-next-line no-param-reassign @@ -213,10 +212,10 @@ export default class RequestClient { return this.request({ ...options, path }) } - async post>( + async post( path: string, data: Record, - options?: RequestOptions, + options?: _RequestOptions, ): Promise { // TODO: remove boolean support for options that was added for backward compatibility. // eslint-disable-next-line no-param-reassign @@ -224,11 +223,11 @@ export default class RequestClient { return this.request({ ...options, path, method: 'POST', data }) } - async delete( + async delete( path: string, - data: Record, - options?: RequestOptions, - ): Promise { + data?: Record, + options?: _RequestOptions, + ): Promise { // TODO: remove boolean support for options that was added for backward compatibility. // eslint-disable-next-line no-param-reassign if (typeof options === 'boolean') options = { skipPostResponse: options } @@ -350,7 +349,7 @@ export default class RequestClient { throw new Error('Cannot connect to an undefined URL') } - const res = await this.post( + const res = await this.post<{ token: string }>( file.remote.url, { ...file.remote.body, @@ -359,7 +358,7 @@ export default class RequestClient { { signal }, ) - return res.token as string + return res.token } /**