"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.redactMetadata = redactMetadata; exports.createAuditEvent = createAuditEvent; const SENSITIVE_KEY_PATTERNS = [ /password/i, /secret/i, /token/i, /api[_-]?key/i, /private[_-]?key/i, /credential/i, /ssn/i, /iban/i, /email/i, /phone/i, /address/i, ]; const REDACTED = '[REDACTED]'; function isSensitiveKey(key) { return SENSITIVE_KEY_PATTERNS.some((p) => p.test(key)); } function redactMetadata(metadata) { const out = {}; for (const [key, value] of Object.entries(metadata)) { if (isSensitiveKey(key)) { out[key] = REDACTED; continue; } if (value && typeof value === 'object' && !Array.isArray(value)) { out[key] = redactMetadata(value); } else { out[key] = value; } } return out; } function createAuditEvent(partial) { const { metadata, ...rest } = partial; return { ...rest, timestamp: new Date().toISOString(), metadata_redacted: redactMetadata(metadata ?? {}), }; }