@stacksjs/whois 0.62.0 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -346,7 +346,7 @@ async function findWhoIsServer(tld) {
346
346
  }
347
347
  return "";
348
348
  }
349
- var shallowCopy = function(obj) {
349
+ function shallowCopy(obj) {
350
350
  if (Array.isArray(obj)) {
351
351
  return obj.slice();
352
352
  }
@@ -359,11 +359,11 @@ var shallowCopy = function(obj) {
359
359
  return copy;
360
360
  }
361
361
  return obj;
362
- };
363
- var getWhoIsServer = function(tld) {
362
+ }
363
+ function getWhoIsServer(tld) {
364
364
  return servers_default[tld];
365
- };
366
- var getTLD = function(domain) {
365
+ }
366
+ function getTLD(domain) {
367
367
  let tld = null;
368
368
  let domainStr = domain;
369
369
  while (true) {
@@ -383,10 +383,10 @@ var getTLD = function(domain) {
383
383
  console.debug("TLD is not found in server list. Returning last element after split as TLD!");
384
384
  const domainData = domain.split(".");
385
385
  return domainData[domainData.length - 1];
386
- };
387
- var getParameters = function(server) {
386
+ }
387
+ function getParameters(server) {
388
388
  return parameters_default[server];
389
- };
389
+ }
390
390
  async function tcpWhois(domain, queryOptions, server, port, encoding, proxy) {
391
391
  const decoder = new TextDecoder(encoding);
392
392
  const encoder = new TextEncoder;
@@ -596,3 +596,6 @@ export {
596
596
  WhoIsParser,
597
597
  ProxyType
598
598
  };
599
+
600
+ //# debugId=9DF3DD8E9D6845DB64756E2164756E21
601
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/parameters.ts", "../src/servers.ts"],
4
+ "sourcesContent": [
5
+ "import Net from 'node:net'\nimport fetch from 'node-fetch'\nimport type { SocksClientOptions } from 'socks'\nimport { SocksClient } from 'socks'\nimport PARAMETERS from './parameters'\nimport SERVERS from './servers'\n\nconst IANA_CHK_URL = 'https://www.iana.org/whois?q='\n\n/**\n * Find the WhoIs server for the TLD from IANA WhoIs service. The TLD is be searched and the HTML response is parsed to extract the WhoIs server\n *\n * @param tld TLD of the domain\n * @returns WhoIs server which hosts the information for the domains of the TLD\n */\nasync function findWhoIsServer(tld: string): Promise<string> {\n const chkURL = IANA_CHK_URL + tld\n\n try {\n const res = await fetch(chkURL)\n if (res.ok) {\n const body = await res.text()\n const server = body.match(/whois:\\s+(.*)\\s+/)\n if (server?.[1]) return server[1]\n }\n } catch (err) {\n console.error('Error in getting WhoIs server data from IANA', err)\n }\n\n return ''\n}\n/**\n * Copy an Object with its values\n *\n * @param obj Object which needs to be copied\n * @returns A copy of the object\n */\nfunction shallowCopy<T>(obj: T): T {\n if (Array.isArray(obj)) {\n return obj.slice() as T // Clone the array\n }\n\n if (typeof obj === 'object' && obj !== null) {\n const copy: any = {}\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) copy[key] = shallowCopy(obj[key])\n }\n return copy as T\n }\n\n return obj // For primitive values, return as is\n}\n\n/**\n * Get whois server of the tld from servers list\n *\n * @param tld TLD of the domain\n * @returns WhoIs server which hosts the information for the domains of the TLD\n */\nfunction getWhoIsServer(tld: keyof typeof SERVERS): string | undefined {\n return SERVERS[tld]\n}\n\n/**\n * Extract TLD from domain name.\n * If the TLD is in whois-servers.json file, then the TLD is returned.\n * If TLD is not found within the file, then determined by taking the last element after splitting the domain name from '.'\n *\n * @param domain Domain name\n * @returns TLD\n */\nfunction getTLD(domain: string): keyof typeof SERVERS {\n let tld: keyof typeof SERVERS | null = null\n let domainStr = domain\n\n while (true) {\n const domainData = domainStr.split('.')\n if (domainData.length < 2) break\n\n const tldCheck = domainData.slice(1).join('.') as keyof typeof SERVERS\n const server = SERVERS[tldCheck]\n if (server) {\n tld = tldCheck\n break\n }\n domainStr = tldCheck\n }\n\n if (tld) return tld\n\n console.debug('TLD is not found in server list. Returning last element after split as TLD!')\n\n const domainData = domain.split('.')\n return domainData[domainData.length - 1] as keyof typeof SERVERS\n}\n\n// get whois query parameters if exist on parameters.json for whois server\nfunction getParameters(server: string): string | undefined {\n return (PARAMETERS as { [key: string]: string })[server]\n}\n\n/**\n * Type of the proxy. Either SOCKS4 or SOCKS5\n * @enum\n */\nexport enum ProxyType {\n /**\n * SOCKS4 type of proxy\n */\n SOCKS4 = 0,\n /**\n * SOCKS5 type of proxy\n */\n SOCKS5 = 1,\n}\n\n/**\n * Proxy related data\n * @interface\n *\n */\nexport interface ProxyData {\n /**\n * Proxy IP\n */\n ip: string\n /**\n * Proxy port\n */\n port: number\n /**\n * Username to connect to the proxy\n */\n username?: string | null\n /**\n * Password to connect to the proxy\n */\n password?: string | null\n /**\n * {@link ProxyType}\n */\n type: ProxyType\n}\n\n/**\n * WhoIs options\n * @interface\n */\nexport interface WhoIsOptions {\n /**\n * TLD of the domain. If the {@link tld} is not provided (or null), then it will be automatically determined as to the given domain name\n */\n tld?: string | null\n /**\n * The encoding type used for WhoIs server and response. By default UTF-8 is used.\n */\n encoding?: string | null\n\n /** {@link ProxyData} */\n proxy?: ProxyData | null\n /**\n * The WhoIs server to collect data from. If not provided, the server will automatically determined using the {@link tld}\n */\n server?: string | null\n /**\n * The port of the WhoIs server. By default, port 43 is used.\n */\n serverPort?: number | null\n /**\n * Which data needs to be extracted/parsed from the WhoIs response.\n * An object can be passed which contains keys of the fields of the WhoIs response.\n * A copy of the provided object will be returned with the values filled for the provided keys.\n *\n * The keys can have default value of empty string. However, if the WhoIs response has multiple values for the same field (eg: 'Domain Status'),\n * then all the values can be collected by providing a default value of an Array([]).\n *\n * Following example shows an object used to collect 'Domain Name', 'Domain Status' (multiple values) and 'Registrar' from WhoIs response\n *\n * @example {'Domain Name': '', 'Domain Status': [], 'Registrar': ''}\n */\n parseData?: object | null\n}\n\n/**\n * Response returned from whois function. Contains the raw text from WhoIs server and parsed/fornatted WhoIs data (if parsed is true)\n *\n * @interface\n */\nexport interface WhoIsResponse {\n /**\n * Raw text response from WhoIs server\n */\n _raw: string\n /**\n * Parsed/Formatted key-value pairs of the response (if parsed is true)\n */\n parsedData: any | null\n}\n\n/**\n * Parse collected raw WhoIs data\n *\n * @class\n */\nexport class WhoIsParser {\n /**\n * Iterated through the complete text and returns extracted values\n *\n * @param rawData raw text from WhoIs server\n * @param outputData Data which needs to be extracted from the raw text (key/value pairs). Keys are used to extract from raw text and values are filled.\n * @returns Filled {@link outputData}\n */\n private static iterParse(rawData: string, outputData: any) {\n let lastStr = ''\n let lastField: string | null = null\n let lastLetter = ''\n\n for (let i = 0; i < rawData.length; i++) {\n const letter = rawData[i]\n if (letter === '\\n' || (lastLetter === ':' && letter === ' ')) {\n if (lastStr.trim() in outputData) {\n lastField = lastStr.trim()\n } else if (lastField !== null) {\n const x = lastStr.trim()\n if (x !== '') {\n const obj = outputData[lastField]\n if (Array.isArray(obj)) obj.push(x)\n else outputData[lastField] = x\n\n lastField = null\n }\n }\n lastStr = ''\n } else if (letter !== ':') {\n lastStr = lastStr + letter\n }\n lastLetter = letter as string\n if (lastStr === 'Record maintained by' || lastStr === '>>>') break\n }\n\n return outputData\n }\n\n /**\n * Parse the raw WhoIs text and returns extracted values\n *\n * @param rawData raw text from WhoIs server\n * @param outputData Data which needs to be extracted from the raw text (key/value pairs). Keys are used to extract from raw text and values are filled.\n * @returns Filled {@link outputData}\n */\n public static parseData(rawData: string, outputData: any | null): any {\n if (!outputData) {\n outputData = {\n 'Domain Name': '',\n 'Creation Date': '',\n 'Updated Date': '',\n 'Registry Expiry Date': '',\n 'Domain Status': [],\n Registrar: '',\n }\n }\n\n outputData = WhoIsParser.iterParse(rawData, outputData)\n\n return outputData\n }\n}\n\n/**\n * Connects to the provided {@link server}:{@link port} through TCP (through a proxy if a proxy is given), run the WhoIs query and returns the response\n *\n * @param domain Domain name\n * @param queryOptions Query options which can be used with the specific WhoIs server to get the complete response\n * @param server WhoIs server\n * @param port WhoIs server port\n * @param encoding Encoding used by the WhoIs server\n * @param proxy {@link ProxyData}\n * @returns The {string} WhoIs response for the query. Empty string is returned for errors\n */\nexport async function tcpWhois(\n domain: string,\n queryOptions: string,\n server: string,\n port: number,\n encoding: string,\n proxy: ProxyData | null,\n): Promise<string> {\n const decoder = new TextDecoder(encoding)\n const encoder = new TextEncoder()\n\n if (!proxy) {\n const socket = new Net.Socket()\n return new Promise((resolve, reject) => {\n try {\n socket.connect({ port, host: server }, () => {\n if (queryOptions !== '') socket.write(encoder.encode(`${queryOptions} ${domain}\\r\\n`))\n else socket.write(encoder.encode(`${domain}\\r\\n`))\n })\n\n socket.on('data', (data) => {\n resolve(decoder.decode(data))\n })\n\n socket.on('error', (error) => {\n reject(error)\n })\n } catch (e) {\n reject(e)\n }\n })\n }\n\n const options: SocksClientOptions = {\n proxy: {\n host: proxy.ip,\n port: proxy.port,\n type: proxy.type === ProxyType.SOCKS5 ? 5 : 4,\n },\n\n command: 'connect',\n\n destination: {\n host: server,\n port,\n },\n }\n\n if (proxy.username && proxy.password) {\n options.proxy.userId = proxy.username\n options.proxy.password = proxy.password\n }\n\n return new Promise((resolve, reject) => {\n SocksClient.createConnection(options, (err, info) => {\n if (err) {\n reject(err)\n } else {\n if (!info) reject(new Error('No socket info received!'))\n\n if (queryOptions !== '') {\n info?.socket.write(encoder.encode(`${queryOptions} ${domain}\\r\\n`))\n } else {\n info?.socket.write(encoder.encode(`${domain}\\r\\n`))\n }\n\n info?.socket.on('data', (data) => {\n resolve(decoder.decode(data))\n })\n\n info?.socket.resume()\n }\n })\n })\n}\n\n/**\n * Collect WhoIs data for the mentioned {@link domain}. Parse the reveived response if {@link parse} is true, accordingly.\n *\n * @param domain Domain name\n * @param parse Whether the raw text needs to be parsed/formatted or not\n * @param options {@link WhoIsOptions}\n * @returns {@link WhoIsResponse} Returns a {@link WhoIsResponse} object which contains the raw text and parsed data (if parse is true)\n */\nexport async function whois(\n domain: string,\n parse = false,\n options: WhoIsOptions | null = null,\n): Promise<WhoIsResponse> {\n let tld: string\n let port = 43\n let server = ''\n let proxy: ProxyData | null\n let encoding = 'utf-8'\n\n if (!options) {\n tld = getTLD(domain)\n proxy = null\n } else {\n tld = options.tld ? options.tld : getTLD(domain)\n encoding = options.encoding ? options.encoding : 'utf-8'\n proxy = options.proxy ? options.proxy : null\n server = options.server ? options.server : ''\n port = options.serverPort ? options.serverPort : 43\n }\n\n if (server === '') {\n let serverData = getWhoIsServer(tld as keyof typeof SERVERS)\n if (!serverData) {\n console.debug(`No WhoIs server found for TLD: ${tld}! Attempting IANA WhoIs database for server!`)\n serverData = await findWhoIsServer(tld)\n if (!serverData) {\n console.debug('WhoIs server could not be found!')\n return {\n _raw: '',\n parsedData: null,\n }\n }\n console.debug(`WhoIs sever found for ${tld}: ${server}`)\n }\n\n server = serverData\n }\n\n const qOptions = getParameters(server)\n const queryOptions = qOptions || ''\n\n try {\n const rawData = await tcpWhois(domain, queryOptions, server, port, encoding, proxy)\n if (!parse) {\n const parsedData = WhoIsParser.parseData(rawData, null)\n return {\n _raw: rawData,\n parsedData,\n }\n }\n\n let outputData: any | null = null\n if (options?.parseData) outputData = shallowCopy(options.parseData)\n\n try {\n const parsedData = WhoIsParser.parseData(rawData, outputData)\n return {\n _raw: rawData,\n parsedData,\n }\n } catch (err) {\n console.error('Error in parsing WhoIs data!', err)\n return {\n _raw: rawData,\n parsedData: null,\n }\n }\n } catch (err) {\n return {\n _raw: '',\n parsedData: null,\n }\n }\n}\n\nexport function lookup(domain: string, options: WhoIsOptions | null = null): Promise<WhoIsResponse> {\n return whois(domain, true, options)\n}\n\n/**\n * Collects (and parse/format if set to be true) for the provided {@link domains}. If {@link parallel} is set to be true, multiple threads will be used to batch process the domains according to {@link threads} mentioned.\n * If <i>options.parsedData</i> is mentioned, then it will be used to parse <b>all</b> the responses.\n * If a proxy is mentioned in {@link options}, then the proxy will be used to collect <b>all</b> the WhoIs data.\n *\n * @param domains Domains Names\n * @param parallel Whether data should be collected parallally or not\n * @param threads Batch size (for parallel processing)\n * @param parse Whether the raw text needs to be parsed/formatted or not\n * @param options {@link WhoIsOptions}\n * @returns Array of {@link WhoIsResponse} for all the domains. Order is not guaranteed\n */\nexport async function batchWhois(\n domains: string[],\n parallel = false,\n threads = 1,\n parse = false,\n options: WhoIsOptions | null = null,\n): Promise<WhoIsResponse[]> {\n let response: WhoIsResponse[] = []\n\n if (parallel) {\n if (threads > domains.length) threads = domains.length\n\n for (let i = 0; i < domains.length; i += threads) {\n const batch = domains.slice(i, i + threads)\n response = await Promise.all(\n batch.map(async (domain) => {\n return await whois(domain, parse, options)\n }),\n )\n }\n } else {\n for (let i = 0; i < domains.length; i++) {\n const res = await whois(domains[i] as string, parse, options)\n response.push(res)\n }\n }\n\n return response\n}\n",
6
+ "export default {\n 'whois.denic.de': '-T dn,ace',\n 'whois.nic.fr': '-V Md5.2',\n}\n",
7
+ "export default {\n 'br.com': 'whois.centralnic.net',\n 'cn.com': 'whois.centralnic.net',\n 'de.com': 'whois.centralnic.net',\n 'eu.com': 'whois.centralnic.net',\n 'gb.com': 'whois.centralnic.net',\n 'gb.net': 'whois.centralnic.net',\n 'gr.com': 'whois.centralnic.net',\n 'hu.com': 'whois.centralnic.net',\n 'in.net': 'whois.centralnic.net',\n 'no.com': 'whois.centralnic.net',\n 'qc.com': 'whois.centralnic.net',\n 'ru.com': 'whois.centralnic.net',\n 'sa.com': 'whois.centralnic.net',\n 'se.com': 'whois.centralnic.net',\n 'se.net': 'whois.centralnic.net',\n 'uk.com': 'whois.centralnic.net',\n 'uk.net': 'whois.centralnic.net',\n 'us.com': 'whois.centralnic.net',\n 'uy.com': 'whois.centralnic.net',\n 'za.com': 'whois.centralnic.net',\n 'jpn.com': 'whois.centralnic.ne',\n 'web.com': 'whois.centralnic.ne',\n com: 'whois.verisign-grs.com',\n 'za.net': 'whois.za.net',\n net: 'whois.verisign-grs.com',\n 'eu.org': 'whois.eu.org',\n 'za.org': 'whois.za.org',\n org: 'whois.pir.org',\n 'llyw.cymru': 'whois.nic.llyw.cymru',\n 'gov.scot': 'whois.nic.gov.scot',\n 'gov.wales': 'whois.nic.gov.wales',\n edu: 'whois.educause.edu',\n gov: 'whois.dotgov.gov',\n int: 'whois.iana.org',\n 'e164.arpa': 'whois.ripe.net',\n arpa: 'whois.iana.org',\n aero: 'whois.aero',\n asia: 'whois.nic.asia',\n biz: 'whois.nic.biz',\n cat: 'whois.nic.cat',\n coop: 'whois.nic.coop',\n info: 'whois.afilias.net',\n jobs: 'whois.nic.jobs',\n mobi: 'whois.afilias.net',\n museum: 'whois.nic.museum',\n name: 'whois.nic.name',\n post: 'whois.dotpostregistry.net',\n pro: 'whois.nic.pro',\n tel: 'whois.nic.tel',\n travel: 'whois.nic.travel',\n xxx: 'whois.nic.xxx',\n ac: 'whois.nic.ac',\n ae: 'whois.aeda.net.ae',\n af: 'whois.nic.af',\n ag: 'whois.nic.ag',\n ai: 'whois.nic.ai',\n am: 'whois.amnic.net',\n ar: 'whois.nic.ar',\n as: 'whois.nic.as',\n 'priv.at': 'whois.nic.priv.at',\n at: 'whois.nic.at',\n au: 'whois.auda.org.au',\n aw: 'whois.nic.aw',\n ax: 'whois.ax',\n be: 'whois.dns.be',\n bf: 'whois.registre.bf',\n bg: 'whois.register.bg',\n bh: 'whois.nic.bh',\n bi: 'whois1.nic.bi',\n bj: 'whois.nic.bj',\n bm: 'whois.afilias-srs.net',\n bn: 'whois.bnnic.bn',\n bo: 'whois.nic.bo',\n br: 'whois.registro.br',\n by: 'whois.cctld.by',\n bw: 'whois.nic.net.bw',\n bz: 'whois.afilias-grs.info',\n 'co.ca': 'whois.co.ca',\n ca: 'whois.cira.ca',\n cc: 'ccwhois.verisign-grs.com',\n cd: 'whois.nic.cd',\n ch: 'whois.nic.ch',\n ci: 'whois.nic.ci',\n cl: 'whois.nic.cl',\n cm: 'whois.netcom.cm',\n 'edu.cn': 'whois.edu.cn',\n cn: 'whois.cnnic.cn',\n 'uk.co': 'whois.uk.co',\n co: 'whois.nic.co',\n cr: 'whois.nic.cr',\n cx: 'whois.nic.cx',\n cz: 'whois.nic.cz',\n de: 'whois.denic.de',\n dk: 'whois.dk-hostmaster.dk',\n dm: 'whois.dmdomains.dm',\n do: 'whois.nic.do',\n dz: 'whois.nic.dz',\n ec: 'whois.nic.ec',\n ee: 'whois.tld.ee',\n eu: 'whois.eu',\n fi: 'whois.fi',\n fj: 'www.whois.fj',\n fm: 'whois.nic.fm',\n fo: 'whois.nic.fo',\n fr: 'whois.nic.fr',\n gd: 'whois.nic.gd',\n ge: 'whois.nic.ge',\n gf: 'whois.mediaserv.net',\n gg: 'whois.gg',\n gh: 'whois.nic.gh',\n gi: 'whois2.afilias-grs.net',\n gl: 'whois.nic.gl',\n gp: 'whois.nic.gp',\n gq: 'whois.dominio.gq',\n gs: 'whois.nic.gs',\n gy: 'whois.registry.gy',\n hk: 'whois.hkirc.hk',\n hm: 'whois.registry.hm',\n hn: 'whois.nic.hn',\n hr: 'whois.dns.hr',\n ht: 'whois.nic.ht',\n hu: 'whois.nic.hu',\n id: 'whois.id',\n ie: 'whois.weare.ie',\n il: 'whois.isoc.org.il',\n im: 'whois.nic.im',\n in: 'whois.registry.in',\n io: 'whois.nic.io',\n iq: 'whois.cmc.iq',\n ir: 'whois.nic.ir',\n is: 'whois.isnic.is',\n it: 'whois.nic.it',\n je: 'whois.je',\n jp: 'whois.jprs.jp',\n ke: 'whois.kenic.or.ke',\n kg: 'whois.kg',\n ki: 'whois.nic.ki',\n kn: 'whois.nic.kn',\n kr: 'whois.kr',\n kw: 'whois.nic.kw',\n ky: 'whois.kyregistry.ky',\n kz: 'whois.nic.kz',\n la: 'whois.nic.la',\n lb: 'whois.lbdr.org.lb',\n lc: 'whois2.afilias-grs.net',\n li: 'whois.nic.li',\n lk: 'whois.nic.lk',\n ls: 'whois.nic.ls',\n lt: 'whois.domreg.lt',\n lu: 'whois.dns.lu',\n lv: 'whois.nic.lv',\n ly: 'whois.nic.ly',\n ma: 'whois.registre.ma',\n md: 'whois.nic.md',\n me: 'whois.nic.me',\n mg: 'whois.nic.mg',\n mk: 'whois.marnet.mk',\n ml: 'whois.dot.ml',\n mm: 'whois.registry.gov.mm',\n mn: 'whois.nic.mn',\n mq: 'whois.mediaserv.net',\n mr: 'whois.nic.mr',\n ms: 'whois.nic.ms',\n mt: 'whois.nic.org.mt',\n mu: 'whois.nic.mu',\n mw: 'whois.nic.mw',\n mx: 'whois.mx',\n my: 'whois.mynic.my',\n mz: 'whois.nic.mz',\n na: 'whois.na-nic.com.na',\n nc: 'whois.nc',\n nf: 'whois.nic.nf',\n ng: 'whois.nic.net.ng',\n nl: 'whois.domain-registry.nl',\n no: 'whois.norid.no',\n nu: 'whois.iis.nu',\n nz: 'whois.irs.net.nz',\n om: 'whois.registry.om',\n pe: 'kero.yachay.pe',\n pf: 'whois.registry.pf',\n pk: 'whois.pknic.net.pk',\n 'co.pl': 'whois.co.pl',\n pl: 'whois.dns.pl',\n pm: 'whois.nic.pm',\n pr: 'whois.afilias-srs.net',\n ps: 'whois.pnina.ps',\n pt: 'whois.dns.pt',\n pw: 'whois.nic.pw',\n qa: 'whois.registry.qa',\n re: 'whois.nic.re',\n ro: 'whois.rotld.ro',\n rs: 'whois.rnids.rs',\n 'ac.ru': 'whois.free.net',\n 'edu.ru': 'whois.informika.ru',\n 'com.ru': 'whois.flexireg.net',\n 'msk.ru': 'whois.flexireg.net',\n 'net.ru': 'whois.nic.net.ru',\n 'nov.ru': 'whois.flexireg.net',\n 'org.ru': 'whois.nic.net.ru',\n 'pp.ru': 'whois.nic.net.ru',\n 'spb.ru': 'whois.flexireg.net',\n ru: 'whois.tcinet.ru',\n rw: 'whois.ricta.org.rw',\n sa: 'whois.nic.net.sa',\n sb: 'whois.nic.net.sb',\n sc: 'whois2.afilias-grs.net',\n sd: 'whois.sdnic.sd',\n se: 'whois.iis.se',\n sg: 'whois.sgnic.sg',\n sh: 'whois.nic.sh',\n si: 'whois.register.si',\n sk: 'whois.sk-nic.sk',\n sl: 'whois.nic.sl',\n sm: 'whois.nic.sm',\n sn: 'whois.nic.sn',\n so: 'whois.nic.so',\n ss: 'whois.nic.ss',\n st: 'whois.nic.st',\n 'msk.su': 'whois.flexireg.net',\n 'nov.su': 'whois.flexireg.net',\n 'spb.su': 'whois.flexireg.net',\n su: 'whois.tcinet.ru',\n sx: 'whois.sx',\n sy: 'whois.tld.sy',\n tc: 'whois.nic.tc',\n td: 'whois.nic.td',\n tf: 'whois.nic.tf',\n tg: 'whois.nic.tg',\n th: 'whois.thnic.co.th',\n tk: 'whois.dot.tk',\n tl: 'whois.nic.tl',\n tm: 'whois.nic.tm',\n tn: 'whois.ati.tn',\n to: 'whois.tonic.to',\n tr: 'whois.trabis.gov.tr',\n tv: 'whois.nic.tv',\n tw: 'whois.twnic.net.tw',\n tz: 'whois.tznic.or.tz',\n 'biz.ua': 'whois.biz.ua',\n 'co.ua': 'whois.co.ua',\n 'pp.ua': 'whois.pp.ua',\n ua: 'whois.ua',\n ug: 'whois.co.ug',\n 'ac.uk': 'whois.nic.ac.uk',\n 'gov.uk': 'whois.gov.uk',\n uk: 'whois.nic.uk',\n 'fed.us': 'whois.nic.gov',\n us: 'whois.nic.us',\n uy: 'whois.nic.org.uy',\n uz: 'whois.cctld.uz',\n vc: 'whois2.afilias-grs.net',\n ve: 'whois.nic.ve',\n vg: 'whois.nic.vg',\n vu: 'whois.dnrs.vu',\n wf: 'whois.nic.wf',\n ws: 'whois.website.ws',\n yt: 'whois.nic.yt',\n 'ac.za': 'whois.ac.za',\n 'co.za': 'whois.registry.net.za',\n 'gov.za': 'whois.gov.za',\n 'net.za': 'net-whois.registry.net.za',\n 'org.za': 'org-whois.registry.net.za',\n 'web.za': 'web-whois.registry.net.za',\n zm: 'whois.zicta.zm',\n 'xn--2scrj9c': 'whois.registry.in',\n 'xn--3e0b707e': 'whois.kr',\n 'xn--3hcrj9c': 'whois.registry.in',\n 'xn--45br5cyl': 'whois.registry.in',\n 'xn--45brj9c': 'whois.registry.in',\n 'xn--4dbrk0ce': 'whois.isoc.org.il',\n 'xn--80ao21a': 'whois.nic.kz',\n 'xn--90a3ac': 'whois.rnids.rs',\n 'xn--90ae': 'whois.imena.bg',\n 'xn--90ais': 'whois.cctld.by',\n 'xn--clchc0ea0b2g2a9gcd': 'whois.sgnic.sg',\n 'xn--d1alf': 'whois.marnet.mk',\n 'xn--e1a4c': 'whois.eu',\n 'xn--fiqs8s': 'cwhois.cnnic.cn',\n 'xn--fiqz9s': 'cwhois.cnnic.cn',\n 'xn--fpcrj9c3d': 'whois.registry.in',\n 'xn--fzc2c9e2c': 'whois.nic.lk',\n 'xn--gecrj9c': 'whois.registry.in',\n 'xn--h2breg3eve': 'whois.registry.in',\n 'xn--h2brj9c8c': 'whois.registry.in',\n 'xn--h2brj9c': 'whois.registry.in',\n 'xn--j1amh': 'whois.dotukr.com',\n 'xn--j6w193g': 'whois.hkirc.hk',\n 'xn--kprw13d': 'whois.twnic.net.tw',\n 'xn--kpry57d': 'whois.twnic.net.tw',\n 'xn--lgbbat1ad8j': 'whois.nic.dz',\n 'xn--mgb9awbf': 'whois.registry.om',\n 'xn--mgba3a4f16a': 'whois.nic.ir',\n 'xn--mgbaam7a8h': 'whois.aeda.net.ae',\n 'xn--mgbah1a3hjkrd': 'whois.nic.mr',\n 'xn--mgbbh1a71e': 'whois.registry.in',\n 'xn--mgbbh1a': 'whois.registry.in',\n 'xn--mgberp4a5d4ar': 'whois.nic.net.sa',\n 'xn--mgbgu82a': 'whois.registry.in',\n 'xn--mgbtx2b': 'whois.cmc.iq',\n 'xn--mgbx4cd0ab': 'whois.mynic.my',\n 'xn--node': 'whois.itdc.ge',\n 'xn--o3cw4h': 'whois.thnic.co.th',\n 'xn--ogbpf8fl': 'whois.tld.sy',\n 'xn--p1ai': 'whois.tcinet.ru',\n 'xn--pgbs0dh': 'whois.ati.tn',\n 'xn--q7ce6a': 'whois.nic.la',\n 'xn--qxa6a': 'whois.eu',\n 'xn--rvc1e0am3e': 'whois.registry.in',\n 'xn--s9brj9c': 'whois.registry.in',\n 'xn--wgbh1c': 'whois.dotmasr.eg',\n 'xn--wgbl6a': 'whois.registry.qa',\n 'xn--xkc2al3hye2a': 'whois.nic.lk',\n 'xn--xkc2dl3a5ee0h': 'whois.registry.in',\n 'xn--y9a3aq': 'whois.amnic.net',\n 'xn--yfro4i67o': 'whois.sgnic.sg',\n 'xn--ygbi2ammx': 'whois.pnina.ps',\n}\n"
8
+ ],
9
+ "mappings": ";;AAAA;AACA;AAEA;;;ACHA,IAAe;AAAA,EACb,kBAAkB;AAAA,EAClB,gBAAgB;AAClB;;;ACHA,IAAe;AAAA,EACb,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,KAAK;AAAA,EACL,UAAU;AAAA,EACV,KAAK;AAAA,EACL,UAAU;AAAA,EACV,UAAU;AAAA,EACV,KAAK;AAAA,EACL,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EAC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",
10
+ "debugId": "9DF3DD8E9D6845DB64756E2164756E21",
11
+ "names": []
12
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/whois",
3
3
  "type": "module",
4
- "version": "0.62.0",
4
+ "version": "0.63.0",
5
5
  "description": "Easily get whois info.",
6
6
  "author": "Chris Breuer",
7
7
  "license": "MIT",