aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Ciro Spaciari <ciro.spaciari@gmail.com> 2023-05-11 06:30:20 -0300
committerGravatar GitHub <noreply@github.com> 2023-05-11 02:30:20 -0700
commit9c166a1bdf22123c693320c144b4a6985fa69dc2 (patch)
tree062bb2666583cd0b3caf99a8a8ba6a0adc023d24 /src
parente125ed2aa3840afc448509894d9e3c02ac9bc131 (diff)
downloadbun-9c166a1bdf22123c693320c144b4a6985fa69dc2.tar.gz
bun-9c166a1bdf22123c693320c144b4a6985fa69dc2.tar.zst
bun-9c166a1bdf22123c693320c144b4a6985fa69dc2.zip
add support for { all: true } option on dns.lookup (#2846)
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/node-dns.exports.js24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/bun.js/node-dns.exports.js b/src/bun.js/node-dns.exports.js
index 3bf9bac40..dc05c6c51 100644
--- a/src/bun.js/node-dns.exports.js
+++ b/src/bun.js/node-dns.exports.js
@@ -16,8 +16,15 @@ function lookup(domain, options, callback) {
}
dns.lookup(domain, options).then(
- ([{ address, family }]) => {
- callback(null, address, family);
+ res => {
+ res.sort((a, b) => a.family - b.family);
+
+ if (options?.all) {
+ callback(null, res.map(mapLookupAll));
+ } else {
+ const [{ address, family }] = res;
+ callback(null, address, family);
+ }
},
error => {
callback(error);
@@ -453,6 +460,16 @@ const promisifyLookup = res => {
return { address, family };
};
+const mapLookupAll = res => {
+ const { address, family } = res;
+ return { address, family };
+};
+
+const promisifyLookupAll = res => {
+ res.sort((a, b) => a.family - b.family);
+ return res.map(mapLookupAll);
+};
+
const mapResolveX = a => a.address;
const promisifyResolveX = res => {
@@ -462,6 +479,9 @@ const promisifyResolveX = res => {
// promisified versions
export const promises = {
lookup(domain, options) {
+ if (options?.all) {
+ return dns.lookup(domain, options).then(promisifyLookupAll);
+ }
return dns.lookup(domain, options).then(promisifyLookup);
},