import axiosOriginal, { Axios, AxiosRequestConfig, AxiosResponse } from 'axios'; interface Config { axios: AxiosRequestConfig; api: AxiosRequestConfig; directus: AxiosRequestConfig; userIP: AxiosRequestConfig; } type DirectusResponse = { meta?: { total_count: number; filter_count: number }; data: T; }; interface DirectusAxios extends Axios { get>, D = any>( url: string, config?: AxiosRequestConfig, ): Promise; } const config: Config = { axios: { // baseURL: 'https://belkins-strapi-belkins-io.174.138.108.149.nip.io/', baseURL: 'https://admin.belkins.io/', }, api: { baseURL: 'https://us-central1-belkins-3c679.cloudfunctions.net/', }, directus: { baseURL: 'https://belkins.directus.app/items/', }, userIP: { baseURL: 'https://pro.ip-api.com/json/?fields=country&key=AlKh2INPlyYliNF', }, }; const createApi = (config = {}) => { const api = axiosOriginal.create(config); api.interceptors.request.use( successfulReq => { return successfulReq; }, error => { console.log('ERROR: ', error); throw error; }, ); return api; }; const createApiDirectus = (config = {}) => { const api: DirectusAxios = axiosOriginal.create(config); api.interceptors.request.use( successfulReq => { return successfulReq; }, error => { console.log('ERROR: ', error); throw error; }, ); return api; }; export const axios = axiosOriginal.create(config.axios); export const api = createApi(config.api); export const directus = createApiDirectus(config.directus); export const userIP = createApi(config.userIP);