UNPKG

@metis-w/api-client

Version:

Modern TypeScript HTTP API client with dynamic routes, parameterized endpoints, interceptors, and advanced features

46 lines 1.83 kB
/** * Request timing interceptor - measures API request duration * @param options - Timing configuration */ export const timingInterceptor = (options = {}) => { const { logTiming = true, logLevel = "info", slowRequestThreshold = 1000, } = options; const timings = new Map(); const requestInterceptor = (config) => { const requestId = `${config.method}_${config.url}_${Date.now()}`; timings.set(requestId, performance.now()); // Додаємо ID до config для відстеження config.headers = { ...config.headers, "X-Request-ID": requestId, }; return config; }; const responseInterceptor = (response) => { // Тут ми б отримували Request-ID з response headers, але для простоти // будемо логувати всі завершені запити if (logTiming) { // В реальному додатку тут буде логіка отримання timing console[logLevel]("⏱️ Request completed"); } return response; }; return { requestInterceptor, responseInterceptor }; }; /** * Simple performance logging interceptor */ export const performanceInterceptor = () => { let requestStartTime; const requestInterceptor = (config) => { requestStartTime = performance.now(); return config; }; const responseInterceptor = (response) => { const duration = performance.now() - requestStartTime; const emoji = duration > 1000 ? "🐌" : duration > 500 ? "⚡" : "🚀"; console.info(`${emoji} Request took ${duration.toFixed(2)}ms`); return response; }; return { requestInterceptor, responseInterceptor }; }; //# sourceMappingURL=timing.js.map