import { type LoaderFunctionArgs } from 'react-router' import { requestIdContext } from '../context' export const loggingMiddleware = async ( { request, context }: LoaderFunctionArgs, next: () => Promise ): Promise => { const requestId = crypto.randomUUID() context.set(requestIdContext, requestId) console.log( `[${new Date().toISOString()}] [${requestId}] ${request.method} ${request.url}` ) const start = performance.now() const response = await next() const duration = performance.now() - start console.log( `[${new Date().toISOString()}] [${requestId}] Response ${response.status} (${duration}ms)` ) response.headers.set('Server-Timing', `page;req=${requestId};dur=${duration}`) return response }