@stll/stdnum 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/README.md +323 -0
- package/dist/_checksums/luhn.d.ts +12 -0
- package/dist/_checksums/luhn.js +26 -0
- package/dist/_checksums/luhn.js.map +1 -0
- package/dist/_checksums/mod1110.d.ts +12 -0
- package/dist/_checksums/mod1110.js +25 -0
- package/dist/_checksums/mod1110.js.map +1 -0
- package/dist/_checksums/mod112.d.ts +24 -0
- package/dist/_checksums/mod112.js +53 -0
- package/dist/_checksums/mod112.js.map +1 -0
- package/dist/_checksums/mod97.d.ts +23 -0
- package/dist/_checksums/mod97.js +28 -0
- package/dist/_checksums/mod97.js.map +1 -0
- package/dist/_checksums/verhoeff.d.ts +22 -0
- package/dist/_checksums/verhoeff.js +271 -0
- package/dist/_checksums/verhoeff.js.map +1 -0
- package/dist/_checksums/weighted-sum.d.ts +13 -0
- package/dist/_checksums/weighted-sum.js +22 -0
- package/dist/_checksums/weighted-sum.js.map +1 -0
- package/dist/_util/arabic.d.ts +19 -0
- package/dist/_util/arabic.js +41 -0
- package/dist/_util/arabic.js.map +1 -0
- package/dist/_util/clean.d.ts +13 -0
- package/dist/_util/clean.js +71 -0
- package/dist/_util/clean.js.map +1 -0
- package/dist/_util/date.d.ts +12 -0
- package/dist/_util/date.js +19 -0
- package/dist/_util/date.js.map +1 -0
- package/dist/_util/generate.d.ts +16 -0
- package/dist/_util/generate.js +21 -0
- package/dist/_util/generate.js.map +1 -0
- package/dist/_util/result.d.ts +8 -0
- package/dist/_util/result.js +13 -0
- package/dist/_util/result.js.map +1 -0
- package/dist/_util/strings.d.ts +21 -0
- package/dist/_util/strings.js +28 -0
- package/dist/_util/strings.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/ad/mod.d.ts +8 -0
- package/dist/ad/mod.js +8 -0
- package/dist/ad/mod.js.map +1 -0
- package/dist/ad/nrt.d.ts +13 -0
- package/dist/ad/nrt.js +69 -0
- package/dist/ad/nrt.js.map +1 -0
- package/dist/ae/eid.d.ts +17 -0
- package/dist/ae/eid.js +79 -0
- package/dist/ae/eid.js.map +1 -0
- package/dist/ae/mod.d.ts +8 -0
- package/dist/ae/mod.js +8 -0
- package/dist/ae/mod.js.map +1 -0
- package/dist/ai/mod.d.ts +8 -0
- package/dist/ai/mod.js +8 -0
- package/dist/ai/mod.js.map +1 -0
- package/dist/ai/tin.d.ts +19 -0
- package/dist/ai/tin.js +72 -0
- package/dist/ai/tin.js.map +1 -0
- package/dist/al/mod.d.ts +8 -0
- package/dist/al/mod.js +8 -0
- package/dist/al/mod.js.map +1 -0
- package/dist/al/nipt.d.ts +13 -0
- package/dist/al/nipt.js +56 -0
- package/dist/al/nipt.js.map +1 -0
- package/dist/am/mod.d.ts +8 -0
- package/dist/am/mod.js +8 -0
- package/dist/am/mod.js.map +1 -0
- package/dist/am/tin.d.ts +13 -0
- package/dist/am/tin.js +53 -0
- package/dist/am/tin.js.map +1 -0
- package/dist/ar/cbu.d.ts +14 -0
- package/dist/ar/cbu.js +88 -0
- package/dist/ar/cbu.js.map +1 -0
- package/dist/ar/cuit.d.ts +19 -0
- package/dist/ar/cuit.js +123 -0
- package/dist/ar/cuit.js.map +1 -0
- package/dist/ar/dni.d.ts +13 -0
- package/dist/ar/dni.js +57 -0
- package/dist/ar/dni.js.map +1 -0
- package/dist/ar/mod.d.ts +10 -0
- package/dist/ar/mod.js +14 -0
- package/dist/ar/mod.js.map +1 -0
- package/dist/at/businessid.d.ts +13 -0
- package/dist/at/businessid.js +56 -0
- package/dist/at/businessid.js.map +1 -0
- package/dist/at/mod.d.ts +11 -0
- package/dist/at/mod.js +16 -0
- package/dist/at/mod.js.map +1 -0
- package/dist/at/tin.d.ts +14 -0
- package/dist/at/tin.js +70 -0
- package/dist/at/tin.js.map +1 -0
- package/dist/at/uid.d.ts +14 -0
- package/dist/at/uid.js +64 -0
- package/dist/at/uid.js.map +1 -0
- package/dist/at/vnr.d.ts +12 -0
- package/dist/at/vnr.js +79 -0
- package/dist/at/vnr.js.map +1 -0
- package/dist/au/abn.d.ts +14 -0
- package/dist/au/abn.js +77 -0
- package/dist/au/abn.js.map +1 -0
- package/dist/au/acn.d.ts +14 -0
- package/dist/au/acn.js +70 -0
- package/dist/au/acn.js.map +1 -0
- package/dist/au/mod.d.ts +10 -0
- package/dist/au/mod.js +14 -0
- package/dist/au/mod.js.map +1 -0
- package/dist/au/tfn.d.ts +14 -0
- package/dist/au/tfn.js +71 -0
- package/dist/au/tfn.js.map +1 -0
- package/dist/az/mod.d.ts +8 -0
- package/dist/az/mod.js +8 -0
- package/dist/az/mod.js.map +1 -0
- package/dist/az/voen.d.ts +21 -0
- package/dist/az/voen.js +100 -0
- package/dist/az/voen.js.map +1 -0
- package/dist/ba/jmbg.d.ts +15 -0
- package/dist/ba/jmbg.js +97 -0
- package/dist/ba/jmbg.js.map +1 -0
- package/dist/ba/mod.d.ts +8 -0
- package/dist/ba/mod.js +8 -0
- package/dist/ba/mod.js.map +1 -0
- package/dist/bd/mod.d.ts +8 -0
- package/dist/bd/mod.js +8 -0
- package/dist/bd/mod.js.map +1 -0
- package/dist/bd/nid.d.ts +13 -0
- package/dist/bd/nid.js +116 -0
- package/dist/bd/nid.js.map +1 -0
- package/dist/be/bis.d.ts +14 -0
- package/dist/be/bis.js +65 -0
- package/dist/be/bis.js.map +1 -0
- package/dist/be/mod.d.ts +10 -0
- package/dist/be/mod.js +14 -0
- package/dist/be/mod.js.map +1 -0
- package/dist/be/nn.d.ts +21 -0
- package/dist/be/nn.js +84 -0
- package/dist/be/nn.js.map +1 -0
- package/dist/be/vat.d.ts +14 -0
- package/dist/be/vat.js +70 -0
- package/dist/be/vat.js.map +1 -0
- package/dist/bg/egn.d.ts +19 -0
- package/dist/bg/egn.js +122 -0
- package/dist/bg/egn.js.map +1 -0
- package/dist/bg/mod.d.ts +10 -0
- package/dist/bg/mod.js +14 -0
- package/dist/bg/mod.js.map +1 -0
- package/dist/bg/pnf.d.ts +14 -0
- package/dist/bg/pnf.js +70 -0
- package/dist/bg/pnf.js.map +1 -0
- package/dist/bg/vat.d.ts +14 -0
- package/dist/bg/vat.js +153 -0
- package/dist/bg/vat.js.map +1 -0
- package/dist/bh/cpr.d.ts +12 -0
- package/dist/bh/cpr.js +58 -0
- package/dist/bh/cpr.js.map +1 -0
- package/dist/bh/mod.d.ts +8 -0
- package/dist/bh/mod.js +8 -0
- package/dist/bh/mod.js.map +1 -0
- package/dist/bic.d.ts +13 -0
- package/dist/bic.js +72 -0
- package/dist/bic.js.map +1 -0
- package/dist/br/cnpj.d.ts +21 -0
- package/dist/br/cnpj.js +132 -0
- package/dist/br/cnpj.js.map +1 -0
- package/dist/br/cpf.d.ts +14 -0
- package/dist/br/cpf.js +83 -0
- package/dist/br/cpf.js.map +1 -0
- package/dist/br/mod.d.ts +9 -0
- package/dist/br/mod.js +12 -0
- package/dist/br/mod.js.map +1 -0
- package/dist/by/mod.d.ts +8 -0
- package/dist/by/mod.js +8 -0
- package/dist/by/mod.js.map +1 -0
- package/dist/by/unp.d.ts +14 -0
- package/dist/by/unp.js +114 -0
- package/dist/by/unp.js.map +1 -0
- package/dist/bz/mod.d.ts +8 -0
- package/dist/bz/mod.js +8 -0
- package/dist/bz/mod.js.map +1 -0
- package/dist/bz/tin.d.ts +16 -0
- package/dist/bz/tin.js +85 -0
- package/dist/bz/tin.js.map +1 -0
- package/dist/ca/bn.d.ts +14 -0
- package/dist/ca/bn.js +73 -0
- package/dist/ca/bn.js.map +1 -0
- package/dist/ca/mod.d.ts +9 -0
- package/dist/ca/mod.js +12 -0
- package/dist/ca/mod.js.map +1 -0
- package/dist/ca/sin.d.ts +14 -0
- package/dist/ca/sin.js +62 -0
- package/dist/ca/sin.js.map +1 -0
- package/dist/ch/mod.d.ts +10 -0
- package/dist/ch/mod.js +14 -0
- package/dist/ch/mod.js.map +1 -0
- package/dist/ch/ssn.d.ts +14 -0
- package/dist/ch/ssn.js +67 -0
- package/dist/ch/ssn.js.map +1 -0
- package/dist/ch/uid.d.ts +14 -0
- package/dist/ch/uid.js +81 -0
- package/dist/ch/uid.js.map +1 -0
- package/dist/ch/vat.d.ts +14 -0
- package/dist/ch/vat.js +70 -0
- package/dist/ch/vat.js.map +1 -0
- package/dist/cl/mod.d.ts +8 -0
- package/dist/cl/mod.js +8 -0
- package/dist/cl/mod.js.map +1 -0
- package/dist/cl/rut.d.ts +19 -0
- package/dist/cl/rut.js +95 -0
- package/dist/cl/rut.js.map +1 -0
- package/dist/cn/mod.d.ts +9 -0
- package/dist/cn/mod.js +12 -0
- package/dist/cn/mod.js.map +1 -0
- package/dist/cn/ric.d.ts +19 -0
- package/dist/cn/ric.js +108 -0
- package/dist/cn/ric.js.map +1 -0
- package/dist/cn/uscc.d.ts +14 -0
- package/dist/cn/uscc.js +88 -0
- package/dist/cn/uscc.js.map +1 -0
- package/dist/co/mod.d.ts +8 -0
- package/dist/co/mod.js +8 -0
- package/dist/co/mod.js.map +1 -0
- package/dist/co/nit.d.ts +14 -0
- package/dist/co/nit.js +109 -0
- package/dist/co/nit.js.map +1 -0
- package/dist/cr/cpf.d.ts +21 -0
- package/dist/cr/cpf.js +79 -0
- package/dist/cr/cpf.js.map +1 -0
- package/dist/cr/mod.d.ts +8 -0
- package/dist/cr/mod.js +8 -0
- package/dist/cr/mod.js.map +1 -0
- package/dist/creditcard.d.ts +25 -0
- package/dist/creditcard.js +121 -0
- package/dist/creditcard.js.map +1 -0
- package/dist/cu/mod.d.ts +8 -0
- package/dist/cu/mod.js +8 -0
- package/dist/cu/mod.js.map +1 -0
- package/dist/cu/ni.d.ts +21 -0
- package/dist/cu/ni.js +90 -0
- package/dist/cu/ni.js.map +1 -0
- package/dist/cy/mod.d.ts +8 -0
- package/dist/cy/mod.js +8 -0
- package/dist/cy/mod.js.map +1 -0
- package/dist/cy/vat.d.ts +14 -0
- package/dist/cy/vat.js +88 -0
- package/dist/cy/vat.js.map +1 -0
- package/dist/cz/dic.d.ts +14 -0
- package/dist/cz/dic.js +97 -0
- package/dist/cz/dic.js.map +1 -0
- package/dist/cz/ico.d.ts +14 -0
- package/dist/cz/ico.js +70 -0
- package/dist/cz/ico.js.map +1 -0
- package/dist/cz/mod.d.ts +10 -0
- package/dist/cz/mod.js +14 -0
- package/dist/cz/mod.js.map +1 -0
- package/dist/cz/rc.d.ts +22 -0
- package/dist/cz/rc.js +116 -0
- package/dist/cz/rc.js.map +1 -0
- package/dist/de/handelsreg.d.ts +17 -0
- package/dist/de/handelsreg.js +86 -0
- package/dist/de/handelsreg.js.map +1 -0
- package/dist/de/idnr.d.ts +14 -0
- package/dist/de/idnr.js +102 -0
- package/dist/de/idnr.js.map +1 -0
- package/dist/de/mod.d.ts +12 -0
- package/dist/de/mod.js +18 -0
- package/dist/de/mod.js.map +1 -0
- package/dist/de/stnr.d.ts +22 -0
- package/dist/de/stnr.js +144 -0
- package/dist/de/stnr.js.map +1 -0
- package/dist/de/svnr.d.ts +14 -0
- package/dist/de/svnr.js +108 -0
- package/dist/de/svnr.js.map +1 -0
- package/dist/de/vat.d.ts +14 -0
- package/dist/de/vat.js +65 -0
- package/dist/de/vat.js.map +1 -0
- package/dist/dk/cpr.d.ts +17 -0
- package/dist/dk/cpr.js +81 -0
- package/dist/dk/cpr.js.map +1 -0
- package/dist/dk/cvr.d.ts +14 -0
- package/dist/dk/cvr.js +70 -0
- package/dist/dk/cvr.js.map +1 -0
- package/dist/dk/mod.d.ts +10 -0
- package/dist/dk/mod.js +14 -0
- package/dist/dk/mod.js.map +1 -0
- package/dist/dk/vat.d.ts +14 -0
- package/dist/dk/vat.js +72 -0
- package/dist/dk/vat.js.map +1 -0
- package/dist/do/mod.d.ts +8 -0
- package/dist/do/mod.js +8 -0
- package/dist/do/mod.js.map +1 -0
- package/dist/do/rnc.d.ts +18 -0
- package/dist/do/rnc.js +95 -0
- package/dist/do/rnc.js.map +1 -0
- package/dist/ec/mod.d.ts +8 -0
- package/dist/ec/mod.js +8 -0
- package/dist/ec/mod.js.map +1 -0
- package/dist/ec/ruc.d.ts +14 -0
- package/dist/ec/ruc.js +150 -0
- package/dist/ec/ruc.js.map +1 -0
- package/dist/ee/ik.d.ts +24 -0
- package/dist/ee/ik.js +131 -0
- package/dist/ee/ik.js.map +1 -0
- package/dist/ee/mod.d.ts +10 -0
- package/dist/ee/mod.js +14 -0
- package/dist/ee/mod.js.map +1 -0
- package/dist/ee/registrikood.d.ts +14 -0
- package/dist/ee/registrikood.js +63 -0
- package/dist/ee/registrikood.js.map +1 -0
- package/dist/ee/vat.d.ts +14 -0
- package/dist/ee/vat.js +69 -0
- package/dist/ee/vat.js.map +1 -0
- package/dist/eg/mod.d.ts +8 -0
- package/dist/eg/mod.js +8 -0
- package/dist/eg/mod.js.map +1 -0
- package/dist/eg/tn.d.ts +13 -0
- package/dist/eg/tn.js +81 -0
- package/dist/eg/tn.js.map +1 -0
- package/dist/es/cif.d.ts +14 -0
- package/dist/es/cif.js +66 -0
- package/dist/es/cif.js.map +1 -0
- package/dist/es/dni.d.ts +15 -0
- package/dist/es/dni.js +58 -0
- package/dist/es/dni.js.map +1 -0
- package/dist/es/mod.d.ts +12 -0
- package/dist/es/mod.js +18 -0
- package/dist/es/mod.js.map +1 -0
- package/dist/es/nie.d.ts +14 -0
- package/dist/es/nie.js +78 -0
- package/dist/es/nie.js.map +1 -0
- package/dist/es/nss.d.ts +14 -0
- package/dist/es/nss.js +72 -0
- package/dist/es/nss.js.map +1 -0
- package/dist/es/vat.d.ts +15 -0
- package/dist/es/vat.js +104 -0
- package/dist/es/vat.js.map +1 -0
- package/dist/eu/mod.d.ts +8 -0
- package/dist/eu/mod.js +8 -0
- package/dist/eu/mod.js.map +1 -0
- package/dist/eu/vat.d.ts +20 -0
- package/dist/eu/vat.js +145 -0
- package/dist/eu/vat.js.map +1 -0
- package/dist/fi/hetu.d.ts +17 -0
- package/dist/fi/hetu.js +107 -0
- package/dist/fi/hetu.js.map +1 -0
- package/dist/fi/mod.d.ts +10 -0
- package/dist/fi/mod.js +14 -0
- package/dist/fi/mod.js.map +1 -0
- package/dist/fi/vat.d.ts +14 -0
- package/dist/fi/vat.js +68 -0
- package/dist/fi/vat.js.map +1 -0
- package/dist/fi/ytunnus.d.ts +14 -0
- package/dist/fi/ytunnus.js +71 -0
- package/dist/fi/ytunnus.js.map +1 -0
- package/dist/fr/mod.d.ts +12 -0
- package/dist/fr/mod.js +18 -0
- package/dist/fr/mod.js.map +1 -0
- package/dist/fr/nif.d.ts +14 -0
- package/dist/fr/nif.js +64 -0
- package/dist/fr/nif.js.map +1 -0
- package/dist/fr/nir.d.ts +15 -0
- package/dist/fr/nir.js +106 -0
- package/dist/fr/nir.js.map +1 -0
- package/dist/fr/siren.d.ts +14 -0
- package/dist/fr/siren.js +56 -0
- package/dist/fr/siren.js.map +1 -0
- package/dist/fr/siret.d.ts +14 -0
- package/dist/fr/siret.js +73 -0
- package/dist/fr/siret.js.map +1 -0
- package/dist/fr/tva.d.ts +14 -0
- package/dist/fr/tva.js +80 -0
- package/dist/fr/tva.js.map +1 -0
- package/dist/gb/mod.d.ts +11 -0
- package/dist/gb/mod.js +16 -0
- package/dist/gb/mod.js.map +1 -0
- package/dist/gb/nino.d.ts +13 -0
- package/dist/gb/nino.js +103 -0
- package/dist/gb/nino.js.map +1 -0
- package/dist/gb/sedol.d.ts +15 -0
- package/dist/gb/sedol.js +85 -0
- package/dist/gb/sedol.js.map +1 -0
- package/dist/gb/utr.d.ts +14 -0
- package/dist/gb/utr.js +69 -0
- package/dist/gb/utr.js.map +1 -0
- package/dist/gb/vat.d.ts +14 -0
- package/dist/gb/vat.js +102 -0
- package/dist/gb/vat.js.map +1 -0
- package/dist/ge/mod.d.ts +8 -0
- package/dist/ge/mod.js +8 -0
- package/dist/ge/mod.js.map +1 -0
- package/dist/ge/pin.d.ts +13 -0
- package/dist/ge/pin.js +51 -0
- package/dist/ge/pin.js.map +1 -0
- package/dist/gh/mod.d.ts +8 -0
- package/dist/gh/mod.js +8 -0
- package/dist/gh/mod.js.map +1 -0
- package/dist/gh/tin.d.ts +14 -0
- package/dist/gh/tin.js +80 -0
- package/dist/gh/tin.js.map +1 -0
- package/dist/gr/amka.d.ts +14 -0
- package/dist/gr/amka.js +71 -0
- package/dist/gr/amka.js.map +1 -0
- package/dist/gr/mod.d.ts +9 -0
- package/dist/gr/mod.js +12 -0
- package/dist/gr/mod.js.map +1 -0
- package/dist/gr/vat.d.ts +14 -0
- package/dist/gr/vat.js +66 -0
- package/dist/gr/vat.js.map +1 -0
- package/dist/gt/mod.d.ts +8 -0
- package/dist/gt/mod.js +8 -0
- package/dist/gt/mod.js.map +1 -0
- package/dist/gt/nit.d.ts +21 -0
- package/dist/gt/nit.js +98 -0
- package/dist/gt/nit.js.map +1 -0
- package/dist/hk/hkid.d.ts +15 -0
- package/dist/hk/hkid.js +92 -0
- package/dist/hk/hkid.js.map +1 -0
- package/dist/hk/mod.d.ts +8 -0
- package/dist/hk/mod.js +8 -0
- package/dist/hk/mod.js.map +1 -0
- package/dist/hr/mod.d.ts +8 -0
- package/dist/hr/mod.js +8 -0
- package/dist/hr/mod.js.map +1 -0
- package/dist/hr/vat.d.ts +14 -0
- package/dist/hr/vat.js +55 -0
- package/dist/hr/vat.js.map +1 -0
- package/dist/hu/mod.d.ts +8 -0
- package/dist/hu/mod.js +8 -0
- package/dist/hu/mod.js.map +1 -0
- package/dist/hu/vat.d.ts +14 -0
- package/dist/hu/vat.js +68 -0
- package/dist/hu/vat.js.map +1 -0
- package/dist/iban.d.ts +16 -0
- package/dist/iban.js +282 -0
- package/dist/iban.js.map +1 -0
- package/dist/id/mod.d.ts +8 -0
- package/dist/id/mod.js +8 -0
- package/dist/id/mod.js.map +1 -0
- package/dist/id/npwp.d.ts +14 -0
- package/dist/id/npwp.js +133 -0
- package/dist/id/npwp.js.map +1 -0
- package/dist/ie/mod.d.ts +9 -0
- package/dist/ie/mod.js +12 -0
- package/dist/ie/mod.js.map +1 -0
- package/dist/ie/pps.d.ts +14 -0
- package/dist/ie/pps.js +69 -0
- package/dist/ie/pps.js.map +1 -0
- package/dist/ie/vat.d.ts +14 -0
- package/dist/ie/vat.js +83 -0
- package/dist/ie/vat.js.map +1 -0
- package/dist/il/idnr.d.ts +14 -0
- package/dist/il/idnr.js +61 -0
- package/dist/il/idnr.js.map +1 -0
- package/dist/il/mod.d.ts +8 -0
- package/dist/il/mod.js +8 -0
- package/dist/il/mod.js.map +1 -0
- package/dist/in/aadhaar.d.ts +14 -0
- package/dist/in/aadhaar.js +61 -0
- package/dist/in/aadhaar.js.map +1 -0
- package/dist/in/gstin.d.ts +14 -0
- package/dist/in/gstin.js +130 -0
- package/dist/in/gstin.js.map +1 -0
- package/dist/in/mod.d.ts +10 -0
- package/dist/in/mod.js +14 -0
- package/dist/in/mod.js.map +1 -0
- package/dist/in/pan.d.ts +13 -0
- package/dist/in/pan.js +58 -0
- package/dist/in/pan.js.map +1 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.js +104 -0
- package/dist/iq/mod.d.ts +8 -0
- package/dist/iq/mod.js +8 -0
- package/dist/iq/mod.js.map +1 -0
- package/dist/iq/nid.d.ts +14 -0
- package/dist/iq/nid.js +56 -0
- package/dist/iq/nid.js.map +1 -0
- package/dist/ir/mod.d.ts +8 -0
- package/dist/ir/mod.js +8 -0
- package/dist/ir/mod.js.map +1 -0
- package/dist/ir/nid.d.ts +18 -0
- package/dist/ir/nid.js +90 -0
- package/dist/ir/nid.js.map +1 -0
- package/dist/is/kennitala.d.ts +14 -0
- package/dist/is/kennitala.js +92 -0
- package/dist/is/kennitala.js.map +1 -0
- package/dist/is/mod.d.ts +9 -0
- package/dist/is/mod.js +12 -0
- package/dist/is/mod.js.map +1 -0
- package/dist/is/vsk.d.ts +13 -0
- package/dist/is/vsk.js +47 -0
- package/dist/is/vsk.js.map +1 -0
- package/dist/isin.d.ts +14 -0
- package/dist/isin.js +85 -0
- package/dist/isin.js.map +1 -0
- package/dist/it/codicefiscale.d.ts +18 -0
- package/dist/it/codicefiscale.js +214 -0
- package/dist/it/codicefiscale.js.map +1 -0
- package/dist/it/iva.d.ts +14 -0
- package/dist/it/iva.js +71 -0
- package/dist/it/iva.js.map +1 -0
- package/dist/it/mod.d.ts +9 -0
- package/dist/it/mod.js +12 -0
- package/dist/it/mod.js.map +1 -0
- package/dist/jp/cn.d.ts +14 -0
- package/dist/jp/cn.js +68 -0
- package/dist/jp/cn.js.map +1 -0
- package/dist/jp/mod.d.ts +9 -0
- package/dist/jp/mod.js +12 -0
- package/dist/jp/mod.js.map +1 -0
- package/dist/jp/mynumber.d.ts +14 -0
- package/dist/jp/mynumber.js +86 -0
- package/dist/jp/mynumber.js.map +1 -0
- package/dist/kr/brn.d.ts +13 -0
- package/dist/kr/brn.js +67 -0
- package/dist/kr/brn.js.map +1 -0
- package/dist/kr/mod.d.ts +9 -0
- package/dist/kr/mod.js +12 -0
- package/dist/kr/mod.js.map +1 -0
- package/dist/kr/rrn.d.ts +22 -0
- package/dist/kr/rrn.js +133 -0
- package/dist/kr/rrn.js.map +1 -0
- package/dist/kw/civil.d.ts +18 -0
- package/dist/kw/civil.js +99 -0
- package/dist/kw/civil.js.map +1 -0
- package/dist/kw/mod.d.ts +8 -0
- package/dist/kw/mod.js +8 -0
- package/dist/kw/mod.js.map +1 -0
- package/dist/kz/iin.d.ts +23 -0
- package/dist/kz/iin.js +150 -0
- package/dist/kz/iin.js.map +1 -0
- package/dist/kz/mod.d.ts +8 -0
- package/dist/kz/mod.js +8 -0
- package/dist/kz/mod.js.map +1 -0
- package/dist/lei.d.ts +14 -0
- package/dist/lei.js +68 -0
- package/dist/lei.js.map +1 -0
- package/dist/li/mod.d.ts +8 -0
- package/dist/li/mod.js +8 -0
- package/dist/li/mod.js.map +1 -0
- package/dist/li/peid.d.ts +13 -0
- package/dist/li/peid.js +61 -0
- package/dist/li/peid.js.map +1 -0
- package/dist/lk/mod.d.ts +8 -0
- package/dist/lk/mod.js +8 -0
- package/dist/lk/mod.js.map +1 -0
- package/dist/lk/nic.d.ts +17 -0
- package/dist/lk/nic.js +139 -0
- package/dist/lk/nic.js.map +1 -0
- package/dist/lt/asmens.d.ts +14 -0
- package/dist/lt/asmens.js +81 -0
- package/dist/lt/asmens.js.map +1 -0
- package/dist/lt/mod.d.ts +9 -0
- package/dist/lt/mod.js +12 -0
- package/dist/lt/mod.js.map +1 -0
- package/dist/lt/vat.d.ts +14 -0
- package/dist/lt/vat.js +72 -0
- package/dist/lt/vat.js.map +1 -0
- package/dist/lu/mod.d.ts +8 -0
- package/dist/lu/mod.js +8 -0
- package/dist/lu/mod.js.map +1 -0
- package/dist/lu/vat.d.ts +14 -0
- package/dist/lu/vat.js +56 -0
- package/dist/lu/vat.js.map +1 -0
- package/dist/luhn.d.ts +17 -0
- package/dist/luhn.js +51 -0
- package/dist/luhn.js.map +1 -0
- package/dist/lv/mod.d.ts +8 -0
- package/dist/lv/mod.js +8 -0
- package/dist/lv/mod.js.map +1 -0
- package/dist/lv/vat.d.ts +14 -0
- package/dist/lv/vat.js +104 -0
- package/dist/lv/vat.js.map +1 -0
- package/dist/ma/ice.d.ts +14 -0
- package/dist/ma/ice.js +57 -0
- package/dist/ma/ice.js.map +1 -0
- package/dist/ma/mod.d.ts +8 -0
- package/dist/ma/mod.js +8 -0
- package/dist/ma/mod.js.map +1 -0
- package/dist/mc/mod.d.ts +8 -0
- package/dist/mc/mod.js +8 -0
- package/dist/mc/mod.js.map +1 -0
- package/dist/mc/tva.d.ts +14 -0
- package/dist/mc/tva.js +53 -0
- package/dist/mc/tva.js.map +1 -0
- package/dist/md/idno.d.ts +12 -0
- package/dist/md/idno.js +71 -0
- package/dist/md/idno.js.map +1 -0
- package/dist/md/mod.d.ts +8 -0
- package/dist/md/mod.js +8 -0
- package/dist/md/mod.js.map +1 -0
- package/dist/me/mod.d.ts +8 -0
- package/dist/me/mod.js +8 -0
- package/dist/me/mod.js.map +1 -0
- package/dist/me/pib.d.ts +14 -0
- package/dist/me/pib.js +63 -0
- package/dist/me/pib.js.map +1 -0
- package/dist/mk/edb.d.ts +14 -0
- package/dist/mk/edb.js +77 -0
- package/dist/mk/edb.js.map +1 -0
- package/dist/mk/mod.d.ts +8 -0
- package/dist/mk/mod.js +8 -0
- package/dist/mk/mod.js.map +1 -0
- package/dist/mt/mod.d.ts +8 -0
- package/dist/mt/mod.js +8 -0
- package/dist/mt/mod.js.map +1 -0
- package/dist/mt/vat.d.ts +14 -0
- package/dist/mt/vat.js +69 -0
- package/dist/mt/vat.js.map +1 -0
- package/dist/mu/brn.d.ts +13 -0
- package/dist/mu/brn.js +68 -0
- package/dist/mu/brn.js.map +1 -0
- package/dist/mu/mod.d.ts +8 -0
- package/dist/mu/mod.js +8 -0
- package/dist/mu/mod.js.map +1 -0
- package/dist/mx/clabe.d.ts +18 -0
- package/dist/mx/clabe.js +87 -0
- package/dist/mx/clabe.js.map +1 -0
- package/dist/mx/curp.d.ts +21 -0
- package/dist/mx/curp.js +140 -0
- package/dist/mx/curp.js.map +1 -0
- package/dist/mx/mod.d.ts +10 -0
- package/dist/mx/mod.js +14 -0
- package/dist/mx/mod.js.map +1 -0
- package/dist/mx/rfc.d.ts +16 -0
- package/dist/mx/rfc.js +92 -0
- package/dist/mx/rfc.js.map +1 -0
- package/dist/my/mod.d.ts +8 -0
- package/dist/my/mod.js +8 -0
- package/dist/my/mod.js.map +1 -0
- package/dist/my/nric.d.ts +17 -0
- package/dist/my/nric.js +186 -0
- package/dist/my/nric.js.map +1 -0
- package/dist/ng/mod.d.ts +8 -0
- package/dist/ng/mod.js +8 -0
- package/dist/ng/mod.js.map +1 -0
- package/dist/ng/nin.d.ts +13 -0
- package/dist/ng/nin.js +54 -0
- package/dist/ng/nin.js.map +1 -0
- package/dist/ni/mod.d.ts +8 -0
- package/dist/ni/mod.js +8 -0
- package/dist/ni/mod.js.map +1 -0
- package/dist/ni/ruc.d.ts +23 -0
- package/dist/ni/ruc.js +113 -0
- package/dist/ni/ruc.js.map +1 -0
- package/dist/nl/bsn.d.ts +14 -0
- package/dist/nl/bsn.js +70 -0
- package/dist/nl/bsn.js.map +1 -0
- package/dist/nl/kvk.d.ts +13 -0
- package/dist/nl/kvk.js +45 -0
- package/dist/nl/kvk.js.map +1 -0
- package/dist/nl/mod.d.ts +10 -0
- package/dist/nl/mod.js +14 -0
- package/dist/nl/mod.js.map +1 -0
- package/dist/nl/vat.d.ts +14 -0
- package/dist/nl/vat.js +94 -0
- package/dist/nl/vat.js.map +1 -0
- package/dist/no/fodselsnummer.d.ts +20 -0
- package/dist/no/fodselsnummer.js +134 -0
- package/dist/no/fodselsnummer.js.map +1 -0
- package/dist/no/mod.d.ts +10 -0
- package/dist/no/mod.js +14 -0
- package/dist/no/mod.js.map +1 -0
- package/dist/no/mva.d.ts +14 -0
- package/dist/no/mva.js +54 -0
- package/dist/no/mva.js.map +1 -0
- package/dist/no/orgnr.d.ts +14 -0
- package/dist/no/orgnr.js +66 -0
- package/dist/no/orgnr.js.map +1 -0
- package/dist/nz/ird.d.ts +14 -0
- package/dist/nz/ird.js +105 -0
- package/dist/nz/ird.js.map +1 -0
- package/dist/nz/mod.d.ts +8 -0
- package/dist/nz/mod.js +8 -0
- package/dist/nz/mod.js.map +1 -0
- package/dist/pa/mod.d.ts +8 -0
- package/dist/pa/mod.js +8 -0
- package/dist/pa/mod.js.map +1 -0
- package/dist/pa/ruc.d.ts +23 -0
- package/dist/pa/ruc.js +200 -0
- package/dist/pa/ruc.js.map +1 -0
- package/dist/patterns.d.ts +45 -0
- package/dist/patterns.js +123 -0
- package/dist/patterns.js.map +1 -0
- package/dist/pe/mod.d.ts +8 -0
- package/dist/pe/mod.js +8 -0
- package/dist/pe/mod.js.map +1 -0
- package/dist/pe/ruc.d.ts +19 -0
- package/dist/pe/ruc.js +109 -0
- package/dist/pe/ruc.js.map +1 -0
- package/dist/ph/mod.d.ts +8 -0
- package/dist/ph/mod.js +8 -0
- package/dist/ph/mod.js.map +1 -0
- package/dist/ph/philid.d.ts +13 -0
- package/dist/ph/philid.js +60 -0
- package/dist/ph/philid.js.map +1 -0
- package/dist/pk/cnic.d.ts +13 -0
- package/dist/pk/cnic.js +69 -0
- package/dist/pk/cnic.js.map +1 -0
- package/dist/pk/mod.d.ts +8 -0
- package/dist/pk/mod.js +8 -0
- package/dist/pk/mod.js.map +1 -0
- package/dist/pl/mod.d.ts +10 -0
- package/dist/pl/mod.js +14 -0
- package/dist/pl/mod.js.map +1 -0
- package/dist/pl/nip.d.ts +18 -0
- package/dist/pl/nip.js +77 -0
- package/dist/pl/nip.js.map +1 -0
- package/dist/pl/pesel.d.ts +19 -0
- package/dist/pl/pesel.js +109 -0
- package/dist/pl/pesel.js.map +1 -0
- package/dist/pl/regon.d.ts +14 -0
- package/dist/pl/regon.js +85 -0
- package/dist/pl/regon.js.map +1 -0
- package/dist/pt/cc.d.ts +14 -0
- package/dist/pt/cc.js +77 -0
- package/dist/pt/cc.js.map +1 -0
- package/dist/pt/mod.d.ts +9 -0
- package/dist/pt/mod.js +12 -0
- package/dist/pt/mod.js.map +1 -0
- package/dist/pt/vat.d.ts +14 -0
- package/dist/pt/vat.js +73 -0
- package/dist/pt/vat.js.map +1 -0
- package/dist/ro/cnp.d.ts +19 -0
- package/dist/ro/cnp.js +176 -0
- package/dist/ro/cnp.js.map +1 -0
- package/dist/ro/mod.d.ts +9 -0
- package/dist/ro/mod.js +12 -0
- package/dist/ro/mod.js.map +1 -0
- package/dist/ro/vat.d.ts +14 -0
- package/dist/ro/vat.js +76 -0
- package/dist/ro/vat.js.map +1 -0
- package/dist/rs/mod.d.ts +8 -0
- package/dist/rs/mod.js +8 -0
- package/dist/rs/mod.js.map +1 -0
- package/dist/rs/pib.d.ts +14 -0
- package/dist/rs/pib.js +60 -0
- package/dist/rs/pib.js.map +1 -0
- package/dist/ru/inn.d.ts +14 -0
- package/dist/ru/inn.js +103 -0
- package/dist/ru/inn.js.map +1 -0
- package/dist/ru/mod.d.ts +8 -0
- package/dist/ru/mod.js +8 -0
- package/dist/ru/mod.js.map +1 -0
- package/dist/se/mod.d.ts +10 -0
- package/dist/se/mod.js +14 -0
- package/dist/se/mod.js.map +1 -0
- package/dist/se/orgnr.d.ts +14 -0
- package/dist/se/orgnr.js +59 -0
- package/dist/se/orgnr.js.map +1 -0
- package/dist/se/personnummer.d.ts +23 -0
- package/dist/se/personnummer.js +122 -0
- package/dist/se/personnummer.js.map +1 -0
- package/dist/se/vat.d.ts +14 -0
- package/dist/se/vat.js +63 -0
- package/dist/se/vat.js.map +1 -0
- package/dist/sg/mod.d.ts +8 -0
- package/dist/sg/mod.js +8 -0
- package/dist/sg/mod.js.map +1 -0
- package/dist/sg/uen.d.ts +14 -0
- package/dist/sg/uen.js +207 -0
- package/dist/sg/uen.js.map +1 -0
- package/dist/si/emso.d.ts +19 -0
- package/dist/si/emso.js +108 -0
- package/dist/si/emso.js.map +1 -0
- package/dist/si/mod.d.ts +9 -0
- package/dist/si/mod.js +12 -0
- package/dist/si/mod.js.map +1 -0
- package/dist/si/vat.d.ts +14 -0
- package/dist/si/vat.js +74 -0
- package/dist/si/vat.js.map +1 -0
- package/dist/sk/dic.d.ts +14 -0
- package/dist/sk/dic.js +66 -0
- package/dist/sk/dic.js.map +1 -0
- package/dist/sk/ico.d.ts +10 -0
- package/dist/sk/ico.js +30 -0
- package/dist/sk/ico.js.map +1 -0
- package/dist/sk/mod.d.ts +10 -0
- package/dist/sk/mod.js +14 -0
- package/dist/sk/mod.js.map +1 -0
- package/dist/sk/rc.d.ts +10 -0
- package/dist/sk/rc.js +30 -0
- package/dist/sk/rc.js.map +1 -0
- package/dist/th/mod.d.ts +8 -0
- package/dist/th/mod.js +8 -0
- package/dist/th/mod.js.map +1 -0
- package/dist/th/tin.d.ts +14 -0
- package/dist/th/tin.js +63 -0
- package/dist/th/tin.js.map +1 -0
- package/dist/tr/mod.d.ts +9 -0
- package/dist/tr/mod.js +12 -0
- package/dist/tr/mod.js.map +1 -0
- package/dist/tr/tckimlik.d.ts +15 -0
- package/dist/tr/tckimlik.js +79 -0
- package/dist/tr/tckimlik.js.map +1 -0
- package/dist/tr/vkn.d.ts +15 -0
- package/dist/tr/vkn.js +79 -0
- package/dist/tr/vkn.js.map +1 -0
- package/dist/tw/mod.d.ts +8 -0
- package/dist/tw/mod.js +8 -0
- package/dist/tw/mod.js.map +1 -0
- package/dist/tw/ubn.d.ts +14 -0
- package/dist/tw/ubn.js +86 -0
- package/dist/tw/ubn.js.map +1 -0
- package/dist/types.d.ts +95 -0
- package/dist/types.js +1 -0
- package/dist/ua/edrpou.d.ts +14 -0
- package/dist/ua/edrpou.js +103 -0
- package/dist/ua/edrpou.js.map +1 -0
- package/dist/ua/mod.d.ts +8 -0
- package/dist/ua/mod.js +8 -0
- package/dist/ua/mod.js.map +1 -0
- package/dist/us/ein.d.ts +13 -0
- package/dist/us/ein.js +234 -0
- package/dist/us/ein.js.map +1 -0
- package/dist/us/itin.d.ts +15 -0
- package/dist/us/itin.js +69 -0
- package/dist/us/itin.js.map +1 -0
- package/dist/us/mod.d.ts +11 -0
- package/dist/us/mod.js +16 -0
- package/dist/us/mod.js.map +1 -0
- package/dist/us/rtn.d.ts +14 -0
- package/dist/us/rtn.js +91 -0
- package/dist/us/rtn.js.map +1 -0
- package/dist/us/ssn.d.ts +13 -0
- package/dist/us/ssn.js +77 -0
- package/dist/us/ssn.js.map +1 -0
- package/dist/uy/mod.d.ts +8 -0
- package/dist/uy/mod.js +8 -0
- package/dist/uy/mod.js.map +1 -0
- package/dist/uy/rut.d.ts +18 -0
- package/dist/uy/rut.js +105 -0
- package/dist/uy/rut.js.map +1 -0
- package/dist/ve/mod.d.ts +8 -0
- package/dist/ve/mod.js +8 -0
- package/dist/ve/mod.js.map +1 -0
- package/dist/ve/rif.d.ts +18 -0
- package/dist/ve/rif.js +109 -0
- package/dist/ve/rif.js.map +1 -0
- package/dist/vn/mod.d.ts +8 -0
- package/dist/vn/mod.js +8 -0
- package/dist/vn/mod.js.map +1 -0
- package/dist/vn/mst.d.ts +14 -0
- package/dist/vn/mst.js +82 -0
- package/dist/vn/mst.js.map +1 -0
- package/dist/za/idnr.d.ts +19 -0
- package/dist/za/idnr.js +110 -0
- package/dist/za/idnr.js.map +1 -0
- package/dist/za/mod.d.ts +8 -0
- package/dist/za/mod.js +8 -0
- package/dist/za/mod.js.map +1 -0
- package/package.json +936 -0
- package/src/_checksums/luhn.ts +24 -0
- package/src/_checksums/mod1110.ts +24 -0
- package/src/_checksums/mod112.ts +40 -0
- package/src/_checksums/mod97.ts +28 -0
- package/src/_checksums/verhoeff.ts +71 -0
- package/src/_checksums/weighted-sum.ts +23 -0
- package/src/_util/arabic.ts +48 -0
- package/src/_util/clean.ts +86 -0
- package/src/_util/date.ts +23 -0
- package/src/_util/generate.ts +24 -0
- package/src/_util/result.ts +10 -0
- package/src/_util/strings.ts +32 -0
- package/src/ad/mod.ts +1 -0
- package/src/ad/nrt.ts +111 -0
- package/src/ae/eid.ts +106 -0
- package/src/ae/mod.ts +1 -0
- package/src/ai/mod.ts +1 -0
- package/src/ai/tin.ts +98 -0
- package/src/al/mod.ts +1 -0
- package/src/al/nipt.ts +78 -0
- package/src/am/mod.ts +1 -0
- package/src/am/tin.ts +73 -0
- package/src/ar/cbu.ts +106 -0
- package/src/ar/cuit.ts +137 -0
- package/src/ar/dni.ts +79 -0
- package/src/ar/mod.ts +3 -0
- package/src/at/businessid.ts +74 -0
- package/src/at/mod.ts +4 -0
- package/src/at/tin.ts +90 -0
- package/src/at/uid.ts +92 -0
- package/src/at/vnr.ts +111 -0
- package/src/au/abn.ts +85 -0
- package/src/au/acn.ts +86 -0
- package/src/au/mod.ts +3 -0
- package/src/au/tfn.ts +85 -0
- package/src/az/mod.ts +1 -0
- package/src/az/voen.ts +125 -0
- package/src/ba/jmbg.ts +128 -0
- package/src/ba/mod.ts +1 -0
- package/src/bd/mod.ts +1 -0
- package/src/bd/nid.ts +139 -0
- package/src/be/bis.ts +105 -0
- package/src/be/mod.ts +3 -0
- package/src/be/nn.ts +125 -0
- package/src/be/vat.ts +107 -0
- package/src/bg/egn.ts +155 -0
- package/src/bg/mod.ts +3 -0
- package/src/bg/pnf.ts +86 -0
- package/src/bg/vat.ts +155 -0
- package/src/bh/cpr.ts +81 -0
- package/src/bh/mod.ts +1 -0
- package/src/bic.ts +99 -0
- package/src/br/cnpj.ts +152 -0
- package/src/br/cpf.ts +114 -0
- package/src/br/mod.ts +2 -0
- package/src/by/mod.ts +1 -0
- package/src/by/unp.ts +153 -0
- package/src/bz/mod.ts +1 -0
- package/src/bz/tin.ts +107 -0
- package/src/ca/bn.ts +107 -0
- package/src/ca/mod.ts +2 -0
- package/src/ca/sin.ts +91 -0
- package/src/ch/mod.ts +3 -0
- package/src/ch/ssn.ts +95 -0
- package/src/ch/uid.ts +108 -0
- package/src/ch/vat.ts +85 -0
- package/src/cl/mod.ts +1 -0
- package/src/cl/rut.ts +118 -0
- package/src/cn/mod.ts +2 -0
- package/src/cn/ric.ts +180 -0
- package/src/cn/uscc.ts +111 -0
- package/src/co/mod.ts +1 -0
- package/src/co/nit.ts +108 -0
- package/src/cr/cpf.ts +111 -0
- package/src/cr/mod.ts +1 -0
- package/src/creditcard.ts +190 -0
- package/src/cu/mod.ts +1 -0
- package/src/cu/ni.ts +125 -0
- package/src/cy/mod.ts +1 -0
- package/src/cy/vat.ts +130 -0
- package/src/cz/dic.ts +135 -0
- package/src/cz/ico.ts +82 -0
- package/src/cz/mod.ts +3 -0
- package/src/cz/rc.ts +190 -0
- package/src/de/handelsreg.ts +107 -0
- package/src/de/idnr.ts +140 -0
- package/src/de/mod.ts +5 -0
- package/src/de/stnr.ts +214 -0
- package/src/de/svnr.ts +162 -0
- package/src/de/vat.ts +98 -0
- package/src/dk/cpr.ts +122 -0
- package/src/dk/cvr.ts +87 -0
- package/src/dk/mod.ts +3 -0
- package/src/dk/vat.ts +91 -0
- package/src/do/mod.ts +1 -0
- package/src/do/rnc.ts +126 -0
- package/src/ec/mod.ts +1 -0
- package/src/ec/ruc.ts +195 -0
- package/src/ee/ik.ts +156 -0
- package/src/ee/mod.ts +3 -0
- package/src/ee/registrikood.ts +81 -0
- package/src/ee/vat.ts +85 -0
- package/src/eg/mod.ts +1 -0
- package/src/eg/tn.ts +103 -0
- package/src/es/cif.ts +105 -0
- package/src/es/dni.ts +90 -0
- package/src/es/mod.ts +5 -0
- package/src/es/nie.ts +102 -0
- package/src/es/nss.ts +109 -0
- package/src/es/vat.ts +178 -0
- package/src/eu/mod.ts +1 -0
- package/src/eu/vat.ts +171 -0
- package/src/fi/hetu.ts +182 -0
- package/src/fi/mod.ts +3 -0
- package/src/fi/vat.ts +82 -0
- package/src/fi/ytunnus.ts +83 -0
- package/src/fr/mod.ts +5 -0
- package/src/fr/nif.ts +93 -0
- package/src/fr/nir.ts +195 -0
- package/src/fr/siren.ts +79 -0
- package/src/fr/siret.ts +122 -0
- package/src/fr/tva.ts +146 -0
- package/src/gb/mod.ts +4 -0
- package/src/gb/nino.ts +153 -0
- package/src/gb/sedol.ts +137 -0
- package/src/gb/utr.ts +81 -0
- package/src/gb/vat.ts +158 -0
- package/src/ge/mod.ts +1 -0
- package/src/ge/pin.ts +71 -0
- package/src/gh/mod.ts +1 -0
- package/src/gh/tin.ts +100 -0
- package/src/gr/amka.ts +104 -0
- package/src/gr/mod.ts +2 -0
- package/src/gr/vat.ts +96 -0
- package/src/gt/mod.ts +1 -0
- package/src/gt/nit.ts +116 -0
- package/src/hk/hkid.ts +131 -0
- package/src/hk/mod.ts +1 -0
- package/src/hr/mod.ts +1 -0
- package/src/hr/vat.ts +79 -0
- package/src/hu/mod.ts +1 -0
- package/src/hu/vat.ts +82 -0
- package/src/iban.ts +340 -0
- package/src/id/mod.ts +1 -0
- package/src/id/npwp.ts +187 -0
- package/src/ie/mod.ts +2 -0
- package/src/ie/pps.ts +105 -0
- package/src/ie/vat.ts +138 -0
- package/src/il/idnr.ts +87 -0
- package/src/il/mod.ts +1 -0
- package/src/in/aadhaar.ts +96 -0
- package/src/in/gstin.ts +169 -0
- package/src/in/mod.ts +3 -0
- package/src/in/pan.ts +88 -0
- package/src/index.ts +116 -0
- package/src/iq/mod.ts +1 -0
- package/src/iq/nid.ts +71 -0
- package/src/ir/mod.ts +1 -0
- package/src/ir/nid.ts +120 -0
- package/src/is/kennitala.ts +125 -0
- package/src/is/mod.ts +2 -0
- package/src/is/vsk.ts +63 -0
- package/src/isin.ts +114 -0
- package/src/it/codicefiscale.ts +290 -0
- package/src/it/iva.ts +115 -0
- package/src/it/mod.ts +2 -0
- package/src/jp/cn.ts +91 -0
- package/src/jp/mod.ts +2 -0
- package/src/jp/mynumber.ts +103 -0
- package/src/kr/brn.ts +101 -0
- package/src/kr/mod.ts +2 -0
- package/src/kr/rrn.ts +170 -0
- package/src/kw/civil.ts +144 -0
- package/src/kw/mod.ts +1 -0
- package/src/kz/iin.ts +183 -0
- package/src/kz/mod.ts +1 -0
- package/src/lei.ts +98 -0
- package/src/li/mod.ts +1 -0
- package/src/li/peid.ts +66 -0
- package/src/lk/mod.ts +1 -0
- package/src/lk/nic.ts +210 -0
- package/src/lt/asmens.ts +120 -0
- package/src/lt/mod.ts +2 -0
- package/src/lt/vat.ts +109 -0
- package/src/lu/mod.ts +1 -0
- package/src/lu/vat.ts +80 -0
- package/src/luhn.ts +72 -0
- package/src/lv/mod.ts +1 -0
- package/src/lv/vat.ts +139 -0
- package/src/ma/ice.ts +79 -0
- package/src/ma/mod.ts +1 -0
- package/src/mc/mod.ts +1 -0
- package/src/mc/tva.ts +74 -0
- package/src/md/idno.ts +86 -0
- package/src/md/mod.ts +1 -0
- package/src/me/mod.ts +1 -0
- package/src/me/pib.ts +79 -0
- package/src/mk/edb.ts +91 -0
- package/src/mk/mod.ts +1 -0
- package/src/mt/mod.ts +1 -0
- package/src/mt/vat.ts +88 -0
- package/src/mu/brn.ts +102 -0
- package/src/mu/mod.ts +1 -0
- package/src/mx/clabe.ts +111 -0
- package/src/mx/curp.ts +210 -0
- package/src/mx/mod.ts +3 -0
- package/src/mx/rfc.ts +144 -0
- package/src/my/mod.ts +1 -0
- package/src/my/nric.ts +235 -0
- package/src/ng/mod.ts +1 -0
- package/src/ng/nin.ts +72 -0
- package/src/ni/mod.ts +1 -0
- package/src/ni/ruc.ts +176 -0
- package/src/nl/bsn.ts +87 -0
- package/src/nl/kvk.ts +59 -0
- package/src/nl/mod.ts +3 -0
- package/src/nl/vat.ts +146 -0
- package/src/no/fodselsnummer.ts +192 -0
- package/src/no/mod.ts +3 -0
- package/src/no/mva.ts +73 -0
- package/src/no/orgnr.ts +79 -0
- package/src/nz/ird.ts +128 -0
- package/src/nz/mod.ts +1 -0
- package/src/pa/mod.ts +1 -0
- package/src/pa/ruc.ts +359 -0
- package/src/patterns.ts +252 -0
- package/src/pe/mod.ts +1 -0
- package/src/pe/ruc.ts +121 -0
- package/src/ph/mod.ts +1 -0
- package/src/ph/philid.ts +76 -0
- package/src/pk/cnic.ts +103 -0
- package/src/pk/mod.ts +1 -0
- package/src/pl/mod.ts +3 -0
- package/src/pl/nip.ts +96 -0
- package/src/pl/pesel.ts +153 -0
- package/src/pl/regon.ts +98 -0
- package/src/pt/cc.ts +106 -0
- package/src/pt/mod.ts +2 -0
- package/src/pt/vat.ts +93 -0
- package/src/ro/cnp.ts +171 -0
- package/src/ro/mod.ts +2 -0
- package/src/ro/vat.ts +94 -0
- package/src/rs/mod.ts +1 -0
- package/src/rs/pib.ts +83 -0
- package/src/ru/inn.ts +109 -0
- package/src/ru/mod.ts +1 -0
- package/src/se/mod.ts +3 -0
- package/src/se/orgnr.ts +81 -0
- package/src/se/personnummer.ts +180 -0
- package/src/se/vat.ts +92 -0
- package/src/sg/mod.ts +1 -0
- package/src/sg/uen.ts +267 -0
- package/src/si/emso.ts +152 -0
- package/src/si/mod.ts +2 -0
- package/src/si/vat.ts +108 -0
- package/src/sk/dic.ts +106 -0
- package/src/sk/ico.ts +39 -0
- package/src/sk/mod.ts +3 -0
- package/src/sk/rc.ts +31 -0
- package/src/th/mod.ts +1 -0
- package/src/th/tin.ts +102 -0
- package/src/tr/mod.ts +2 -0
- package/src/tr/tckimlik.ts +111 -0
- package/src/tr/vkn.ts +97 -0
- package/src/tw/mod.ts +1 -0
- package/src/tw/ubn.ts +108 -0
- package/src/types.ts +200 -0
- package/src/ua/edrpou.ts +103 -0
- package/src/ua/mod.ts +1 -0
- package/src/us/ein.ts +257 -0
- package/src/us/itin.ts +126 -0
- package/src/us/mod.ts +4 -0
- package/src/us/rtn.ts +126 -0
- package/src/us/ssn.ts +117 -0
- package/src/uy/mod.ts +1 -0
- package/src/uy/rut.ts +146 -0
- package/src/ve/mod.ts +1 -0
- package/src/ve/rif.ts +140 -0
- package/src/vn/mod.ts +1 -0
- package/src/vn/mst.ts +128 -0
- package/src/za/idnr.ts +157 -0
- package/src/za/mod.ts +1 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { twoPassCheck } from "./ik.js";
|
|
6
|
+
//#region src/ee/registrikood.ts
|
|
7
|
+
/**
|
|
8
|
+
* Registrikood (Estonian company registration code).
|
|
9
|
+
*
|
|
10
|
+
* 8 digits. First digit must be 1, 7, 8, or 9.
|
|
11
|
+
* Two-pass checksum (same algorithm as EE IK).
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.rik.ee/
|
|
14
|
+
*/
|
|
15
|
+
const VALID_FIRST = new Set([
|
|
16
|
+
"1",
|
|
17
|
+
"7",
|
|
18
|
+
"8",
|
|
19
|
+
"9"
|
|
20
|
+
]);
|
|
21
|
+
const compact = (value) => clean(value, " -");
|
|
22
|
+
const validate = (value) => {
|
|
23
|
+
const v = compact(value);
|
|
24
|
+
if (v.length !== 8) return err("INVALID_LENGTH", "Estonian Registrikood must be 8 digits");
|
|
25
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Estonian Registrikood must contain only digits");
|
|
26
|
+
if (!VALID_FIRST.has(v.charAt(0))) return err("INVALID_COMPONENT", "Estonian Registrikood must start with 1, 7, 8, or 9");
|
|
27
|
+
if (twoPassCheck(v.slice(0, 7)) !== Number(v[7])) return err("INVALID_CHECKSUM", "Estonian Registrikood check digit mismatch");
|
|
28
|
+
return {
|
|
29
|
+
valid: true,
|
|
30
|
+
compact: v
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const format = (value) => compact(value);
|
|
34
|
+
/** Generate a random valid Estonian Registrikood. */
|
|
35
|
+
const generate = () => {
|
|
36
|
+
const payload = String([
|
|
37
|
+
1,
|
|
38
|
+
7,
|
|
39
|
+
8,
|
|
40
|
+
9
|
|
41
|
+
][randomInt(0, 3)]) + randomDigits(6);
|
|
42
|
+
return payload + String(twoPassCheck(payload));
|
|
43
|
+
};
|
|
44
|
+
/** Estonian Company Registration Code. */
|
|
45
|
+
const registrikood = {
|
|
46
|
+
name: "Estonian Company Registration Code",
|
|
47
|
+
localName: "Registrikood",
|
|
48
|
+
abbreviation: "Registrikood",
|
|
49
|
+
aliases: ["registrikood"],
|
|
50
|
+
candidatePattern: "\\d{8}",
|
|
51
|
+
country: "EE",
|
|
52
|
+
entityType: "company",
|
|
53
|
+
sourceUrl: "https://www.rik.ee/",
|
|
54
|
+
examples: ["12345678"],
|
|
55
|
+
compact,
|
|
56
|
+
format,
|
|
57
|
+
validate,
|
|
58
|
+
generate
|
|
59
|
+
};
|
|
60
|
+
//#endregion
|
|
61
|
+
export { compact, registrikood as default, format, generate, validate };
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=registrikood.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registrikood.js","names":[],"sources":["../../src/ee/registrikood.ts"],"sourcesContent":["/**\n * Registrikood (Estonian company registration code).\n *\n * 8 digits. First digit must be 1, 7, 8, or 9.\n * Two-pass checksum (same algorithm as EE IK).\n *\n * @see https://www.rik.ee/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\nimport { twoPassCheck } from \"./ik\";\n\nconst VALID_FIRST = new Set([\"1\", \"7\", \"8\", \"9\"]);\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"Estonian Registrikood must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Estonian Registrikood must contain only digits\",\n );\n }\n if (!VALID_FIRST.has(v.charAt(0))) {\n return err(\n \"INVALID_COMPONENT\",\n \"Estonian Registrikood must start with 1, 7, 8, or 9\",\n );\n }\n const check = twoPassCheck(v.slice(0, 7));\n if (check !== Number(v[7])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Estonian Registrikood check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Estonian Registrikood. */\nconst generate = (): string => {\n const firsts = [1, 7, 8, 9];\n const first = String(firsts[randomInt(0, 3)]!);\n const payload = first + randomDigits(6);\n return payload + String(twoPassCheck(payload));\n};\n\n/** Estonian Company Registration Code. */\nconst registrikood: Validator = {\n name: \"Estonian Company Registration Code\",\n localName: \"Registrikood\",\n abbreviation: \"Registrikood\",\n aliases: [\"registrikood\"] as const,\n candidatePattern: \"\\\\d{8}\",\n country: \"EE\",\n entityType: \"company\",\n sourceUrl: \"https://www.rik.ee/\",\n examples: [\"12345678\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default registrikood;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,cAAc,IAAI,IAAI;CAAC;CAAK;CAAK;CAAK;CAAI,CAAC;AAEjD,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,yCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,iDACD;AAEH,KAAI,CAAC,YAAY,IAAI,EAAE,OAAO,EAAE,CAAC,CAC/B,QAAO,IACL,qBACA,sDACD;AAGH,KADc,aAAa,EAAE,MAAM,GAAG,EAAE,CAAC,KAC3B,OAAO,EAAE,GAAG,CACxB,QAAO,IACL,oBACA,6CACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;CAG7B,MAAM,UADQ,OADC;EAAC;EAAG;EAAG;EAAG;EAAE,CACC,UAAU,GAAG,EAAE,EAAG,GACtB,aAAa,EAAE;AACvC,QAAO,UAAU,OAAO,aAAa,QAAQ,CAAC;;;AAIhD,MAAM,eAA0B;CAC9B,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,eAAe;CACzB,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;CACD"}
|
package/dist/ee/vat.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/ee/vat.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Estonian VAT number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Estonian VAT Number. */
|
|
11
|
+
declare const vat: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, vat as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=vat.d.ts.map
|
package/dist/ee/vat.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
|
+
//#region src/ee/vat.ts
|
|
7
|
+
/**
|
|
8
|
+
* KMKR (Estonian VAT number).
|
|
9
|
+
*
|
|
10
|
+
* 9 digits. Weights [3,7,1,3,7,1,3,7,1],
|
|
11
|
+
* sum % 10 === 0.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.vatify.eu/estonia-vat-number.html
|
|
14
|
+
* @see https://www.emta.ee/en
|
|
15
|
+
*/
|
|
16
|
+
const WEIGHTS = [
|
|
17
|
+
3,
|
|
18
|
+
7,
|
|
19
|
+
1,
|
|
20
|
+
3,
|
|
21
|
+
7,
|
|
22
|
+
1,
|
|
23
|
+
3,
|
|
24
|
+
7,
|
|
25
|
+
1
|
|
26
|
+
];
|
|
27
|
+
const compact = (value) => {
|
|
28
|
+
let v = clean(value, " -/.");
|
|
29
|
+
if (v.startsWith("EE") || v.startsWith("ee")) v = v.slice(2);
|
|
30
|
+
return v;
|
|
31
|
+
};
|
|
32
|
+
const validate = (value) => {
|
|
33
|
+
const v = compact(value);
|
|
34
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "Estonian VAT number must be 9 digits");
|
|
35
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Estonian VAT number must contain only digits");
|
|
36
|
+
if (weightedSum(v, WEIGHTS, 10) !== 0) return err("INVALID_CHECKSUM", "Estonian VAT number check digit mismatch");
|
|
37
|
+
return {
|
|
38
|
+
valid: true,
|
|
39
|
+
compact: v
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
const format = (value) => `EE${compact(value)}`;
|
|
43
|
+
/** Generate a random valid Estonian VAT number. */
|
|
44
|
+
const generate = () => {
|
|
45
|
+
for (;;) {
|
|
46
|
+
const c = randomDigits(9);
|
|
47
|
+
if (validate(c).valid) return c;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/** Estonian VAT Number. */
|
|
51
|
+
const vat = {
|
|
52
|
+
name: "Estonian VAT Number",
|
|
53
|
+
localName: "Käibemaksukohustuslase number",
|
|
54
|
+
abbreviation: "KMKR",
|
|
55
|
+
aliases: ["käibemaksukohustuslase number", "KMKR"],
|
|
56
|
+
candidatePattern: "EE\\d{9}",
|
|
57
|
+
country: "EE",
|
|
58
|
+
entityType: "company",
|
|
59
|
+
sourceUrl: "https://www.emta.ee/en",
|
|
60
|
+
examples: ["100931558"],
|
|
61
|
+
compact,
|
|
62
|
+
format,
|
|
63
|
+
validate,
|
|
64
|
+
generate
|
|
65
|
+
};
|
|
66
|
+
//#endregion
|
|
67
|
+
export { compact, vat as default, format, generate, validate };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=vat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/ee/vat.ts"],"sourcesContent":["/**\n * KMKR (Estonian VAT number).\n *\n * 9 digits. Weights [3,7,1,3,7,1,3,7,1],\n * sum % 10 === 0.\n *\n * @see https://www.vatify.eu/estonia-vat-number.html\n * @see https://www.emta.ee/en\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst WEIGHTS = [3, 7, 1, 3, 7, 1, 3, 7, 1];\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"EE\") || v.startsWith(\"ee\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Estonian VAT number must be 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Estonian VAT number must contain only digits\",\n );\n }\n const sum = weightedSum(v, WEIGHTS, 10);\n if (sum !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Estonian VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `EE${compact(value)}`;\n\n/** Generate a random valid Estonian VAT number. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(9);\n if (validate(c).valid) return c;\n }\n};\n\n/** Estonian VAT Number. */\nconst vat: Validator = {\n name: \"Estonian VAT Number\",\n localName: \"Käibemaksukohustuslase number\",\n abbreviation: \"KMKR\",\n aliases: [\n \"käibemaksukohustuslase number\",\n \"KMKR\",\n ] as const,\n candidatePattern: \"EE\\\\d{9}\",\n country: \"EE\",\n entityType: \"company\",\n sourceUrl: \"https://www.emta.ee/en\",\n examples: [\"100931558\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAE3C,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,OAAO;AAC5B,KAAI,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,CAC1C,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,uCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+CACD;AAGH,KADY,YAAY,GAAG,SAAS,GAAG,KAC3B,EACV,QAAO,IACL,oBACA,2CACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UACd,KAAK,QAAQ,MAAM;;AAGrB,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,IAAI,aAAa,EAAE;AACzB,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,iCACA,OACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
|
package/dist/eg/mod.d.ts
ADDED
package/dist/eg/mod.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/eg/mod.ts"],"sourcesContent":["export { default as tn } from \"./tn\";\n"],"mappings":""}
|
package/dist/eg/tn.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/eg/tn.d.ts
|
|
4
|
+
/** Generate a random valid Egyptian TN. */
|
|
5
|
+
declare const generate: () => string;
|
|
6
|
+
declare const compact: (value: string) => string;
|
|
7
|
+
declare const validate: (value: string) => ValidateResult;
|
|
8
|
+
declare const format: (value: string) => string;
|
|
9
|
+
/** Egyptian Tax Registration Number. */
|
|
10
|
+
declare const tn: Validator;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { compact, tn as default, format, generate, validate };
|
|
13
|
+
//# sourceMappingURL=tn.d.ts.map
|
package/dist/eg/tn.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
//#region src/eg/tn.ts
|
|
6
|
+
/**
|
|
7
|
+
* TN (Tax Registration Number, الرقم الضريبي).
|
|
8
|
+
*
|
|
9
|
+
* Egyptian tax number. 9 digits, no checksum.
|
|
10
|
+
* Displayed as XXX-XXX-XXX. Accepts both
|
|
11
|
+
* Arabic-Indic and Extended Arabic-Indic digits.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.eta.gov.eg/
|
|
14
|
+
*/
|
|
15
|
+
/** Generate a random valid Egyptian TN. */
|
|
16
|
+
const generate = () => randomDigits(9);
|
|
17
|
+
/**
|
|
18
|
+
* Arabic-Indic and Extended Arabic-Indic digit map.
|
|
19
|
+
* Converts Arabic numeral characters to ASCII digits.
|
|
20
|
+
*/
|
|
21
|
+
const ARABIC_DIGITS = {
|
|
22
|
+
"٠": "0",
|
|
23
|
+
"١": "1",
|
|
24
|
+
"٢": "2",
|
|
25
|
+
"٣": "3",
|
|
26
|
+
"٤": "4",
|
|
27
|
+
"٥": "5",
|
|
28
|
+
"٦": "6",
|
|
29
|
+
"٧": "7",
|
|
30
|
+
"٨": "8",
|
|
31
|
+
"٩": "9",
|
|
32
|
+
"۰": "0",
|
|
33
|
+
"۱": "1",
|
|
34
|
+
"۲": "2",
|
|
35
|
+
"۳": "3",
|
|
36
|
+
"۴": "4",
|
|
37
|
+
"۵": "5",
|
|
38
|
+
"۶": "6",
|
|
39
|
+
"۷": "7",
|
|
40
|
+
"۸": "8",
|
|
41
|
+
"۹": "9"
|
|
42
|
+
};
|
|
43
|
+
const ARABIC_REGEX = new RegExp(`[${Object.keys(ARABIC_DIGITS).join("")}]`, "g");
|
|
44
|
+
const compact = (value) => {
|
|
45
|
+
return clean(value, " -/").replace(ARABIC_REGEX, (ch) => ARABIC_DIGITS[ch] ?? ch);
|
|
46
|
+
};
|
|
47
|
+
const validate = (value) => {
|
|
48
|
+
const v = compact(value);
|
|
49
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "Egyptian TN must be exactly 9 digits");
|
|
50
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Egyptian TN must contain only digits");
|
|
51
|
+
return {
|
|
52
|
+
valid: true,
|
|
53
|
+
compact: v
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
const format = (value) => {
|
|
57
|
+
const v = compact(value);
|
|
58
|
+
return `${v.slice(0, 3)}-${v.slice(3, 6)}-${v.slice(6)}`;
|
|
59
|
+
};
|
|
60
|
+
/** Egyptian Tax Registration Number. */
|
|
61
|
+
const tn = {
|
|
62
|
+
name: "Egyptian Tax Registration Number",
|
|
63
|
+
localName: "الرقم الضريبي",
|
|
64
|
+
abbreviation: "TN",
|
|
65
|
+
aliases: ["الرقم الضريبي", "tax number"],
|
|
66
|
+
candidatePattern: "\\d{9}",
|
|
67
|
+
country: "EG",
|
|
68
|
+
entityType: "any",
|
|
69
|
+
compact,
|
|
70
|
+
format,
|
|
71
|
+
validate,
|
|
72
|
+
description: "Egyptian tax identification number",
|
|
73
|
+
sourceUrl: "https://www.eta.gov.eg/",
|
|
74
|
+
lengths: [9],
|
|
75
|
+
examples: ["100531385", "331105268"],
|
|
76
|
+
generate
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
export { compact, tn as default, format, generate, validate };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=tn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tn.js","names":[],"sources":["../../src/eg/tn.ts"],"sourcesContent":["/** Generate a random valid Egyptian TN. */\nconst generate = (): string => randomDigits(9);\n\n/**\n * TN (Tax Registration Number, الرقم الضريبي).\n *\n * Egyptian tax number. 9 digits, no checksum.\n * Displayed as XXX-XXX-XXX. Accepts both\n * Arabic-Indic and Extended Arabic-Indic digits.\n *\n * @see https://www.eta.gov.eg/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\n/**\n * Arabic-Indic and Extended Arabic-Indic digit map.\n * Converts Arabic numeral characters to ASCII digits.\n */\nconst ARABIC_DIGITS: Record<string, string> = {\n \"\\u0660\": \"0\", // ٠\n \"\\u0661\": \"1\", // ١\n \"\\u0662\": \"2\", // ٢\n \"\\u0663\": \"3\", // ٣\n \"\\u0664\": \"4\", // ٤\n \"\\u0665\": \"5\", // ٥\n \"\\u0666\": \"6\", // ٦\n \"\\u0667\": \"7\", // ٧\n \"\\u0668\": \"8\", // ٨\n \"\\u0669\": \"9\", // ٩\n \"\\u06F0\": \"0\", // ۰\n \"\\u06F1\": \"1\", // ۱\n \"\\u06F2\": \"2\", // ۲\n \"\\u06F3\": \"3\", // ۳\n \"\\u06F4\": \"4\", // ۴\n \"\\u06F5\": \"5\", // ۵\n \"\\u06F6\": \"6\", // ۶\n \"\\u06F7\": \"7\", // ۷\n \"\\u06F8\": \"8\", // ۸\n \"\\u06F9\": \"9\", // ۹\n};\n\nconst ARABIC_REGEX = new RegExp(\n `[${Object.keys(ARABIC_DIGITS).join(\"\")}]`,\n \"g\",\n);\n\nconst compact = (value: string): string => {\n const cleaned = clean(value, \" -/\");\n return cleaned.replace(\n ARABIC_REGEX,\n (ch) => ARABIC_DIGITS[ch] ?? ch,\n );\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Egyptian TN must be exactly 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Egyptian TN must contain only digits\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v.slice(0, 3)}-${v.slice(3, 6)}-${v.slice(6)}`;\n};\n\n/** Egyptian Tax Registration Number. */\nconst tn: Validator = {\n name: \"Egyptian Tax Registration Number\",\n localName: \"الرقم الضريبي\",\n abbreviation: \"TN\",\n aliases: [\"الرقم الضريبي\", \"tax number\"] as const,\n candidatePattern: \"\\\\d{9}\",\n country: \"EG\",\n entityType: \"any\",\n compact,\n format,\n validate,\n description: \"Egyptian tax identification number\",\n sourceUrl: \"https://www.eta.gov.eg/\",\n lengths: [9] as const,\n examples: [\"100531385\", \"331105268\"] as const,\n generate,\n};\n\nexport default tn;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AACA,MAAM,iBAAyB,aAAa,EAAE;;;;;AAuB9C,MAAM,gBAAwC;CAC5C,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACX;AAED,MAAM,eAAe,IAAI,OACvB,IAAI,OAAO,KAAK,cAAc,CAAC,KAAK,GAAG,CAAC,IACxC,IACD;AAED,MAAM,WAAW,UAA0B;AAEzC,QADgB,MAAM,OAAO,MAAM,CACpB,QACb,eACC,OAAO,cAAc,OAAO,GAC9B;;AAGH,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,uCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,uCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;AAIxD,MAAM,KAAgB;CACpB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,iBAAiB,aAAa;CACxC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ;CACA;CACA;CACA,aAAa;CACb,WAAW;CACX,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,aAAa,YAAY;CACpC;CACD"}
|
package/dist/es/cif.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/es/cif.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Spanish CIF. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Spanish Company Tax ID (CIF). */
|
|
11
|
+
declare const cif: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, cif as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=cif.d.ts.map
|
package/dist/es/cif.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { cifChecksum } from "./vat.js";
|
|
6
|
+
//#region src/es/cif.ts
|
|
7
|
+
/**
|
|
8
|
+
* CIF (Código de Identificación Fiscal).
|
|
9
|
+
*
|
|
10
|
+
* Spanish company tax identification number.
|
|
11
|
+
* Letter prefix (ABCDEFGHJNPQRSUVW) + 7 digits +
|
|
12
|
+
* check digit or letter. Delegates to the CIF
|
|
13
|
+
* branch of es/vat validation.
|
|
14
|
+
*
|
|
15
|
+
* @see https://www.agenciatributaria.es/
|
|
16
|
+
*/
|
|
17
|
+
const CIF_PREFIXES = "ABCDEFGHJNPQRSUVW";
|
|
18
|
+
const CIF_LETTERS = "JABCDEFGHI";
|
|
19
|
+
const compact = (value) => {
|
|
20
|
+
let v = clean(value, " -/.");
|
|
21
|
+
if (v.startsWith("ES") || v.startsWith("es")) v = v.slice(2);
|
|
22
|
+
return v.toUpperCase();
|
|
23
|
+
};
|
|
24
|
+
const validate = (value) => {
|
|
25
|
+
const v = compact(value);
|
|
26
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "Spanish CIF must be 9 characters");
|
|
27
|
+
const first = v.charAt(0);
|
|
28
|
+
if (!CIF_PREFIXES.includes(first)) return err("INVALID_FORMAT", "Spanish CIF must start with a valid prefix letter");
|
|
29
|
+
if (!isdigits(v.slice(1, 8))) return err("INVALID_FORMAT", "Spanish CIF must have 7 digits after prefix");
|
|
30
|
+
const last = v.charAt(8);
|
|
31
|
+
const check = cifChecksum(v.slice(1, 8));
|
|
32
|
+
if (last !== String(check) && last !== CIF_LETTERS.charAt(check)) return err("INVALID_CHECKSUM", "Spanish CIF check digit/letter mismatch");
|
|
33
|
+
return {
|
|
34
|
+
valid: true,
|
|
35
|
+
compact: v
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
const format = (value) => compact(value);
|
|
39
|
+
/** Generate a random valid Spanish CIF. */
|
|
40
|
+
const generate = () => {
|
|
41
|
+
const letter = CIF_PREFIXES[randomInt(0, 16)];
|
|
42
|
+
const payload = randomDigits(7);
|
|
43
|
+
const check = cifChecksum(payload);
|
|
44
|
+
if ("KPQS".includes(letter)) return letter + payload + CIF_LETTERS.charAt(check);
|
|
45
|
+
return letter + payload + String(check);
|
|
46
|
+
};
|
|
47
|
+
/** Spanish Company Tax ID (CIF). */
|
|
48
|
+
const cif = {
|
|
49
|
+
name: "Spanish Company Tax ID",
|
|
50
|
+
localName: "Código de Identificación Fiscal",
|
|
51
|
+
abbreviation: "CIF",
|
|
52
|
+
aliases: ["CIF", "código de identificación fiscal"],
|
|
53
|
+
candidatePattern: "[A-HJNP-SUVW]\\d{7}[\\dA-J]",
|
|
54
|
+
country: "ES",
|
|
55
|
+
entityType: "company",
|
|
56
|
+
sourceUrl: "https://www.agenciatributaria.es/",
|
|
57
|
+
examples: ["A13585625"],
|
|
58
|
+
compact,
|
|
59
|
+
format,
|
|
60
|
+
validate,
|
|
61
|
+
generate
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
64
|
+
export { compact, cif as default, format, generate, validate };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=cif.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cif.js","names":[],"sources":["../../src/es/cif.ts"],"sourcesContent":["/**\n * CIF (Código de Identificación Fiscal).\n *\n * Spanish company tax identification number.\n * Letter prefix (ABCDEFGHJNPQRSUVW) + 7 digits +\n * check digit or letter. Delegates to the CIF\n * branch of es/vat validation.\n *\n * @see https://www.agenciatributaria.es/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\nimport { cifChecksum } from \"./vat\";\n\nconst CIF_PREFIXES = \"ABCDEFGHJNPQRSUVW\";\nconst CIF_LETTERS = \"JABCDEFGHI\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"ES\") || v.startsWith(\"es\")) {\n v = v.slice(2);\n }\n return v.toUpperCase();\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Spanish CIF must be 9 characters\",\n );\n }\n\n const first = v.charAt(0);\n if (!CIF_PREFIXES.includes(first)) {\n return err(\n \"INVALID_FORMAT\",\n \"Spanish CIF must start with a valid prefix letter\",\n );\n }\n\n if (!isdigits(v.slice(1, 8))) {\n return err(\n \"INVALID_FORMAT\",\n \"Spanish CIF must have 7 digits after prefix\",\n );\n }\n\n const last = v.charAt(8);\n const check = cifChecksum(v.slice(1, 8));\n\n if (\n last !== String(check) &&\n last !== CIF_LETTERS.charAt(check)\n ) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Spanish CIF check digit/letter mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Spanish CIF. */\nconst generate = (): string => {\n const letter =\n CIF_PREFIXES[randomInt(0, CIF_PREFIXES.length - 1)]!;\n const payload = randomDigits(7);\n const check = cifChecksum(payload);\n if (\"KPQS\".includes(letter))\n return letter + payload + CIF_LETTERS.charAt(check);\n return letter + payload + String(check);\n};\n\n/** Spanish Company Tax ID (CIF). */\nconst cif: Validator = {\n name: \"Spanish Company Tax ID\",\n localName: \"Código de Identificación Fiscal\",\n abbreviation: \"CIF\",\n aliases: [\n \"CIF\",\n \"código de identificación fiscal\",\n ] as const,\n candidatePattern: \"[A-HJNP-SUVW]\\\\d{7}[\\\\dA-J]\",\n country: \"ES\",\n entityType: \"company\",\n sourceUrl: \"https://www.agenciatributaria.es/\",\n examples: [\"A13585625\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default cif;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,eAAe;AACrB,MAAM,cAAc;AAEpB,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,OAAO;AAC5B,KAAI,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,CAC1C,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO,EAAE,aAAa;;AAGxB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,mCACD;CAGH,MAAM,QAAQ,EAAE,OAAO,EAAE;AACzB,KAAI,CAAC,aAAa,SAAS,MAAM,CAC/B,QAAO,IACL,kBACA,oDACD;AAGH,KAAI,CAAC,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,CAC1B,QAAO,IACL,kBACA,8CACD;CAGH,MAAM,OAAO,EAAE,OAAO,EAAE;CACxB,MAAM,QAAQ,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAExC,KACE,SAAS,OAAO,MAAM,IACtB,SAAS,YAAY,OAAO,MAAM,CAElC,QAAO,IACL,oBACA,0CACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;CAC7B,MAAM,SACJ,aAAa,UAAU,GAAG,GAAwB;CACpD,MAAM,UAAU,aAAa,EAAE;CAC/B,MAAM,QAAQ,YAAY,QAAQ;AAClC,KAAI,OAAO,SAAS,OAAO,CACzB,QAAO,SAAS,UAAU,YAAY,OAAO,MAAM;AACrD,QAAO,SAAS,UAAU,OAAO,MAAM;;;AAIzC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,OACA,kCACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
|
package/dist/es/dni.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/es/dni.d.ts
|
|
4
|
+
|
|
5
|
+
declare const CHECK_LETTERS = "TRWAGMYFPDXBNJZSQVHLCKE";
|
|
6
|
+
declare const compact: (value: string) => string;
|
|
7
|
+
declare const validate: (value: string) => ValidateResult;
|
|
8
|
+
declare const format: (value: string) => string;
|
|
9
|
+
/** Generate a random valid Spanish DNI. */
|
|
10
|
+
declare const generate: () => string;
|
|
11
|
+
/** Spanish National Identity Document. */
|
|
12
|
+
declare const dni: Validator;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { CHECK_LETTERS, compact, dni as default, format, generate, validate };
|
|
15
|
+
//# sourceMappingURL=dni.d.ts.map
|
package/dist/es/dni.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
//#region src/es/dni.ts
|
|
6
|
+
/**
|
|
7
|
+
* DNI (Documento Nacional de Identidad).
|
|
8
|
+
*
|
|
9
|
+
* Spanish national identity document number.
|
|
10
|
+
* 8 digits followed by a check letter determined
|
|
11
|
+
* by the remainder of dividing the number by 23.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/dni/
|
|
14
|
+
*/
|
|
15
|
+
const CHECK_LETTERS = "TRWAGMYFPDXBNJZSQVHLCKE";
|
|
16
|
+
const compact = (value) => clean(value, " -").toUpperCase();
|
|
17
|
+
const validate = (value) => {
|
|
18
|
+
const v = compact(value);
|
|
19
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "DNI must be 8 digits and 1 letter");
|
|
20
|
+
const digits = v.slice(0, 8);
|
|
21
|
+
const letter = v[8];
|
|
22
|
+
if (!isdigits(digits)) return err("INVALID_FORMAT", "DNI must start with 8 digits");
|
|
23
|
+
if (letter !== "TRWAGMYFPDXBNJZSQVHLCKE"[Number(digits) % 23]) return err("INVALID_CHECKSUM", "DNI check letter does not match");
|
|
24
|
+
return {
|
|
25
|
+
valid: true,
|
|
26
|
+
compact: v
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
const format = (value) => compact(value);
|
|
30
|
+
/** Generate a random valid Spanish DNI. */
|
|
31
|
+
const generate = () => {
|
|
32
|
+
const num = randomDigits(8);
|
|
33
|
+
return num + CHECK_LETTERS[Number(num) % 23];
|
|
34
|
+
};
|
|
35
|
+
/** Spanish National Identity Document. */
|
|
36
|
+
const dni = {
|
|
37
|
+
name: "Spanish National ID",
|
|
38
|
+
localName: "Documento Nacional de Identidad",
|
|
39
|
+
abbreviation: "DNI",
|
|
40
|
+
aliases: [
|
|
41
|
+
"D.N.I.",
|
|
42
|
+
"DNI",
|
|
43
|
+
"documento nacional de identidad"
|
|
44
|
+
],
|
|
45
|
+
candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[A-Z]",
|
|
46
|
+
country: "ES",
|
|
47
|
+
entityType: "person",
|
|
48
|
+
sourceUrl: "https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/dni/",
|
|
49
|
+
examples: ["54362315K"],
|
|
50
|
+
compact,
|
|
51
|
+
format,
|
|
52
|
+
validate,
|
|
53
|
+
generate
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
56
|
+
export { CHECK_LETTERS, compact, dni as default, format, generate, validate };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=dni.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dni.js","names":[],"sources":["../../src/es/dni.ts"],"sourcesContent":["/**\n * DNI (Documento Nacional de Identidad).\n *\n * Spanish national identity document number.\n * 8 digits followed by a check letter determined\n * by the remainder of dividing the number by 23.\n *\n * @see https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/dni/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst CHECK_LETTERS = \"TRWAGMYFPDXBNJZSQVHLCKE\";\n\nconst compact = (value: string): string =>\n clean(value, \" -\").toUpperCase();\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"DNI must be 8 digits and 1 letter\",\n );\n }\n\n const digits = v.slice(0, 8);\n const letter = v[8];\n\n if (!isdigits(digits)) {\n return err(\n \"INVALID_FORMAT\",\n \"DNI must start with 8 digits\",\n );\n }\n\n const expected = CHECK_LETTERS[Number(digits) % 23];\n if (letter !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"DNI check letter does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Spanish DNI. */\nconst generate = (): string => {\n const num = randomDigits(8);\n return num + CHECK_LETTERS[Number(num) % 23];\n};\n\n/** Spanish National Identity Document. */\nconst dni: Validator = {\n name: \"Spanish National ID\",\n localName: \"Documento Nacional de Identidad\",\n abbreviation: \"DNI\",\n aliases: [\n \"D.N.I.\",\n \"DNI\",\n \"documento nacional de identidad\",\n ] as const,\n candidatePattern: \"\\\\d{1,2}\\\\.?\\\\d{3}\\\\.?\\\\d{3}-?[A-Z]\",\n country: \"ES\",\n entityType: \"person\",\n sourceUrl:\n \"https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/dni/\",\n examples: [\"54362315K\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default dni;\nexport {\n CHECK_LETTERS,\n compact,\n format,\n validate,\n generate,\n};\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,gBAAgB;AAEtB,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,aAAa;AAElC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,oCACD;CAGH,MAAM,SAAS,EAAE,MAAM,GAAG,EAAE;CAC5B,MAAM,SAAS,EAAE;AAEjB,KAAI,CAAC,SAAS,OAAO,CACnB,QAAO,IACL,kBACA,+BACD;AAIH,KAAI,WAAA,0BAD2B,OAAO,OAAO,GAAG,IAE9C,QAAO,IACL,oBACA,kCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;CAC7B,MAAM,MAAM,aAAa,EAAE;AAC3B,QAAO,MAAM,cAAc,OAAO,IAAI,GAAG;;;AAI3C,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
|
package/dist/es/mod.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import cif from "./cif.js";
|
|
3
|
+
import dni from "./dni.js";
|
|
4
|
+
import nie from "./nie.js";
|
|
5
|
+
import nss from "./nss.js";
|
|
6
|
+
import vat from "./vat.js";
|
|
7
|
+
|
|
8
|
+
//#region src/es/mod.d.ts
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { cif, dni, mod_d_exports, nie, nss, vat };
|
|
12
|
+
//# sourceMappingURL=mod.d.ts.map
|
package/dist/es/mod.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import vat from "./vat.js";
|
|
3
|
+
import cif from "./cif.js";
|
|
4
|
+
import dni from "./dni.js";
|
|
5
|
+
import nie from "./nie.js";
|
|
6
|
+
import nss from "./nss.js";
|
|
7
|
+
//#region src/es/mod.ts
|
|
8
|
+
var es_exports = /* @__PURE__ */ __exportAll({
|
|
9
|
+
cif: () => cif,
|
|
10
|
+
dni: () => dni,
|
|
11
|
+
nie: () => nie,
|
|
12
|
+
nss: () => nss,
|
|
13
|
+
vat: () => vat
|
|
14
|
+
});
|
|
15
|
+
//#endregion
|
|
16
|
+
export { cif, dni, es_exports, nie, nss, vat };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/es/mod.ts"],"sourcesContent":["export { default as cif } from \"./cif\";\nexport { default as dni } from \"./dni\";\nexport { default as nie } from \"./nie\";\nexport { default as nss } from \"./nss\";\nexport { default as vat } from \"./vat\";\n"],"mappings":""}
|
package/dist/es/nie.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/es/nie.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Spanish NIE. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Spanish Foreigner Identification Number. */
|
|
11
|
+
declare const nie: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, nie as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=nie.d.ts.map
|
package/dist/es/nie.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { CHECK_LETTERS } from "./dni.js";
|
|
6
|
+
//#region src/es/nie.ts
|
|
7
|
+
/**
|
|
8
|
+
* NIE (Número de Identidad de Extranjero).
|
|
9
|
+
*
|
|
10
|
+
* Spanish foreigner identification number. Starts
|
|
11
|
+
* with X, Y, or Z, followed by 7 digits and a check
|
|
12
|
+
* letter computed using the DNI algorithm.
|
|
13
|
+
*
|
|
14
|
+
* @see https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/nie/
|
|
15
|
+
*/
|
|
16
|
+
const PREFIX_MAP = {
|
|
17
|
+
X: "0",
|
|
18
|
+
Y: "1",
|
|
19
|
+
Z: "2"
|
|
20
|
+
};
|
|
21
|
+
const compact = (value) => clean(value, " -").toUpperCase();
|
|
22
|
+
const validate = (value) => {
|
|
23
|
+
const v = compact(value);
|
|
24
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "NIE must be 9 characters");
|
|
25
|
+
const replacement = PREFIX_MAP[v.charAt(0)];
|
|
26
|
+
if (replacement === void 0) return err("INVALID_FORMAT", "NIE must start with X, Y, or Z");
|
|
27
|
+
const digits = v.slice(1, 8);
|
|
28
|
+
if (!isdigits(digits)) return err("INVALID_FORMAT", "NIE must have 7 digits after prefix");
|
|
29
|
+
const letter = v.charAt(8);
|
|
30
|
+
const num = Number(replacement + digits);
|
|
31
|
+
if (letter !== "TRWAGMYFPDXBNJZSQVHLCKE".charAt(num % 23)) return err("INVALID_CHECKSUM", "NIE check letter does not match");
|
|
32
|
+
return {
|
|
33
|
+
valid: true,
|
|
34
|
+
compact: v
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
const format = (value) => compact(value);
|
|
38
|
+
/** Generate a random valid Spanish NIE. */
|
|
39
|
+
const generate = () => {
|
|
40
|
+
const prefixes = [
|
|
41
|
+
"X",
|
|
42
|
+
"Y",
|
|
43
|
+
"Z"
|
|
44
|
+
];
|
|
45
|
+
const vals = {
|
|
46
|
+
X: 0,
|
|
47
|
+
Y: 1,
|
|
48
|
+
Z: 2
|
|
49
|
+
};
|
|
50
|
+
const prefix = prefixes[randomInt(0, 2)];
|
|
51
|
+
const digits = randomDigits(7);
|
|
52
|
+
const num = vals[prefix] * 1e7 + Number(digits);
|
|
53
|
+
return prefix + digits + CHECK_LETTERS.charAt(num % 23);
|
|
54
|
+
};
|
|
55
|
+
/** Spanish Foreigner Identification Number. */
|
|
56
|
+
const nie = {
|
|
57
|
+
name: "Spanish Foreigner ID",
|
|
58
|
+
localName: "Número de Identidad de Extranjero",
|
|
59
|
+
abbreviation: "NIE",
|
|
60
|
+
aliases: [
|
|
61
|
+
"N.I.E.",
|
|
62
|
+
"NIE",
|
|
63
|
+
"número de identidad de extranjero"
|
|
64
|
+
],
|
|
65
|
+
candidatePattern: "[XYZ]-?\\d{7}-?[A-Z]",
|
|
66
|
+
country: "ES",
|
|
67
|
+
entityType: "person",
|
|
68
|
+
sourceUrl: "https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/nie/",
|
|
69
|
+
examples: ["X5253868R"],
|
|
70
|
+
compact,
|
|
71
|
+
format,
|
|
72
|
+
validate,
|
|
73
|
+
generate
|
|
74
|
+
};
|
|
75
|
+
//#endregion
|
|
76
|
+
export { compact, nie as default, format, generate, validate };
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=nie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nie.js","names":[],"sources":["../../src/es/nie.ts"],"sourcesContent":["/**\n * NIE (Número de Identidad de Extranjero).\n *\n * Spanish foreigner identification number. Starts\n * with X, Y, or Z, followed by 7 digits and a check\n * letter computed using the DNI algorithm.\n *\n * @see https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/nie/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\nimport { CHECK_LETTERS } from \"./dni\";\n\nconst PREFIX_MAP: Record<string, string> = {\n X: \"0\",\n Y: \"1\",\n Z: \"2\",\n};\n\nconst compact = (value: string): string =>\n clean(value, \" -\").toUpperCase();\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"NIE must be 9 characters\",\n );\n }\n\n const prefix = v.charAt(0);\n const replacement = PREFIX_MAP[prefix];\n if (replacement === undefined) {\n return err(\n \"INVALID_FORMAT\",\n \"NIE must start with X, Y, or Z\",\n );\n }\n\n const digits = v.slice(1, 8);\n if (!isdigits(digits)) {\n return err(\n \"INVALID_FORMAT\",\n \"NIE must have 7 digits after prefix\",\n );\n }\n\n const letter = v.charAt(8);\n const num = Number(replacement + digits);\n const expected = CHECK_LETTERS.charAt(num % 23);\n if (letter !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"NIE check letter does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Spanish NIE. */\nconst generate = (): string => {\n const prefixes = [\"X\", \"Y\", \"Z\"] as const;\n const vals: Record<string, number> = { X: 0, Y: 1, Z: 2 };\n const prefix = prefixes[randomInt(0, 2)]!;\n const digits = randomDigits(7);\n const num = vals[prefix]! * 10000000 + Number(digits);\n return prefix + digits + CHECK_LETTERS.charAt(num % 23);\n};\n\n/** Spanish Foreigner Identification Number. */\nconst nie: Validator = {\n name: \"Spanish Foreigner ID\",\n localName: \"Número de Identidad de Extranjero\",\n abbreviation: \"NIE\",\n aliases: [\n \"N.I.E.\",\n \"NIE\",\n \"número de identidad de extranjero\",\n ] as const,\n candidatePattern: \"[XYZ]-?\\\\d{7}-?[A-Z]\",\n country: \"ES\",\n entityType: \"person\",\n sourceUrl:\n \"https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/nie/\",\n examples: [\"X5253868R\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default nie;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,aAAqC;CACzC,GAAG;CACH,GAAG;CACH,GAAG;CACJ;AAED,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,aAAa;AAElC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,2BACD;CAIH,MAAM,cAAc,WADL,EAAE,OAAO,EAAE;AAE1B,KAAI,gBAAgB,KAAA,EAClB,QAAO,IACL,kBACA,iCACD;CAGH,MAAM,SAAS,EAAE,MAAM,GAAG,EAAE;AAC5B,KAAI,CAAC,SAAS,OAAO,CACnB,QAAO,IACL,kBACA,sCACD;CAGH,MAAM,SAAS,EAAE,OAAO,EAAE;CAC1B,MAAM,MAAM,OAAO,cAAc,OAAO;AAExC,KAAI,WAAA,0BAD2B,OAAO,MAAM,GAAG,CAE7C,QAAO,IACL,oBACA,kCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;CAC7B,MAAM,WAAW;EAAC;EAAK;EAAK;EAAI;CAChC,MAAM,OAA+B;EAAE,GAAG;EAAG,GAAG;EAAG,GAAG;EAAG;CACzD,MAAM,SAAS,SAAS,UAAU,GAAG,EAAE;CACvC,MAAM,SAAS,aAAa,EAAE;CAC9B,MAAM,MAAM,KAAK,UAAW,MAAW,OAAO,OAAO;AACrD,QAAO,SAAS,SAAS,cAAc,OAAO,MAAM,GAAG;;;AAIzD,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
|
package/dist/es/nss.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/es/nss.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Spanish NSS. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Spanish Social Security Number. */
|
|
11
|
+
declare const nss: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, nss as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=nss.d.ts.map
|