Spaces:
Paused
Paused
File size: 2,201 Bytes
3401f26 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 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;
}
|