1. bertsiotik migratzea
- bertsioan, egiaztatzaileek lehenespenez SPEC.md espezifikazioari jarraitzen diote, hau da, Espainiako iturri ofizialei. Lau gauza aldatzen dira; gainerako guztia berdin geratzen da, esportazioen izen guztiak eta haien aliasak barne. Zerrenda osoa, xehetasun guztiekin, MIGRATION.md fitxategian dago (ingelesez).
Bide azkarra: 1. bertsioaren emaitzak mantentzea
«Bide azkarra: 1. bertsioaren emaitzak mantentzea» atalaEgiaztatzaile guztiek aukerak onartzen dituzte bigarren argumentu gisa. Bi aukera hauek v1.0.11 bertsioaren emaitza berak ematen dituzte; proba batek bi bertsioak konparatzen ditu 490.000 sarrera ingururekin:
import { isValidNif } from "nif-dni-nie-cif-validation";
const V1_COMPATIBLE = { normalize: false, cifControl: "lenient" } as const;
isValidNif("G1234567D"); // falseisValidNif("G1234567D", V1_COMPATIBLE); // true, v1.0.11 bertsioan bezalaErabili behin-behineko irtenbide gisa gordetako datuetarako, eta gero pasa balio lehenetsietara.
Zer aldatzen den
«Zer aldatzen den» atala| # | Aldaketa | Nori eragiten dion | 1. bertsioaren portaera mantentzea |
|---|---|---|---|
| 1 | C, D, F, G, J, U eta V IFK gakoek kontrol-digitu bat behar dute | G1234567D bezalako IFKak baliogabe bihurtzen dira |
{ cifControl: "lenient" } |
| 2 | Sarrera lehenespenez normalizatzen da | Zuriuneak, puntuak, marrak edo barrak dituzten balioak, edo hasierako zerorik gabeko NAN bat, baliozko bihurtzen dira | { normalize: false } |
| 3 | TypeScript: egiaztatzaileek bigarren parametro bat dute | ids.filter(isValidNif) ez da konpilatzen |
Idatzi ids.filter((id) => isValidNif(id)) |
| 4 | Paketearen sarrera-puntuak bakarrik inporta daitezke | dist/ barruko fitxategien inportazioak |
Inportatu nif-dni-nie-cif-validation paketetik |
1. IFKaren kontrolak CIF-3 jarraitzen du
«1. IFKaren kontrolak CIF-3 jarraitzen du» atalaAEATren ohar teknikoak kontrol-digitu bat esleitzen die A B C D E F G H J U V gakoei, eta letra bat N P Q R S W gakoei (CIF-3). 1. bertsioak letra bat edo digitu bat onartzen zuen C, D, F, G, J, U eta V gakoetan, eta horrek ez du oinarri ofizialik. isValidNif, isValidCif (isValidLegalEntityNif) eta isValidCifControlCode (isValidLegalEntityNifControlCode) funtzioei eragiten die.
Lehen, 1. bertsioan:
import { isValidCif } from "nif-dni-nie-cif-validation";
isValidCif("G1234567D"); // trueisValidCif("G12345674"); // trueOrain, 2. bertsioan:
import { isValidCif } from "nif-dni-nie-cif-validation";
isValidCif("G1234567D"); // false: G gakoak digitua daramaisValidCif("G12345674"); // trueisValidCif("G1234567D", { cifControl: "lenient" }); // true, 1. bertsioan bezalaC, D, F, G, J, U eta V bakarrik aldatzen dira: A, B, E eta H gakoek beti behar izan dute digitu bat, eta N, P, Q, R, S eta W gakoek letra bat, bi bertsioetan.
2. Sarrera normalizatu egiten da
«2. Sarrera normalizatu egiten da» atalaOrain egiaztatzaileek sarrera garbitzen dute egiaztatu aurretik: zuriuneak eta puntuak (NORM-2), marrak eta barrak (NORM-3) kentzen dira, eta 8 digitu baino gutxiago dituen NAN bati hasierako zeroak gehitzen zaizkio berriro (NORM-4). Garbiketak ez du inoiz dokumentu baliogabe bat baliozko bihurtzen; beraz, dokumentu osoa egiaztatzen duten egiaztatzaileen true emaitza bat ere ez da aldatzen; false emaitza batzuk true bihurtzen dira. Kontrol-karakterea bakarrik egiaztatzen duten funtzioek, isValidDniLetter eta isValidCifControlCode funtzioek, ez dute formatua egiaztatzen; beraz, bereizleak dituzten balioekin haien emaitza bi noranzkoetan alda daiteke: 1. bertsioan, isValidCifControlCode("A 7727886") true zen, zuriunea 0 gisa zenbatzen zelako (ikusi MIGRATION.md, ingelesez).
Lehen, 1. bertsioan:
import { isValidCif, isValidDni, isValidNif } from "nif-dni-nie-cif-validation";
isValidNif(" 12.345.678-Z "); // falseisValidDni("1234567L"); // falseisValidCif("B-1234567-4"); // falseOrain, 2. bertsioan:
import { isValidCif, isValidDni, isValidNif } from "nif-dni-nie-cif-validation";
isValidNif(" 12.345.678-Z "); // trueisValidDni("1234567L"); // trueisValidCif("B-1234567-4"); // trueisValidNif(" 12.345.678-Z ", { normalize: false }); // false, 1. bertsioan bezalaMinuskulak eta 10 karaktereko AIZ zaharra (X01234567L) 1. bertsioan ere onartzen ziren, eta orain ere bai. Balioa gordetzen baduzu, gorde haren forma kanonikoa: normalize() funtzioak itzultzen du, 2. bertsioan berria. Ikusi Sarrera normalizatzea eta formatua ematea.
3. TypeScript: bigarren parametro bat
«3. TypeScript: bigarren parametro bat» atalaEgiaztatzaile guztiak (value: unknown, opts?: IsValidOptions) => boolean dira orain. Lehen parametroak lehen baino gehiago onartzen du, eta horrek ez du ezer hausten; baina bigarrenaren ondorioz, TypeScript-ek baztertu egiten du array-metodo bati zuzenean pasatako egiaztatzaile bat, metodo horren bigarren argumentua indizea baita:
import { isValidNif } from "nif-dni-nie-cif-validation";
const ids = ["12345678Z", "B12345675"];
// @ts-expect-error: indizea (zenbaki bat) ez da aukera-objektu batids.filter(isValidNif);ids.filter((id) => isValidNif(id)); // ["12345678Z"]Exekuzio-garaian ez da ezer aldatzen: aukera gisa pasatako zenbaki bat ez da kontuan hartzen; beraz, motarik gabeko JavaScript kodeak funtzionatzen jarraitzen du.
4. Inportatu paketetik, ez dist/ karpetatik
«4. Inportatu paketetik, ez dist/ karpetatik» atala- bertsioak ES moduluak eta CommonJS argitaratzen ditu, eta
exportsmapa batean adierazten ditu. Paketea bera, haren azpibideak (/locales/<code>,/generate,/zod,/valibot,/yup) etapackage.jsonbakarrik inporta daitezke; beraz, konpilatutako fitxategietarako bide batekERR_PACKAGE_PATH_NOT_EXPORTEDerrorearekin huts egiten du:
const { isValidNif } = require("nif-dni-nie-cif-validation/dist/nif/nif");const { isValidNif } = require("nif-dni-nie-cif-validation");Egiaztatzaileak eta gainerako funtzioak nif-dni-nie-cif-validation paketetik inportatzen dira; hizkuntzak, sorgailuak eta eskemak, berriz, beren sarrera-puntuetatik (/locales/<code>, /generate, /zod, /valibot, /yup). require() eta import Node.js 20 edo berriagoan eta bundler guztietan dabiltza.
2. bertsioko berritasunak
«2. bertsioko berritasunak» atalaHauetako batek ere ez du hausten lehendik dagoen kodea:
validate(): mota, forma kanonikoa eta, balioa baliozkoa ez bada, errore-kode bat, SPEC araua eta mezu bat.normalize()etaformat(),getNifType(),computeControlCharacter(),describeCifOrganisation()etaisValidSpanishVat().rejectPlaceholdersaukera, etavalidate()funtzioantypes,allowVatPrefixetalocaleere bai.- Mezuak gaztelaniaz, katalanez, euskaraz eta galegoz.
- Proba-datuen sorgailuak eta Zod, Valibot eta Yup eskemak.
import { validate } from "nif-dni-nie-cif-validation";
validate("12345678A").error?.code; // "INVALID_CONTROL_CHARACTER"validate("12345678A").error?.rule; // "DNI-2"Egiaztapen-zerrenda
«Egiaztapen-zerrenda» atala-
Eguneratu, eta exekutatu zure probak.
-
C, D, F, G, J, U edo V gakoetan kontrol-letra duten IFK gordeek baliozkoak izaten jarraitu behar badute, pasa
{ cifControl: "lenient" }egiaztatzen dituzun lekuan, eta planifikatu datuen zuzenketa. -
Koderen bat bereizleak dituzten balioentzako
falseemaitzaren mende bazegoen, pasa{ normalize: false }edo, hobeto, gordenormalize(value). -
TypeScript-en, ordezkatu
array.filter(isValidX)gezi-funtzio batekin. -
Ordezkatu
nif-dni-nie-cif-validation/dist/…bideko inportazio oronif-dni-nie-cif-validationpaketeko inportazio batekin. -
Beste hizkuntza bateko mezuetarako, inportatu haren hizkuntza-objektua eta pasa ezazu
localegisa.