@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/dk/vat.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
|
+
//#region src/dk/vat.ts
|
|
7
|
+
/**
|
|
8
|
+
* CVR (Danish VAT / business registration number).
|
|
9
|
+
*
|
|
10
|
+
* 8 digits, no leading 0.
|
|
11
|
+
* Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.vatify.eu/denmark-vat-number.html
|
|
14
|
+
* @see https://erhvervsstyrelsen.dk/det-centrale-virksomhedsregister-cvr
|
|
15
|
+
*
|
|
16
|
+
* Denmark dropped mod-11 for CPR in 2007; unconfirmed
|
|
17
|
+
* for CVR.
|
|
18
|
+
*/
|
|
19
|
+
const WEIGHTS = [
|
|
20
|
+
2,
|
|
21
|
+
7,
|
|
22
|
+
6,
|
|
23
|
+
5,
|
|
24
|
+
4,
|
|
25
|
+
3,
|
|
26
|
+
2,
|
|
27
|
+
1
|
|
28
|
+
];
|
|
29
|
+
const compact = (value) => {
|
|
30
|
+
let v = clean(value, " -/.");
|
|
31
|
+
if (v.startsWith("DK") || v.startsWith("dk")) v = v.slice(2);
|
|
32
|
+
return v;
|
|
33
|
+
};
|
|
34
|
+
const validate = (value) => {
|
|
35
|
+
const v = compact(value);
|
|
36
|
+
if (v.length !== 8) return err("INVALID_LENGTH", "Danish VAT number must be 8 digits");
|
|
37
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Danish VAT number must contain only digits");
|
|
38
|
+
if (v[0] === "0") return err("INVALID_COMPONENT", "Danish VAT number cannot start with 0");
|
|
39
|
+
if (weightedSum(v, WEIGHTS, 11) !== 0) return err("INVALID_CHECKSUM", "Danish VAT number check digit mismatch");
|
|
40
|
+
return {
|
|
41
|
+
valid: true,
|
|
42
|
+
compact: v
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const format = (value) => `DK${compact(value)}`;
|
|
46
|
+
/** Generate a random valid Danish VAT number. */
|
|
47
|
+
const generate = () => {
|
|
48
|
+
for (;;) {
|
|
49
|
+
const c = String(randomInt(1, 9)) + randomDigits(7);
|
|
50
|
+
if (validate(c).valid) return c;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
/** Danish VAT Number. */
|
|
54
|
+
const vat = {
|
|
55
|
+
name: "Danish VAT Number",
|
|
56
|
+
localName: "Momsregistreringsnummer",
|
|
57
|
+
abbreviation: "CVR",
|
|
58
|
+
aliases: ["momsnummer", "SE-nummer"],
|
|
59
|
+
candidatePattern: "DK\\d{8}",
|
|
60
|
+
country: "DK",
|
|
61
|
+
entityType: "company",
|
|
62
|
+
sourceUrl: "https://erhvervsstyrelsen.dk/",
|
|
63
|
+
examples: ["13585628"],
|
|
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/dk/vat.ts"],"sourcesContent":["/**\n * CVR (Danish VAT / business registration number).\n *\n * 8 digits, no leading 0.\n * Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.\n *\n * @see https://www.vatify.eu/denmark-vat-number.html\n * @see https://erhvervsstyrelsen.dk/det-centrale-virksomhedsregister-cvr\n *\n * Denmark dropped mod-11 for CPR in 2007; unconfirmed\n * for CVR.\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\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 WEIGHTS = [2, 7, 6, 5, 4, 3, 2, 1];\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"DK\") || v.startsWith(\"dk\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"Danish VAT number must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Danish VAT number must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Danish VAT number cannot start with 0\",\n );\n }\n const sum = weightedSum(v, WEIGHTS, 11);\n if (sum !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Danish VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `DK${compact(value)}`;\n\n/** Generate a random valid Danish VAT number. */\nconst generate = (): string => {\n for (;;) {\n const c = String(randomInt(1, 9)) + randomDigits(7);\n if (validate(c).valid) return c;\n }\n};\n\n/** Danish VAT Number. */\nconst vat: Validator = {\n name: \"Danish VAT Number\",\n localName: \"Momsregistreringsnummer\",\n abbreviation: \"CVR\",\n aliases: [\"momsnummer\", \"SE-nummer\"] as const,\n candidatePattern: \"DK\\\\d{8}\",\n country: \"DK\",\n entityType: \"company\",\n sourceUrl: \"https://erhvervsstyrelsen.dk/\",\n examples: [\"13585628\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAExC,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,OAAO;AAC5B,KAAI,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,CAC1C,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,qCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,6CACD;AAEH,KAAI,EAAE,OAAO,IACX,QAAO,IACL,qBACA,wCACD;AAGH,KADY,YAAY,GAAG,SAAS,GAAG,KAC3B,EACV,QAAO,IACL,oBACA,yCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UACd,KAAK,QAAQ,MAAM;;AAGrB,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,GAAG,aAAa,EAAE;AACnD,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,cAAc,YAAY;CACpC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;CACD"}
|
package/dist/do/mod.d.ts
ADDED
package/dist/do/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import rnc from "./rnc.js";
|
|
3
|
+
//#region src/do/mod.ts
|
|
4
|
+
var do_exports = /* @__PURE__ */ __exportAll({ rnc: () => rnc });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { do_exports, rnc };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/do/mod.ts"],"sourcesContent":["export { default as rnc } from \"./rnc\";\n"],"mappings":""}
|
package/dist/do/rnc.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/do/rnc.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 RNC. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/**
|
|
11
|
+
* Dominican Republic RNC / Cédula.
|
|
12
|
+
*
|
|
13
|
+
* Examples sourced from python-stdnum test suite.
|
|
14
|
+
*/
|
|
15
|
+
declare const rnc: Validator;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { compact, rnc as default, format, generate, validate };
|
|
18
|
+
//# sourceMappingURL=rnc.d.ts.map
|
package/dist/do/rnc.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { luhnValidate } from "../_checksums/luhn.js";
|
|
5
|
+
import { isdigits } from "../_util/strings.js";
|
|
6
|
+
//#region src/do/rnc.ts
|
|
7
|
+
/**
|
|
8
|
+
* RNC (Registro Nacional del Contribuyente) /
|
|
9
|
+
* Cédula de Identidad.
|
|
10
|
+
*
|
|
11
|
+
* Dominican Republic tax identification number.
|
|
12
|
+
* Companies use a 9-digit RNC with a check digit
|
|
13
|
+
* computed via weighted sum mod 11. Individuals
|
|
14
|
+
* use an 11-digit Cédula validated with the Luhn
|
|
15
|
+
* algorithm.
|
|
16
|
+
*
|
|
17
|
+
* Format: ######### (9 digits, company RNC)
|
|
18
|
+
* ########### (11 digits, individual Cédula)
|
|
19
|
+
*
|
|
20
|
+
* @see https://dgii.gov.do/
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Weights for the 9-digit RNC check digit.
|
|
24
|
+
* Applied to positions 0-7; check digit is at
|
|
25
|
+
* position 8.
|
|
26
|
+
*/
|
|
27
|
+
const RNC_WEIGHTS = [
|
|
28
|
+
7,
|
|
29
|
+
9,
|
|
30
|
+
8,
|
|
31
|
+
6,
|
|
32
|
+
5,
|
|
33
|
+
4,
|
|
34
|
+
3,
|
|
35
|
+
2
|
|
36
|
+
];
|
|
37
|
+
const compact = (value) => clean(value, " -.").trim();
|
|
38
|
+
/**
|
|
39
|
+
* RNC check digit: weighted sum mod 11, then
|
|
40
|
+
* ((10 - remainder) % 9) + 1.
|
|
41
|
+
*/
|
|
42
|
+
const calcRncCheckDigit = (value) => {
|
|
43
|
+
let sum = 0;
|
|
44
|
+
for (let i = 0; i < 8; i++) sum += Number(value[i]) * RNC_WEIGHTS[i];
|
|
45
|
+
const remainder = sum % 11;
|
|
46
|
+
return String((10 - remainder) % 9 + 1);
|
|
47
|
+
};
|
|
48
|
+
const validate = (value) => {
|
|
49
|
+
const v = compact(value);
|
|
50
|
+
if (v.length !== 9 && v.length !== 11) return err("INVALID_LENGTH", "Must be 9 digits (RNC) or 11 digits (Cédula)");
|
|
51
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Must contain only digits");
|
|
52
|
+
if (v.length === 9) {
|
|
53
|
+
const expected = calcRncCheckDigit(v);
|
|
54
|
+
if (v.at(-1) !== expected) return err("INVALID_CHECKSUM", "RNC check digit does not match");
|
|
55
|
+
} else if (!luhnValidate(v)) return err("INVALID_CHECKSUM", "Cédula Luhn checksum does not match");
|
|
56
|
+
return {
|
|
57
|
+
valid: true,
|
|
58
|
+
compact: v
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
const format = (value) => {
|
|
62
|
+
const v = compact(value);
|
|
63
|
+
if (v.length === 9) return `${v[0]}-${v.slice(1, 3)}-${v.slice(3, 8)}-${v.slice(8)}`;
|
|
64
|
+
return `${v.slice(0, 3)}-${v.slice(3, 10)}-${v.slice(10)}`;
|
|
65
|
+
};
|
|
66
|
+
/** Generate a random valid 9-digit RNC. */
|
|
67
|
+
const generate = () => {
|
|
68
|
+
const payload = randomDigits(8);
|
|
69
|
+
return payload + calcRncCheckDigit(payload);
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Dominican Republic RNC / Cédula.
|
|
73
|
+
*
|
|
74
|
+
* Examples sourced from python-stdnum test suite.
|
|
75
|
+
*/
|
|
76
|
+
const rnc = {
|
|
77
|
+
name: "Dominican Republic Tax ID",
|
|
78
|
+
localName: "Registro Nacional del Contribuyente",
|
|
79
|
+
abbreviation: "RNC",
|
|
80
|
+
aliases: ["RNC", "Registro Nacional del Contribuyente"],
|
|
81
|
+
candidatePattern: "\\d{9}",
|
|
82
|
+
country: "DO",
|
|
83
|
+
entityType: "any",
|
|
84
|
+
lengths: [9, 11],
|
|
85
|
+
examples: ["131098193", "00113918205"],
|
|
86
|
+
compact,
|
|
87
|
+
format,
|
|
88
|
+
validate,
|
|
89
|
+
sourceUrl: "https://dgii.gov.do/",
|
|
90
|
+
generate
|
|
91
|
+
};
|
|
92
|
+
//#endregion
|
|
93
|
+
export { compact, rnc as default, format, generate, validate };
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=rnc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rnc.js","names":[],"sources":["../../src/do/rnc.ts"],"sourcesContent":["/**\n * RNC (Registro Nacional del Contribuyente) /\n * Cédula de Identidad.\n *\n * Dominican Republic tax identification number.\n * Companies use a 9-digit RNC with a check digit\n * computed via weighted sum mod 11. Individuals\n * use an 11-digit Cédula validated with the Luhn\n * algorithm.\n *\n * Format: ######### (9 digits, company RNC)\n * ########### (11 digits, individual Cédula)\n *\n * @see https://dgii.gov.do/\n */\n\nimport { luhnValidate } from \"#checksums/luhn\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\n/**\n * Weights for the 9-digit RNC check digit.\n * Applied to positions 0-7; check digit is at\n * position 8.\n */\nconst RNC_WEIGHTS = [7, 9, 8, 6, 5, 4, 3, 2] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -.\").trim();\n\n/**\n * RNC check digit: weighted sum mod 11, then\n * ((10 - remainder) % 9) + 1.\n */\nconst calcRncCheckDigit = (value: string): string => {\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += Number(value[i]) * RNC_WEIGHTS[i]!;\n }\n const remainder = sum % 11;\n return String(((10 - remainder) % 9) + 1);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 9 && v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Must be 9 digits (RNC) or 11 digits (Cédula)\",\n );\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Must contain only digits\",\n );\n }\n\n if (v.length === 9) {\n const expected = calcRncCheckDigit(v);\n if (v.at(-1) !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"RNC check digit does not match\",\n );\n }\n } else {\n // 11-digit Cédula uses Luhn checksum\n if (!luhnValidate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Cédula Luhn checksum does not match\",\n );\n }\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 9) {\n return `${v[0]}-${v.slice(1, 3)}-${v.slice(3, 8)}-${v.slice(8)}`;\n }\n return `${v.slice(0, 3)}-${v.slice(3, 10)}-${v.slice(10)}`;\n};\n\n/** Generate a random valid 9-digit RNC. */\nconst generate = (): string => {\n const payload = randomDigits(8);\n return payload + calcRncCheckDigit(payload);\n};\n\n/**\n * Dominican Republic RNC / Cédula.\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst rnc: Validator = {\n name: \"Dominican Republic Tax ID\",\n localName: \"Registro Nacional del Contribuyente\",\n abbreviation: \"RNC\",\n aliases: [\n \"RNC\",\n \"Registro Nacional del Contribuyente\",\n ] as const,\n candidatePattern: \"\\\\d{9}\",\n country: \"DO\",\n entityType: \"any\",\n lengths: [9, 11] as const,\n examples: [\"131098193\", \"00113918205\"] as const,\n compact,\n format,\n validate,\n sourceUrl: \"https://dgii.gov.do/\",\n generate,\n};\n\nexport default rnc;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,cAAc;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAE5C,MAAM,WAAW,UACf,MAAM,OAAO,MAAM,CAAC,MAAM;;;;;AAM5B,MAAM,qBAAqB,UAA0B;CACnD,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,QAAO,OAAO,MAAM,GAAG,GAAG,YAAY;CAExC,MAAM,YAAY,MAAM;AACxB,QAAO,QAAS,KAAK,aAAa,IAAK,EAAE;;AAG3C,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,GACjC,QAAO,IACL,kBACA,+CACD;AAGH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,2BACD;AAGH,KAAI,EAAE,WAAW,GAAG;EAClB,MAAM,WAAW,kBAAkB,EAAE;AACrC,MAAI,EAAE,GAAG,GAAG,KAAK,SACf,QAAO,IACL,oBACA,iCACD;YAIC,CAAC,aAAa,EAAE,CAClB,QAAO,IACL,oBACA,sCACD;AAIL,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;AAEhE,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;;;AAI1D,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,EAAE;AAC/B,QAAO,UAAU,kBAAkB,QAAQ;;;;;;;AAQ7C,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,OACA,sCACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG,GAAG;CAChB,UAAU,CAAC,aAAa,cAAc;CACtC;CACA;CACA;CACA,WAAW;CACX;CACD"}
|
package/dist/ec/mod.d.ts
ADDED
package/dist/ec/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import ruc from "./ruc.js";
|
|
3
|
+
//#region src/ec/mod.ts
|
|
4
|
+
var ec_exports = /* @__PURE__ */ __exportAll({ ruc: () => ruc });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { ec_exports, ruc };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/ec/mod.ts"],"sourcesContent":["export { default as ruc } from \"./ruc\";\n"],"mappings":""}
|
package/dist/ec/ruc.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/ec/ruc.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 Ecuadorian RUC. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Ecuadorian tax identification number. */
|
|
11
|
+
declare const ruc: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, ruc as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=ruc.d.ts.map
|
package/dist/ec/ruc.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
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/ec/ruc.ts
|
|
6
|
+
/**
|
|
7
|
+
* RUC (Registro Único de Contribuyentes).
|
|
8
|
+
*
|
|
9
|
+
* Ecuadorian tax identification number. 13 digits:
|
|
10
|
+
* - Digits 1-2: province code (01-24, 30, or 50)
|
|
11
|
+
* - Digit 3: type indicator
|
|
12
|
+
* - 0-5: natural person (CI + establishment)
|
|
13
|
+
* - 6: public entity (or natural person fallback)
|
|
14
|
+
* - 9: juridical entity (public checksum first,
|
|
15
|
+
* then juridical fallback)
|
|
16
|
+
*
|
|
17
|
+
* Natural persons use a Luhn-like mod-10 checksum on
|
|
18
|
+
* the first 10 digits. Public entities use a mod-11
|
|
19
|
+
* checksum on the first 9 digits. Private companies
|
|
20
|
+
* use a mod-11 checksum on the first 10 digits.
|
|
21
|
+
*
|
|
22
|
+
* @see https://www.sri.gob.ec/
|
|
23
|
+
*/
|
|
24
|
+
const compact = (value) => clean(value, " -");
|
|
25
|
+
/** CI mod-10 checksum: weights [2,1,2,1,...], fold
|
|
26
|
+
* products > 9 by subtracting 9, sum mod 10 == 0. */
|
|
27
|
+
const ciChecksum = (digits) => {
|
|
28
|
+
let sum = 0;
|
|
29
|
+
for (let i = 0; i < digits.length; i++) {
|
|
30
|
+
const weight = i % 2 === 0 ? 2 : 1;
|
|
31
|
+
let product = Number(digits[i]) * weight;
|
|
32
|
+
if (product > 9) product -= 9;
|
|
33
|
+
sum += product;
|
|
34
|
+
}
|
|
35
|
+
return sum % 10;
|
|
36
|
+
};
|
|
37
|
+
/** Weighted mod-11 checksum. */
|
|
38
|
+
const mod11Checksum = (digits, weights) => {
|
|
39
|
+
let sum = 0;
|
|
40
|
+
for (let i = 0; i < weights.length; i++) sum += Number(digits[i]) * weights[i];
|
|
41
|
+
return sum % 11;
|
|
42
|
+
};
|
|
43
|
+
const PUBLIC_WEIGHTS = [
|
|
44
|
+
3,
|
|
45
|
+
2,
|
|
46
|
+
7,
|
|
47
|
+
6,
|
|
48
|
+
5,
|
|
49
|
+
4,
|
|
50
|
+
3,
|
|
51
|
+
2,
|
|
52
|
+
1
|
|
53
|
+
];
|
|
54
|
+
const JURIDICAL_WEIGHTS = [
|
|
55
|
+
4,
|
|
56
|
+
3,
|
|
57
|
+
2,
|
|
58
|
+
7,
|
|
59
|
+
6,
|
|
60
|
+
5,
|
|
61
|
+
4,
|
|
62
|
+
3,
|
|
63
|
+
2,
|
|
64
|
+
1
|
|
65
|
+
];
|
|
66
|
+
const isValidProvince = (v) => {
|
|
67
|
+
const province = v.slice(0, 2);
|
|
68
|
+
return province >= "01" && province <= "24" || province === "30" || province === "50";
|
|
69
|
+
};
|
|
70
|
+
const validateNatural = (v) => {
|
|
71
|
+
if (v.slice(-3) === "000") return null;
|
|
72
|
+
if (ciChecksum(v.slice(0, 10)) !== 0) return null;
|
|
73
|
+
return {
|
|
74
|
+
valid: true,
|
|
75
|
+
compact: v
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
const validatePublic = (v) => {
|
|
79
|
+
if (v.slice(-4) === "0000") return null;
|
|
80
|
+
if (mod11Checksum(v, PUBLIC_WEIGHTS) !== 0) return null;
|
|
81
|
+
return {
|
|
82
|
+
valid: true,
|
|
83
|
+
compact: v
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
const validateJuridical = (v) => {
|
|
87
|
+
if (v.slice(-3) === "000") return null;
|
|
88
|
+
if (mod11Checksum(v, JURIDICAL_WEIGHTS) !== 0) return null;
|
|
89
|
+
return {
|
|
90
|
+
valid: true,
|
|
91
|
+
compact: v
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
const validate = (value) => {
|
|
95
|
+
const v = compact(value);
|
|
96
|
+
if (v.length !== 13) return err("INVALID_LENGTH", "RUC must be exactly 13 digits");
|
|
97
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "RUC must contain only digits");
|
|
98
|
+
if (!isValidProvince(v)) return err("INVALID_COMPONENT", "RUC province code is invalid");
|
|
99
|
+
const typeDigit = Number(v[2]);
|
|
100
|
+
if (typeDigit <= 5) {
|
|
101
|
+
const result = validateNatural(v);
|
|
102
|
+
if (result) return result;
|
|
103
|
+
return err("INVALID_CHECKSUM", "RUC check digit does not match");
|
|
104
|
+
}
|
|
105
|
+
if (typeDigit === 6) {
|
|
106
|
+
const pub = validatePublic(v);
|
|
107
|
+
if (pub) return pub;
|
|
108
|
+
const nat = validateNatural(v);
|
|
109
|
+
if (nat) return nat;
|
|
110
|
+
return err("INVALID_CHECKSUM", "RUC check digit does not match");
|
|
111
|
+
}
|
|
112
|
+
if (typeDigit === 9) {
|
|
113
|
+
const pub = validatePublic(v);
|
|
114
|
+
if (pub) return pub;
|
|
115
|
+
const jur = validateJuridical(v);
|
|
116
|
+
if (jur) return jur;
|
|
117
|
+
return err("INVALID_CHECKSUM", "RUC check digit does not match");
|
|
118
|
+
}
|
|
119
|
+
return err("INVALID_COMPONENT", "RUC type digit is invalid");
|
|
120
|
+
};
|
|
121
|
+
const format = (value) => compact(value);
|
|
122
|
+
/** Generate a random valid Ecuadorian RUC. */
|
|
123
|
+
const generate = () => {
|
|
124
|
+
for (;;) {
|
|
125
|
+
const c = String(randomInt(1, 24)).padStart(2, "0") + randomDigits(11);
|
|
126
|
+
if (validate(c).valid) return c;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
/** Ecuadorian tax identification number. */
|
|
130
|
+
const ruc = {
|
|
131
|
+
name: "Registro Único de Contribuyentes",
|
|
132
|
+
localName: "Registro Único de Contribuyentes",
|
|
133
|
+
abbreviation: "RUC",
|
|
134
|
+
aliases: ["RUC", "Registro Único de Contribuyentes"],
|
|
135
|
+
candidatePattern: "\\d{13}",
|
|
136
|
+
country: "EC",
|
|
137
|
+
entityType: "any",
|
|
138
|
+
description: "13-digit tax identification number issued by the SRI",
|
|
139
|
+
sourceUrl: "https://www.sri.gob.ec/",
|
|
140
|
+
lengths: [13],
|
|
141
|
+
examples: ["1792060346001", "1790011674001"],
|
|
142
|
+
compact,
|
|
143
|
+
format,
|
|
144
|
+
validate,
|
|
145
|
+
generate
|
|
146
|
+
};
|
|
147
|
+
//#endregion
|
|
148
|
+
export { compact, ruc as default, format, generate, validate };
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=ruc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruc.js","names":[],"sources":["../../src/ec/ruc.ts"],"sourcesContent":["/**\n * RUC (Registro Único de Contribuyentes).\n *\n * Ecuadorian tax identification number. 13 digits:\n * - Digits 1-2: province code (01-24, 30, or 50)\n * - Digit 3: type indicator\n * - 0-5: natural person (CI + establishment)\n * - 6: public entity (or natural person fallback)\n * - 9: juridical entity (public checksum first,\n * then juridical fallback)\n *\n * Natural persons use a Luhn-like mod-10 checksum on\n * the first 10 digits. Public entities use a mod-11\n * checksum on the first 9 digits. Private companies\n * use a mod-11 checksum on the first 10 digits.\n *\n * @see https://www.sri.gob.ec/\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, \" -\");\n\n/** CI mod-10 checksum: weights [2,1,2,1,...], fold\n * products > 9 by subtracting 9, sum mod 10 == 0. */\nconst ciChecksum = (digits: string): number => {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n const weight = i % 2 === 0 ? 2 : 1;\n let product = Number(digits[i]) * weight;\n if (product > 9) product -= 9;\n sum += product;\n }\n return sum % 10;\n};\n\n/** Weighted mod-11 checksum. */\nconst mod11Checksum = (\n digits: string,\n weights: readonly number[],\n): number => {\n let sum = 0;\n for (let i = 0; i < weights.length; i++) {\n sum += Number(digits[i]) * weights[i]!;\n }\n return sum % 11;\n};\n\nconst PUBLIC_WEIGHTS = [3, 2, 7, 6, 5, 4, 3, 2, 1];\nconst JURIDICAL_WEIGHTS = [4, 3, 2, 7, 6, 5, 4, 3, 2, 1];\n\nconst isValidProvince = (v: string): boolean => {\n const province = v.slice(0, 2);\n return (\n (province >= \"01\" && province <= \"24\") ||\n province === \"30\" ||\n province === \"50\"\n );\n};\n\nconst validateNatural = (\n v: string,\n): ValidateResult | null => {\n if (v.slice(-3) === \"000\") return null;\n if (ciChecksum(v.slice(0, 10)) !== 0) return null;\n return { valid: true, compact: v };\n};\n\nconst validatePublic = (\n v: string,\n): ValidateResult | null => {\n if (v.slice(-4) === \"0000\") return null;\n if (mod11Checksum(v, PUBLIC_WEIGHTS) !== 0) return null;\n return { valid: true, compact: v };\n};\n\nconst validateJuridical = (\n v: string,\n): ValidateResult | null => {\n if (v.slice(-3) === \"000\") return null;\n if (mod11Checksum(v, JURIDICAL_WEIGHTS) !== 0) {\n return null;\n }\n return { valid: true, compact: v };\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 13) {\n return err(\n \"INVALID_LENGTH\",\n \"RUC must be exactly 13 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"RUC must contain only digits\",\n );\n }\n if (!isValidProvince(v)) {\n return err(\n \"INVALID_COMPONENT\",\n \"RUC province code is invalid\",\n );\n }\n\n const typeDigit = Number(v[2]);\n\n if (typeDigit <= 5) {\n // Natural person\n const result = validateNatural(v);\n if (result) return result;\n return err(\n \"INVALID_CHECKSUM\",\n \"RUC check digit does not match\",\n );\n }\n\n if (typeDigit === 6) {\n // Public entity; fall back to natural person\n const pub = validatePublic(v);\n if (pub) return pub;\n const nat = validateNatural(v);\n if (nat) return nat;\n return err(\n \"INVALID_CHECKSUM\",\n \"RUC check digit does not match\",\n );\n }\n\n if (typeDigit === 9) {\n // Juridical RUC; try public checksum first, fall\n // back to juridical (matches python-stdnum).\n const pub = validatePublic(v);\n if (pub) return pub;\n const jur = validateJuridical(v);\n if (jur) return jur;\n return err(\n \"INVALID_CHECKSUM\",\n \"RUC check digit does not match\",\n );\n }\n\n return err(\n \"INVALID_COMPONENT\",\n \"RUC type digit is invalid\",\n );\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Ecuadorian RUC. */\nconst generate = (): string => {\n for (;;) {\n const province = String(randomInt(1, 24)).padStart(\n 2,\n \"0\",\n );\n const c = province + randomDigits(11);\n if (validate(c).valid) return c;\n }\n};\n\n/** Ecuadorian tax identification number. */\nconst ruc: Validator = {\n name: \"Registro Único de Contribuyentes\",\n localName: \"Registro Único de Contribuyentes\",\n abbreviation: \"RUC\",\n aliases: [\n \"RUC\",\n \"Registro Único de Contribuyentes\",\n ] as const,\n candidatePattern: \"\\\\d{13}\",\n country: \"EC\",\n entityType: \"any\",\n description:\n \"13-digit tax identification number issued by the SRI\",\n sourceUrl: \"https://www.sri.gob.ec/\",\n lengths: [13] as const,\n examples: [\"1792060346001\", \"1790011674001\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default ruc;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;;;AAIpB,MAAM,cAAc,WAA2B;CAC7C,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EACtC,MAAM,SAAS,IAAI,MAAM,IAAI,IAAI;EACjC,IAAI,UAAU,OAAO,OAAO,GAAG,GAAG;AAClC,MAAI,UAAU,EAAG,YAAW;AAC5B,SAAO;;AAET,QAAO,MAAM;;;AAIf,MAAM,iBACJ,QACA,YACW;CACX,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAClC,QAAO,OAAO,OAAO,GAAG,GAAG,QAAQ;AAErC,QAAO,MAAM;;AAGf,MAAM,iBAAiB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAClD,MAAM,oBAAoB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAExD,MAAM,mBAAmB,MAAuB;CAC9C,MAAM,WAAW,EAAE,MAAM,GAAG,EAAE;AAC9B,QACG,YAAY,QAAQ,YAAY,QACjC,aAAa,QACb,aAAa;;AAIjB,MAAM,mBACJ,MAC0B;AAC1B,KAAI,EAAE,MAAM,GAAG,KAAK,MAAO,QAAO;AAClC,KAAI,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,EAAG,QAAO;AAC7C,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,kBACJ,MAC0B;AAC1B,KAAI,EAAE,MAAM,GAAG,KAAK,OAAQ,QAAO;AACnC,KAAI,cAAc,GAAG,eAAe,KAAK,EAAG,QAAO;AACnD,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,qBACJ,MAC0B;AAC1B,KAAI,EAAE,MAAM,GAAG,KAAK,MAAO,QAAO;AAClC,KAAI,cAAc,GAAG,kBAAkB,KAAK,EAC1C,QAAO;AAET,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,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,CAAC,gBAAgB,EAAE,CACrB,QAAO,IACL,qBACA,+BACD;CAGH,MAAM,YAAY,OAAO,EAAE,GAAG;AAE9B,KAAI,aAAa,GAAG;EAElB,MAAM,SAAS,gBAAgB,EAAE;AACjC,MAAI,OAAQ,QAAO;AACnB,SAAO,IACL,oBACA,iCACD;;AAGH,KAAI,cAAc,GAAG;EAEnB,MAAM,MAAM,eAAe,EAAE;AAC7B,MAAI,IAAK,QAAO;EAChB,MAAM,MAAM,gBAAgB,EAAE;AAC9B,MAAI,IAAK,QAAO;AAChB,SAAO,IACL,oBACA,iCACD;;AAGH,KAAI,cAAc,GAAG;EAGnB,MAAM,MAAM,eAAe,EAAE;AAC7B,MAAI,IAAK,QAAO;EAChB,MAAM,MAAM,kBAAkB,EAAE;AAChC,MAAI,IAAK,QAAO;AAChB,SAAO,IACL,oBACA,iCACD;;AAGH,QAAO,IACL,qBACA,4BACD;;AAGH,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;AAC7B,UAAS;EAKP,MAAM,IAJW,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SACxC,GACA,IACD,GACoB,aAAa,GAAG;AACrC,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,OACA,mCACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,aACE;CACF,WAAW;CACX,SAAS,CAAC,GAAG;CACb,UAAU,CAAC,iBAAiB,gBAAgB;CAC5C;CACA;CACA;CACA;CACD"}
|
package/dist/ee/ik.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ParsedPersonId, ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/ee/ik.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Compute the two-pass check digit used by both
|
|
8
|
+
* Estonian IK and Lithuanian Asmens kodas.
|
|
9
|
+
*/
|
|
10
|
+
declare const twoPassCheck: (digits: string) => number;
|
|
11
|
+
declare const validate: (value: string) => ValidateResult;
|
|
12
|
+
declare const format: (value: string) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Extract birth date and gender from an Isikukood.
|
|
15
|
+
* Returns null if the value is not valid.
|
|
16
|
+
*/
|
|
17
|
+
declare const parse: (value: string) => ParsedPersonId | null;
|
|
18
|
+
/** Generate a random valid Estonian IK. */
|
|
19
|
+
declare const generate: () => string;
|
|
20
|
+
/** Estonian Personal Identification Code. */
|
|
21
|
+
declare const ik: Validator;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { compact, ik as default, format, generate, parse, twoPassCheck, validate };
|
|
24
|
+
//# sourceMappingURL=ik.d.ts.map
|
package/dist/ee/ik.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
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/ee/ik.ts
|
|
8
|
+
/**
|
|
9
|
+
* Isikukood (IK).
|
|
10
|
+
*
|
|
11
|
+
* Estonian personal identification code. 11 digits:
|
|
12
|
+
* gender/century digit, YYMMDD, 3-digit serial, and
|
|
13
|
+
* a check digit computed with two-pass weighted sums.
|
|
14
|
+
*
|
|
15
|
+
* @see https://www.riigiteataja.ee/en/eli/512012015003/consolide
|
|
16
|
+
*/
|
|
17
|
+
const WEIGHTS_1 = [
|
|
18
|
+
1,
|
|
19
|
+
2,
|
|
20
|
+
3,
|
|
21
|
+
4,
|
|
22
|
+
5,
|
|
23
|
+
6,
|
|
24
|
+
7,
|
|
25
|
+
8,
|
|
26
|
+
9,
|
|
27
|
+
1
|
|
28
|
+
];
|
|
29
|
+
const WEIGHTS_2 = [
|
|
30
|
+
3,
|
|
31
|
+
4,
|
|
32
|
+
5,
|
|
33
|
+
6,
|
|
34
|
+
7,
|
|
35
|
+
8,
|
|
36
|
+
9,
|
|
37
|
+
1,
|
|
38
|
+
2,
|
|
39
|
+
3
|
|
40
|
+
];
|
|
41
|
+
const centuryMap = {
|
|
42
|
+
1: 1800,
|
|
43
|
+
2: 1800,
|
|
44
|
+
3: 1900,
|
|
45
|
+
4: 1900,
|
|
46
|
+
5: 2e3,
|
|
47
|
+
6: 2e3,
|
|
48
|
+
7: 2100,
|
|
49
|
+
8: 2100
|
|
50
|
+
};
|
|
51
|
+
const compact = (value) => clean(value, " -");
|
|
52
|
+
/**
|
|
53
|
+
* Compute the two-pass check digit used by both
|
|
54
|
+
* Estonian IK and Lithuanian Asmens kodas.
|
|
55
|
+
*/
|
|
56
|
+
const twoPassCheck = (digits) => {
|
|
57
|
+
let remainder = weightedSum(digits, WEIGHTS_1, 11);
|
|
58
|
+
if (remainder !== 10) return remainder;
|
|
59
|
+
remainder = weightedSum(digits, WEIGHTS_2, 11);
|
|
60
|
+
return remainder === 10 ? 0 : remainder;
|
|
61
|
+
};
|
|
62
|
+
const validate = (value) => {
|
|
63
|
+
const v = compact(value);
|
|
64
|
+
if (v.length !== 11) return err("INVALID_LENGTH", "Isikukood must be exactly 11 digits");
|
|
65
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Isikukood must contain only digits");
|
|
66
|
+
const g = Number(v[0]);
|
|
67
|
+
if (g < 1 || g > 8) return err("INVALID_COMPONENT", "Isikukood gender/century digit is invalid");
|
|
68
|
+
const century = centuryMap[g] ?? 1900;
|
|
69
|
+
const yy = Number(v.slice(1, 3));
|
|
70
|
+
const mm = Number(v.slice(3, 5));
|
|
71
|
+
const dd = Number(v.slice(5, 7));
|
|
72
|
+
if (!isValidDate(century + yy, mm, dd)) return err("INVALID_COMPONENT", "Isikukood contains an invalid date");
|
|
73
|
+
if (twoPassCheck(v.slice(0, 10)) !== Number(v[10])) return err("INVALID_CHECKSUM", "Isikukood check digit does not match");
|
|
74
|
+
return {
|
|
75
|
+
valid: true,
|
|
76
|
+
compact: v
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
const format = (value) => compact(value);
|
|
80
|
+
/**
|
|
81
|
+
* Extract birth date and gender from an Isikukood.
|
|
82
|
+
* Returns null if the value is not valid.
|
|
83
|
+
*/
|
|
84
|
+
const parse = (value) => {
|
|
85
|
+
const result = validate(value);
|
|
86
|
+
if (!result.valid) return null;
|
|
87
|
+
const v = result.compact;
|
|
88
|
+
const g = Number(v[0]);
|
|
89
|
+
const century = centuryMap[g] ?? 1900;
|
|
90
|
+
const yy = Number(v.slice(1, 3));
|
|
91
|
+
const mm = Number(v.slice(3, 5));
|
|
92
|
+
const dd = Number(v.slice(5, 7));
|
|
93
|
+
const year = century + yy;
|
|
94
|
+
return {
|
|
95
|
+
birthDate: new Date(year, mm - 1, dd),
|
|
96
|
+
gender: g % 2 === 1 ? "male" : "female"
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
/** Generate a random valid Estonian IK. */
|
|
100
|
+
const generate = () => {
|
|
101
|
+
for (;;) {
|
|
102
|
+
const g = String(randomInt(3, 6));
|
|
103
|
+
const yy = String(randomInt(0, 99)).padStart(2, "0");
|
|
104
|
+
const mm = String(randomInt(1, 12)).padStart(2, "0");
|
|
105
|
+
const dd = String(randomInt(1, 28)).padStart(2, "0");
|
|
106
|
+
const s = String(randomInt(0, 999)).padStart(3, "0");
|
|
107
|
+
const payload = g + yy + mm + dd + s;
|
|
108
|
+
const c = payload + String(twoPassCheck(payload));
|
|
109
|
+
if (validate(c).valid) return c;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
/** Estonian Personal Identification Code. */
|
|
113
|
+
const ik = {
|
|
114
|
+
name: "Estonian Personal ID",
|
|
115
|
+
localName: "Isikukood",
|
|
116
|
+
abbreviation: "IK",
|
|
117
|
+
aliases: ["isikukood", "IK"],
|
|
118
|
+
candidatePattern: "[1-6]\\d{10}",
|
|
119
|
+
country: "EE",
|
|
120
|
+
entityType: "person",
|
|
121
|
+
sourceUrl: "https://www.riigiteataja.ee/en/eli/512012015003/consolide",
|
|
122
|
+
examples: ["36805280109"],
|
|
123
|
+
compact,
|
|
124
|
+
format,
|
|
125
|
+
validate,
|
|
126
|
+
generate
|
|
127
|
+
};
|
|
128
|
+
//#endregion
|
|
129
|
+
export { compact, ik as default, format, generate, parse, twoPassCheck, validate };
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=ik.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ik.js","names":[],"sources":["../../src/ee/ik.ts"],"sourcesContent":["/**\n * Isikukood (IK).\n *\n * Estonian personal identification code. 11 digits:\n * gender/century digit, YYMMDD, 3-digit serial, and\n * a check digit computed with two-pass weighted sums.\n *\n * @see https://www.riigiteataja.ee/en/eli/512012015003/consolide\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_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1] as const;\nconst WEIGHTS_2 = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3] as const;\n\nconst 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\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\n/**\n * Compute the two-pass check digit used by both\n * Estonian IK and Lithuanian Asmens kodas.\n */\nexport const twoPassCheck = (digits: string): number => {\n let remainder = weightedSum(digits, WEIGHTS_1, 11);\n if (remainder !== 10) return remainder;\n remainder = weightedSum(digits, WEIGHTS_2, 11);\n return remainder === 10 ? 0 : remainder;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Isikukood must be exactly 11 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Isikukood must contain only digits\",\n );\n }\n\n const g = Number(v[0]);\n if (g < 1 || g > 8) {\n return err(\n \"INVALID_COMPONENT\",\n \"Isikukood gender/century digit is invalid\",\n );\n }\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 \"Isikukood contains an invalid date\",\n );\n }\n\n const check = twoPassCheck(v.slice(0, 10));\n if (check !== Number(v[10])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Isikukood 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 Isikukood.\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 g = Number(v[0]);\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 return {\n birthDate: new Date(year, mm - 1, dd),\n gender: g % 2 === 1 ? \"male\" : \"female\",\n };\n};\n\n/** Generate a random valid Estonian IK. */\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/** Estonian Personal Identification Code. */\nconst ik: Validator = {\n name: \"Estonian Personal ID\",\n localName: \"Isikukood\",\n abbreviation: \"IK\",\n aliases: [\"isikukood\", \"IK\"] as const,\n candidatePattern: \"[1-6]\\\\d{10}\",\n country: \"EE\",\n entityType: \"person\",\n sourceUrl:\n \"https://www.riigiteataja.ee/en/eli/512012015003/consolide\",\n examples: [\"36805280109\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default ik;\nexport { compact, format, parse, validate, generate };\n"],"mappings":"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"}
|
package/dist/ee/mod.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import ik from "./ik.js";
|
|
3
|
+
import registrikood from "./registrikood.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
|
|
6
|
+
//#region src/ee/mod.d.ts
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { ik, mod_d_exports, registrikood, vat };
|
|
10
|
+
//# sourceMappingURL=mod.d.ts.map
|
package/dist/ee/mod.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import ik from "./ik.js";
|
|
3
|
+
import registrikood from "./registrikood.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
//#region src/ee/mod.ts
|
|
6
|
+
var ee_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
ik: () => ik,
|
|
8
|
+
registrikood: () => registrikood,
|
|
9
|
+
vat: () => vat
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { ee_exports, ik, registrikood, vat };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/ee/mod.ts"],"sourcesContent":["export { default as ik } from \"./ik\";\nexport { default as registrikood } from \"./registrikood\";\nexport { default as vat } from \"./vat\";\n"],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/ee/registrikood.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Estonian Registrikood. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Estonian Company Registration Code. */
|
|
11
|
+
declare const registrikood: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, registrikood as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=registrikood.d.ts.map
|