2024-12-31 20:16:14 +07:00

30 lines
1.0 KiB
TypeScript

export * from '@workspace/ui/utils/countries';
export * from '@workspace/ui/utils/formatting';
export * from '@workspace/ui/utils/unit-conversions';
export const isBrowser = () => typeof window !== 'undefined';
/**
* Extracts the full domain or root domain from a URL.
*
* @param url - The URL to extract the domain from.
* @param extractRoot - If true, extracts the root domain (e.g., example.com). If false, extracts the full domain (e.g., sub.example.com).
* @returns The extracted domain or root domain, or null if the URL is invalid.
*/
export function extractDomain(url: string, extractRoot = true): string | null {
try {
const { hostname } = new URL(url);
if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostname)) {
return hostname;
}
const domainParts = hostname.split('.').filter(Boolean);
if (extractRoot && domainParts.length > 2) {
return domainParts.slice(-2).join('.');
}
return hostname;
} catch (error) {
console.error('Invalid URL:', error);
return null;
}
}