@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
package/dist/lei.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { clean } from "./_util/clean.js";
|
|
2
|
+
import { randomInt } from "./_util/generate.js";
|
|
3
|
+
import { err } from "./_util/result.js";
|
|
4
|
+
import { charValue, isalnum } from "./_util/strings.js";
|
|
5
|
+
import { mod97 } from "./_checksums/mod97.js";
|
|
6
|
+
//#region src/lei.ts
|
|
7
|
+
/**
|
|
8
|
+
* LEI (Legal Entity Identifier).
|
|
9
|
+
*
|
|
10
|
+
* ISO 17442. 20-character alphanumeric code
|
|
11
|
+
* identifying legal entities in financial
|
|
12
|
+
* transactions. Validated using ISO 7064
|
|
13
|
+
* Mod 97-10 (same as IBAN).
|
|
14
|
+
*
|
|
15
|
+
* @see https://www.gleif.org/
|
|
16
|
+
*/
|
|
17
|
+
const compact = (value) => clean(value, " -").toUpperCase();
|
|
18
|
+
const validate = (value) => {
|
|
19
|
+
const v = compact(value);
|
|
20
|
+
if (v.length !== 20) return err("INVALID_LENGTH", "LEI must be exactly 20 characters");
|
|
21
|
+
if (!isalnum(v)) return err("INVALID_FORMAT", "LEI must contain only letters and digits");
|
|
22
|
+
const checkPart = v.slice(18);
|
|
23
|
+
if (!/^\d{2}$/.test(checkPart)) return err("INVALID_FORMAT", "LEI check digits must be numeric");
|
|
24
|
+
let numeric = "";
|
|
25
|
+
for (let i = 0; i < v.length; i++) {
|
|
26
|
+
const ch = v[i];
|
|
27
|
+
if (ch !== void 0) numeric += String(charValue(ch));
|
|
28
|
+
}
|
|
29
|
+
if (mod97(numeric) !== 1) return err("INVALID_CHECKSUM", "LEI check digits are incorrect");
|
|
30
|
+
return {
|
|
31
|
+
valid: true,
|
|
32
|
+
compact: v
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
const format = (value) => {
|
|
36
|
+
const v = compact(value);
|
|
37
|
+
return `${v.slice(0, 4)} ${v.slice(4, 8)} ${v.slice(8, 12)} ${v.slice(12, 16)} ${v.slice(16)}`;
|
|
38
|
+
};
|
|
39
|
+
/** Generate a random valid LEI. */
|
|
40
|
+
const generate = () => {
|
|
41
|
+
for (;;) {
|
|
42
|
+
let base = "";
|
|
43
|
+
for (let i = 0; i < 18; i++) base += String(randomInt(0, 9));
|
|
44
|
+
for (let cd = 0; cd < 100; cd++) {
|
|
45
|
+
const c = base + String(cd).padStart(2, "0");
|
|
46
|
+
if (validate(c).valid) return c;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/** Legal Entity Identifier. */
|
|
51
|
+
const lei = {
|
|
52
|
+
name: "Legal Entity Identifier",
|
|
53
|
+
localName: "Legal Entity Identifier",
|
|
54
|
+
abbreviation: "LEI",
|
|
55
|
+
aliases: ["LEI", "Legal Entity Identifier"],
|
|
56
|
+
candidatePattern: "[A-Z0-9]{18}\\d{2}",
|
|
57
|
+
entityType: "company",
|
|
58
|
+
sourceUrl: "https://www.gleif.org/",
|
|
59
|
+
examples: ["5493006MHB84DD0ZWV18"],
|
|
60
|
+
compact,
|
|
61
|
+
format,
|
|
62
|
+
validate,
|
|
63
|
+
generate
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
|
+
export { compact, lei as default, format, generate, validate };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=lei.js.map
|
package/dist/lei.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lei.js","names":[],"sources":["../src/lei.ts"],"sourcesContent":["/**\n * LEI (Legal Entity Identifier).\n *\n * ISO 17442. 20-character alphanumeric code\n * identifying legal entities in financial\n * transactions. Validated using ISO 7064\n * Mod 97-10 (same as IBAN).\n *\n * @see https://www.gleif.org/\n */\n\nimport { mod97 } from \"#checksums/mod97\";\nimport { clean } from \"#util/clean\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { charValue, isalnum } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"./types\";\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 !== 20) {\n return err(\n \"INVALID_LENGTH\",\n \"LEI must be exactly 20 characters\",\n );\n }\n if (!isalnum(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"LEI must contain only letters and digits\",\n );\n }\n // Characters 5-18 must be alphanumeric (entity)\n // Characters 19-20 are check digits (numeric)\n const checkPart = v.slice(18);\n if (!/^\\d{2}$/.test(checkPart)) {\n return err(\n \"INVALID_FORMAT\",\n \"LEI check digits must be numeric\",\n );\n }\n // Convert to numeric and validate mod 97\n let numeric = \"\";\n for (let i = 0; i < v.length; i++) {\n const ch = v[i];\n if (ch !== undefined) {\n numeric += String(charValue(ch));\n }\n }\n if (mod97(numeric) !== 1) {\n return err(\n \"INVALID_CHECKSUM\",\n \"LEI check digits are incorrect\",\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, 4)} ${v.slice(4, 8)} ${v.slice(8, 12)} ${v.slice(12, 16)} ${v.slice(16)}`;\n};\n\n/** Generate a random valid LEI. */\nconst generate = (): string => {\n for (;;) {\n let base = \"\";\n for (let i = 0; i < 18; i++)\n base += String(randomInt(0, 9));\n for (let cd = 0; cd < 100; cd++) {\n const c = base + String(cd).padStart(2, \"0\");\n if (validate(c).valid) return c;\n }\n }\n};\n\n/** Legal Entity Identifier. */\nconst lei: Validator = {\n name: \"Legal Entity Identifier\",\n localName: \"Legal Entity Identifier\",\n abbreviation: \"LEI\",\n aliases: [\"LEI\", \"Legal Entity Identifier\"] as const,\n candidatePattern: \"[A-Z0-9]{18}\\\\d{2}\",\n entityType: \"company\",\n sourceUrl: \"https://www.gleif.org/\",\n examples: [\"5493006MHB84DD0ZWV18\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default lei;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,aAAa;AAElC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,oCACD;AAEH,KAAI,CAAC,QAAQ,EAAE,CACb,QAAO,IACL,kBACA,2CACD;CAIH,MAAM,YAAY,EAAE,MAAM,GAAG;AAC7B,KAAI,CAAC,UAAU,KAAK,UAAU,CAC5B,QAAO,IACL,kBACA,mCACD;CAGH,IAAI,UAAU;AACd,MAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;EACjC,MAAM,KAAK,EAAE;AACb,MAAI,OAAO,KAAA,EACT,YAAW,OAAO,UAAU,GAAG,CAAC;;AAGpC,KAAI,MAAM,QAAQ,KAAK,EACrB,QAAO,IACL,oBACA,iCACD;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,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;;;AAI9F,MAAM,iBAAyB;AAC7B,UAAS;EACP,IAAI,OAAO;AACX,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,SAAQ,OAAO,UAAU,GAAG,EAAE,CAAC;AACjC,OAAK,IAAI,KAAK,GAAG,KAAK,KAAK,MAAM;GAC/B,MAAM,IAAI,OAAO,OAAO,GAAG,CAAC,SAAS,GAAG,IAAI;AAC5C,OAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;;AAMpC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,0BAA0B;CAC3C,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,uBAAuB;CAClC;CACA;CACA;CACA;CACD"}
|
package/dist/li/mod.d.ts
ADDED
package/dist/li/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import peid from "./peid.js";
|
|
3
|
+
//#region src/li/mod.ts
|
|
4
|
+
var li_exports = /* @__PURE__ */ __exportAll({ peid: () => peid });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { li_exports, peid };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/li/mod.ts"],"sourcesContent":["export { default as peid } from \"./peid\";\n"],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/li/peid.d.ts
|
|
4
|
+
/** Generate a random valid Liechtenstein PEID. */
|
|
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
|
+
/** Liechtenstein Person Identification Number. */
|
|
10
|
+
declare const peid: Validator;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { compact, peid as default, format, generate, validate };
|
|
13
|
+
//# sourceMappingURL=peid.d.ts.map
|
package/dist/li/peid.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
//#region src/li/peid.ts
|
|
6
|
+
/**
|
|
7
|
+
* PEID (Personenidentifikationsnummer).
|
|
8
|
+
*
|
|
9
|
+
* Liechtenstein tax code for individuals and entities.
|
|
10
|
+
* Numeric code of 4 to 12 digits, with leading zeros
|
|
11
|
+
* stripped during compaction.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.oera.li/
|
|
14
|
+
*/
|
|
15
|
+
/** Generate a random valid Liechtenstein PEID. */
|
|
16
|
+
const generate = () => {
|
|
17
|
+
const len = randomInt(4, 12);
|
|
18
|
+
return String(randomInt(1, 9)) + randomDigits(len - 1);
|
|
19
|
+
};
|
|
20
|
+
const compact = (value) => clean(value, " .").replace(/^0+/, "");
|
|
21
|
+
const validate = (value) => {
|
|
22
|
+
const v = compact(value);
|
|
23
|
+
if (v.length < 4 || v.length > 12) return err("INVALID_LENGTH", "Liechtenstein PEID must be 4 to 12 digits");
|
|
24
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Liechtenstein PEID must contain only digits");
|
|
25
|
+
return {
|
|
26
|
+
valid: true,
|
|
27
|
+
compact: v
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const format = (value) => compact(value);
|
|
31
|
+
/** Liechtenstein Person Identification Number. */
|
|
32
|
+
const peid = {
|
|
33
|
+
name: "Liechtenstein Person Identification Number",
|
|
34
|
+
localName: "Personenidentifikationsnummer",
|
|
35
|
+
abbreviation: "PEID",
|
|
36
|
+
aliases: ["PEID", "Personenidentifikation"],
|
|
37
|
+
candidatePattern: "\\d{6}",
|
|
38
|
+
country: "LI",
|
|
39
|
+
entityType: "any",
|
|
40
|
+
lengths: [
|
|
41
|
+
4,
|
|
42
|
+
5,
|
|
43
|
+
6,
|
|
44
|
+
7,
|
|
45
|
+
8,
|
|
46
|
+
9,
|
|
47
|
+
10,
|
|
48
|
+
11,
|
|
49
|
+
12
|
|
50
|
+
],
|
|
51
|
+
sourceUrl: "https://www.oera.li/",
|
|
52
|
+
examples: ["1234567"],
|
|
53
|
+
compact,
|
|
54
|
+
format,
|
|
55
|
+
validate,
|
|
56
|
+
generate
|
|
57
|
+
};
|
|
58
|
+
//#endregion
|
|
59
|
+
export { compact, peid as default, format, generate, validate };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=peid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peid.js","names":[],"sources":["../../src/li/peid.ts"],"sourcesContent":["/** Generate a random valid Liechtenstein PEID. */\nconst generate = (): string => {\n const len = randomInt(4, 12);\n const first = String(randomInt(1, 9));\n return first + randomDigits(len - 1);\n};\n\n/**\n * PEID (Personenidentifikationsnummer).\n *\n * Liechtenstein tax code for individuals and entities.\n * Numeric code of 4 to 12 digits, with leading zeros\n * stripped during compaction.\n *\n * @see https://www.oera.li/\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\";\n\nconst compact = (value: string): string =>\n clean(value, \" .\").replace(/^0+/, \"\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length < 4 || v.length > 12) {\n return err(\n \"INVALID_LENGTH\",\n \"Liechtenstein PEID must be 4 to 12 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Liechtenstein PEID must contain only digits\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Liechtenstein Person Identification Number. */\nconst peid: Validator = {\n name: \"Liechtenstein Person Identification Number\",\n localName: \"Personenidentifikationsnummer\",\n abbreviation: \"PEID\",\n aliases: [\"PEID\", \"Personenidentifikation\"] as const,\n candidatePattern: \"\\\\d{6}\",\n country: \"LI\",\n entityType: \"any\",\n lengths: [4, 5, 6, 7, 8, 9, 10, 11, 12] as const,\n sourceUrl: \"https://www.oera.li/\",\n examples: [\"1234567\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default peid;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AACA,MAAM,iBAAyB;CAC7B,MAAM,MAAM,UAAU,GAAG,GAAG;AAE5B,QADc,OAAO,UAAU,GAAG,EAAE,CAAC,GACtB,aAAa,MAAM,EAAE;;AAoBtC,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,QAAQ,OAAO,GAAG;AAEvC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,SAAS,KAAK,EAAE,SAAS,GAC7B,QAAO,IACL,kBACA,4CACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,8CACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,OAAkB;CACtB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,QAAQ,yBAAyB;CAC3C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;CACvC,WAAW;CACX,UAAU,CAAC,UAAU;CACrB;CACA;CACA;CACA;CACD"}
|
package/dist/lk/mod.d.ts
ADDED
package/dist/lk/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import nic from "./nic.js";
|
|
3
|
+
//#region src/lk/mod.ts
|
|
4
|
+
var lk_exports = /* @__PURE__ */ __exportAll({ nic: () => nic });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { lk_exports, nic };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/lk/mod.ts"],"sourcesContent":["export { default as nic } from \"./nic\";\n"],"mappings":""}
|
package/dist/lk/nic.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ParsedPersonId, ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/lk/nic.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
|
+
/**
|
|
9
|
+
* Extract birth date and gender from an NIC.
|
|
10
|
+
* Returns null if the value is not valid.
|
|
11
|
+
*/
|
|
12
|
+
declare const parse: (value: string) => ParsedPersonId | null;
|
|
13
|
+
/** Sri Lankan National Identity Card. */
|
|
14
|
+
declare const nic: Validator;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { compact, nic as default, format, parse, validate };
|
|
17
|
+
//# sourceMappingURL=nic.d.ts.map
|
package/dist/lk/nic.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { err } from "../_util/result.js";
|
|
3
|
+
import { isdigits } from "../_util/strings.js";
|
|
4
|
+
import { isValidDate } from "../_util/date.js";
|
|
5
|
+
//#region src/lk/nic.ts
|
|
6
|
+
/**
|
|
7
|
+
* NIC (National Identity Card, ජාතික හැඳුනුම්පත).
|
|
8
|
+
*
|
|
9
|
+
* Sri Lankan personal identity number. Two formats:
|
|
10
|
+
* Old (pre-2016): 9 digits + V or X (10 chars)
|
|
11
|
+
* New (2016+): 12 digits
|
|
12
|
+
*
|
|
13
|
+
* Both encode birth date (day-of-year), gender, a
|
|
14
|
+
* serial number, and a check digit.
|
|
15
|
+
*
|
|
16
|
+
* @see https://en.wikipedia.org/wiki/National_identification_number#Sri_Lanka
|
|
17
|
+
* @see https://drp.gov.lk/Templates/Artical%20-%20English%20new%20number.html
|
|
18
|
+
*/
|
|
19
|
+
/** Old format: 9 digits + V or X (case-insensitive). */
|
|
20
|
+
const OLD_RE = /^\d{9}[VvXx]$/;
|
|
21
|
+
/** New format: exactly 12 digits. */
|
|
22
|
+
const NEW_RE = /^\d{12}$/;
|
|
23
|
+
const compact = (value) => clean(value, " -").toUpperCase();
|
|
24
|
+
/**
|
|
25
|
+
* Convert an old-format NIC to the 12-digit new
|
|
26
|
+
* format for uniform validation.
|
|
27
|
+
*
|
|
28
|
+
* Old: YY DDD SSS C V/X (10 chars)
|
|
29
|
+
* New: 19YY DDD 0SSS C (12 digits)
|
|
30
|
+
*/
|
|
31
|
+
const toNewFormat = (v) => {
|
|
32
|
+
return `19${v.slice(0, 2)}${v.slice(2, 5)}0${v.slice(5, 8)}${v[8]}`;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Checksum weights for the first 11 digits.
|
|
36
|
+
* Algorithm: weighted sum mod 11, then mod 10
|
|
37
|
+
* if >= 10.
|
|
38
|
+
*/
|
|
39
|
+
const CHECK_WEIGHTS = [
|
|
40
|
+
8,
|
|
41
|
+
4,
|
|
42
|
+
3,
|
|
43
|
+
2,
|
|
44
|
+
7,
|
|
45
|
+
6,
|
|
46
|
+
5,
|
|
47
|
+
7,
|
|
48
|
+
4,
|
|
49
|
+
3,
|
|
50
|
+
2
|
|
51
|
+
];
|
|
52
|
+
const checkDigit = (digits) => {
|
|
53
|
+
let sum = 0;
|
|
54
|
+
for (let i = 0; i < 11; i++) sum += (CHECK_WEIGHTS[i] ?? 0) * Number(digits.charAt(i));
|
|
55
|
+
const d = 11 - sum % 11;
|
|
56
|
+
return d > 9 ? d % 10 : d;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Resolve birth date and gender from the 12-digit
|
|
60
|
+
* normalised form (YYYY DDD ...).
|
|
61
|
+
*
|
|
62
|
+
* Day-of-year encoding:
|
|
63
|
+
* Male: 1–366
|
|
64
|
+
* Female: 501–866 (subtract 500)
|
|
65
|
+
*/
|
|
66
|
+
const resolveBirthInfo = (v) => {
|
|
67
|
+
const year = Number(v.slice(0, 4));
|
|
68
|
+
let days = Number(v.slice(4, 7));
|
|
69
|
+
const gender = days > 500 ? "female" : "male";
|
|
70
|
+
if (days > 500) days -= 500;
|
|
71
|
+
if (days < 1 || days > 366) return null;
|
|
72
|
+
const d = new Date(year, 0, days);
|
|
73
|
+
const month = d.getMonth() + 1;
|
|
74
|
+
const dayOfMonth = d.getDate();
|
|
75
|
+
if (!isValidDate(year, month, dayOfMonth)) return null;
|
|
76
|
+
if (d.getFullYear() !== year) return null;
|
|
77
|
+
return {
|
|
78
|
+
year,
|
|
79
|
+
month,
|
|
80
|
+
day: dayOfMonth,
|
|
81
|
+
gender
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
const validate = (value) => {
|
|
85
|
+
const v = compact(value);
|
|
86
|
+
const isOld = OLD_RE.test(v);
|
|
87
|
+
const isNew = NEW_RE.test(v);
|
|
88
|
+
if (!isOld && !isNew) {
|
|
89
|
+
if (v.length !== 10 && v.length !== 12) return err("INVALID_LENGTH", "NIC must be 10 (old) or 12 (new) characters");
|
|
90
|
+
return err("INVALID_FORMAT", "NIC must be 9 digits + V/X (old) or 12 digits (new)");
|
|
91
|
+
}
|
|
92
|
+
const normalized = isOld ? toNewFormat(v) : v;
|
|
93
|
+
if (!isdigits(normalized)) return err("INVALID_FORMAT", "NIC contains invalid characters");
|
|
94
|
+
if (resolveBirthInfo(normalized) === null) return err("INVALID_COMPONENT", "NIC contains an invalid date of birth");
|
|
95
|
+
if (checkDigit(normalized.slice(0, 11)) !== Number(normalized[11])) return err("INVALID_CHECKSUM", "NIC check digit does not match");
|
|
96
|
+
return {
|
|
97
|
+
valid: true,
|
|
98
|
+
compact: v
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
const format = (value) => {
|
|
102
|
+
return compact(value);
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Extract birth date and gender from an NIC.
|
|
106
|
+
* Returns null if the value is not valid.
|
|
107
|
+
*/
|
|
108
|
+
const parse = (value) => {
|
|
109
|
+
const result = validate(value);
|
|
110
|
+
if (!result.valid) return null;
|
|
111
|
+
const v = result.compact;
|
|
112
|
+
const info = resolveBirthInfo(OLD_RE.test(v) ? toNewFormat(v) : v);
|
|
113
|
+
if (info === null) return null;
|
|
114
|
+
return {
|
|
115
|
+
birthDate: new Date(info.year, info.month - 1, info.day),
|
|
116
|
+
gender: info.gender
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
/** Sri Lankan National Identity Card. */
|
|
120
|
+
const nic = {
|
|
121
|
+
name: "National Identity Card",
|
|
122
|
+
localName: "ජාතික හැඳුනුම්පත",
|
|
123
|
+
abbreviation: "NIC",
|
|
124
|
+
aliases: ["NIC", "ජාතික හැඳුනුම්පත"],
|
|
125
|
+
candidatePattern: "\\d{9}[VXvx]|\\d{12}",
|
|
126
|
+
country: "LK",
|
|
127
|
+
entityType: "person",
|
|
128
|
+
description: "Sri Lankan personal identity number issued to all citizens",
|
|
129
|
+
sourceUrl: "https://en.wikipedia.org/wiki/National_identification_number#Sri_Lanka",
|
|
130
|
+
lengths: [10, 12],
|
|
131
|
+
examples: ["197819202757", "862348753V"],
|
|
132
|
+
compact,
|
|
133
|
+
format,
|
|
134
|
+
validate
|
|
135
|
+
};
|
|
136
|
+
//#endregion
|
|
137
|
+
export { compact, nic as default, format, parse, validate };
|
|
138
|
+
|
|
139
|
+
//# sourceMappingURL=nic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nic.js","names":[],"sources":["../../src/lk/nic.ts"],"sourcesContent":["/**\n * NIC (National Identity Card, ජාතික හැඳුනුම්පත).\n *\n * Sri Lankan personal identity number. Two formats:\n * Old (pre-2016): 9 digits + V or X (10 chars)\n * New (2016+): 12 digits\n *\n * Both encode birth date (day-of-year), gender, a\n * serial number, and a check digit.\n *\n * @see https://en.wikipedia.org/wiki/National_identification_number#Sri_Lanka\n * @see https://drp.gov.lk/Templates/Artical%20-%20English%20new%20number.html\n */\n\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n Validator,\n} from \"../types\";\n\n/** Old format: 9 digits + V or X (case-insensitive). */\nconst OLD_RE = /^\\d{9}[VvXx]$/;\n\n/** New format: exactly 12 digits. */\nconst NEW_RE = /^\\d{12}$/;\n\nconst compact = (value: string): string =>\n clean(value, \" -\").toUpperCase();\n\n/**\n * Convert an old-format NIC to the 12-digit new\n * format for uniform validation.\n *\n * Old: YY DDD SSS C V/X (10 chars)\n * New: 19YY DDD 0SSS C (12 digits)\n */\nconst toNewFormat = (v: string): string => {\n const yy = v.slice(0, 2);\n const ddd = v.slice(2, 5);\n const sss = v.slice(5, 8);\n const check = v[8];\n return `19${yy}${ddd}0${sss}${check}`;\n};\n\n/**\n * Checksum weights for the first 11 digits.\n * Algorithm: weighted sum mod 11, then mod 10\n * if >= 10.\n */\nconst CHECK_WEIGHTS = [\n 8, 4, 3, 2, 7, 6, 5, 7, 4, 3, 2,\n] as const;\n\nconst checkDigit = (digits: string): number => {\n let sum = 0;\n for (let i = 0; i < 11; i++) {\n sum +=\n (CHECK_WEIGHTS[i] ?? 0) * Number(digits.charAt(i));\n }\n const d = 11 - (sum % 11);\n return d > 9 ? d % 10 : d;\n};\n\n/**\n * Resolve birth date and gender from the 12-digit\n * normalised form (YYYY DDD ...).\n *\n * Day-of-year encoding:\n * Male: 1–366\n * Female: 501–866 (subtract 500)\n */\nconst resolveBirthInfo = (\n v: string,\n): {\n year: number;\n month: number;\n day: number;\n gender: \"male\" | \"female\";\n} | null => {\n const year = Number(v.slice(0, 4));\n let days = Number(v.slice(4, 7));\n\n const gender: \"male\" | \"female\" =\n days > 500 ? \"female\" : \"male\";\n if (days > 500) days -= 500;\n\n if (days < 1 || days > 366) return null;\n\n // Convert day-of-year to month/day via Date\n const d = new Date(year, 0, days);\n const month = d.getMonth() + 1;\n const dayOfMonth = d.getDate();\n\n if (!isValidDate(year, month, dayOfMonth)) {\n return null;\n }\n\n // Guard against day 366 in non-leap years\n if (d.getFullYear() !== year) return null;\n\n return { year, month, day: dayOfMonth, gender };\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n const isOld = OLD_RE.test(v);\n const isNew = NEW_RE.test(v);\n\n if (!isOld && !isNew) {\n if (v.length !== 10 && v.length !== 12) {\n return err(\n \"INVALID_LENGTH\",\n \"NIC must be 10 (old) or 12 (new) characters\",\n );\n }\n return err(\n \"INVALID_FORMAT\",\n \"NIC must be 9 digits + V/X (old) or\" +\n \" 12 digits (new)\",\n );\n }\n\n const normalized = isOld ? toNewFormat(v) : v;\n\n if (!isdigits(normalized)) {\n return err(\n \"INVALID_FORMAT\",\n \"NIC contains invalid characters\",\n );\n }\n\n if (resolveBirthInfo(normalized) === null) {\n return err(\n \"INVALID_COMPONENT\",\n \"NIC contains an invalid date of birth\",\n );\n }\n\n const expected = checkDigit(normalized.slice(0, 11));\n if (expected !== Number(normalized[11])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"NIC check digit does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n // Old format: YYDDDSSSXV → no standard separator\n // New format: YYYYDDDSSSSC → no standard separator\n return v;\n};\n\n/**\n * Extract birth date and gender from an NIC.\n * Returns null if the value is not valid.\n */\nconst parse = (value: string): ParsedPersonId | null => {\n const result = validate(value);\n if (!result.valid) return null;\n\n const v = result.compact;\n const isOld = OLD_RE.test(v);\n const normalized = isOld ? toNewFormat(v) : v;\n\n const info = resolveBirthInfo(normalized);\n if (info === null) return null;\n\n return {\n birthDate: new Date(\n info.year,\n info.month - 1,\n info.day,\n ),\n gender: info.gender,\n };\n};\n\n/** Sri Lankan National Identity Card. */\nconst nic: Validator = {\n name: \"National Identity Card\",\n localName: \"ජාතික හැඳුනුම්පත\",\n abbreviation: \"NIC\",\n aliases: [\"NIC\", \"ජාතික හැඳුනුම්පත\"] as const,\n candidatePattern: \"\\\\d{9}[VXvx]|\\\\d{12}\",\n country: \"LK\",\n entityType: \"person\",\n description:\n \"Sri Lankan personal identity number issued to\" +\n \" all citizens\",\n sourceUrl:\n \"https://en.wikipedia.org/wiki/\" +\n \"National_identification_number#Sri_Lanka\",\n lengths: [10, 12] as const,\n examples: [\"197819202757\", \"862348753V\"] as const,\n compact,\n format,\n validate,\n};\n\nexport default nic;\nexport { compact, format, parse, validate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA0BA,MAAM,SAAS;;AAGf,MAAM,SAAS;AAEf,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,aAAa;;;;;;;;AASlC,MAAM,eAAe,MAAsB;AAKzC,QAAO,KAJI,EAAE,MAAM,GAAG,EAAE,GACZ,EAAE,MAAM,GAAG,EAAE,CAGJ,GAFT,EAAE,MAAM,GAAG,EAAE,GACX,EAAE;;;;;;;AASlB,MAAM,gBAAgB;CACpB;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAC/B;AAED,MAAM,cAAc,WAA2B;CAC7C,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,SACG,cAAc,MAAM,KAAK,OAAO,OAAO,OAAO,EAAE,CAAC;CAEtD,MAAM,IAAI,KAAM,MAAM;AACtB,QAAO,IAAI,IAAI,IAAI,KAAK;;;;;;;;;;AAW1B,MAAM,oBACJ,MAMU;CACV,MAAM,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAClC,IAAI,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAEhC,MAAM,SACJ,OAAO,MAAM,WAAW;AAC1B,KAAI,OAAO,IAAK,SAAQ;AAExB,KAAI,OAAO,KAAK,OAAO,IAAK,QAAO;CAGnC,MAAM,IAAI,IAAI,KAAK,MAAM,GAAG,KAAK;CACjC,MAAM,QAAQ,EAAE,UAAU,GAAG;CAC7B,MAAM,aAAa,EAAE,SAAS;AAE9B,KAAI,CAAC,YAAY,MAAM,OAAO,WAAW,CACvC,QAAO;AAIT,KAAI,EAAE,aAAa,KAAK,KAAM,QAAO;AAErC,QAAO;EAAE;EAAM;EAAO,KAAK;EAAY;EAAQ;;AAGjD,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;CACxB,MAAM,QAAQ,OAAO,KAAK,EAAE;CAC5B,MAAM,QAAQ,OAAO,KAAK,EAAE;AAE5B,KAAI,CAAC,SAAS,CAAC,OAAO;AACpB,MAAI,EAAE,WAAW,MAAM,EAAE,WAAW,GAClC,QAAO,IACL,kBACA,8CACD;AAEH,SAAO,IACL,kBACA,sDAED;;CAGH,MAAM,aAAa,QAAQ,YAAY,EAAE,GAAG;AAE5C,KAAI,CAAC,SAAS,WAAW,CACvB,QAAO,IACL,kBACA,kCACD;AAGH,KAAI,iBAAiB,WAAW,KAAK,KACnC,QAAO,IACL,qBACA,wCACD;AAIH,KADiB,WAAW,WAAW,MAAM,GAAG,GAAG,CAAC,KACnC,OAAO,WAAW,IAAI,CACrC,QAAO,IACL,oBACA,iCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;AAIxC,QAHU,QAAQ,MAAM;;;;;;AAU1B,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,MAAM;AAC9B,KAAI,CAAC,OAAO,MAAO,QAAO;CAE1B,MAAM,IAAI,OAAO;CAIjB,MAAM,OAAO,iBAHC,OAAO,KAAK,EAAE,GACD,YAAY,EAAE,GAAG,EAEH;AACzC,KAAI,SAAS,KAAM,QAAO;AAE1B,QAAO;EACL,WAAW,IAAI,KACb,KAAK,MACL,KAAK,QAAQ,GACb,KAAK,IACN;EACD,QAAQ,KAAK;EACd;;;AAIH,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,mBAAmB;CACpC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,aACE;CAEF,WACE;CAEF,SAAS,CAAC,IAAI,GAAG;CACjB,UAAU,CAAC,gBAAgB,aAAa;CACxC;CACA;CACA;CACD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/lt/asmens.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 Lithuanian personal code. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Lithuanian Personal Code. */
|
|
11
|
+
declare const asmens: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, asmens as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=asmens.d.ts.map
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { isValidDate } from "../_util/date.js";
|
|
6
|
+
import { twoPassCheck } from "../ee/ik.js";
|
|
7
|
+
//#region src/lt/asmens.ts
|
|
8
|
+
/**
|
|
9
|
+
* Asmens kodas (Personal Code).
|
|
10
|
+
*
|
|
11
|
+
* Lithuanian personal identification number. 11 digits
|
|
12
|
+
* with the same structure as the Estonian Isikukood:
|
|
13
|
+
* gender/century digit, YYMMDD, 3-digit serial, and
|
|
14
|
+
* a two-pass weighted checksum.
|
|
15
|
+
*
|
|
16
|
+
* @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/lithuania-tin.pdf
|
|
17
|
+
* @see https://www.registrucentras.lt/
|
|
18
|
+
*/
|
|
19
|
+
const compact = (value) => clean(value, " -");
|
|
20
|
+
const validate = (value) => {
|
|
21
|
+
const v = compact(value);
|
|
22
|
+
if (v.length !== 11) return err("INVALID_LENGTH", "Asmens kodas must be exactly 11 digits");
|
|
23
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Asmens kodas must contain only digits");
|
|
24
|
+
const g = Number(v[0]);
|
|
25
|
+
if (g < 1 || g > 9) return err("INVALID_COMPONENT", "Asmens kodas gender/century digit is invalid");
|
|
26
|
+
if (g !== 9) {
|
|
27
|
+
const century = {
|
|
28
|
+
1: 1800,
|
|
29
|
+
2: 1800,
|
|
30
|
+
3: 1900,
|
|
31
|
+
4: 1900,
|
|
32
|
+
5: 2e3,
|
|
33
|
+
6: 2e3,
|
|
34
|
+
7: 2100,
|
|
35
|
+
8: 2100
|
|
36
|
+
}[g] ?? 1900;
|
|
37
|
+
const yy = Number(v.slice(1, 3));
|
|
38
|
+
const mm = Number(v.slice(3, 5));
|
|
39
|
+
const dd = Number(v.slice(5, 7));
|
|
40
|
+
if (!isValidDate(century + yy, mm, dd)) return err("INVALID_COMPONENT", "Asmens kodas contains an invalid date");
|
|
41
|
+
}
|
|
42
|
+
if (twoPassCheck(v.slice(0, 10)) !== Number(v[10])) return err("INVALID_CHECKSUM", "Asmens kodas check digit does not match");
|
|
43
|
+
return {
|
|
44
|
+
valid: true,
|
|
45
|
+
compact: v
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
const format = (value) => compact(value);
|
|
49
|
+
/** Generate a random valid Lithuanian personal code. */
|
|
50
|
+
const generate = () => {
|
|
51
|
+
for (;;) {
|
|
52
|
+
const g = String(randomInt(3, 6));
|
|
53
|
+
const yy = String(randomInt(0, 99)).padStart(2, "0");
|
|
54
|
+
const mm = String(randomInt(1, 12)).padStart(2, "0");
|
|
55
|
+
const dd = String(randomInt(1, 28)).padStart(2, "0");
|
|
56
|
+
const s = String(randomInt(0, 999)).padStart(3, "0");
|
|
57
|
+
const payload = g + yy + mm + dd + s;
|
|
58
|
+
const c = payload + String(twoPassCheck(payload));
|
|
59
|
+
if (validate(c).valid) return c;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/** Lithuanian Personal Code. */
|
|
63
|
+
const asmens = {
|
|
64
|
+
name: "Lithuanian Personal ID",
|
|
65
|
+
localName: "Asmens kodas",
|
|
66
|
+
abbreviation: "AK",
|
|
67
|
+
aliases: ["asmens kodas", "AK"],
|
|
68
|
+
candidatePattern: "[3-6]\\d{10}",
|
|
69
|
+
country: "LT",
|
|
70
|
+
entityType: "person",
|
|
71
|
+
sourceUrl: "https://www.registrucentras.lt/",
|
|
72
|
+
examples: ["33309240064"],
|
|
73
|
+
compact,
|
|
74
|
+
format,
|
|
75
|
+
validate,
|
|
76
|
+
generate
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
export { compact, asmens as default, format, generate, validate };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=asmens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asmens.js","names":[],"sources":["../../src/lt/asmens.ts"],"sourcesContent":["/**\n * Asmens kodas (Personal Code).\n *\n * Lithuanian personal identification number. 11 digits\n * with the same structure as the Estonian Isikukood:\n * gender/century digit, YYMMDD, 3-digit serial, and\n * a two-pass weighted checksum.\n *\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/lithuania-tin.pdf\n * @see https://www.registrucentras.lt/\n */\n\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport { twoPassCheck } from \"../ee/ik\";\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Asmens kodas must be exactly 11 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Asmens kodas must contain only digits\",\n );\n }\n\n const g = Number(v[0]);\n if (g < 1 || g > 9) {\n return err(\n \"INVALID_COMPONENT\",\n \"Asmens kodas gender/century digit is invalid\",\n );\n }\n\n // Digit 9 indicates a special case where the birth\n // date is not encoded; skip date validation.\n if (g !== 9) {\n const centuryMap: Record<number, number> = {\n 1: 1800,\n 2: 1800,\n 3: 1900,\n 4: 1900,\n 5: 2000,\n 6: 2000,\n 7: 2100,\n 8: 2100,\n };\n const century = centuryMap[g] ?? 1900;\n const yy = Number(v.slice(1, 3));\n const mm = Number(v.slice(3, 5));\n const dd = Number(v.slice(5, 7));\n const year = century + yy;\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Asmens kodas contains an invalid date\",\n );\n }\n }\n\n const check = twoPassCheck(v.slice(0, 10));\n if (check !== Number(v[10])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Asmens kodas check digit 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 Lithuanian personal code. */\nconst generate = (): string => {\n for (;;) {\n const g = String(randomInt(3, 6));\n const yy = String(randomInt(0, 99)).padStart(2, \"0\");\n const mm = String(randomInt(1, 12)).padStart(2, \"0\");\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const s = String(randomInt(0, 999)).padStart(3, \"0\");\n const payload = g + yy + mm + dd + s;\n const c = payload + String(twoPassCheck(payload));\n if (validate(c).valid) return c;\n }\n};\n\n/** Lithuanian Personal Code. */\nconst asmens: Validator = {\n name: \"Lithuanian Personal ID\",\n localName: \"Asmens kodas\",\n abbreviation: \"AK\",\n aliases: [\"asmens kodas\", \"AK\"] as const,\n candidatePattern: \"[3-6]\\\\d{10}\",\n country: \"LT\",\n entityType: \"person\",\n sourceUrl: \"https://www.registrucentras.lt/\",\n examples: [\"33309240064\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default asmens;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,yCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,wCACD;CAGH,MAAM,IAAI,OAAO,EAAE,GAAG;AACtB,KAAI,IAAI,KAAK,IAAI,EACf,QAAO,IACL,qBACA,+CACD;AAKH,KAAI,MAAM,GAAG;EAWX,MAAM,UAVqC;GACzC,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACJ,CAC0B,MAAM;EACjC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;EAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;EAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAGhC,MAAI,CAAC,YAFQ,UAAU,IAEA,IAAI,GAAG,CAC5B,QAAO,IACL,qBACA,wCACD;;AAKL,KADc,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,KAC5B,OAAO,EAAE,IAAI,CACzB,QAAO,IACL,oBACA,0CACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC;EACjC,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,IAAI,OAAO,UAAU,GAAG,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,UAAU,IAAI,KAAK,KAAK,KAAK;EACnC,MAAM,IAAI,UAAU,OAAO,aAAa,QAAQ,CAAC;AACjD,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,SAAoB;CACxB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,gBAAgB,KAAK;CAC/B,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,cAAc;CACzB;CACA;CACA;CACA;CACD"}
|
package/dist/lt/mod.d.ts
ADDED
package/dist/lt/mod.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import vat from "./vat.js";
|
|
3
|
+
import asmens from "./asmens.js";
|
|
4
|
+
//#region src/lt/mod.ts
|
|
5
|
+
var lt_exports = /* @__PURE__ */ __exportAll({
|
|
6
|
+
asmens: () => asmens,
|
|
7
|
+
vat: () => vat
|
|
8
|
+
});
|
|
9
|
+
//#endregion
|
|
10
|
+
export { asmens, lt_exports, vat };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/lt/mod.ts"],"sourcesContent":["export { default as asmens } from \"./asmens\";\nexport { default as vat } from \"./vat\";\n"],"mappings":""}
|
package/dist/lt/vat.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/lt/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 Lithuanian VAT number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Lithuanian 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/lt/vat.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
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/lt/vat.ts
|
|
6
|
+
/**
|
|
7
|
+
* PVM kodas (Lithuanian VAT number).
|
|
8
|
+
*
|
|
9
|
+
* 9 or 12 digits. 9-digit: d[7] must be 1.
|
|
10
|
+
* 12-digit: d[10] must be 1. Weighted checksum
|
|
11
|
+
* with fallback weights.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.vatify.eu/lithuania-vat-number.html
|
|
14
|
+
* @see https://www.vmi.lt/
|
|
15
|
+
*/
|
|
16
|
+
const compact = (value) => {
|
|
17
|
+
let v = clean(value, " -/.");
|
|
18
|
+
if (v.startsWith("LT") || v.startsWith("lt")) v = v.slice(2);
|
|
19
|
+
return v;
|
|
20
|
+
};
|
|
21
|
+
const checksum = (v) => {
|
|
22
|
+
const n = v.length;
|
|
23
|
+
let check = 0;
|
|
24
|
+
for (let i = 0; i < n - 1; i++) check += (1 + i % 9) * Number(v[i]);
|
|
25
|
+
check %= 11;
|
|
26
|
+
if (check === 10) {
|
|
27
|
+
check = 0;
|
|
28
|
+
for (let i = 0; i < n - 1; i++) check += (1 + (i + 2) % 9) * Number(v[i]);
|
|
29
|
+
check %= 11;
|
|
30
|
+
}
|
|
31
|
+
return check % 10 === Number(v[n - 1]);
|
|
32
|
+
};
|
|
33
|
+
const validate = (value) => {
|
|
34
|
+
const v = compact(value);
|
|
35
|
+
if (v.length !== 9 && v.length !== 12) return err("INVALID_LENGTH", "Lithuanian VAT number must be 9 or 12 digits");
|
|
36
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Lithuanian VAT number must contain only digits");
|
|
37
|
+
if (v.length === 9 && v[7] !== "1") return err("INVALID_COMPONENT", "Lithuanian 9-digit VAT: digit 8 must be 1");
|
|
38
|
+
if (v.length === 12 && v[10] !== "1") return err("INVALID_COMPONENT", "Lithuanian 12-digit VAT: digit 11 must be 1");
|
|
39
|
+
if (!checksum(v)) return err("INVALID_CHECKSUM", "Lithuanian VAT number check digit mismatch");
|
|
40
|
+
return {
|
|
41
|
+
valid: true,
|
|
42
|
+
compact: v
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const format = (value) => `LT${compact(value)}`;
|
|
46
|
+
/** Generate a random valid Lithuanian VAT number. */
|
|
47
|
+
const generate = () => {
|
|
48
|
+
for (;;) {
|
|
49
|
+
const c = randomDigits(9);
|
|
50
|
+
if (validate(c).valid) return c;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
/** Lithuanian VAT Number. */
|
|
54
|
+
const vat = {
|
|
55
|
+
name: "Lithuanian VAT Number",
|
|
56
|
+
localName: "PVM mokėtojo kodas",
|
|
57
|
+
abbreviation: "PVM kodas",
|
|
58
|
+
aliases: ["PVM mokėtojo kodas", "PVM"],
|
|
59
|
+
candidatePattern: "LT\\d{9,12}",
|
|
60
|
+
country: "LT",
|
|
61
|
+
entityType: "any",
|
|
62
|
+
sourceUrl: "https://www.vmi.lt/",
|
|
63
|
+
examples: ["119511515", "100001919017"],
|
|
64
|
+
compact,
|
|
65
|
+
format,
|
|
66
|
+
validate,
|
|
67
|
+
generate
|
|
68
|
+
};
|
|
69
|
+
//#endregion
|
|
70
|
+
export { compact, vat as default, format, generate, validate };
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=vat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/lt/vat.ts"],"sourcesContent":["/**\n * PVM kodas (Lithuanian VAT number).\n *\n * 9 or 12 digits. 9-digit: d[7] must be 1.\n * 12-digit: d[10] must be 1. Weighted checksum\n * with fallback weights.\n *\n * @see https://www.vatify.eu/lithuania-vat-number.html\n * @see https://www.vmi.lt/\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 compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"LT\") || v.startsWith(\"lt\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst checksum = (v: string): boolean => {\n const n = v.length;\n let check = 0;\n for (let i = 0; i < n - 1; i++) {\n check += (1 + (i % 9)) * Number(v[i]);\n }\n check %= 11;\n if (check === 10) {\n check = 0;\n for (let i = 0; i < n - 1; i++) {\n check += (1 + ((i + 2) % 9)) * Number(v[i]);\n }\n check %= 11;\n }\n return check % 10 === Number(v[n - 1]);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9 && v.length !== 12) {\n return err(\n \"INVALID_LENGTH\",\n \"Lithuanian VAT number must be 9 or 12 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Lithuanian VAT number must contain only digits\",\n );\n }\n // Check the marker digit\n if (v.length === 9 && v[7] !== \"1\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Lithuanian 9-digit VAT: digit 8 must be 1\",\n );\n }\n if (v.length === 12 && v[10] !== \"1\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Lithuanian 12-digit VAT: digit 11 must be 1\",\n );\n }\n if (!checksum(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Lithuanian VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `LT${compact(value)}`;\n\n/** Generate a random valid Lithuanian VAT number. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(9);\n if (validate(c).valid) return c;\n }\n};\n\n/** Lithuanian VAT Number. */\nconst vat: Validator = {\n name: \"Lithuanian VAT Number\",\n localName: \"PVM mokėtojo kodas\",\n abbreviation: \"PVM kodas\",\n aliases: [\"PVM mokėtojo kodas\", \"PVM\"] as const,\n candidatePattern: \"LT\\\\d{9,12}\",\n country: \"LT\",\n entityType: \"any\",\n sourceUrl: \"https://www.vmi.lt/\",\n examples: [\"119511515\", \"100001919017\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,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,MAAuB;CACvC,MAAM,IAAI,EAAE;CACZ,IAAI,QAAQ;AACZ,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IACzB,WAAU,IAAK,IAAI,KAAM,OAAO,EAAE,GAAG;AAEvC,UAAS;AACT,KAAI,UAAU,IAAI;AAChB,UAAQ;AACR,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IACzB,WAAU,KAAM,IAAI,KAAK,KAAM,OAAO,EAAE,GAAG;AAE7C,WAAS;;AAEX,QAAO,QAAQ,OAAO,OAAO,EAAE,IAAI,GAAG;;AAGxC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,GACjC,QAAO,IACL,kBACA,+CACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,iDACD;AAGH,KAAI,EAAE,WAAW,KAAK,EAAE,OAAO,IAC7B,QAAO,IACL,qBACA,4CACD;AAEH,KAAI,EAAE,WAAW,MAAM,EAAE,QAAQ,IAC/B,QAAO,IACL,qBACA,8CACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,oBACA,6CACD;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,CAAC,sBAAsB,MAAM;CACtC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa,eAAe;CACvC;CACA;CACA;CACA;CACD"}
|
package/dist/lu/mod.d.ts
ADDED
package/dist/lu/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import vat from "./vat.js";
|
|
3
|
+
//#region src/lu/mod.ts
|
|
4
|
+
var lu_exports = /* @__PURE__ */ __exportAll({ vat: () => vat });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { lu_exports, vat };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/lu/mod.ts"],"sourcesContent":["export { default as vat } from \"./vat\";\n"],"mappings":""}
|