From 094c9e4de2cb45b8014f1cf0034d4e1146088406 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Mon, 6 Jan 2025 11:59:49 -0500 Subject: [PATCH] add missing promises in node:dns (#3292) --- src/node/dns.ts | 4 +- src/node/dns/promises.ts | 166 +----------------- src/node/internal/internal_dns_constants.ts | 3 + src/node/internal/internal_dns_promises.ts | 164 +++++++++++++++++ src/workerd/api/node/tests/dns-nodejs-test.js | 2 + 5 files changed, 175 insertions(+), 164 deletions(-) create mode 100644 src/node/internal/internal_dns_promises.ts diff --git a/src/node/dns.ts b/src/node/dns.ts index 181382fd870..9bfd2244e16 100644 --- a/src/node/dns.ts +++ b/src/node/dns.ts @@ -6,9 +6,11 @@ import * as errorCodes from 'node-internal:internal_dns_constants'; import * as dns from 'node-internal:internal_dns'; import { callbackify } from 'node-internal:internal_utils'; +import * as dnsPromises from 'node-internal:internal_dns_promises'; export * from 'node-internal:internal_dns_constants'; +export const promises = dnsPromises; export const reverse = callbackify(dns.reverse.bind(dns)); export const resolveTxt = callbackify(dns.resolveTxt.bind(dns)); export const resolveCaa = callbackify(dns.resolveCaa.bind(dns)); @@ -142,6 +144,6 @@ export default { getDefaultResultOrder, setServers, Resolver, - + promises, ...errorCodes, }; diff --git a/src/node/dns/promises.ts b/src/node/dns/promises.ts index 8430b79f1e9..ac7144f4360 100644 --- a/src/node/dns/promises.ts +++ b/src/node/dns/promises.ts @@ -1,164 +1,4 @@ -import * as errorCodes from 'node-internal:internal_dns_constants'; -import { - reverse, - resolveTxt, - resolveCaa, - resolveMx, - resolveCname, - resolveNs, - resolvePtr, - resolveSrv, - resolveSoa, - resolveNaptr, - resolve4, - resolve6, - getServers, - setServers, - getDefaultResultOrder, - setDefaultResultOrder, - lookup, - lookupService, - resolve, - resolveAny, -} from 'node-internal:internal_dns'; -import { - CAA, - MX, - NAPTR, - SOA, - SRV, - TTLResponse, -} from 'node:internal/internal_dns_client'; +import * as dns from 'node-internal:internal_dns_promises'; -export * from 'node-internal:internal_dns_constants'; -export { - reverse, - resolveTxt, - resolveCaa, - resolveMx, - resolveCname, - resolveNs, - resolvePtr, - resolveSrv, - resolveSoa, - resolveNaptr, - resolve4, - resolve6, - getServers, - setServers, - getDefaultResultOrder, - setDefaultResultOrder, - lookup, - lookupService, - resolve, - resolveAny, -} from 'node-internal:internal_dns'; - -export class Resolver { - // eslint-disable-next-line @typescript-eslint/require-await - public async cancel(): Promise { - // TODO(soon): Implement this. - throw new Error('Not implemented'); - } - - // eslint-disable-next-line @typescript-eslint/require-await - public async setLocalAddress(): Promise { - // Does not apply to workerd implementation - throw new Error('Not implemented'); - } - - public getServers(): Promise { - return getServers(); - } - - public resolve(): Promise { - return resolve(); - } - - public resolve4( - input: string, - options?: { ttl?: boolean } - ): Promise<(string | TTLResponse)[]> { - return resolve4(input, options); - } - - public resolve6( - input: string, - options?: { ttl?: boolean } - ): Promise<(string | TTLResponse)[]> { - return resolve6(input, options); - } - - public resolveAny(): Promise { - return resolveAny(); - } - - public resolveCaa(name: string): Promise { - return resolveCaa(name); - } - - public resolveCname(name: string): Promise { - return resolveCname(name); - } - - public resolveMx(name: string): Promise { - return resolveMx(name); - } - - public resolveNaptr(name: string): Promise { - return resolveNaptr(name); - } - - public resolveNs(name: string): Promise { - return resolveNs(name); - } - - public esolvePtr(name: string): Promise { - return resolvePtr(name); - } - - public resolveSoa(name: string): Promise { - return resolveSoa(name); - } - - public resolveSrv(name: string): Promise { - return resolveSrv(name); - } - - public resolveTxt(name: string): Promise { - return resolveTxt(name); - } - - public reverse(name: string): Promise { - return reverse(name); - } - - public setServers(): Promise { - return setServers(); - } -} - -export default { - reverse, - resolveTxt, - resolveCaa, - resolveMx, - resolveCname, - resolveNs, - resolvePtr, - resolveSrv, - resolveSoa, - resolveNaptr, - resolve4, - resolve6, - getServers, - setServers, - getDefaultResultOrder, - setDefaultResultOrder, - lookup, - lookupService, - resolve, - resolveAny, - Resolver, - ...errorCodes, -}; +export * from 'node-internal:internal_dns_promises'; +export default dns; diff --git a/src/node/internal/internal_dns_constants.ts b/src/node/internal/internal_dns_constants.ts index 871a48c78e5..835e36ee246 100644 --- a/src/node/internal/internal_dns_constants.ts +++ b/src/node/internal/internal_dns_constants.ts @@ -22,3 +22,6 @@ export const NOTINITIALIZED = 'ENOTINITIALIZED'; export const LOADIPHLPAPI = 'ELOADIPHLPAPI'; export const ADDRGETNETWORKPARAMS = 'EADDRGETNETWORKPARAMS'; export const CANCELLED = 'ECANCELLED'; +export const ADDRCONFIG = 1024; +export const ALL = 256; +export const V4MAPPED = 2048; diff --git a/src/node/internal/internal_dns_promises.ts b/src/node/internal/internal_dns_promises.ts new file mode 100644 index 00000000000..8430b79f1e9 --- /dev/null +++ b/src/node/internal/internal_dns_promises.ts @@ -0,0 +1,164 @@ +import * as errorCodes from 'node-internal:internal_dns_constants'; +import { + reverse, + resolveTxt, + resolveCaa, + resolveMx, + resolveCname, + resolveNs, + resolvePtr, + resolveSrv, + resolveSoa, + resolveNaptr, + resolve4, + resolve6, + getServers, + setServers, + getDefaultResultOrder, + setDefaultResultOrder, + lookup, + lookupService, + resolve, + resolveAny, +} from 'node-internal:internal_dns'; +import { + CAA, + MX, + NAPTR, + SOA, + SRV, + TTLResponse, +} from 'node:internal/internal_dns_client'; + +export * from 'node-internal:internal_dns_constants'; +export { + reverse, + resolveTxt, + resolveCaa, + resolveMx, + resolveCname, + resolveNs, + resolvePtr, + resolveSrv, + resolveSoa, + resolveNaptr, + resolve4, + resolve6, + getServers, + setServers, + getDefaultResultOrder, + setDefaultResultOrder, + lookup, + lookupService, + resolve, + resolveAny, +} from 'node-internal:internal_dns'; + +export class Resolver { + // eslint-disable-next-line @typescript-eslint/require-await + public async cancel(): Promise { + // TODO(soon): Implement this. + throw new Error('Not implemented'); + } + + // eslint-disable-next-line @typescript-eslint/require-await + public async setLocalAddress(): Promise { + // Does not apply to workerd implementation + throw new Error('Not implemented'); + } + + public getServers(): Promise { + return getServers(); + } + + public resolve(): Promise { + return resolve(); + } + + public resolve4( + input: string, + options?: { ttl?: boolean } + ): Promise<(string | TTLResponse)[]> { + return resolve4(input, options); + } + + public resolve6( + input: string, + options?: { ttl?: boolean } + ): Promise<(string | TTLResponse)[]> { + return resolve6(input, options); + } + + public resolveAny(): Promise { + return resolveAny(); + } + + public resolveCaa(name: string): Promise { + return resolveCaa(name); + } + + public resolveCname(name: string): Promise { + return resolveCname(name); + } + + public resolveMx(name: string): Promise { + return resolveMx(name); + } + + public resolveNaptr(name: string): Promise { + return resolveNaptr(name); + } + + public resolveNs(name: string): Promise { + return resolveNs(name); + } + + public esolvePtr(name: string): Promise { + return resolvePtr(name); + } + + public resolveSoa(name: string): Promise { + return resolveSoa(name); + } + + public resolveSrv(name: string): Promise { + return resolveSrv(name); + } + + public resolveTxt(name: string): Promise { + return resolveTxt(name); + } + + public reverse(name: string): Promise { + return reverse(name); + } + + public setServers(): Promise { + return setServers(); + } +} + +export default { + reverse, + resolveTxt, + resolveCaa, + resolveMx, + resolveCname, + resolveNs, + resolvePtr, + resolveSrv, + resolveSoa, + resolveNaptr, + resolve4, + resolve6, + getServers, + setServers, + getDefaultResultOrder, + setDefaultResultOrder, + lookup, + lookupService, + resolve, + resolveAny, + Resolver, + ...errorCodes, +}; diff --git a/src/workerd/api/node/tests/dns-nodejs-test.js b/src/workerd/api/node/tests/dns-nodejs-test.js index f30ebb685c0..88dd00cff57 100644 --- a/src/workerd/api/node/tests/dns-nodejs-test.js +++ b/src/workerd/api/node/tests/dns-nodejs-test.js @@ -78,6 +78,8 @@ export const functionsExist = { for (const fn of syncFns) { strictEqual(typeof dns[fn], 'function'); } + + ok(dns.promises !== undefined); }, };