xpeditis2.0/apps/backend/src/application/logging/safe-http-log.ts

25 lines
984 B
TypeScript

/** Log server-owned routing metadata, never credentials carried by URLs or headers. */
export function safeRequestRoute(request: unknown): string {
if (!request || typeof request !== 'object') return '[unmatched route]';
const req = request as { route?: { path?: unknown }; raw?: { route?: { path?: unknown } } };
const path = req.route?.path ?? req.raw?.route?.path;
return typeof path === 'string' ? path : '[unmatched route]';
}
export const safeHttpSerializers = {
req(request: {
method?: string;
route?: { path?: unknown };
raw?: { route?: { path?: unknown } };
}) {
return { method: request.method, route: safeRequestRoute(request) };
},
res(response: { statusCode?: number }) {
return { statusCode: response.statusCode };
},
err(_error: unknown) {
// Driver/SMTP errors can contain SQL parameters, tokens, headers or message bodies.
return { type: 'Error', message: 'Request failed; sensitive error details omitted' };
},
};