normalize-domain.ts 737 B

12345678910111213141516171819202122232425
  1. import { parse as tldtsParse } from 'tldts';
  2. import { isProbablyIpv4 } from './is-fast-ip';
  3. export const normalizeDomain = (domain: string) => {
  4. if (!domain) return null;
  5. if (isProbablyIpv4(domain)) return null;
  6. const parsed = tldtsParse(domain, { allowPrivateDomains: true, detectIp: false });
  7. // if (parsed.isIp) return null;
  8. if (!parsed.hostname) return null;
  9. if (!parsed.isIcann && !parsed.isPrivate) return null;
  10. let h = parsed.hostname;
  11. let sliceStart: number | undefined;
  12. let sliceEnd: number | undefined;
  13. if (h[0] === '.') sliceStart = 1;
  14. if (h.endsWith('.')) sliceEnd = -1;
  15. if (sliceStart !== undefined || sliceEnd !== undefined) {
  16. h = h.slice(sliceStart, sliceEnd);
  17. }
  18. return h || null;
  19. };