@stacksjs/dnsx
Version:
A command-line & library DNS client. Like dig & dog, but for TypeScript.
58 lines (57 loc) • 1.47 kB
TypeScript
import { Buffer } from 'node:buffer';
import type { DnsAnswer, DnsQuery, DnsResponse, EDNSMode, ProtocolTweaks } from './types';
/**
* Build a DNS query packet
*/
export declare function buildQuery(query: DnsQuery, options?: {
id?: number
txid?: number
edns?: EDNSMode
tweaks?: ProtocolTweaks
verbose?: boolean
}): Buffer;
/**
* Parse a DNS response packet
*/
export declare function parseResponse(buffer: Buffer): DnsResponse;
/**
* DNS header flags
*/
export declare class DnsFlags {
response: boolean;
opcode: number;
authoritative: boolean;
truncated: boolean;
recursionDesired: boolean;
recursionAvailable: boolean;
authenticData: boolean;
checkingDisabled: boolean;
responseCode: number;
static fromBuffer(buffer: Buffer): DnsFlags;
toBuffer(): Buffer;
}
/**
* DNS wire format encoder
*/
export declare class DnsEncoder {
constructor(size?: number, verbose?: boolean);
writeHeader(id: number, flags: DnsFlags, counts: {
qdcount: number
ancount: number
nscount: number
arcount: number
}): void;
writeName(name: string): void;
writeQuestion(query: DnsQuery): void;
getBuffer(): Buffer;
}
/**
* DNS wire format decoder
*/
export declare class DnsDecoder {
constructor(buffer: Buffer);
readName(): string;
readHeader(): { id: number, flags: DnsFlags, counts: { qdcount: number, ancount: number, nscount: number, arcount: number } };
readQuestion(): DnsQuery;
readAnswer(): DnsAnswer;
}