1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-28 00:06:53 +01:00
unleash.unleash/frontend/src/openapi/fetcher.ts
Nuno Góis 4167a60588
feat: biome lint frontend (#4903)
Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome
to the frontend as well.


![image](https://github.com/Unleash/unleash/assets/14320932/1906faf1-fc29-4172-a4d4-b2716d72cd65)

Added a few `biome-ignore` to speed up the process but we may want to
check and fix them in the future.
2023-10-02 13:25:46 +01:00

51 lines
1.4 KiB
TypeScript

import { formatApiPath } from 'utils/formatPath';
/**
* Customize HTTP client, use Fetch instead of Axios
* @see https://orval.dev/guides/custom-client
*/
export const fetcher = async <T>({
url,
method,
params,
data,
headers,
credentials = 'include',
}: {
url: string;
method: 'get' | 'post' | 'put' | 'delete' | 'patch';
params?: string | URLSearchParams | Record<string, string> | string[][];
data?: BodyType<unknown>;
headers?: HeadersInit;
credentials?: RequestCredentials;
}): Promise<T> => {
const response = await fetch(
`${formatApiPath(url)}${new URLSearchParams(params)}`,
{
method,
credentials,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
...headers,
},
...(data ? { body: JSON.stringify(data) } : {}),
},
);
return response.json();
};
export default fetcher;
/**
* In some case with react-query and swr you want to be able to override the return error type so you can also do it here like this
*/
export type ErrorType<Error> = Error;
/**
* In case you want to wrap the body type (optional)
* (if the custom instance is processing data before sending it, like changing the case for example)
*/
export type BodyType<BodyData> = BodyData;