| 1234567891011121314151617181920212223242526 |
- // https://github.com/remusao/tldts/issues/2121
- // import tldts from 'tldts-experimental';
- import tldts from 'tldts';
- export const normalizeDomain = (domain: string) => {
- if (!domain) return null;
- const parsed = tldts.parse(domain, { allowPrivateDomains: true, allowIcannDomains: true, detectIp: true });
- if (parsed.isIp) return null;
- if (!parsed.hostname) return null;
- // Private invalid domain (things like .tor, .dn42, etc)
- if (!parsed.isIcann && !parsed.isPrivate) return null;
- let h = parsed.hostname;
- let sliceStart: number | undefined;
- let sliceEnd: number | undefined;
- if (h[0] === '.') sliceStart = 1;
- if (h.endsWith('.')) sliceEnd = -1;
- if (sliceStart !== undefined || sliceEnd !== undefined) {
- h = h.slice(sliceStart, sliceEnd);
- }
- return h || null;
- };
|