import type { FetchMiddleware } from "@atcute/xrpc-server"; import type { Logger } from "pino"; export const logMiddleware = (logger: Logger): FetchMiddleware => { return async (req, next) => { const startTime = new Date(); logger.setBindings({ request: { method: req.method, path: new URL(req.url).pathname, id: crypto.randomUUID(), } }); logger.info('Request received'); const response = await next(req); const endTime = new Date(); logger.info({ response: { status: response.status, durationMs: endTime.getTime() - startTime.getTime(), }, }, 'Finished processing request'); return response; }; };