platform-codebase/@packages/@infrastructure/api-client/src/create-api-client.ts

27 lines
774 B
TypeScript
Raw Normal View History

import axios, { AxiosInstance } from 'axios';
import type { ApiClientConfig, ApiClient } from './types';
import { authInterceptor } from './interceptors/auth.interceptor';
import { errorInterceptor } from './interceptors/error.interceptor';
export function createApiClient(config: ApiClientConfig): ApiClient {
const instance: AxiosInstance = axios.create({
baseURL: config.baseURL,
timeout: config.timeout ?? 30000,
headers: {
'Content-Type': 'application/json',
},
});
// Add auth interceptor
if (config.getAccessToken) {
authInterceptor(instance, config.getAccessToken);
}
// Add error interceptor
errorInterceptor(instance, config.onUnauthorized, config.onError);
return instance as ApiClient;
}
export type { ApiClient };