Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@fabcotech/dappy-lookup

fabcotech40MIT2.3.17TypeScript support: included

library that resolves names from dappy name system

dappy, rchain, blockchain, domain, name system, dns

readme

dappy-lookup

A library written in Typescript that resolves any type of record (A, AAAA, CERT) on a dappy name system with co-resolution over HTTPS (DoH).

dappy website

docs for domain purchase and management

dappy-tools repository

Try it with the CLI

npx @fabcotech/dappy-lookup fabcotech A --network=gamma

Building and testing

# In dappy-tools root
npm i & npx lerna bootstrap

# In dappy-tools/packages/gossip
npm i

# test
npm run test

# build
npm run build

Using in any web nodeJS repository

npm i -S @fabcotech/dappy-lookup

Examples

Stand-alone dappy lookup

Here is an example to get you started:

import { lookup } from '@fabcotech/dappy-lookup';

async function run() {
    // lookup the A records for example.dappy on d network
    const packetA = await lookup('example.dappy', 'A');
    console.log(packet);

    // lookup the AAAA records for example.dappy on d network
    const packetAAAA = await lookup('example.dappy', 'AAAA');
    console.log(packet);

    // lookup the CERT records for example.dappy on d network
    const packetCERT = await lookup('example.dappy', 'CERT');
    console.log(packet);
});

run();

This example above will resolve a name on default dappy network which is the d network, which is the DappyNS production ready network.

Next example do the same but on gamma network (used for testing purposes)

import { lookup } from '@fabcotech/dappy-lookup;

async function run() {
    // lookup the A records for example.dappy on gamma network
    const packetA = await lookup('example.dappy', 'A', { network: 'gamma' });
    console.log(packetA);
});

run();

NodeJS request using dappy-lookup with CA certificate retrieval

It's a really a pain point to get a valid CA certificate and to install it at operating system level.

On DappyNS, name servers not only distribute IPv4 (A** records) and IPv6 addresses (AAAA** records) but also certificates to trust over CERT records (alternative of DANE). It enable dappy-lookup client to fetch dynamically and in a trusted manner (using coresolution mecanism) CA certificates.

The example below demonstrates how to do this:

import { lookup, nodeLookup } from '@fabcotech/dappy-lookup;

const { answers: [{ data: ca }]} = await lookup('example.dappy', 'CERT')

https.get('https://example.dappy/', {
    lookup: nodeLookup,
    ca,
}, (res) => {
  ...
});

NodeJS enables to override lookup function for HTTP and HTTPS native modules.

So dappy-lookup provide a lookup function (created with nodeLookup) with the same signature as dns.lookup provided by NodeJS.

NodeJS requests using dappy-lookup

The example below shows how to replace native NodeJS lookup function with the dappy-lookup equivalent function. In this example the certificate is not recovered dynamically, it is installed previously on the operating system.

import { nodeLookup } from '@fabcotech/dappy-lookup;

https.get('https://example.dappy/', {
    lookup: nodeLookup,
}, (res) => {
  ...
});

Reference

Please read Reference to learn more about CLI commands and api.