UNPKG

diggy

Version:

Multi-backend DNS resolver for Node.js/Browser — supports dig, DNS over HTTPS, and native Node.js DNS.

53 lines (52 loc) 2.02 kB
import { digResolver } from "./resolvers/dig-resolver"; import { dohResolver } from "./resolvers/doh-resolver"; import { nodeResolver } from "./resolvers/node-resolver"; /** * Represents the built-in DNS resolvers available in the library. * @enum {string} * @property {string} nodejs - Uses Node.js's built-in DNS resolver. * @property {string} dig - Uses the `dig` command-line tool for DNS resolution. * @property {string} google - Uses Google's DNS over HTTPS (DoH) resolver. * @property {string} cloudflare - Uses Cloudflare's DNS over HTTPS (DoH) resolver. * @group Resolvers */ export var BuildInDNSResolver; (function (BuildInDNSResolver) { BuildInDNSResolver["nodejs"] = "nodejs"; BuildInDNSResolver["dig"] = "dig"; BuildInDNSResolver["google"] = "google"; BuildInDNSResolver["cloudflare"] = "cloudflare"; })(BuildInDNSResolver || (BuildInDNSResolver = {})); const resolvers = { nodejs: nodeResolver(), dig: digResolver(), google: dohResolver("https://dns.google/resolve"), cloudflare: dohResolver("https://cloudflare-dns.com/dns-query"), }; /** * Returns a DNS resolver function based on the provided resolver name or function. * * If a `string` is provided, it must match one of the built-in resolvers. * If a `function` is provided, it will be returned as is. * If no resolver is provided, the default resolver (Google's DoH) will be used * * @example * ```ts * import { getResolver } from "diggy"; * const resolver = getResolver("google"); // Returns the Google DoH resolver * ``` * * * @param {string | BuildInDNSResolver | DNSResolver} [resolver] - The name of the built-in resolver or a custom resolver function. * @return {DNSResolver} The DNS resolver function. * @group Main Functions */ export function getResolver(resolver) { if (typeof resolver === "function") { return resolver; } if (typeof resolver === "string" && resolver in resolvers) { return resolvers[resolver]; } return resolvers.google; }