Proba-datuak sortzea
Probek IFZak behar dituzte, eta benetako pertsonen zenbakiek ez dute biltegi batean amaitu behar. nif-dni-nie-cif-validation/generate sarrera-puntuak mota guztietako zenbaki baliozkoak sortzen ditu, baita generateInvalid() funtzioak onartzen dituen arrazoi bakoitzerako proba-balio negatiboak ere. Hazi batekin, berdinak dira exekuzio bakoitzean, makina bakoitzean eta Node.js-en bertsio bakoitzarekin.
Zenbaki baliozkoak
«Zenbaki baliozkoak» atalaimport { generateCif, generateDni, generateNie, generateNif } from "nif-dni-nie-cif-validation/generate";
generateDni({ seed: 1 }); // "62707394X"generateDni({ seed: 1, kind: "K" }); // "K6270739L": K/L/M IFZ batgenerateNie({ seed: 1, prefix: "Z" }); // "Z6270739R"generateCif({ seed: 1, orgKey: "B" }); // "B62707393"generateCif({ seed: 1, control: "letter" }); // "R0027357C": letra daraman gako batgenerateNif({ seed: 1, types: ["DNI", "NIE"] }); // "X5274470H": mota hauetako edozein| Funtzioa | Zer sortzen duen | Aukerak |
|---|---|---|
generateDni(opts) |
NAN bat, edo K/L/M IFZ bat | kind: "DNI" (lehenetsia), "K", "L" edo "M" |
generateNie(opts) |
AIZ bat, beti 9 karaktereko forman | prefix: "X", "Y" edo "Z" |
generateCif(opts) |
IFK bat | orgKey: 17 gakoetako bat; control: "digit" edo "letter" |
generateNif(opts) |
Aurrekoetako edozein | types: zein motaren artean aukeratu |
Sorgailu guztiek seed eta format aukerak ere onartzen dituzte. Balioek SPEC.md betetzen dute: kontrol-karakterea liburutegiaren beraren computeControlCharacter() funtzioak kalkulatzen du, IFK batek ez du probintzia-koderik, eta balio bat ere ez da 00000000T bezalako ordezko balio bat (POLICY-1).
format: true aukerak format() funtzioaren aurkezpen-forma ematen du, eta format: { separator: " " } aukerak beste bereizle bat:
import { generateCif, generateDni } from "nif-dni-nie-cif-validation/generate";
generateDni({ seed: 1, format: true }); // "62707394-X"generateCif({ seed: 1, orgKey: "P", format: { separator: " " } }); // "P 6270739 C"Haziak eta sekuentziak
«Haziak eta sekuentziak» atalaseed aukera duen dei batek balio bera itzultzen du beti; beraz, generateDni({ seed: 1 }) NAN bera da aldi bakoitzean. Exekuzio bakoitzean berdinak izango diren balio desberdin asko lortzeko, sortu sorgailu bat: dei bakoitzak bere haziaren hurrengo balioak hartzen ditu.
import { createGenerator } from "nif-dni-nie-cif-validation/generate";
const gen = createGenerator(42);gen.dni(); // "60110375J"gen.dni(); // "44829056D": hurrengo balioa, ez beragen.nie(); // "Z6697340K"gen.cif({ orgKey: "A" }); // sozietate anonimo baten IFK batHazirik gabe, sorgailuek Math.random erabiltzen dute, eta balioak ausazkoak dira; beraz, errepika daitezke. Haziarekin, Math.random ez da inoiz irakurtzen.
Zure probetarako fixture-ak
«Zure probetarako fixture-ak» atalaimport { validate } from "nif-dni-nie-cif-validation";import { createGenerator } from "nif-dni-nie-cif-validation/generate";
const gen = createGenerator(2024);const customers = Array.from({ length: 5 }, (_, id) => ({ id, nif: gen.nif() }));
customers.length; // 5customers.every((customer) => validate(customer.nif).valid); // trueSortutako fixture-ak dituen Vitest proiektu oso bat examples/generate-test-data karpetan duzu.
Zenbaki baliogabeak
«Zenbaki baliogabeak» atalagenerateInvalid(type, { reason }) funtzioak motako zenbaki baliozko batetik abiatu eta gauza bakar bat hondatzen du; horrela, balioak adierazten duenaren itxura du. validate() funtzioak errore-kode horrekin baztertzen du, hain zuzen; UNSUPPORTED_TYPE eta PLACEHOLDER arrazoiekin, ordea, dagokion types edo rejectPlaceholders aukera ematen duzunean bakarrik, balio horiek lehenespenez baliozkoak baitira. Arrazoi lehenetsia kontrol-karaktere oker bat da, kasu negatibo ohikoena:
import { validate } from "nif-dni-nie-cif-validation";import { generateInvalid } from "nif-dni-nie-cif-validation/generate";
generateInvalid("DNI", { seed: 1 }); // "62707394A"generateInvalid("DNI", { seed: 1, reason: "INVALID_LENGTH" }); // "652707394X"validate(generateInvalid("CIF", { seed: 3, reason: "INVALID_FORMAT" })).error?.code; // "INVALID_FORMAT"validate(generateInvalid("NIE", { seed: 7 })).error?.code; // "INVALID_CONTROL_CHARACTER"reason |
Balioa | validate() funtzioak baztertzen du aukera lehenetsiekin |
|---|---|---|
INVALID_CONTROL_CHARACTER (lehenetsia) |
Kontrol-karakterea bakarrik dago gaizki | Bai |
INVALID_LENGTH |
Digituak soberan edo falta | Bai |
INVALID_FORMAT |
Letra bat digitu baten ordez, edo mota okerreko kontrol-karaktere bat | Bai |
EMPTY |
Kate huts bat, edo bereizleak bakarrik | Bai |
UNSUPPORTED_TYPE |
Zenbaki baliozko bat | types aukerak bere mota kanpoan uzten badu bakarrik |
PLACEHOLDER |
Ordezko balio bat (NAN eta AIZ bakarrik) | rejectPlaceholders: true aukerarekin bakarrik |
Aukera ezinezkoek salbuespen bat jaurtitzen dute
«Aukera ezinezkoek salbuespen bat jaurtitzen dute» atalaEgiaztatzaileek ez bezala (horiek ez dute inoiz salbuespenik jaurtitzen erabiltzaileak idatzitakoarekin), sorgailuek RangeError bat jaurtitzen dute beren aukerak bete ezin dituztenean: programazio-akatsak dira, eta abisurik gabeko balio oker bat okerragoa litzateke.
import { generateCif, generateDni } from "nif-dni-nie-cif-validation/generate";
generateCif({ orgKey: "B", control: "letter" }); // throws RangeErrorgenerateDni({ seed: 1.5 }); // throws RangeErrorB gakoak digitua darama (CIF-3); beraz, ezin da letra duen B IFK bat sortu, eta haziak zenbaki oso bat izan behar du.
Bundlearen tamaina
«Bundlearen tamaina» atalaSarrera-puntu nagusiak ez ditu inoiz sorgailuak inportatzen; beraz, import { isValidNif } erabiltzeak ez dio sorgailuen koderik gehitzen zure bundleari. Inportatu nif-dni-nie-cif-validation/generate zure probetatik bakarrik.