Spaces:
Paused
Paused
| 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; | |
| } | |