25 lines
984 B
TypeScript
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' };
|
|
},
|
|
};
|