`dns.lookup()` and `dnsPromises.lookup()` options type coercion
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- node.js, typescript
- Ambito
- tooling
Direzione di ricerca
Inizia dai punti di ingresso del codemod per dns.lookup() e dnsPromises.lookup(), usando gli esempi dell’issue e il comportamento di DEP0153 come requisiti. Esamina la struttura e i test esistenti del codemod nel repository prima di implementare il supporto per entrambe le API; il lavoro è completo quando i valori non validi di family, hints, all e verbatim ricevono conversioni esplicite, mentre i valori nullish e quelli già validi rimangono invariati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
Since using non-proper types for options in dns.lookup() and dnsPromises.lookup() is deprecated (DEP0153) and has reached End-of-Life status in Node.js v18.0.0, we should provide a codemod to replace them.
- The codemod should ensure
familyoption is a nullish value or an integer. - The codemod should ensure
hintsoption is a nullish value or a number. - The codemod should ensure
alloption is a nullish value or a boolean. - The codemod should ensure
verbatimoption is a nullish value or a boolean. - The codemod should add explicit type conversions where needed.
Additional Information
Note that in Node.js v18.0.0, passing non-proper types for dns.lookup options now throws an ERR_INVALID_ARG_TYPE error. This change enforces proper type usage:
family: must beundefined,null, or an integer (0, 4, or 6)hints: must beundefined,null, or a numberall: must beundefined,null, or a booleanverbatim: must beundefined,null, or a boolean
The automatic type coercion was removed to prevent unexpected behavior and make the API more predictable.
Examples
Example 1: String family option
Before:
const dns = require("node:dns");
dns.lookup("example.com", { family: "4" }, (err, address) => {
console.log(address);
});
After:
const dns = require("node:dns");
dns.lookup("example.com", { family: 4 }, (err, address) => {
console.log(address);
});
Example 2: String all option
Before:
const dns = require("node:dns");
dns.lookup("example.com", { all: "true" }, (err, addresses) => {
console.log(addresses);
});
After:
const dns = require("node:dns");
dns.lookup("example.com", { all: true }, (err, addresses) => {
console.log(addresses);
});
Example 3: Number verbatim option
Before:
const dns = require("node:dns");
dns.lookup("example.com", { verbatim: 1 }, (err, address) => {
console.log(address);
});
After:
const dns = require("node:dns");
dns.lookup("example.com", { verbatim: true }, (err, address) => {
console.log(address);
});
Example 4: Promises API with string family
Before:
const { lookup } = require("node:dns").promises;
const address = await lookup("example.com", { family: "6" });
After:
const { lookup } = require("node:dns").promises;
const address = await lookup("example.com", { family: 6 });
Example 5: ESM with multiple invalid options
Before:
import { lookup } from "node:dns/promises";
const result = await lookup("example.com", {
family: "4",
all: 1,
verbatim: 0
});
After:
import { lookup } from "node:dns/promises";
const result = await lookup("example.com", {
family: 4,
all: true,
verbatim: false
});
Example 6: Dynamic family value
Before:
const dns = require("node:dns");
const familyStr = "4";
dns.lookup("example.com", { family: familyStr }, callback);
After:
const dns = require("node:dns");
const familyStr = "4";
dns.lookup("example.com", { family: parseInt(familyStr, 10) }, callback);
Example 7: Hints option with string
Before:
const dns = require("node:dns");
dns.lookup("example.com", { hints: "0" }, (err, address) => {
console.log(address);
});
After:
const dns = require("node:dns");
dns.lookup("example.com", { hints: 0 }, (err, address) => {
console.log(address);
});
Example 8: Valid options (no change needed)
Before:
const dns = require("node:dns");
dns.lookup("example.com", {
family: 4,
hints: dns.ADDRCONFIG,
all: false,
verbatim: true
}, (err, address) => {
console.log(address);
});
After:
const dns = require("node:dns");
dns.lookup("example.com", {
family: 4,
hints: dns.ADDRCONFIG,
all: false,
verbatim: true
}, (err, address) => {
console.log(address);
});
Example 9: Null and undefined values (no change needed)
Before:
const dns = require("node:dns");
dns.lookup("example.com", {
family: undefined,
all: null,
verbatim: undefined
}, callback);
After:
const dns = require("node:dns");
dns.lookup("example.com", {
family: undefined,
all: null,
verbatim: undefined
}, callback);
Refs
- Lingua principale
- TypeScript
- Stelle
- 85
- Fork
- 58
- Merge medio
- 1g 21h
- PR unite (30g)
- 8
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nodejs/userland-migrations
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
nodejs/userland-migrations#562 · 4 reazioni ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
nodejs/userland-migrations#561 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 2 giorni
-
good first issue human help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
nodejs/userland-migrations#560 · 1 reazione ·
I maintainer di solito rispondono entro 2 giorni
-
good first issue human help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
nodejs/userland-migrations#559 ·
I maintainer di solito rispondono entro 2 giorni
-
good first issue human help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
nodejs/userland-migrations#558 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di nodejs/userland-migrations
Issue simili
-
area: cli bug flake ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
gazetta-studio/gazetta-studio#1772 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
microsoft/playwright#43875 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
calagopus/panel#285 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno