import { Terminal, Globe, Loader2, CheckCircle2, XCircle } from 'lucide-react'; import type { ServerType, ServerTestState } from './types'; import { SENSITIVE_PARAM_PATTERNS } from './constants'; /** * Mask sensitive values in URLs (query params with key-like names) */ export function maskSensitiveUrl(url: string): string { try { const urlObj = new URL(url); const params = new URLSearchParams(urlObj.search); let hasSensitive = false; for (const [key] of params.entries()) { if (SENSITIVE_PARAM_PATTERNS.some((pattern) => pattern.test(key))) { params.set(key, '***'); hasSensitive = true; } } if (hasSensitive) { urlObj.search = params.toString(); return urlObj.toString(); } return url; } catch { // If URL parsing fails, try simple regex replacement for common patterns return url.replace( /([?&])(api[-_]?key|auth|token|secret|password|credential)=([^&]*)/gi, '$1$2=***' ); } } export function getServerIcon(type: ServerType = 'stdio') { if (type === 'stdio') return Terminal; return Globe; } export function getTestStatusIcon(status: ServerTestState['status']) { switch (status) { case 'testing': return ; case 'success': return ; case 'error': return ; default: return null; } }