From 82cb49201491050a2bbac1cfa9b36d501bb2289b Mon Sep 17 00:00:00 2001 From: arsam Date: Fri, 18 Sep 2026 23:19:45 +0330 Subject: [PATCH] Import source: app/backend/src/plugins/request-id Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality. --- app/backend/src/plugins/request-id.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/backend/src/plugins/request-id.ts diff --git a/app/backend/src/plugins/request-id.ts b/app/backend/src/plugins/request-id.ts new file mode 100644 index 0000000..e0d2e7c --- /dev/null +++ b/app/backend/src/plugins/request-id.ts @@ -0,0 +1,24 @@ +import fp from 'fastify-plugin'; +import type { FastifyInstance, FastifyRequest, FastifyReply } from 'fastify'; +import { randomBytes } from 'node:crypto'; + +const HEADER = 'x-request-id'; + +declare module 'fastify' { + interface FastifyRequest { + requestId: string; + } +} + +export default fp(async function requestIdPlugin(app: FastifyInstance) { + app.addHook('onRequest', async (req: FastifyRequest, _reply: FastifyReply) => { + const incoming = req.headers[HEADER]; + req.requestId = typeof incoming === 'string' && incoming.length > 0 + ? incoming.slice(0, 64) + : randomBytes(12).toString('hex'); + }); + + app.addHook('onSend', async (_req: FastifyRequest, reply: FastifyReply) => { + reply.header(HEADER, _req.requestId); + }); +});