From b8a44afd256a012a5d2bc6b34770c4e05e1ce62a Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 13 Nov 2023 16:13:01 +0000 Subject: [PATCH] refactor: re-type interceptors for axios@1.6.0 --- .../backend/src/helpers/http-client/index.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/backend/src/helpers/http-client/index.ts b/packages/backend/src/helpers/http-client/index.ts index c8db2a72..741782f5 100644 --- a/packages/backend/src/helpers/http-client/index.ts +++ b/packages/backend/src/helpers/http-client/index.ts @@ -1,5 +1,5 @@ import { IHttpClientParams } from '@automatisch/types'; -import { AxiosRequestConfig } from 'axios'; +import { InternalAxiosRequestConfig } from 'axios'; import { URL } from 'node:url'; export { AxiosInstance as IHttpClient } from 'axios'; @@ -7,8 +7,8 @@ import HttpError from '../../errors/http'; import axios from '../axios-with-proxy'; const removeBaseUrlForAbsoluteUrls = ( - requestConfig: AxiosRequestConfig -): AxiosRequestConfig => { + requestConfig: InternalAxiosRequestConfig +): InternalAxiosRequestConfig => { try { const url = new URL(requestConfig.url); requestConfig.baseURL = url.origin; @@ -30,12 +30,21 @@ export default function createHttpClient({ }); instance.interceptors.request.use( - (requestConfig: AxiosRequestConfig): AxiosRequestConfig => { + (requestConfig: InternalAxiosRequestConfig): InternalAxiosRequestConfig => { const newRequestConfig = removeBaseUrlForAbsoluteUrls(requestConfig); - return beforeRequest.reduce((newConfig, beforeRequestFunc) => { + const result = beforeRequest.reduce((newConfig, beforeRequestFunc) => { return beforeRequestFunc($, newConfig); }, newRequestConfig); + + /** + * axios seems to want InternalAxiosRequestConfig returned not AxioRequestConfig + * anymore even though requests do require AxiosRequestConfig. + * + * Since both interfaces are very similar (InternalAxiosRequestConfig + * extends AxiosRequestConfig), we can utilize an assertion below + **/ + return result as InternalAxiosRequestConfig; } );