/** * Custom error classes for DNS validation */ /** * Base class for all DNS validation errors */ import type { ValueOf } from "type-fest"; /** * Base class for all DNS validation errors. */ export declare class DNSValidationError extends Error { readonly code: string; readonly field: string | undefined; readonly value: unknown; constructor(message: string, code: string, field?: string, value?: unknown); } /** * Node.js dns module error code constants (subset) for compatibility. These * mirror the standard error codes exposed by the core 'dns' module so that * consumers can write portable code when using this library as a validation * layer. * * Source reference: https://nodejs.org/api/dns.html#dns-error-codes */ /** * Map of Node.js DNS error code names to their string values. */ export type NodeDNSErrorCodeMap = Readonly<{ ADDRGETNETWORKPARAMS: "ADDRGETNETWORKPARAMS"; BADFAMILY: "BADFAMILY"; BADFLAGS: "BADFLAGS"; BADHINTS: "BADHINTS"; BADNAME: "BADNAME"; BADQUERY: "BADQUERY"; BADRESP: "BADRESP"; BADSTR: "BADSTR"; CANCELLED: "CANCELLED"; CONNREFUSED: "CONNREFUSED"; DESTRUCTION: "DESTRUCTION"; EOF: "EOF"; FILE: "FILE"; FORMERR: "FORMERR"; LOADIPHLPAPI: "LOADIPHLPAPI"; NODATA: "NODATA"; NOMEM: "NOMEM"; NONAME: "NONAME"; NOTFOUND: "NOTFOUND"; NOTIMP: "NOTIMP"; NOTINITIALIZED: "NOTINITIALIZED"; REFUSED: "REFUSED"; SERVFAIL: "SERVFAIL"; TIMEOUT: "TIMEOUT"; }>; /** * Node.js DNS error code constants keyed by code name. */ export declare const NodeDNSErrorCodes: NodeDNSErrorCodeMap; /** * Enhanced validation result with detailed error information */ export interface DetailedValidationResult { errors: DNSValidationError[]; isValid: boolean; suggestions: string[] | undefined; warnings: string[]; } /** * DNS error code emitted by Node's dns module. */ export type NodeDNSErrorCode = ValueOf; /** * Error thrown when a field value is invalid */ export declare class InvalidFieldValueError extends DNSValidationError { constructor(field: string, value: unknown, expectedFormat?: string); } /** * Error thrown when DNS query structure is invalid */ export declare class InvalidQueryStructureError extends DNSValidationError { constructor(message: string, field?: string); } /** * Error thrown when a DNS record type is invalid or unsupported */ export declare class InvalidRecordTypeError extends DNSValidationError { constructor(recordType: unknown); } /** * Error thrown when a DNS record structure is malformed */ export declare class MalformedRecordError extends DNSValidationError { constructor(message: string, field?: string, value?: unknown); } /** * Error thrown when required fields are missing */ export declare class MissingRequiredFieldError extends DNSValidationError { constructor(field: string, recordType: string); } /** * Validation context for tracking field paths and providing better error * messages */ export declare class ValidationContext { private errors; private path; private suggestions; private warnings; addError(error: Readonly): void; addSuggestion(message: string): void; addWarning(message: string): void; enterField(field: Readonly): void; exitField(): void; getCurrentPath(): string; getResult(): DetailedValidationResult; reset(): void; } /** * Checks whether a value is one of Node's dns module error codes. */ export declare function isNodeDNSErrorCode(code: unknown): code is NodeDNSErrorCode; /** * Factory functions for creating validation errors with consistent messaging */ export declare const ValidationErrorFactory: { readonly invalidEmail: (email: string) => InvalidFieldValueError; readonly invalidFQDN: (domain: string) => InvalidFieldValueError; readonly invalidHexString: (value: string) => InvalidFieldValueError; readonly invalidIPAddress: (address: string, version: 4 | 6) => InvalidFieldValueError; readonly invalidPort: (port: number) => InvalidFieldValueError; readonly invalidPriority: (priority: number) => InvalidFieldValueError; readonly invalidRecordType: (type: unknown) => InvalidRecordTypeError; readonly invalidTTL: (ttl: number) => InvalidFieldValueError; readonly invalidWeight: (weight: number) => InvalidFieldValueError; readonly malformedRecord: (message: string) => MalformedRecordError; readonly missingRequiredField: (field: string, recordType: string) => MissingRequiredFieldError; }; //# sourceMappingURL=errors.d.ts.map