diff --git a/src/lib/components/domains/cnameTable.svelte b/src/lib/components/domains/cnameTable.svelte index a7c20acb7..6ca2422e8 100644 --- a/src/lib/components/domains/cnameTable.svelte +++ b/src/lib/components/domains/cnameTable.svelte @@ -1,6 +1,7 @@ @@ -52,7 +53,7 @@ CNAME - {subdomain} + {subdomain || '@'} void = () => {}; export let onNavigateToAAAA: () => void = () => {}; - let subdomain = domain?.split('.')?.slice(0, -2)?.join('.'); + let subdomain = getSubdomain(domain); const aTabVisible = !isCloud && diff --git a/src/lib/helpers/tlds.ts b/src/lib/helpers/tlds.ts index 6de3c3888..84fabf2c3 100644 --- a/src/lib/helpers/tlds.ts +++ b/src/lib/helpers/tlds.ts @@ -4,7 +4,7 @@ import { parse } from 'tldts'; * Returns the apex/root domain from a full domain string. */ export function getApexDomain(domain: string): string | null { - return parse(domain).domain; + return parse(domain, { allowPrivateDomains: true }).domain; } /** @@ -13,8 +13,17 @@ export function getApexDomain(domain: string): string | null { export function isASubdomain(domain: string | null): boolean { if (!domain) return false; - const { domain: apex, subdomain } = parse(domain); + const { domain: apex, subdomain } = parse(domain, { allowPrivateDomains: true }); if (!apex) return false; return !!subdomain; } + +/** + * Returns the subdomain part from a full domain string. + */ +export function getSubdomain(domain: string): string { + if (!domain) return ''; + + return parse(domain, { allowPrivateDomains: true }).subdomain || ''; +}