@multiformats/dns
Resolve DNS queries with browser fallback
About
Query DNS records using node:dns
, DNS over HTTP and/or DNSJSON over HTTP.
A list of publicly accessible servers can be found here.
Example - Using the default resolver
import { dns } from '@multiformats/dns'
const resolver = dns()
const result = await dns.query('google.com', {
signal: AbortSignal.timeout(5000)
})
Example - Using per-TLD resolvers
import { dns } from '@multiformats/dns'
import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'
const resolver = dns({
resolvers: {
'com.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query'),
'net.': [
dnsJsonOverHttps('https://dns.google/resolve'),
dnsJsonOverHttps('https://dns.pub/dns-query')
],
'.': dnsJsonOverHttps('https://dnsforge.de/dns-query'),
}
})
Example - Query for specific record types
import { dns, RecordType } from '@multiformats/dns'
const resolver = dns()
const result = await dns.query('google.com', {
types: [
RecordType.TXT
]
})
Caching
Individual Aanswers are cached so. If you make a request, for which all
record types are cached, all values will be pulled from the cache.
If any of the record types are not cached, a new request will be resolved as
if none of the records were cached, and the cache will be updated to include
the new results.
Example - Ignoring the cache
import { dns, RecordType } from '@multiformats/dns'
const resolver = dns()
const result = await dns.query('google.com', {
cached: false
})
Install
$ npm i @multiformats/dns
Browser <script>
tag
Loading this module through a script tag will make it's exports available as MultiformatsDns
in the global namespace.
<script src="https://unpkg.com/@multiformats/dns/dist/index.min.js"></script>
API Docs
License
Licensed under either of
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.