UNPKG

@xyz/whois

Version:

A powerful TypeScript/JavaScript tool for comprehensive domain analysis, featuring detailed WHOIS data with registration dates, registrars, and domain status. Offers SSL certificate extraction (with PEM support), DNS records, and server details. Includes

61 lines (60 loc) 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IANA_ID_PATTERN = exports.URL_PATTERNS = exports.REGISTRAR_PATTERNS = void 0; exports.findRegistrar = findRegistrar; exports.findRegistrarUrl = findRegistrarUrl; exports.findRegistrarIanaId = findRegistrarIanaId; exports.REGISTRAR_PATTERNS = [ /Registrar:\s*(.+?)(?:\n|$)/i, /Registrar Name:\s*(.+?)(?:\n|$)/i, /Sponsoring Registrar:\s*(.+?)(?:\n|$)/i, /Registration Service Provider:\s*(.+?)(?:\n|$)/i, ]; exports.URL_PATTERNS = [ /Registrar URL:\s*(.+?)(?:\n|$)/i, /URL:\s*(.+?)(?:\n|$)/i, /Registrar Website:\s*(.+?)(?:\n|$)/i, ]; exports.IANA_ID_PATTERN = /Registrar IANA ID:\s*(.+?)(?:\n|$)/i; function findRegistrar(rawData) { for (const pattern of exports.REGISTRAR_PATTERNS) { const match = rawData.match(pattern); if (match && match[1].trim()) { return match[1].trim(); } } // Special case for MarkMonitor if (rawData.includes('MarkMonitor')) { return 'MarkMonitor Inc.'; } // Try to extract from any line that has "Registrar:" followed by text on the same line const lines = rawData.split('\n'); for (const line of lines) { if (line.includes('Registrar:') && !line.includes('WHOIS Server') && !line.includes('URL') && !line.includes('IANA ID')) { const parts = line.split('Registrar:'); if (parts.length > 1 && parts[1].trim()) { return parts[1].trim(); } } } return undefined; } function findRegistrarUrl(rawData) { for (const pattern of exports.URL_PATTERNS) { const match = rawData.match(pattern); if (match && match[1].trim()) { return match[1].trim(); } } return undefined; } function findRegistrarIanaId(rawData) { const match = rawData.match(exports.IANA_ID_PATTERN); if (match && match[1].trim()) { return match[1].trim(); } return undefined; }