import axios from "axios"; const api = axios.create({ baseURL: process.env.NEXT_PUBLIC_API_URL || "http://localhost:3000", withCredentials: true, headers: { "Content-Type": "application/json", }, }); // Système anti-spam rudimentaire pour les erreurs répétitives const errorCache = new Map(); const SPAM_THRESHOLD_MS = 2000; // 2 secondes de silence après une erreur sur le même endpoint api.interceptors.response.use( (response) => { // Nettoyer le cache d'erreur en cas de succès sur cet endpoint const url = response.config.url || ""; errorCache.delete(url); return response; }, (error) => { const url = error.config?.url || "unknown"; const now = Date.now(); const lastErrorTime = errorCache.get(url); if (lastErrorTime && now - lastErrorTime < SPAM_THRESHOLD_MS) { // Ignorer l'erreur si elle se produit trop rapidement (déjà signalée) // On retourne une promesse qui ne se résout jamais ou on rejette avec une marque spéciale return new Promise(() => {}); } errorCache.set(url, now); return Promise.reject(error); }, ); export default api;