UNPKG

@stacksjs/dnsx

Version:

A command-line & library DNS client. Like dig & dog, but for TypeScript.

215 lines (214 loc) 5.32 kB
import type { TransportType } from './transport'; /** * Protocol-level tweaks for fine-tuning DNS queries. * These options modify the DNS header flags and EDNS parameters. */ export declare interface ProtocolTweaks { authoritative?: boolean authenticData?: boolean checkingDisabled?: boolean udpPayloadSize?: number } /** * Transport protocol configuration for DNS queries. * Supports multiple transport options with retry and timeout settings. */ export declare interface TransportConfig { type?: TransportType udp?: boolean tcp?: boolean tls?: boolean https?: boolean timeout?: number retries?: number } /** * Query configuration for DNS lookups. * Specifies what to query and how to query it. */ export declare interface QueryConfig { domains: string[] types?: (RecordType | string)[] classes?: (QClass | string)[] nameserver?: string recursive?: boolean } /** * Output formatting configuration. * Controls how DNS responses are formatted and displayed. */ export declare interface OutputConfig { short?: boolean json?: boolean color?: 'always' | 'auto' | 'never' seconds?: boolean time?: boolean } /** * Complete configuration options for the DNS client. * Combines all configuration aspects into a single interface. * * @example * ```ts * const options: DnsOptions = { * domains: ['example.com'], * type: 'A', * nameserver: '1.1.1.1', * edns: 'show', * transport: { * type: 'udp', * timeout: 5000 * } * } * ``` */ export declare interface DnsOptions { domains?: string[] type?: string | string[] nameserver?: string class?: string | string[] edns?: EDNSMode txid?: number Z?: string | string[] udp?: boolean tcp?: boolean tls?: boolean https?: boolean timeout?: number retries?: number short?: boolean json?: boolean color?: 'always' | 'auto' | 'never' seconds?: boolean time?: boolean tweaks?: ProtocolTweaks transport?: TransportConfig | TransportType query?: QueryConfig output?: OutputConfig verbose?: boolean } /** * Represents a single DNS resource record in the response. * Contains the record's name, type, class, TTL, and data. */ export declare interface DnsAnswer { name: string type: RecordType class: QClass ttl: number data: any } /** * Complete DNS response message structure. * Contains the message ID, flags, and all record sections. */ export declare interface DnsResponse { id: number flags: DnsFlags answers: DnsAnswer[] authorities: DnsAnswer[] additionals: DnsAnswer[] } /** * DNS message header flags as defined in RFC 1035. * Controls various aspects of DNS message processing. */ declare interface DnsFlags { response: boolean opcode: number authoritative: boolean truncated: boolean recursionDesired: boolean recursionAvailable: boolean authenticData: boolean checkingDisabled: boolean responseCode: number } /** * Structure of a DNS query message. * Contains the essential components needed to form a query. */ export declare interface DnsQuery { name: string type: RecordType class: QClass } /** * DNS Record Types as defined in various RFCs. * Each type represents a different kind of resource record. * * Common types: * - A (1): IPv4 address * - AAAA (28): IPv6 address * - MX (15): Mail exchange * - TXT (16): Text records * - CNAME (5): Canonical name * - NS (2): Nameserver */ export declare enum RecordType { A = 1, NS = 2, CNAME = 5, SOA = 6, PTR = 12, MX = 15, TXT = 16, AAAA = 28, SRV = 33, NAPTR = 35, OPT = 41, SSHFP = 44, TLSA = 52, DNSKEY = 48, CAA = 257, } /** * DNS Query Classes as defined in RFC 1035. * The class specifies the protocol group of the record. */ export declare enum QClass { IN = 1, // Internet - Most commonly used CH = 3, // CHAOS - Rarely used, mainly for server identification HS = 4, // Hesiod - Rarely used, for Hesiod directory service } /** * EDNS (Extension Mechanisms for DNS) Mode Configuration. * Controls how EDNS records are handled in queries and responses. */ export declare enum EDNSMode { Disable = 'disable', // Don't use EDNS Hide = 'hide', // Use EDNS but hide OPT records in output Show = 'show', // Use EDNS and show OPT records in output } /** * Standard DNS response codes as defined in RFC 1035 and others. * Indicates the status of the response message. */ export declare enum DnsResponseCode { NoError = 0, // No error FormErr = 1, // Format error ServFail = 2, // Server failure NXDomain = 3, // Non-existent domain NotImp = 4, // Not implemented Refused = 5, // Query refused YXDomain = 6, // Name exists YXRRSet = 7, // RR set exists NXRRSet = 8, // RR set does not exist NotAuth = 9, // Server not authoritative NotZone = 10, // Name not contained in zone } /** * Error types that can occur during DNS wire format processing. * Used for detailed error reporting in protocol handling. */ export declare enum WireError { TruncatedPacket = 'TRUNCATED_PACKET', InvalidLength = 'INVALID_LENGTH', InvalidFormat = 'INVALID_FORMAT', InvalidName = 'INVALID_NAME', InvalidLabel = 'INVALID_LABEL', InvalidPointer = 'INVALID_POINTER', InvalidType = 'INVALID_TYPE', InvalidClass = 'INVALID_CLASS', NetworkError = 'NETWORK_ERROR', }