diff --git a/src/utils/log-field-sanitizer.utils.ts b/src/utils/log-field-sanitizer.utils.ts index f761579..f095407 100644 --- a/src/utils/log-field-sanitizer.utils.ts +++ b/src/utils/log-field-sanitizer.utils.ts @@ -101,3 +101,22 @@ export function sanitizeLogObject(obj: unknown): unknown { return obj; } + +/** + * Masks sensitive fields in an object by replacing their values with [REDACTED]. + * Works recursively for nested objects. Does not mutate the original object. + */ +export function maskFields(obj: Record, fields: string[]): Record { + const fieldSet = new Set(fields); + const result: Record = {}; + for (const [key, value] of Object.entries(obj)) { + if (fieldSet.has(key)) { + result[key] = '[REDACTED]'; + } else if (typeof value === 'object' && value !== null && !Array.isArray(value)) { + result[key] = maskFields(value as Record, fields); + } else { + result[key] = value; + } + } + return result; +}