const API_KEY_PATTERN = /([?&]apikey=)[^&\s]*/gi; const TOKEN_PATTERN = /([?&]token=)[^&\s]*/gi; const HEADER_PATTERN = /x-(?:api-key|mediabrowser-token|emby-authorization):[^\s,]*/gi; function sanitizeError(err) { let msg = err.message || String(err); // Redact API keys in URLs (SABnzbd passes apikey as query param) msg = msg.replace(API_KEY_PATTERN, '$1[REDACTED]'); msg = msg.replace(TOKEN_PATTERN, '$1[REDACTED]'); // Redact auth header values if they appear in the message msg = msg.replace(HEADER_PATTERN, (m) => m.split(':')[0] + ':[REDACTED]'); return msg; } module.exports = sanitizeError;