// List of domains that are not supported as primary domains (trying to prevent long running syncs for now) const UNSUPPORTED_DOMAINS = ["app.bsky"]; export function validateDomain(domain: string): string | null { const trimmedDomain = domain.trim(); if (!trimmedDomain || trimmedDomain.length === 0) { return "Domain is required"; } if (UNSUPPORTED_DOMAINS.includes(trimmedDomain)) { return `The domain '${trimmedDomain}' is not supported`; } // Domain must have at least two parts (e.g. social.grain) if (!trimmedDomain.includes(".")) { return "Domain must have at least two parts (e.g. social.grain)"; } // Validate domain format const domainRegex = /^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)+$/; if (!domainRegex.test(trimmedDomain)) { return "Domain must be a valid format (e.g. social.grain)"; } return null; // Valid } // Function to get the list of unsupported domains (for debugging/admin purposes) export function getUnsupportedDomains(): readonly string[] { return UNSUPPORTED_DOMAINS; }