89fd333702
Add client-logging SDK, expanded event taxonomy, API observability, admin domain events UI, and move SENTRY_DSN to HQ system settings with @sentry/node bootstrap after config preload. Co-authored-by: Cursor <cursoragent@cursor.com>
22 lines
701 B
TypeScript
22 lines
701 B
TypeScript
import { Injectable, NestMiddleware } from '@nestjs/common';
|
|
import { randomUUID } from 'crypto';
|
|
import type { Request, Response, NextFunction } from 'express';
|
|
|
|
export const REQUEST_ID_HEADER = 'x-request-id';
|
|
|
|
export type RequestWithId = Request & { requestId?: string };
|
|
|
|
@Injectable()
|
|
export class RequestIdMiddleware implements NestMiddleware {
|
|
use(req: RequestWithId, res: Response, next: NextFunction) {
|
|
const incoming = req.headers[REQUEST_ID_HEADER];
|
|
const requestId =
|
|
typeof incoming === 'string' && incoming.trim()
|
|
? incoming.trim().slice(0, 64)
|
|
: randomUUID();
|
|
req.requestId = requestId;
|
|
res.setHeader('X-Request-Id', requestId);
|
|
next();
|
|
}
|
|
}
|