I make a DNS resolver in Deno using type script with Deno's built in Deno.resolveDns functionality. The following snippit grabs an array of record types and builds a return object with them. Deno is still new so there is some "novel" usage here, but I believe that more functionality will come for sure.
create dns_resolver.ts file
Copypaste the following:
let records = ["MX", "AAAA", "A", "SRV","ANAME"]
export async function dns_call(domain:string, records_types:Array<string>):Promise<Object>{
    let promise:Promise<any> = new Promise(function(resolve,reject) {
        let ret_object = {}
        for (let i = 0; i < records_types.length;i++){
            // @ts-ignore
            Deno.resolveDns(domain, records_types[i]).then(function (dns_resolution) {
                // @ts-ignore
                ret_object[records_types[i]] = dns_resolution
                if(i === records_types.length -1){
                    resolve(ret_object)
                }
            }).catch(function () {
                // @ts-ignore
                ret_object[records_types[i]] = "not present"
                if(i === records_types.length -1){
                    resolve(ret_object)
                }
            })
        }
    })
    return promise
}
let smoke = await dns_call("example.com", records)
console.log(smoke)
run
$ > deno run --allow-net --unstable dns_resolver.ts
Play around with it.
 

 
    
Top comments (0)