UNPKG

react-activity-tracker

Version:

A library to track user interactions and API activity in React apps

47 lines (43 loc) 1.23 kB
import axios from 'axios'; export default function patchAxios(onTrack) { axios.interceptors.request.use((config) => { config.metadata = { requestBody: config.data ? tryParseJSON(config.data) : null, }; return config; }); axios.interceptors.response.use( (response) => { onTrack({ type: 'api', label: response.config.label || '', url: response.config.url, method: response.config.method, requestBody: response.config.metadata?.requestBody || null, responseBody: response.data, status: response.status, }); return response; }, (error) => { const config = error.config || {}; onTrack({ type: 'api', label: config.label || '', url: config.url, method: config.method || 'UNKNOWN', requestBody: config.metadata?.requestBody || null, responseBody: { error: error.message }, status: error.response?.status || 'error', }); return Promise.reject(error); } ); } function tryParseJSON(data) { try { return typeof data === 'string' ? JSON.parse(data) : data; } catch { return data; } }