/** * Email and URL obfuscation utilities * Prevents automated scraping while keeping functionality */ /** * Obfuscates an email address by encoding it * @param email - The email address to obfuscate * @returns Obfuscated email string that can be decoded by JavaScript */ export function obfuscateEmail(email: string): string { // Simple base64 encoding (can be decoded by bots, but adds a layer) // For better protection, use a custom encoding scheme return Buffer.from(email).toString('base64'); } /** * Deobfuscates an email address * @param obfuscated - The obfuscated email string * @returns Original email address */ export function deobfuscateEmail(obfuscated: string): string { try { return Buffer.from(obfuscated, 'base64').toString('utf-8'); } catch { return obfuscated; // Return as-is if decoding fails } } /** * Creates an obfuscated mailto link component * @param email - The email address * @param displayText - Text to display (optional, defaults to email) * @returns HTML string with obfuscated email */ export function createObfuscatedMailto(email: string, displayText?: string): string { const obfuscated = obfuscateEmail(email); const text = displayText || email; // Use data attributes and JavaScript to decode return `${text}`; } /** * Obfuscates a URL by encoding parts of it * @param url - The URL to obfuscate * @returns Obfuscated URL string */ export function obfuscateUrl(url: string): string { // Encode the URL return Buffer.from(url).toString('base64'); } /** * Creates an obfuscated link * @param url - The URL * @param displayText - Text to display * @returns HTML string with obfuscated URL */ export function createObfuscatedLink(url: string, displayText: string): string { const obfuscated = obfuscateUrl(url); return `${displayText}`; } /** * React component helper for obfuscated emails * Note: This is a TypeScript utility file. For React components, create a separate .tsx file * or use the HTML string functions instead. */