UNPKG

tldts

Version:

Library to work against complex domain names, subdomains and URIs.

75 lines (65 loc) 2.2 kB
import { FLAG, getEmptyResult, IOptions, IResult, parseImpl, resetResult, } from 'tldts-core'; import suffixLookup from './src/suffix-trie'; // For all methods but 'parse', it does not make sense to allocate an object // every single time to only return the value of a specific attribute. To avoid // this un-necessary allocation, we use a global object which is re-used. const RESULT: IResult = getEmptyResult(); export function parse(url: string, options?: Partial<IOptions>): IResult { return parseImpl(url, FLAG.ALL, suffixLookup, options, getEmptyResult()); } export function getHostname( url: string, options?: Partial<IOptions>, ): string | null { /*@__INLINE__*/ resetResult(RESULT); return parseImpl(url, FLAG.HOSTNAME, suffixLookup, options, RESULT).hostname; } export function getPublicSuffix( url: string, options?: Partial<IOptions>, ): string | null { /*@__INLINE__*/ resetResult(RESULT); return parseImpl(url, FLAG.PUBLIC_SUFFIX, suffixLookup, options, RESULT) .publicSuffix; } export function getDomain( url: string, options?: Partial<IOptions>, ): string | null { /*@__INLINE__*/ resetResult(RESULT); return parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT).domain; } export function getFullDomain( url: string, options?: Partial<IOptions>, ): string | null { /*@__INLINE__*/ resetResult(RESULT); const result = parseImpl(url, FLAG.DOMAIN, suffixLookup, options, RESULT); // The hostname *is* the full domain (subdomain + domain) whenever a // registrable domain exists; gate on `domain` so non-registrable inputs // (IPs, suffix-less or invalid hostnames) return `null` like `getDomain`. return result.domain === null ? null : result.hostname; } export function getSubdomain( url: string, options?: Partial<IOptions>, ): string | null { /*@__INLINE__*/ resetResult(RESULT); return parseImpl(url, FLAG.SUB_DOMAIN, suffixLookup, options, RESULT) .subdomain; } export function getDomainWithoutSuffix( url: string, options?: Partial<IOptions>, ): string | null { /*@__INLINE__*/ resetResult(RESULT); return parseImpl(url, FLAG.ALL, suffixLookup, options, RESULT) .domainWithoutSuffix; }