forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			432 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			432 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Copyright (C)2014-2020 Haxe Foundation
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Permission is hereby granted, free of charge, to any person obtaining a
							 | 
						||
| 
								 | 
							
								 * copy of this software and associated documentation files (the "Software"),
							 | 
						||
| 
								 | 
							
								 * to deal in the Software without restriction, including without limitation
							 | 
						||
| 
								 | 
							
								 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
							 | 
						||
| 
								 | 
							
								 * and/or sell copies of the Software, and to permit persons to whom the
							 | 
						||
| 
								 | 
							
								 * Software is furnished to do so, subject to the following conditions:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * The above copyright notice and this permission notice shall be included in
							 | 
						||
| 
								 | 
							
								 * all copies or substantial portions of the Software.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
							 | 
						||
| 
								 | 
							
								 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
							 | 
						||
| 
								 | 
							
								 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
							 | 
						||
| 
								 | 
							
								 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
							 | 
						||
| 
								 | 
							
								 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
							 | 
						||
| 
								 | 
							
								 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
							 | 
						||
| 
								 | 
							
								 * DEALINGS IN THE SOFTWARE.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package js.node;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import haxe.extern.EitherType;
							 | 
						||
| 
								 | 
							
								#if haxe4
							 | 
						||
| 
								 | 
							
								import js.lib.Error;
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								import js.Error;
							 | 
						||
| 
								 | 
							
								#end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Enumeration of possible Int `options` values for `Dns.lookup`.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								@:enum abstract DnsAddressFamily(Int) from Int to Int {
							 | 
						||
| 
								 | 
							
									var IPv4 = 4;
							 | 
						||
| 
								 | 
							
									var IPv6 = 6;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Type of the `options` argument for `Dns.lookup`.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef DnsLookupOptions = {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The record family. If not provided, both IP v4 and v6 addresses are accepted.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									@:optional var family:DnsAddressFamily;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										If present, it should be one or more of the supported `getaddrinfo` flags.
							 | 
						||
| 
								 | 
							
										If hints is not provided, then no flags are passed to `getaddrinfo`.
							 | 
						||
| 
								 | 
							
										Multiple flags can be passed through hints by logically ORing their values.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									@:optional var hints:Int;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										When true, the callback returns all resolved addresses in an array, otherwise returns a single address.
							 | 
						||
| 
								 | 
							
										Defaults to false.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									@:optional var all:Bool;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Enumeration of possible `rrtype` value for `Dns.resolve`.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								@:enum abstract DnsRrtype(String) from String to String {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										IPV4 addresses, default
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var A = "A";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										IPV6 addresses
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var AAAA = "AAAA";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										mail exchange records
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var MX = "MX";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										text records
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var TXT = "TXT";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										SRV records
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var SRV = "SRV";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										used for reverse IP lookups
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var PTR = "PTR";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										name server records
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var NS = "NS";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										canonical name records
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var CNAME = "CNAME";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										start of authority record
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var SOA = "SOA";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Types of address data returned by `resolve` functions.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								typedef DnsResolvedAddressMX = {priority:Int, exchange:String};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef DnsResolvedAddressSRV = {priority:Int, weight:Int, port:Int, name:String};
							 | 
						||
| 
								 | 
							
								typedef DnsResolvedAddressSOA = {nsname:String, hostmaster:String, serial:Int, refresh:Int, retry:Int, expire:Int, minttl:Int};
							 | 
						||
| 
								 | 
							
								typedef DnsResolvedAddress = EitherType<String, EitherType<DnsResolvedAddressMX, EitherType<DnsResolvedAddressSOA, DnsResolvedAddressSRV>>>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Error objects returned by dns lookups are of this type
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								extern class DnsError extends Error {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Values for error codes are listed in `Dns` class.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var code(default, null):DnsErrorCode;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Each DNS query can return one of the following error codes
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								@:jsRequire("dns")
							 | 
						||
| 
								 | 
							
								@:enum extern abstract DnsErrorCode(String) {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										DNS server returned answer with no data.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var NODATA;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										DNS server claims query was misformatted.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var FORMERR;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										DNS server returned general failure.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var SERVFAIL;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Domain name not found.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var NOTFOUND;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										DNS server does not implement requested operation.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var NOTIMP;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										DNS server refused query.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var REFUSED;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Misformatted DNS query.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var BADQUERY;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Misformatted domain name.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var BADNAME;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Unsupported address family.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var BADFAMILY;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Misformatted DNS reply.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var BADRESP;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Could not contact DNS servers.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var CONNREFUSED;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Timeout while contacting DNS servers.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var TIMEOUT;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										End of file.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var EOF;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Error reading file.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var FILE;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Out of memory.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var NOMEM;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Channel is being destroyed.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var DESTRUCTION;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Misformatted string.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var BADSTR;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Illegal flags specified.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var BADFLAGS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Given hostname is not numeric.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var NONAME;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Illegal hints flags specified.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var BADHINTS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										c-ares library initialization not yet performed.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var NOTINITIALIZED;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Error loading iphlpapi.dll.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var LOADIPHLPAPI;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Could not find GetNetworkParams function.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var ADDRGETNETWORKPARAMS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										DNS query cancelled.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									var CANCELLED;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef DnsLookupCallbackSingle = #if (haxe_ver >= 4) (err : DnsError, address : String, family : DnsAddressFamily) -> Void; #else DnsError->String->
							 | 
						||
| 
								 | 
							
									DnsAddressFamily->Void #end
							 | 
						||
| 
								 | 
							
								typedef DnsLookupCallbackAll = #if (haxe_ver >= 4) (err : DnsError, addresses : Array<DnsLookupCallbackAllEntry>) -> Void; #else DnsError->
							 | 
						||
| 
								 | 
							
									Array<DnsLookupCallbackAllEntry>->Void; #end
							 | 
						||
| 
								 | 
							
								typedef DnsLookupCallbackAllEntry = {address:String, family:DnsAddressFamily};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									This module contains functions that belong to two different categories:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									1) Functions that use the underlying operating system facilities to perform name resolution,
							 | 
						||
| 
								 | 
							
									and that do not necessarily do any network communication. This category contains only one function: `lookup`.
							 | 
						||
| 
								 | 
							
									Developers looking to perform name resolution in the same way that other applications on the same operating
							 | 
						||
| 
								 | 
							
									system behave should use `lookup`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									2) Functions that connect to an actual DNS server to perform name resolution,
							 | 
						||
| 
								 | 
							
									and that always use the network to perform DNS queries. This category contains all functions in the dns module but `lookup`.
							 | 
						||
| 
								 | 
							
									These functions do not use the same set of configuration files than what `lookup` uses. For instance,
							 | 
						||
| 
								 | 
							
									they do not use the configuration from /etc/hosts. These functions should be used by developers who do not want
							 | 
						||
| 
								 | 
							
									to use the underlying operating system's facilities for name resolution, and instead want to always perform DNS queries.
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								@:jsRequire("dns")
							 | 
						||
| 
								 | 
							
								extern class Dns {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Resolves a `hostname` (e.g. 'google.com') into the first found A (IPv4) or AAAA (IPv6) record.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										If `options` is not provided, then IP v4 and v6 addresses are both valid.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										The `family` can be the integer 4 or 6. Defaults to null that indicates both Ip v4 and v6 address family.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										The `callback` has arguments (err, address, family).
							 | 
						||
| 
								 | 
							
										The `address` argument is a string representation of a IP v4 or v6 address.
							 | 
						||
| 
								 | 
							
										The `family` argument is either the integer 4 or 6 and denotes the family
							 | 
						||
| 
								 | 
							
										of address (not necessarily the value initially passed to lookup).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										With the `all` option set, the arguments change to (err, addresses), with addresses being an array of objects
							 | 
						||
| 
								 | 
							
										with the properties `address` and `family`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										Keep in mind that `err.code` will be set to 'ENOENT' not only when the hostname does not exist but
							 | 
						||
| 
								 | 
							
										also when the lookup fails in other ways such as no available file descriptors.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										`lookup` doesn't necessarily have anything to do with the DNS protocol. It's only an operating system facility
							 | 
						||
| 
								 | 
							
										that can associate name with addresses, and vice versa.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									@:overload(function(hostname:String, options:EitherType<DnsAddressFamily, DnsLookupOptions>,
							 | 
						||
| 
								 | 
							
										callback:EitherType<DnsLookupCallbackSingle, DnsLookupCallbackAll>):Void {})
							 | 
						||
| 
								 | 
							
									static function lookup(hostname:String, callback:DnsLookupCallbackSingle):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A flag passed in the `hints` argument of `lookup` method.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										Returned address types are determined by the types of addresses supported by the current system.
							 | 
						||
| 
								 | 
							
										For example, IPv4 addresses are only returned if the current system has at least one IPv4 address configured.
							 | 
						||
| 
								 | 
							
										Loopback addresses are not considered.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static var ADDRCONFIG(default, null):Int;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										A flag passed in the `hints` argument of `lookup` method.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										If the IPv6 family was specified, but no IPv6 addresses were found, then return IPv4 mapped IPv6 addresses.
							 | 
						||
| 
								 | 
							
										Note that it is not supported on some operating systems (e.g FreeBSD 10.1).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static var V4MAPPED(default, null):Int;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Resolves the given `address` and `port` into a hostname and service using `getnameinfo`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										The `callback` has arguments (err, hostname, service).
							 | 
						||
| 
								 | 
							
										The `hostname` and `service` arguments are strings (e.g. 'localhost' and 'http' respectively).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										On error, `err` is an Error object, where `err.code` is the error code.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function lookupService(address:String, port:Int, callback:DnsError->String->String->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Resolves a `hostname` (e.g. 'google.com') into an array of the record types specified by `rrtype`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										The `callback` has arguments (err, addresses).
							 | 
						||
| 
								 | 
							
										The type of each item in `addresses` is determined by the record type,
							 | 
						||
| 
								 | 
							
										and described in the documentation for the corresponding lookup methods below.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										On error, `err` is an Error object, where `err.code` is the error code.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									@:overload(function(hostname:String, callback:DnsError->Array<DnsResolvedAddress>->Void):Void {})
							 | 
						||
| 
								 | 
							
									static function resolve(hostname:String, rrtype:DnsRrtype, callback:DnsError->Array<DnsResolvedAddress>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve`, but only for IPv4 queries (A records).
							 | 
						||
| 
								 | 
							
										`addresses` is an array of IPv4 addresses (e.g. ['74.125.79.104', '74.125.79.105', '74.125.79.106']).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolve4(hostname:String, callback:DnsError->Array<String>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve4` except for IPv6 queries (an AAAA query).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolve6(hostname:String, callback:DnsError->Array<String>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve`, but only for mail exchange queries (MX records).
							 | 
						||
| 
								 | 
							
										`addresses` is an array of MX records, each with a priority
							 | 
						||
| 
								 | 
							
										and an exchange attribute (e.g. [{'priority': 10, 'exchange': 'mx.example.com'},...]).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolveMx(hostname:String, callback:DnsError->Array<DnsResolvedAddressMX>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve`, but only for text queries (TXT records).
							 | 
						||
| 
								 | 
							
										`addresses` is a 2-d array of the text records available for hostname (e.g., [ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]).
							 | 
						||
| 
								 | 
							
										Each sub-array contains TXT chunks of one record. Depending on the use case, the could be either joined together
							 | 
						||
| 
								 | 
							
										or treated separately.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolveTxt(hostname:String, callback:DnsError->Array<Array<String>>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve`, but only for service records (SRV records).
							 | 
						||
| 
								 | 
							
										`addresses` is an array of the SRV records available for `hostname`.
							 | 
						||
| 
								 | 
							
										Properties of SRV records are priority, weight, port, and name
							 | 
						||
| 
								 | 
							
										(e.g., [{'priority': 10, 'weight': 5, 'port': 21223, 'name': 'service.example.com'}, ...]).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolveSrv(hostname:String, callback:DnsError->Array<DnsResolvedAddressSRV>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Uses the DNS protocol to resolve pointer records (PTR records) for the `hostname`.
							 | 
						||
| 
								 | 
							
										The addresses argument passed to the callback function will be an array of strings containing the reply records.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolvePtr(hostname:String, callback:DnsError->Array<String>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve`, but only for start of authority record queries (SOA record).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										`addresses` is an object with the following structure:
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
										  nsname: 'ns.example.com',
							 | 
						||
| 
								 | 
							
										  hostmaster: 'root.example.com',
							 | 
						||
| 
								 | 
							
										  serial: 2013101809,
							 | 
						||
| 
								 | 
							
										  refresh: 10000,
							 | 
						||
| 
								 | 
							
										  retry: 2400,
							 | 
						||
| 
								 | 
							
										  expire: 604800,
							 | 
						||
| 
								 | 
							
										  minttl: 3600
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolveSoa(hostname:String, callback:DnsError->DnsResolvedAddressSOA->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve`, but only for name server records (NS records).
							 | 
						||
| 
								 | 
							
										`addresses` is an array of the name server records available for hostname (e.g., ['ns1.example.com', 'ns2.example.com']).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolveNs(hostname:String, callback:DnsError->Array<String>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The same as `resolve`, but only for canonical name records (CNAME records).
							 | 
						||
| 
								 | 
							
										`addresses` is an array of the canonical name records available for hostname (e.g., ['bar.example.com']).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function resolveCname(hostname:String, callback:DnsError->Array<String>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Reverse resolves an `ip` address to an array of hostnames.
							 | 
						||
| 
								 | 
							
										The `callback` has arguments (err, hostname).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function reverse(ip:String, callback:DnsError->Array<String>->Void):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Returns an array of IP addresses as strings that are currently being used for resolution.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function getServers():Array<String>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Given an array of IP addresses as strings, set them as the servers to use for resolving.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										If you specify a port with the address it will be stripped, as the underlying library doesn't support that.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										This will throw if you pass invalid input.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static function setServers(servers:Array<String>):Void;
							 | 
						||
| 
								 | 
							
								}
							 |