@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/bg/egn.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ParsedPersonId, ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/bg/egn.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 EGN.
|
|
10
|
+
* Returns null if the value is not valid.
|
|
11
|
+
*/
|
|
12
|
+
declare const parse: (value: string) => ParsedPersonId | null;
|
|
13
|
+
/** Generate a random valid EGN. */
|
|
14
|
+
declare const generate: () => string;
|
|
15
|
+
/** Bulgarian Personal Identification Number. */
|
|
16
|
+
declare const egn: Validator;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { compact, egn as default, format, generate, parse, validate };
|
|
19
|
+
//# sourceMappingURL=egn.d.ts.map
|
package/dist/bg/egn.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
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 { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
|
+
import { isValidDate } from "../_util/date.js";
|
|
7
|
+
//#region src/bg/egn.ts
|
|
8
|
+
/**
|
|
9
|
+
* EGN (Единен граждански номер).
|
|
10
|
+
*
|
|
11
|
+
* Bulgarian personal identification number.
|
|
12
|
+
* 10 digits encoding date of birth, serial number,
|
|
13
|
+
* and a check digit.
|
|
14
|
+
*
|
|
15
|
+
* @see https://en.wikipedia.org/wiki/Unique_citizenship_number
|
|
16
|
+
* @see https://www.grao.bg/
|
|
17
|
+
*/
|
|
18
|
+
const WEIGHTS = [
|
|
19
|
+
2,
|
|
20
|
+
4,
|
|
21
|
+
8,
|
|
22
|
+
5,
|
|
23
|
+
10,
|
|
24
|
+
9,
|
|
25
|
+
7,
|
|
26
|
+
3,
|
|
27
|
+
6
|
|
28
|
+
];
|
|
29
|
+
const compact = (value) => clean(value, " -");
|
|
30
|
+
const validate = (value) => {
|
|
31
|
+
const v = compact(value);
|
|
32
|
+
if (v.length !== 10) return err("INVALID_LENGTH", "EGN must be exactly 10 digits");
|
|
33
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "EGN must contain only digits");
|
|
34
|
+
const yy = Number(v.slice(0, 2));
|
|
35
|
+
const mm = Number(v.slice(2, 4));
|
|
36
|
+
const dd = Number(v.slice(4, 6));
|
|
37
|
+
let year;
|
|
38
|
+
let month;
|
|
39
|
+
if (mm > 40) {
|
|
40
|
+
year = 2e3 + yy;
|
|
41
|
+
month = mm - 40;
|
|
42
|
+
} else if (mm > 20) {
|
|
43
|
+
year = 1800 + yy;
|
|
44
|
+
month = mm - 20;
|
|
45
|
+
} else {
|
|
46
|
+
year = 1900 + yy;
|
|
47
|
+
month = mm;
|
|
48
|
+
}
|
|
49
|
+
if (!isValidDate(year, month, dd)) return err("INVALID_COMPONENT", "EGN contains an invalid date");
|
|
50
|
+
if (weightedSum(v.slice(0, 9), WEIGHTS, 11) % 10 !== Number(v[9])) return err("INVALID_CHECKSUM", "EGN check digit does not match");
|
|
51
|
+
return {
|
|
52
|
+
valid: true,
|
|
53
|
+
compact: v
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
const format = (value) => compact(value);
|
|
57
|
+
/**
|
|
58
|
+
* Extract birth date and gender from an EGN.
|
|
59
|
+
* Returns null if the value is not valid.
|
|
60
|
+
*/
|
|
61
|
+
const parse = (value) => {
|
|
62
|
+
const result = validate(value);
|
|
63
|
+
if (!result.valid) return null;
|
|
64
|
+
const v = result.compact;
|
|
65
|
+
const yy = Number(v.slice(0, 2));
|
|
66
|
+
const mm = Number(v.slice(2, 4));
|
|
67
|
+
const dd = Number(v.slice(4, 6));
|
|
68
|
+
const serial = Number(v.slice(6, 9));
|
|
69
|
+
let year;
|
|
70
|
+
let month;
|
|
71
|
+
if (mm > 40) {
|
|
72
|
+
year = 2e3 + yy;
|
|
73
|
+
month = mm - 40;
|
|
74
|
+
} else if (mm > 20) {
|
|
75
|
+
year = 1800 + yy;
|
|
76
|
+
month = mm - 20;
|
|
77
|
+
} else {
|
|
78
|
+
year = 1900 + yy;
|
|
79
|
+
month = mm;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
birthDate: new Date(year, month - 1, dd),
|
|
83
|
+
gender: serial % 2 === 0 ? "male" : "female"
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
/** Generate a random valid EGN. */
|
|
87
|
+
const generate = () => {
|
|
88
|
+
for (;;) {
|
|
89
|
+
const yy = String(randomInt(0, 99)).padStart(2, "0");
|
|
90
|
+
const mm = String(randomInt(1, 12)).padStart(2, "0");
|
|
91
|
+
const dd = String(randomInt(1, 28)).padStart(2, "0");
|
|
92
|
+
const serial = String(randomInt(0, 999)).padStart(3, "0");
|
|
93
|
+
const payload = yy + mm + dd + serial;
|
|
94
|
+
const sum = weightedSum(payload, WEIGHTS, 11);
|
|
95
|
+
const c = payload + String(sum % 10);
|
|
96
|
+
if (validate(c).valid) return c;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
/** Bulgarian Personal Identification Number. */
|
|
100
|
+
const egn = {
|
|
101
|
+
name: "Bulgarian Personal ID",
|
|
102
|
+
localName: "Единен граждански номер",
|
|
103
|
+
abbreviation: "ЕГН",
|
|
104
|
+
aliases: [
|
|
105
|
+
"ЕГН",
|
|
106
|
+
"единен граждански номер",
|
|
107
|
+
"EGN"
|
|
108
|
+
],
|
|
109
|
+
candidatePattern: "\\d{10}",
|
|
110
|
+
country: "BG",
|
|
111
|
+
entityType: "person",
|
|
112
|
+
sourceUrl: "https://www.grao.bg/",
|
|
113
|
+
examples: ["7523169263"],
|
|
114
|
+
compact,
|
|
115
|
+
format,
|
|
116
|
+
validate,
|
|
117
|
+
generate
|
|
118
|
+
};
|
|
119
|
+
//#endregion
|
|
120
|
+
export { compact, egn as default, format, generate, parse, validate };
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=egn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"egn.js","names":[],"sources":["../../src/bg/egn.ts"],"sourcesContent":["/**\n * EGN (Единен граждански номер).\n *\n * Bulgarian personal identification number.\n * 10 digits encoding date of birth, serial number,\n * and a check digit.\n *\n * @see https://en.wikipedia.org/wiki/Unique_citizenship_number\n * @see https://www.grao.bg/\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\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 type {\n ParsedPersonId,\n ValidateResult,\n Validator,\n} from \"../types\";\n\nconst WEIGHTS = [2, 4, 8, 5, 10, 9, 7, 3, 6] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"EGN must be exactly 10 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"EGN must contain only digits\",\n );\n }\n\n const yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n\n let year: number;\n let month: number;\n if (mm > 40) {\n year = 2000 + yy;\n month = mm - 40;\n } else if (mm > 20) {\n year = 1800 + yy;\n month = mm - 20;\n } else {\n year = 1900 + yy;\n month = mm;\n }\n\n if (!isValidDate(year, month, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"EGN contains an invalid date\",\n );\n }\n\n const sum = weightedSum(v.slice(0, 9), WEIGHTS, 11);\n const check = sum % 10;\n if (check !== Number(v[9])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"EGN 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/**\n * Extract birth date and gender from an EGN.\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 yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n const serial = Number(v.slice(6, 9));\n\n let year: number;\n let month: number;\n if (mm > 40) {\n year = 2000 + yy;\n month = mm - 40;\n } else if (mm > 20) {\n year = 1800 + yy;\n month = mm - 20;\n } else {\n year = 1900 + yy;\n month = mm;\n }\n\n return {\n birthDate: new Date(year, month - 1, dd),\n gender: serial % 2 === 0 ? \"male\" : \"female\",\n };\n};\n\n/** Generate a random valid EGN. */\nconst generate = (): string => {\n for (;;) {\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 serial = String(randomInt(0, 999)).padStart(\n 3,\n \"0\",\n );\n const payload = yy + mm + dd + serial;\n const sum = weightedSum(payload, WEIGHTS, 11);\n const c = payload + String(sum % 10);\n if (validate(c).valid) return c;\n }\n};\n\n/** Bulgarian Personal Identification Number. */\nconst egn: Validator = {\n name: \"Bulgarian Personal ID\",\n localName: \"Единен граждански номер\",\n abbreviation: \"ЕГН\",\n aliases: [\n \"ЕГН\",\n \"единен граждански номер\",\n \"EGN\",\n ] as const,\n candidatePattern: \"\\\\d{10}\",\n country: \"BG\",\n entityType: \"person\",\n sourceUrl: \"https://www.grao.bg/\",\n examples: [\"7523169263\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default egn;\nexport { compact, format, parse, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;AAwBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAE;AAE5C,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,gCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;CAGH,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAEhC,IAAI;CACJ,IAAI;AACJ,KAAI,KAAK,IAAI;AACX,SAAO,MAAO;AACd,UAAQ,KAAK;YACJ,KAAK,IAAI;AAClB,SAAO,OAAO;AACd,UAAQ,KAAK;QACR;AACL,SAAO,OAAO;AACd,UAAQ;;AAGV,KAAI,CAAC,YAAY,MAAM,OAAO,GAAG,CAC/B,QAAO,IACL,qBACA,+BACD;AAKH,KAFY,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG,GAC/B,OACN,OAAO,EAAE,GAAG,CACxB,QAAO,IACL,oBACA,iCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;;;;AAMxD,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,MAAM;AAC9B,KAAI,CAAC,OAAO,MAAO,QAAO;CAE1B,MAAM,IAAI,OAAO;CACjB,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,SAAS,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAEpC,IAAI;CACJ,IAAI;AACJ,KAAI,KAAK,IAAI;AACX,SAAO,MAAO;AACd,UAAQ,KAAK;YACJ,KAAK,IAAI;AAClB,SAAO,OAAO;AACd,UAAQ,KAAK;QACR;AACL,SAAO,OAAO;AACd,UAAQ;;AAGV,QAAO;EACL,WAAW,IAAI,KAAK,MAAM,QAAQ,GAAG,GAAG;EACxC,QAAQ,SAAS,MAAM,IAAI,SAAS;EACrC;;;AAIH,MAAM,iBAAyB;AAC7B,UAAS;EACP,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,SAAS,OAAO,UAAU,GAAG,IAAI,CAAC,CAAC,SACvC,GACA,IACD;EACD,MAAM,UAAU,KAAK,KAAK,KAAK;EAC/B,MAAM,MAAM,YAAY,SAAS,SAAS,GAAG;EAC7C,MAAM,IAAI,UAAU,OAAO,MAAM,GAAG;AACpC,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa;CACxB;CACA;CACA;CACA;CACD"}
|
package/dist/bg/mod.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import egn from "./egn.js";
|
|
3
|
+
import pnf from "./pnf.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
|
|
6
|
+
//#region src/bg/mod.d.ts
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { egn, mod_d_exports, pnf, vat };
|
|
10
|
+
//# sourceMappingURL=mod.d.ts.map
|
package/dist/bg/mod.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import egn from "./egn.js";
|
|
3
|
+
import pnf from "./pnf.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
//#region src/bg/mod.ts
|
|
6
|
+
var bg_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
egn: () => egn,
|
|
8
|
+
pnf: () => pnf,
|
|
9
|
+
vat: () => vat
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { bg_exports, egn, pnf, vat };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/bg/mod.ts"],"sourcesContent":["export { default as egn } from \"./egn\";\nexport { default as pnf } from \"./pnf\";\nexport { default as vat } from \"./vat\";\n"],"mappings":""}
|
package/dist/bg/pnf.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/bg/pnf.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 PNF. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Bulgarian Personal Number of a Foreigner. */
|
|
11
|
+
declare const pnf: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, pnf as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=pnf.d.ts.map
|
package/dist/bg/pnf.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
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/bg/pnf.ts
|
|
6
|
+
/**
|
|
7
|
+
* PNF (ЛНЧ, Личен номер на чужденец).
|
|
8
|
+
*
|
|
9
|
+
* Bulgarian personal number of a foreigner.
|
|
10
|
+
* 10 digits; the last digit is a weighted checksum.
|
|
11
|
+
*
|
|
12
|
+
* @see https://en.wikipedia.org/wiki/Unique_citizenship_number
|
|
13
|
+
*/
|
|
14
|
+
const WEIGHTS = [
|
|
15
|
+
21,
|
|
16
|
+
19,
|
|
17
|
+
17,
|
|
18
|
+
13,
|
|
19
|
+
11,
|
|
20
|
+
9,
|
|
21
|
+
7,
|
|
22
|
+
3,
|
|
23
|
+
1
|
|
24
|
+
];
|
|
25
|
+
const compact = (value) => clean(value, " -.");
|
|
26
|
+
const calcCheckDigit = (number) => {
|
|
27
|
+
let sum = 0;
|
|
28
|
+
for (let i = 0; i < 9; i++) sum += WEIGHTS[i] * Number(number[i]);
|
|
29
|
+
return String(sum % 10);
|
|
30
|
+
};
|
|
31
|
+
const validate = (value) => {
|
|
32
|
+
const v = compact(value);
|
|
33
|
+
if (v.length !== 10) return err("INVALID_LENGTH", "PNF must be exactly 10 digits");
|
|
34
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "PNF must contain only digits");
|
|
35
|
+
if (calcCheckDigit(v.slice(0, 9)) !== v[9]) return err("INVALID_CHECKSUM", "PNF check digit does not match");
|
|
36
|
+
return {
|
|
37
|
+
valid: true,
|
|
38
|
+
compact: v
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const format = (value) => compact(value);
|
|
42
|
+
/** Generate a random valid PNF. */
|
|
43
|
+
const generate = () => {
|
|
44
|
+
const payload = randomDigits(9);
|
|
45
|
+
return payload + calcCheckDigit(payload);
|
|
46
|
+
};
|
|
47
|
+
/** Bulgarian Personal Number of a Foreigner. */
|
|
48
|
+
const pnf = {
|
|
49
|
+
name: "Bulgarian Foreigner Number",
|
|
50
|
+
localName: "Личен номер на чужденец",
|
|
51
|
+
abbreviation: "ЛНЧ",
|
|
52
|
+
aliases: [
|
|
53
|
+
"ЛНЧ",
|
|
54
|
+
"личен номер на чужденец",
|
|
55
|
+
"PNF"
|
|
56
|
+
],
|
|
57
|
+
candidatePattern: "\\d{10}",
|
|
58
|
+
country: "BG",
|
|
59
|
+
entityType: "person",
|
|
60
|
+
sourceUrl: "https://en.wikipedia.org/wiki/Unique_citizenship_number",
|
|
61
|
+
examples: ["7111042925"],
|
|
62
|
+
compact,
|
|
63
|
+
format,
|
|
64
|
+
validate,
|
|
65
|
+
generate
|
|
66
|
+
};
|
|
67
|
+
//#endregion
|
|
68
|
+
export { compact, pnf as default, format, generate, validate };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=pnf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pnf.js","names":[],"sources":["../../src/bg/pnf.ts"],"sourcesContent":["/**\n * PNF (ЛНЧ, Личен номер на чужденец).\n *\n * Bulgarian personal number of a foreigner.\n * 10 digits; the last digit is a weighted checksum.\n *\n * @see https://en.wikipedia.org/wiki/Unique_citizenship_number\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 WEIGHTS = [21, 19, 17, 13, 11, 9, 7, 3, 1] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -.\");\n\nconst calcCheckDigit = (number: string): string => {\n let sum = 0;\n for (let i = 0; i < 9; i++) {\n // SAFETY: WEIGHTS has exactly 9 entries\n // eslint-disable-next-line no-non-null-assertion\n sum += WEIGHTS[i]! * Number(number[i]);\n }\n return String(sum % 10);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"PNF must be exactly 10 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"PNF must contain only digits\",\n );\n }\n if (calcCheckDigit(v.slice(0, 9)) !== v[9]) {\n return err(\n \"INVALID_CHECKSUM\",\n \"PNF check digit does not match\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid PNF. */\nconst generate = (): string => {\n const payload = randomDigits(9);\n return payload + calcCheckDigit(payload);\n};\n\n/** Bulgarian Personal Number of a Foreigner. */\nconst pnf: Validator = {\n name: \"Bulgarian Foreigner Number\",\n localName: \"Личен номер на чужденец\",\n abbreviation: \"ЛНЧ\",\n aliases: [\n \"ЛНЧ\",\n \"личен номер на чужденец\",\n \"PNF\",\n ] as const,\n candidatePattern: \"\\\\d{10}\",\n country: \"BG\",\n entityType: \"person\",\n sourceUrl:\n \"https://en.wikipedia.org/wiki/Unique_citizenship_number\",\n examples: [\"7111042925\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default pnf;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,UAAU;CAAC;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAG;CAAE;AAEhD,MAAM,WAAW,UACf,MAAM,OAAO,MAAM;AAErB,MAAM,kBAAkB,WAA2B;CACjD,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAGrB,QAAO,QAAQ,KAAM,OAAO,OAAO,GAAG;AAExC,QAAO,OAAO,MAAM,GAAG;;AAGzB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,gCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;AAEH,KAAI,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,GACtC,QAAO,IACL,oBACA,iCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,EAAE;AAC/B,QAAO,UAAU,eAAe,QAAQ;;;AAI1C,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,aAAa;CACxB;CACA;CACA;CACA;CACD"}
|
package/dist/bg/vat.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/bg/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 9-digit Bulgarian VAT. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Bulgarian 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/bg/vat.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
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/bg/vat.ts
|
|
7
|
+
/**
|
|
8
|
+
* ИН по ДДС (Bulgarian VAT number).
|
|
9
|
+
*
|
|
10
|
+
* 9 or 10 digits with weighted checksum.
|
|
11
|
+
*
|
|
12
|
+
* @see https://www.vatify.eu/bulgaria-vat-number.html
|
|
13
|
+
* @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/bulgaria-tin.pdf
|
|
14
|
+
*/
|
|
15
|
+
const compact = (value) => {
|
|
16
|
+
let v = clean(value, " -/.");
|
|
17
|
+
if (v.startsWith("BG") || v.startsWith("bg")) v = v.slice(2);
|
|
18
|
+
return v;
|
|
19
|
+
};
|
|
20
|
+
const d = (v, i) => Number(v[i]);
|
|
21
|
+
const WEIGHTS_9_PASS1 = [
|
|
22
|
+
1,
|
|
23
|
+
2,
|
|
24
|
+
3,
|
|
25
|
+
4,
|
|
26
|
+
5,
|
|
27
|
+
6,
|
|
28
|
+
7,
|
|
29
|
+
8
|
|
30
|
+
];
|
|
31
|
+
const WEIGHTS_9_PASS2 = [
|
|
32
|
+
3,
|
|
33
|
+
4,
|
|
34
|
+
5,
|
|
35
|
+
6,
|
|
36
|
+
7,
|
|
37
|
+
8,
|
|
38
|
+
9,
|
|
39
|
+
10
|
|
40
|
+
];
|
|
41
|
+
const WEIGHTS_EGN = [
|
|
42
|
+
2,
|
|
43
|
+
4,
|
|
44
|
+
8,
|
|
45
|
+
5,
|
|
46
|
+
10,
|
|
47
|
+
9,
|
|
48
|
+
7,
|
|
49
|
+
3,
|
|
50
|
+
6
|
|
51
|
+
];
|
|
52
|
+
const WEIGHTS_PNF = [
|
|
53
|
+
21,
|
|
54
|
+
19,
|
|
55
|
+
17,
|
|
56
|
+
13,
|
|
57
|
+
11,
|
|
58
|
+
9,
|
|
59
|
+
7,
|
|
60
|
+
3,
|
|
61
|
+
1
|
|
62
|
+
];
|
|
63
|
+
const WEIGHTS_OTHER = [
|
|
64
|
+
4,
|
|
65
|
+
3,
|
|
66
|
+
2,
|
|
67
|
+
7,
|
|
68
|
+
6,
|
|
69
|
+
5,
|
|
70
|
+
4,
|
|
71
|
+
3,
|
|
72
|
+
2
|
|
73
|
+
];
|
|
74
|
+
const validate9 = (v) => {
|
|
75
|
+
let check = weightedSum(v.slice(0, 8), WEIGHTS_9_PASS1, 11);
|
|
76
|
+
if (check === 10) check = weightedSum(v.slice(0, 8), WEIGHTS_9_PASS2, 11);
|
|
77
|
+
return check % 10 === d(v, 8);
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Validate a 10-digit EGN (personal code).
|
|
81
|
+
* First 6 digits encode birth date (YYMMDD with month
|
|
82
|
+
* offsets: +20 for 1800s, +40 for 2000s). Check digit
|
|
83
|
+
* uses weights [2,4,8,5,10,9,7,3,6], sum % 11 % 10.
|
|
84
|
+
*/
|
|
85
|
+
const validateEgn = (v) => {
|
|
86
|
+
const year = d(v, 0) * 10 + d(v, 1);
|
|
87
|
+
let month = d(v, 2) * 10 + d(v, 3);
|
|
88
|
+
const day = d(v, 4) * 10 + d(v, 5);
|
|
89
|
+
let fullYear = year + 1900;
|
|
90
|
+
if (month > 40) {
|
|
91
|
+
fullYear += 100;
|
|
92
|
+
month -= 40;
|
|
93
|
+
} else if (month > 20) {
|
|
94
|
+
fullYear -= 100;
|
|
95
|
+
month -= 20;
|
|
96
|
+
}
|
|
97
|
+
const date = new Date(fullYear, month - 1, day);
|
|
98
|
+
if (date.getFullYear() !== fullYear || date.getMonth() !== month - 1 || date.getDate() !== day) return false;
|
|
99
|
+
return weightedSum(v.slice(0, 9), WEIGHTS_EGN, 11) % 10 === d(v, 9);
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Validate a 10-digit PNF (foreigner personal number).
|
|
103
|
+
* Weights [21,19,17,13,11,9,7,3,1], sum % 10.
|
|
104
|
+
*/
|
|
105
|
+
const validatePnf = (v) => {
|
|
106
|
+
return weightedSum(v.slice(0, 9), WEIGHTS_PNF, 10) === d(v, 9);
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Validate a 10-digit "other" VAT number.
|
|
110
|
+
* Weights [4,3,2,7,6,5,4,3,2], (11 - sum%11) % 11.
|
|
111
|
+
*/
|
|
112
|
+
const validateOther = (v) => {
|
|
113
|
+
return (11 - weightedSum(v.slice(0, 9), WEIGHTS_OTHER, 11)) % 11 === d(v, 9);
|
|
114
|
+
};
|
|
115
|
+
const validate10 = (v) => validateEgn(v) || validatePnf(v) || validateOther(v);
|
|
116
|
+
const validate = (value) => {
|
|
117
|
+
const v = compact(value);
|
|
118
|
+
if (v.length !== 9 && v.length !== 10) return err("INVALID_LENGTH", "Bulgarian VAT number must be 9 or 10 digits");
|
|
119
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Bulgarian VAT number must contain only digits");
|
|
120
|
+
if (!(v.length === 9 ? validate9(v) : validate10(v))) return err("INVALID_CHECKSUM", "Bulgarian VAT number check digit mismatch");
|
|
121
|
+
return {
|
|
122
|
+
valid: true,
|
|
123
|
+
compact: v
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
const format = (value) => `BG${compact(value)}`;
|
|
127
|
+
/** Generate a random valid 9-digit Bulgarian VAT. */
|
|
128
|
+
const generate = () => {
|
|
129
|
+
for (;;) {
|
|
130
|
+
const c = randomDigits(9);
|
|
131
|
+
if (validate(c).valid) return c;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
/** Bulgarian VAT Number. */
|
|
135
|
+
const vat = {
|
|
136
|
+
name: "Bulgarian VAT Number",
|
|
137
|
+
localName: "ИН по ДДС",
|
|
138
|
+
abbreviation: "ИН по ДДС",
|
|
139
|
+
aliases: ["ДДС", "идентификационен номер по ДДС"],
|
|
140
|
+
candidatePattern: "BG\\d{9,10}",
|
|
141
|
+
country: "BG",
|
|
142
|
+
entityType: "any",
|
|
143
|
+
sourceUrl: "https://www.nra.bg/",
|
|
144
|
+
examples: ["175074752"],
|
|
145
|
+
compact,
|
|
146
|
+
format,
|
|
147
|
+
validate,
|
|
148
|
+
generate
|
|
149
|
+
};
|
|
150
|
+
//#endregion
|
|
151
|
+
export { compact, vat as default, format, generate, validate };
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=vat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/bg/vat.ts"],"sourcesContent":["/**\n * ИН по ДДС (Bulgarian VAT number).\n *\n * 9 or 10 digits with weighted checksum.\n *\n * @see https://www.vatify.eu/bulgaria-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/bulgaria-tin.pdf\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 compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"BG\") || v.startsWith(\"bg\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst d = (v: string, i: number): number => Number(v[i]);\n\nconst WEIGHTS_9_PASS1 = [1, 2, 3, 4, 5, 6, 7, 8];\nconst WEIGHTS_9_PASS2 = [3, 4, 5, 6, 7, 8, 9, 10];\nconst WEIGHTS_EGN = [2, 4, 8, 5, 10, 9, 7, 3, 6];\nconst WEIGHTS_PNF = [21, 19, 17, 13, 11, 9, 7, 3, 1];\nconst WEIGHTS_OTHER = [4, 3, 2, 7, 6, 5, 4, 3, 2];\n\nconst validate9 = (v: string): boolean => {\n let check = weightedSum(\n v.slice(0, 8),\n WEIGHTS_9_PASS1,\n 11,\n );\n if (check === 10) {\n check = weightedSum(v.slice(0, 8), WEIGHTS_9_PASS2, 11);\n }\n return check % 10 === d(v, 8);\n};\n\n/**\n * Validate a 10-digit EGN (personal code).\n * First 6 digits encode birth date (YYMMDD with month\n * offsets: +20 for 1800s, +40 for 2000s). Check digit\n * uses weights [2,4,8,5,10,9,7,3,6], sum % 11 % 10.\n */\nconst validateEgn = (v: string): boolean => {\n const year = d(v, 0) * 10 + d(v, 1);\n let month = d(v, 2) * 10 + d(v, 3);\n const day = d(v, 4) * 10 + d(v, 5);\n let fullYear = year + 1900;\n if (month > 40) {\n fullYear += 100;\n month -= 40;\n } else if (month > 20) {\n fullYear -= 100;\n month -= 20;\n }\n // Validate the birth date\n const date = new Date(fullYear, month - 1, day);\n if (\n date.getFullYear() !== fullYear ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return false;\n }\n const sum = weightedSum(v.slice(0, 9), WEIGHTS_EGN, 11);\n return sum % 10 === d(v, 9);\n};\n\n/**\n * Validate a 10-digit PNF (foreigner personal number).\n * Weights [21,19,17,13,11,9,7,3,1], sum % 10.\n */\nconst validatePnf = (v: string): boolean => {\n const sum = weightedSum(v.slice(0, 9), WEIGHTS_PNF, 10);\n return sum === d(v, 9);\n};\n\n/**\n * Validate a 10-digit \"other\" VAT number.\n * Weights [4,3,2,7,6,5,4,3,2], (11 - sum%11) % 11.\n */\nconst validateOther = (v: string): boolean => {\n const sum = weightedSum(v.slice(0, 9), WEIGHTS_OTHER, 11);\n return (11 - sum) % 11 === d(v, 9);\n};\n\nconst validate10 = (v: string): boolean =>\n validateEgn(v) || validatePnf(v) || validateOther(v);\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9 && v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"Bulgarian VAT number must be 9 or 10 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Bulgarian VAT number must contain only digits\",\n );\n }\n const valid =\n v.length === 9 ? validate9(v) : validate10(v);\n if (!valid) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Bulgarian VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `BG${compact(value)}`;\n\n/** Generate a random valid 9-digit Bulgarian VAT. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(9);\n if (validate(c).valid) return c;\n }\n};\n\n/** Bulgarian VAT Number. */\nconst vat: Validator = {\n name: \"Bulgarian VAT Number\",\n localName: \"ИН по ДДС\",\n abbreviation: \"ИН по ДДС\",\n aliases: [\n \"ДДС\",\n \"идентификационен номер по ДДС\",\n ] as const,\n candidatePattern: \"BG\\\\d{9,10}\",\n country: \"BG\",\n entityType: \"any\",\n sourceUrl: \"https://www.nra.bg/\",\n examples: [\"175074752\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;AAiBA,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,KAAK,GAAW,MAAsB,OAAO,EAAE,GAAG;AAExD,MAAM,kBAAkB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAChD,MAAM,kBAAkB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AACjD,MAAM,cAAc;CAAC;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAE;AAChD,MAAM,cAAc;CAAC;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAG;CAAE;AACpD,MAAM,gBAAgB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAEjD,MAAM,aAAa,MAAuB;CACxC,IAAI,QAAQ,YACV,EAAE,MAAM,GAAG,EAAE,EACb,iBACA,GACD;AACD,KAAI,UAAU,GACZ,SAAQ,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,iBAAiB,GAAG;AAEzD,QAAO,QAAQ,OAAO,EAAE,GAAG,EAAE;;;;;;;;AAS/B,MAAM,eAAe,MAAuB;CAC1C,MAAM,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE;CACnC,IAAI,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE;CAClC,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE;CAClC,IAAI,WAAW,OAAO;AACtB,KAAI,QAAQ,IAAI;AACd,cAAY;AACZ,WAAS;YACA,QAAQ,IAAI;AACrB,cAAY;AACZ,WAAS;;CAGX,MAAM,OAAO,IAAI,KAAK,UAAU,QAAQ,GAAG,IAAI;AAC/C,KACE,KAAK,aAAa,KAAK,YACvB,KAAK,UAAU,KAAK,QAAQ,KAC5B,KAAK,SAAS,KAAK,IAEnB,QAAO;AAGT,QADY,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,aAAa,GAAG,GAC1C,OAAO,EAAE,GAAG,EAAE;;;;;;AAO7B,MAAM,eAAe,MAAuB;AAE1C,QADY,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,aAAa,GAAG,KACxC,EAAE,GAAG,EAAE;;;;;;AAOxB,MAAM,iBAAiB,MAAuB;AAE5C,SAAQ,KADI,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,eAAe,GAAG,IACrC,OAAO,EAAE,GAAG,EAAE;;AAGpC,MAAM,cAAc,MAClB,YAAY,EAAE,IAAI,YAAY,EAAE,IAAI,cAAc,EAAE;AAEtD,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,GACjC,QAAO,IACL,kBACA,8CACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,gDACD;AAIH,KAAI,EADF,EAAE,WAAW,IAAI,UAAU,EAAE,GAAG,WAAW,EAAE,EAE7C,QAAO,IACL,oBACA,4CACD;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,OACA,gCACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
|
package/dist/bh/cpr.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/bh/cpr.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
|
+
/** Bahrain Central Population Registration number. */
|
|
9
|
+
declare const cpr: Validator;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { compact, cpr as default, format, validate };
|
|
12
|
+
//# sourceMappingURL=cpr.d.ts.map
|
package/dist/bh/cpr.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { err } from "../_util/result.js";
|
|
3
|
+
import { isdigits } from "../_util/strings.js";
|
|
4
|
+
//#region src/bh/cpr.ts
|
|
5
|
+
/**
|
|
6
|
+
* CPR (Central Population Registration number, Bahrain).
|
|
7
|
+
*
|
|
8
|
+
* 9-digit personal identification number:
|
|
9
|
+
* YYMM = year and month of birth
|
|
10
|
+
* NNNN = serial number
|
|
11
|
+
* C = check digit
|
|
12
|
+
*
|
|
13
|
+
* The check digit algorithm is not publicly
|
|
14
|
+
* documented; validation is structural only
|
|
15
|
+
* (length, digits, and valid birth month).
|
|
16
|
+
*
|
|
17
|
+
* Note: a minority of older CPR numbers do not
|
|
18
|
+
* follow the YYMMNNNNC format.
|
|
19
|
+
*
|
|
20
|
+
* @see https://www.bahrain.bh/wps/portal/IDInfo_en
|
|
21
|
+
*/
|
|
22
|
+
const compact = (value) => clean(value, " -");
|
|
23
|
+
const validate = (value) => {
|
|
24
|
+
const v = compact(value);
|
|
25
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "Bahrain CPR must be 9 digits");
|
|
26
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Bahrain CPR must contain only digits");
|
|
27
|
+
const mm = Number(v.slice(2, 4));
|
|
28
|
+
if (mm < 1 || mm > 12) return err("INVALID_COMPONENT", "CPR birth month must be 01-12");
|
|
29
|
+
return {
|
|
30
|
+
valid: true,
|
|
31
|
+
compact: v
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
const format = (value) => {
|
|
35
|
+
const v = compact(value);
|
|
36
|
+
return `${v.slice(0, 2)}-${v.slice(2, 4)}-${v.slice(4)}`;
|
|
37
|
+
};
|
|
38
|
+
/** Bahrain Central Population Registration number. */
|
|
39
|
+
const cpr = {
|
|
40
|
+
name: "Central Population Registration Number",
|
|
41
|
+
localName: "الرقم السكاني",
|
|
42
|
+
abbreviation: "CPR",
|
|
43
|
+
aliases: ["CPR", "الرقم السكاني"],
|
|
44
|
+
candidatePattern: "\\d{9}",
|
|
45
|
+
country: "BH",
|
|
46
|
+
entityType: "person",
|
|
47
|
+
lengths: [9],
|
|
48
|
+
examples: ["890112345", "000612345"],
|
|
49
|
+
description: "9-digit personal identification number",
|
|
50
|
+
sourceUrl: "https://www.bahrain.bh/wps/portal/IDInfo_en",
|
|
51
|
+
compact,
|
|
52
|
+
format,
|
|
53
|
+
validate
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
56
|
+
export { compact, cpr as default, format, validate };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=cpr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpr.js","names":[],"sources":["../../src/bh/cpr.ts"],"sourcesContent":["/**\n * CPR (Central Population Registration number, Bahrain).\n *\n * 9-digit personal identification number:\n * YYMM = year and month of birth\n * NNNN = serial number\n * C = check digit\n *\n * The check digit algorithm is not publicly\n * documented; validation is structural only\n * (length, digits, and valid birth month).\n *\n * Note: a minority of older CPR numbers do not\n * follow the YYMMNNNNC format.\n *\n * @see https://www.bahrain.bh/wps/portal/IDInfo_en\n */\n\nimport { clean } from \"#util/clean\";\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, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Bahrain CPR must be 9 digits\",\n );\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Bahrain CPR must contain only digits\",\n );\n }\n\n // Validate birth month (digits 3-4) is 01-12\n const mm = Number(v.slice(2, 4));\n if (mm < 1 || mm > 12) {\n return err(\n \"INVALID_COMPONENT\",\n \"CPR birth month must be 01-12\",\n );\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, 2)}-${v.slice(2, 4)}-${v.slice(4)}`;\n};\n\n/** Bahrain Central Population Registration number. */\nconst cpr: Validator = {\n name: \"Central Population Registration Number\",\n localName: \"الرقم السكاني\",\n abbreviation: \"CPR\",\n aliases: [\"CPR\", \"الرقم السكاني\"] as const,\n candidatePattern: \"\\\\d{9}\",\n country: \"BH\",\n entityType: \"person\",\n lengths: [9] as const,\n examples: [\"890112345\", \"000612345\"] as const,\n description: \"9-digit personal identification number\",\n sourceUrl: \"https://www.bahrain.bh/wps/portal/IDInfo_en\",\n compact,\n format,\n validate,\n};\n\nexport default cpr;\nexport { compact, format, validate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,+BACD;AAGH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,uCACD;CAIH,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAChC,KAAI,KAAK,KAAK,KAAK,GACjB,QAAO,IACL,qBACA,gCACD;AAGH,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,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,gBAAgB;CACjC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,aAAa,YAAY;CACpC,aAAa;CACb,WAAW;CACX;CACA;CACA;CACD"}
|
package/dist/bh/mod.d.ts
ADDED
package/dist/bh/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import cpr from "./cpr.js";
|
|
3
|
+
//#region src/bh/mod.ts
|
|
4
|
+
var bh_exports = /* @__PURE__ */ __exportAll({ cpr: () => cpr });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { bh_exports, cpr };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/bh/mod.ts"],"sourcesContent":["export { default as cpr } from \"./cpr\";\n"],"mappings":""}
|
package/dist/bic.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "./types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/bic.d.ts
|
|
4
|
+
/** Generate a random valid BIC (8-character). */
|
|
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
|
+
/** Business Identifier Code (SWIFT/BIC). */
|
|
10
|
+
declare const bic: Validator;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { compact, bic as default, format, generate, validate };
|
|
13
|
+
//# sourceMappingURL=bic.d.ts.map
|
package/dist/bic.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { clean } from "./_util/clean.js";
|
|
2
|
+
import { randomInt } from "./_util/generate.js";
|
|
3
|
+
import { err } from "./_util/result.js";
|
|
4
|
+
//#region src/bic.ts
|
|
5
|
+
/**
|
|
6
|
+
* BIC (Business Identifier Code).
|
|
7
|
+
*
|
|
8
|
+
* ISO 9362. 8 or 11 character code identifying
|
|
9
|
+
* financial institutions. Format:
|
|
10
|
+
* [A-Z]{4} (institution) + [A-Z]{2} (country) +
|
|
11
|
+
* [0-9A-Z]{2} (location) + [0-9A-Z]{3} (branch,
|
|
12
|
+
* optional).
|
|
13
|
+
*
|
|
14
|
+
* @see https://www.swift.com/
|
|
15
|
+
*/
|
|
16
|
+
/** Generate a random valid BIC (8-character). */
|
|
17
|
+
const generate = () => {
|
|
18
|
+
const randomLetter = () => String.fromCodePoint(65 + randomInt(0, 25));
|
|
19
|
+
const randomAlphaNum = () => {
|
|
20
|
+
return "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"[randomInt(0, 35)];
|
|
21
|
+
};
|
|
22
|
+
const countries = [
|
|
23
|
+
"DE",
|
|
24
|
+
"GB",
|
|
25
|
+
"US",
|
|
26
|
+
"FR",
|
|
27
|
+
"CH",
|
|
28
|
+
"NL",
|
|
29
|
+
"AT"
|
|
30
|
+
];
|
|
31
|
+
const country = countries[randomInt(0, countries.length - 1)];
|
|
32
|
+
return `${randomLetter() + randomLetter() + randomLetter() + randomLetter()}${country}${randomAlphaNum() + randomAlphaNum()}`;
|
|
33
|
+
};
|
|
34
|
+
const BIC_RE = /^[A-Z]{4}[A-Z]{2}[0-9A-Z]{2}([0-9A-Z]{3})?$/;
|
|
35
|
+
const compact = (value) => clean(value, " -").toUpperCase();
|
|
36
|
+
const validate = (value) => {
|
|
37
|
+
const v = compact(value);
|
|
38
|
+
if (v.length !== 8 && v.length !== 11) return err("INVALID_LENGTH", "BIC must be 8 or 11 characters");
|
|
39
|
+
if (!BIC_RE.test(v)) return err("INVALID_FORMAT", "BIC must be 8 or 11 alphanumeric characters");
|
|
40
|
+
return {
|
|
41
|
+
valid: true,
|
|
42
|
+
compact: v
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const format = (value) => {
|
|
46
|
+
const v = compact(value);
|
|
47
|
+
if (v.length === 11) return `${v.slice(0, 4)} ${v.slice(4, 6)} ${v.slice(6, 8)} ${v.slice(8)}`;
|
|
48
|
+
return `${v.slice(0, 4)} ${v.slice(4, 6)} ${v.slice(6)}`;
|
|
49
|
+
};
|
|
50
|
+
/** Business Identifier Code (SWIFT/BIC). */
|
|
51
|
+
const bic = {
|
|
52
|
+
name: "Business Identifier Code",
|
|
53
|
+
localName: "Business Identifier Code",
|
|
54
|
+
abbreviation: "BIC",
|
|
55
|
+
aliases: [
|
|
56
|
+
"BIC",
|
|
57
|
+
"SWIFT",
|
|
58
|
+
"BIC/SWIFT"
|
|
59
|
+
],
|
|
60
|
+
candidatePattern: "[A-Z]{6}[A-Z0-9]{2}(?:[A-Z0-9]{3})?",
|
|
61
|
+
entityType: "company",
|
|
62
|
+
sourceUrl: "https://www.swift.com/",
|
|
63
|
+
examples: ["DEUTDEFF", "DEUTDEFF500"],
|
|
64
|
+
compact,
|
|
65
|
+
format,
|
|
66
|
+
validate,
|
|
67
|
+
generate
|
|
68
|
+
};
|
|
69
|
+
//#endregion
|
|
70
|
+
export { compact, bic as default, format, generate, validate };
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=bic.js.map
|