UNPKG

@lokalise/fastify-extras

Version:

Opinionated set of fastify plugins, commonly used in Lokalise

38 lines 1.25 kB
import { randomUUID } from 'node:crypto'; import fp from 'fastify-plugin'; export function getRequestIdFastifyAppConfig() { return { genReqId: () => randomUUID(), requestIdHeader: 'x-request-id', }; } function plugin(fastify, _opts, done) { fastify.addHook('onRequest', function onRequestContextProvider(req, _res, next) { const endpointParams = {}; if (req.params && typeof req.params === 'object') { for (const [key, value] of Object.entries(req.params)) { endpointParams[`api-endpoint-param-${key}`] = value; } } req.reqContext = { logger: req.log.child({ 'api-endpoint': req.routeOptions.url, 'api-method': req.method, ...endpointParams, 'x-request-id': req.id, }), reqId: req.id, }; next(); }); fastify.addHook('onSend', (req, res, _payload, next) => { void res.header('x-request-id', req.id); next(); }); done(); } export const requestContextProviderPlugin = fp(plugin, { fastify: '5.x', name: 'request-context-provider-plugin', }); //# sourceMappingURL=requestContextProviderPlugin.js.map