nostr-tools
Advanced tools
Comparing version 0.19.0 to 0.20.0
64
nip05.js
@@ -1,52 +0,26 @@ | ||
import {Buffer} from 'buffer' | ||
import dnsPacket from 'dns-packet' | ||
import fetch from 'cross-fetch' | ||
const dohProviders = [ | ||
'cloudflare-dns.com', | ||
'fi.doh.dns.snopyta.org', | ||
'basic.bravedns.com', | ||
'hydra.plan9-ns1.com', | ||
'doh.pl.ahadns.net', | ||
'dns.flatuslifir.is', | ||
'doh.dns.sb', | ||
'doh.li' | ||
] | ||
export async function searchDomain(domain, query = '') { | ||
try { | ||
let res = await ( | ||
await fetch(`https://${domain}/.well-known/nostr.json?name=${query}`) | ||
).json() | ||
let counter = 0 | ||
return res.names | ||
} catch (_) { | ||
return [] | ||
} | ||
} | ||
export async function keyFromDomain(domain) { | ||
let host = dohProviders[counter % dohProviders.length] | ||
export async function queryName(fullname) { | ||
try { | ||
let [name, domain] = fullname.split('@') | ||
let res = await ( | ||
await fetch(`https://${domain}/.well-known/nostr.json?name=${name}`) | ||
).json() | ||
let buf = dnsPacket.encode({ | ||
type: 'query', | ||
id: Math.floor(Math.random() * 65534), | ||
flags: dnsPacket.RECURSION_DESIRED, | ||
questions: [ | ||
{ | ||
type: 'TXT', | ||
name: `_nostrkey.${domain}` | ||
} | ||
] | ||
}) | ||
let fetching = fetch(`https://${host}/dns-query`, { | ||
method: 'POST', | ||
headers: { | ||
'Content-Type': 'application/dns-message', | ||
'Content-Length': Buffer.byteLength(buf) | ||
}, | ||
body: buf | ||
}) | ||
counter++ | ||
try { | ||
let response = Buffer.from(await (await fetching).arrayBuffer()) | ||
let {answers} = dnsPacket.decode(response) | ||
if (answers.length === 0) return null | ||
return Buffer.from(answers[0].data[0]).toString() | ||
} catch (err) { | ||
console.log(`error querying DNS for ${domain} on ${host}`, err) | ||
return res.names && res.names[name] | ||
} catch (_) { | ||
return null | ||
} | ||
} |
{ | ||
"name": "nostr-tools", | ||
"version": "0.19.0", | ||
"version": "0.20.0", | ||
"description": "Tools for making a Nostr client.", | ||
@@ -15,3 +15,3 @@ "repository": { | ||
"create-hash": "^1.2.0", | ||
"dns-packet": "^5.2.4", | ||
"cross-fetch": "^3.1.4", | ||
"micro-bip32": "^0.1.0", | ||
@@ -18,0 +18,0 @@ "micro-bip39": "^0.1.3", |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
22109
648
+ Addedcross-fetch@^3.1.4
+ Addedcross-fetch@3.1.8(transitive)
+ Addednode-fetch@2.7.0(transitive)
+ Addedtr46@0.0.3(transitive)
+ Addedwebidl-conversions@3.0.1(transitive)
+ Addedwhatwg-url@5.0.0(transitive)
- Removeddns-packet@^5.2.4
- Removed@leichtgewicht/ip-codec@2.0.5(transitive)
- Removeddns-packet@5.6.1(transitive)