包详细信息

@multiformats/dns

multiformats371.7kApache-2.0 OR MIT1.0.6

Resolve DNS queries with browser fallback

自述文件

@multiformats/dns

multiformats.io codecov CI

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()

// resolve A records with a 5s timeout
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: {
    // will only be used to resolve `.com` addresses
    'com.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query'),

    // this can also be an array, resolvers will be shuffled and tried in
    // series
    'net.': [
      dnsJsonOverHttps('https://dns.google/resolve'),
      dnsJsonOverHttps('https://dns.pub/dns-query')
    ],

    // will only be used to resolve all other addresses
    '.': dnsJsonOverHttps('https://dnsforge.de/dns-query'),
  }
})

Example - Query for specific record types

import { dns, RecordType } from '@multiformats/dns'

const resolver = dns()

// resolve only TXT records
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()

// do not used cached results, always resolve a new query
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.

更新日志

1.0.6 (2024-04-06)

Bug Fixes

  • cloudflare dns only supports string type (#7) (a49bb37)

1.0.5 (2024-03-14)

Bug Fixes

  • update TTL of cached results (#4) (876432e)

1.0.4 (2024-03-14)

Bug Fixes

1.0.3 (2024-03-13)

Bug Fixes

  • stop resolving on signal abort (#2) (ea39509)

1.0.2 (2024-03-13)

Bug Fixes

  • restore answer type from cache as enum (#1) (dd983d1)

Documentation

1.0.1 (2024-03-08)

Bug Fixes

1.0.0 (2024-03-08)

Features