@stll/stdnum 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/README.md +323 -0
- package/dist/_checksums/luhn.d.ts +12 -0
- package/dist/_checksums/luhn.js +26 -0
- package/dist/_checksums/luhn.js.map +1 -0
- package/dist/_checksums/mod1110.d.ts +12 -0
- package/dist/_checksums/mod1110.js +25 -0
- package/dist/_checksums/mod1110.js.map +1 -0
- package/dist/_checksums/mod112.d.ts +24 -0
- package/dist/_checksums/mod112.js +53 -0
- package/dist/_checksums/mod112.js.map +1 -0
- package/dist/_checksums/mod97.d.ts +23 -0
- package/dist/_checksums/mod97.js +28 -0
- package/dist/_checksums/mod97.js.map +1 -0
- package/dist/_checksums/verhoeff.d.ts +22 -0
- package/dist/_checksums/verhoeff.js +271 -0
- package/dist/_checksums/verhoeff.js.map +1 -0
- package/dist/_checksums/weighted-sum.d.ts +13 -0
- package/dist/_checksums/weighted-sum.js +22 -0
- package/dist/_checksums/weighted-sum.js.map +1 -0
- package/dist/_util/arabic.d.ts +19 -0
- package/dist/_util/arabic.js +41 -0
- package/dist/_util/arabic.js.map +1 -0
- package/dist/_util/clean.d.ts +13 -0
- package/dist/_util/clean.js +71 -0
- package/dist/_util/clean.js.map +1 -0
- package/dist/_util/date.d.ts +12 -0
- package/dist/_util/date.js +19 -0
- package/dist/_util/date.js.map +1 -0
- package/dist/_util/generate.d.ts +16 -0
- package/dist/_util/generate.js +21 -0
- package/dist/_util/generate.js.map +1 -0
- package/dist/_util/result.d.ts +8 -0
- package/dist/_util/result.js +13 -0
- package/dist/_util/result.js.map +1 -0
- package/dist/_util/strings.d.ts +21 -0
- package/dist/_util/strings.js +28 -0
- package/dist/_util/strings.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/ad/mod.d.ts +8 -0
- package/dist/ad/mod.js +8 -0
- package/dist/ad/mod.js.map +1 -0
- package/dist/ad/nrt.d.ts +13 -0
- package/dist/ad/nrt.js +69 -0
- package/dist/ad/nrt.js.map +1 -0
- package/dist/ae/eid.d.ts +17 -0
- package/dist/ae/eid.js +79 -0
- package/dist/ae/eid.js.map +1 -0
- package/dist/ae/mod.d.ts +8 -0
- package/dist/ae/mod.js +8 -0
- package/dist/ae/mod.js.map +1 -0
- package/dist/ai/mod.d.ts +8 -0
- package/dist/ai/mod.js +8 -0
- package/dist/ai/mod.js.map +1 -0
- package/dist/ai/tin.d.ts +19 -0
- package/dist/ai/tin.js +72 -0
- package/dist/ai/tin.js.map +1 -0
- package/dist/al/mod.d.ts +8 -0
- package/dist/al/mod.js +8 -0
- package/dist/al/mod.js.map +1 -0
- package/dist/al/nipt.d.ts +13 -0
- package/dist/al/nipt.js +56 -0
- package/dist/al/nipt.js.map +1 -0
- package/dist/am/mod.d.ts +8 -0
- package/dist/am/mod.js +8 -0
- package/dist/am/mod.js.map +1 -0
- package/dist/am/tin.d.ts +13 -0
- package/dist/am/tin.js +53 -0
- package/dist/am/tin.js.map +1 -0
- package/dist/ar/cbu.d.ts +14 -0
- package/dist/ar/cbu.js +88 -0
- package/dist/ar/cbu.js.map +1 -0
- package/dist/ar/cuit.d.ts +19 -0
- package/dist/ar/cuit.js +123 -0
- package/dist/ar/cuit.js.map +1 -0
- package/dist/ar/dni.d.ts +13 -0
- package/dist/ar/dni.js +57 -0
- package/dist/ar/dni.js.map +1 -0
- package/dist/ar/mod.d.ts +10 -0
- package/dist/ar/mod.js +14 -0
- package/dist/ar/mod.js.map +1 -0
- package/dist/at/businessid.d.ts +13 -0
- package/dist/at/businessid.js +56 -0
- package/dist/at/businessid.js.map +1 -0
- package/dist/at/mod.d.ts +11 -0
- package/dist/at/mod.js +16 -0
- package/dist/at/mod.js.map +1 -0
- package/dist/at/tin.d.ts +14 -0
- package/dist/at/tin.js +70 -0
- package/dist/at/tin.js.map +1 -0
- package/dist/at/uid.d.ts +14 -0
- package/dist/at/uid.js +64 -0
- package/dist/at/uid.js.map +1 -0
- package/dist/at/vnr.d.ts +12 -0
- package/dist/at/vnr.js +79 -0
- package/dist/at/vnr.js.map +1 -0
- package/dist/au/abn.d.ts +14 -0
- package/dist/au/abn.js +77 -0
- package/dist/au/abn.js.map +1 -0
- package/dist/au/acn.d.ts +14 -0
- package/dist/au/acn.js +70 -0
- package/dist/au/acn.js.map +1 -0
- package/dist/au/mod.d.ts +10 -0
- package/dist/au/mod.js +14 -0
- package/dist/au/mod.js.map +1 -0
- package/dist/au/tfn.d.ts +14 -0
- package/dist/au/tfn.js +71 -0
- package/dist/au/tfn.js.map +1 -0
- package/dist/az/mod.d.ts +8 -0
- package/dist/az/mod.js +8 -0
- package/dist/az/mod.js.map +1 -0
- package/dist/az/voen.d.ts +21 -0
- package/dist/az/voen.js +100 -0
- package/dist/az/voen.js.map +1 -0
- package/dist/ba/jmbg.d.ts +15 -0
- package/dist/ba/jmbg.js +97 -0
- package/dist/ba/jmbg.js.map +1 -0
- package/dist/ba/mod.d.ts +8 -0
- package/dist/ba/mod.js +8 -0
- package/dist/ba/mod.js.map +1 -0
- package/dist/bd/mod.d.ts +8 -0
- package/dist/bd/mod.js +8 -0
- package/dist/bd/mod.js.map +1 -0
- package/dist/bd/nid.d.ts +13 -0
- package/dist/bd/nid.js +116 -0
- package/dist/bd/nid.js.map +1 -0
- package/dist/be/bis.d.ts +14 -0
- package/dist/be/bis.js +65 -0
- package/dist/be/bis.js.map +1 -0
- package/dist/be/mod.d.ts +10 -0
- package/dist/be/mod.js +14 -0
- package/dist/be/mod.js.map +1 -0
- package/dist/be/nn.d.ts +21 -0
- package/dist/be/nn.js +84 -0
- package/dist/be/nn.js.map +1 -0
- package/dist/be/vat.d.ts +14 -0
- package/dist/be/vat.js +70 -0
- package/dist/be/vat.js.map +1 -0
- package/dist/bg/egn.d.ts +19 -0
- package/dist/bg/egn.js +122 -0
- package/dist/bg/egn.js.map +1 -0
- package/dist/bg/mod.d.ts +10 -0
- package/dist/bg/mod.js +14 -0
- package/dist/bg/mod.js.map +1 -0
- package/dist/bg/pnf.d.ts +14 -0
- package/dist/bg/pnf.js +70 -0
- package/dist/bg/pnf.js.map +1 -0
- package/dist/bg/vat.d.ts +14 -0
- package/dist/bg/vat.js +153 -0
- package/dist/bg/vat.js.map +1 -0
- package/dist/bh/cpr.d.ts +12 -0
- package/dist/bh/cpr.js +58 -0
- package/dist/bh/cpr.js.map +1 -0
- package/dist/bh/mod.d.ts +8 -0
- package/dist/bh/mod.js +8 -0
- package/dist/bh/mod.js.map +1 -0
- package/dist/bic.d.ts +13 -0
- package/dist/bic.js +72 -0
- package/dist/bic.js.map +1 -0
- package/dist/br/cnpj.d.ts +21 -0
- package/dist/br/cnpj.js +132 -0
- package/dist/br/cnpj.js.map +1 -0
- package/dist/br/cpf.d.ts +14 -0
- package/dist/br/cpf.js +83 -0
- package/dist/br/cpf.js.map +1 -0
- package/dist/br/mod.d.ts +9 -0
- package/dist/br/mod.js +12 -0
- package/dist/br/mod.js.map +1 -0
- package/dist/by/mod.d.ts +8 -0
- package/dist/by/mod.js +8 -0
- package/dist/by/mod.js.map +1 -0
- package/dist/by/unp.d.ts +14 -0
- package/dist/by/unp.js +114 -0
- package/dist/by/unp.js.map +1 -0
- package/dist/bz/mod.d.ts +8 -0
- package/dist/bz/mod.js +8 -0
- package/dist/bz/mod.js.map +1 -0
- package/dist/bz/tin.d.ts +16 -0
- package/dist/bz/tin.js +85 -0
- package/dist/bz/tin.js.map +1 -0
- package/dist/ca/bn.d.ts +14 -0
- package/dist/ca/bn.js +73 -0
- package/dist/ca/bn.js.map +1 -0
- package/dist/ca/mod.d.ts +9 -0
- package/dist/ca/mod.js +12 -0
- package/dist/ca/mod.js.map +1 -0
- package/dist/ca/sin.d.ts +14 -0
- package/dist/ca/sin.js +62 -0
- package/dist/ca/sin.js.map +1 -0
- package/dist/ch/mod.d.ts +10 -0
- package/dist/ch/mod.js +14 -0
- package/dist/ch/mod.js.map +1 -0
- package/dist/ch/ssn.d.ts +14 -0
- package/dist/ch/ssn.js +67 -0
- package/dist/ch/ssn.js.map +1 -0
- package/dist/ch/uid.d.ts +14 -0
- package/dist/ch/uid.js +81 -0
- package/dist/ch/uid.js.map +1 -0
- package/dist/ch/vat.d.ts +14 -0
- package/dist/ch/vat.js +70 -0
- package/dist/ch/vat.js.map +1 -0
- package/dist/cl/mod.d.ts +8 -0
- package/dist/cl/mod.js +8 -0
- package/dist/cl/mod.js.map +1 -0
- package/dist/cl/rut.d.ts +19 -0
- package/dist/cl/rut.js +95 -0
- package/dist/cl/rut.js.map +1 -0
- package/dist/cn/mod.d.ts +9 -0
- package/dist/cn/mod.js +12 -0
- package/dist/cn/mod.js.map +1 -0
- package/dist/cn/ric.d.ts +19 -0
- package/dist/cn/ric.js +108 -0
- package/dist/cn/ric.js.map +1 -0
- package/dist/cn/uscc.d.ts +14 -0
- package/dist/cn/uscc.js +88 -0
- package/dist/cn/uscc.js.map +1 -0
- package/dist/co/mod.d.ts +8 -0
- package/dist/co/mod.js +8 -0
- package/dist/co/mod.js.map +1 -0
- package/dist/co/nit.d.ts +14 -0
- package/dist/co/nit.js +109 -0
- package/dist/co/nit.js.map +1 -0
- package/dist/cr/cpf.d.ts +21 -0
- package/dist/cr/cpf.js +79 -0
- package/dist/cr/cpf.js.map +1 -0
- package/dist/cr/mod.d.ts +8 -0
- package/dist/cr/mod.js +8 -0
- package/dist/cr/mod.js.map +1 -0
- package/dist/creditcard.d.ts +25 -0
- package/dist/creditcard.js +121 -0
- package/dist/creditcard.js.map +1 -0
- package/dist/cu/mod.d.ts +8 -0
- package/dist/cu/mod.js +8 -0
- package/dist/cu/mod.js.map +1 -0
- package/dist/cu/ni.d.ts +21 -0
- package/dist/cu/ni.js +90 -0
- package/dist/cu/ni.js.map +1 -0
- package/dist/cy/mod.d.ts +8 -0
- package/dist/cy/mod.js +8 -0
- package/dist/cy/mod.js.map +1 -0
- package/dist/cy/vat.d.ts +14 -0
- package/dist/cy/vat.js +88 -0
- package/dist/cy/vat.js.map +1 -0
- package/dist/cz/dic.d.ts +14 -0
- package/dist/cz/dic.js +97 -0
- package/dist/cz/dic.js.map +1 -0
- package/dist/cz/ico.d.ts +14 -0
- package/dist/cz/ico.js +70 -0
- package/dist/cz/ico.js.map +1 -0
- package/dist/cz/mod.d.ts +10 -0
- package/dist/cz/mod.js +14 -0
- package/dist/cz/mod.js.map +1 -0
- package/dist/cz/rc.d.ts +22 -0
- package/dist/cz/rc.js +116 -0
- package/dist/cz/rc.js.map +1 -0
- package/dist/de/handelsreg.d.ts +17 -0
- package/dist/de/handelsreg.js +86 -0
- package/dist/de/handelsreg.js.map +1 -0
- package/dist/de/idnr.d.ts +14 -0
- package/dist/de/idnr.js +102 -0
- package/dist/de/idnr.js.map +1 -0
- package/dist/de/mod.d.ts +12 -0
- package/dist/de/mod.js +18 -0
- package/dist/de/mod.js.map +1 -0
- package/dist/de/stnr.d.ts +22 -0
- package/dist/de/stnr.js +144 -0
- package/dist/de/stnr.js.map +1 -0
- package/dist/de/svnr.d.ts +14 -0
- package/dist/de/svnr.js +108 -0
- package/dist/de/svnr.js.map +1 -0
- package/dist/de/vat.d.ts +14 -0
- package/dist/de/vat.js +65 -0
- package/dist/de/vat.js.map +1 -0
- package/dist/dk/cpr.d.ts +17 -0
- package/dist/dk/cpr.js +81 -0
- package/dist/dk/cpr.js.map +1 -0
- package/dist/dk/cvr.d.ts +14 -0
- package/dist/dk/cvr.js +70 -0
- package/dist/dk/cvr.js.map +1 -0
- package/dist/dk/mod.d.ts +10 -0
- package/dist/dk/mod.js +14 -0
- package/dist/dk/mod.js.map +1 -0
- package/dist/dk/vat.d.ts +14 -0
- package/dist/dk/vat.js +72 -0
- package/dist/dk/vat.js.map +1 -0
- package/dist/do/mod.d.ts +8 -0
- package/dist/do/mod.js +8 -0
- package/dist/do/mod.js.map +1 -0
- package/dist/do/rnc.d.ts +18 -0
- package/dist/do/rnc.js +95 -0
- package/dist/do/rnc.js.map +1 -0
- package/dist/ec/mod.d.ts +8 -0
- package/dist/ec/mod.js +8 -0
- package/dist/ec/mod.js.map +1 -0
- package/dist/ec/ruc.d.ts +14 -0
- package/dist/ec/ruc.js +150 -0
- package/dist/ec/ruc.js.map +1 -0
- package/dist/ee/ik.d.ts +24 -0
- package/dist/ee/ik.js +131 -0
- package/dist/ee/ik.js.map +1 -0
- package/dist/ee/mod.d.ts +10 -0
- package/dist/ee/mod.js +14 -0
- package/dist/ee/mod.js.map +1 -0
- package/dist/ee/registrikood.d.ts +14 -0
- package/dist/ee/registrikood.js +63 -0
- package/dist/ee/registrikood.js.map +1 -0
- package/dist/ee/vat.d.ts +14 -0
- package/dist/ee/vat.js +69 -0
- package/dist/ee/vat.js.map +1 -0
- package/dist/eg/mod.d.ts +8 -0
- package/dist/eg/mod.js +8 -0
- package/dist/eg/mod.js.map +1 -0
- package/dist/eg/tn.d.ts +13 -0
- package/dist/eg/tn.js +81 -0
- package/dist/eg/tn.js.map +1 -0
- package/dist/es/cif.d.ts +14 -0
- package/dist/es/cif.js +66 -0
- package/dist/es/cif.js.map +1 -0
- package/dist/es/dni.d.ts +15 -0
- package/dist/es/dni.js +58 -0
- package/dist/es/dni.js.map +1 -0
- package/dist/es/mod.d.ts +12 -0
- package/dist/es/mod.js +18 -0
- package/dist/es/mod.js.map +1 -0
- package/dist/es/nie.d.ts +14 -0
- package/dist/es/nie.js +78 -0
- package/dist/es/nie.js.map +1 -0
- package/dist/es/nss.d.ts +14 -0
- package/dist/es/nss.js +72 -0
- package/dist/es/nss.js.map +1 -0
- package/dist/es/vat.d.ts +15 -0
- package/dist/es/vat.js +104 -0
- package/dist/es/vat.js.map +1 -0
- package/dist/eu/mod.d.ts +8 -0
- package/dist/eu/mod.js +8 -0
- package/dist/eu/mod.js.map +1 -0
- package/dist/eu/vat.d.ts +20 -0
- package/dist/eu/vat.js +145 -0
- package/dist/eu/vat.js.map +1 -0
- package/dist/fi/hetu.d.ts +17 -0
- package/dist/fi/hetu.js +107 -0
- package/dist/fi/hetu.js.map +1 -0
- package/dist/fi/mod.d.ts +10 -0
- package/dist/fi/mod.js +14 -0
- package/dist/fi/mod.js.map +1 -0
- package/dist/fi/vat.d.ts +14 -0
- package/dist/fi/vat.js +68 -0
- package/dist/fi/vat.js.map +1 -0
- package/dist/fi/ytunnus.d.ts +14 -0
- package/dist/fi/ytunnus.js +71 -0
- package/dist/fi/ytunnus.js.map +1 -0
- package/dist/fr/mod.d.ts +12 -0
- package/dist/fr/mod.js +18 -0
- package/dist/fr/mod.js.map +1 -0
- package/dist/fr/nif.d.ts +14 -0
- package/dist/fr/nif.js +64 -0
- package/dist/fr/nif.js.map +1 -0
- package/dist/fr/nir.d.ts +15 -0
- package/dist/fr/nir.js +106 -0
- package/dist/fr/nir.js.map +1 -0
- package/dist/fr/siren.d.ts +14 -0
- package/dist/fr/siren.js +56 -0
- package/dist/fr/siren.js.map +1 -0
- package/dist/fr/siret.d.ts +14 -0
- package/dist/fr/siret.js +73 -0
- package/dist/fr/siret.js.map +1 -0
- package/dist/fr/tva.d.ts +14 -0
- package/dist/fr/tva.js +80 -0
- package/dist/fr/tva.js.map +1 -0
- package/dist/gb/mod.d.ts +11 -0
- package/dist/gb/mod.js +16 -0
- package/dist/gb/mod.js.map +1 -0
- package/dist/gb/nino.d.ts +13 -0
- package/dist/gb/nino.js +103 -0
- package/dist/gb/nino.js.map +1 -0
- package/dist/gb/sedol.d.ts +15 -0
- package/dist/gb/sedol.js +85 -0
- package/dist/gb/sedol.js.map +1 -0
- package/dist/gb/utr.d.ts +14 -0
- package/dist/gb/utr.js +69 -0
- package/dist/gb/utr.js.map +1 -0
- package/dist/gb/vat.d.ts +14 -0
- package/dist/gb/vat.js +102 -0
- package/dist/gb/vat.js.map +1 -0
- package/dist/ge/mod.d.ts +8 -0
- package/dist/ge/mod.js +8 -0
- package/dist/ge/mod.js.map +1 -0
- package/dist/ge/pin.d.ts +13 -0
- package/dist/ge/pin.js +51 -0
- package/dist/ge/pin.js.map +1 -0
- package/dist/gh/mod.d.ts +8 -0
- package/dist/gh/mod.js +8 -0
- package/dist/gh/mod.js.map +1 -0
- package/dist/gh/tin.d.ts +14 -0
- package/dist/gh/tin.js +80 -0
- package/dist/gh/tin.js.map +1 -0
- package/dist/gr/amka.d.ts +14 -0
- package/dist/gr/amka.js +71 -0
- package/dist/gr/amka.js.map +1 -0
- package/dist/gr/mod.d.ts +9 -0
- package/dist/gr/mod.js +12 -0
- package/dist/gr/mod.js.map +1 -0
- package/dist/gr/vat.d.ts +14 -0
- package/dist/gr/vat.js +66 -0
- package/dist/gr/vat.js.map +1 -0
- package/dist/gt/mod.d.ts +8 -0
- package/dist/gt/mod.js +8 -0
- package/dist/gt/mod.js.map +1 -0
- package/dist/gt/nit.d.ts +21 -0
- package/dist/gt/nit.js +98 -0
- package/dist/gt/nit.js.map +1 -0
- package/dist/hk/hkid.d.ts +15 -0
- package/dist/hk/hkid.js +92 -0
- package/dist/hk/hkid.js.map +1 -0
- package/dist/hk/mod.d.ts +8 -0
- package/dist/hk/mod.js +8 -0
- package/dist/hk/mod.js.map +1 -0
- package/dist/hr/mod.d.ts +8 -0
- package/dist/hr/mod.js +8 -0
- package/dist/hr/mod.js.map +1 -0
- package/dist/hr/vat.d.ts +14 -0
- package/dist/hr/vat.js +55 -0
- package/dist/hr/vat.js.map +1 -0
- package/dist/hu/mod.d.ts +8 -0
- package/dist/hu/mod.js +8 -0
- package/dist/hu/mod.js.map +1 -0
- package/dist/hu/vat.d.ts +14 -0
- package/dist/hu/vat.js +68 -0
- package/dist/hu/vat.js.map +1 -0
- package/dist/iban.d.ts +16 -0
- package/dist/iban.js +282 -0
- package/dist/iban.js.map +1 -0
- package/dist/id/mod.d.ts +8 -0
- package/dist/id/mod.js +8 -0
- package/dist/id/mod.js.map +1 -0
- package/dist/id/npwp.d.ts +14 -0
- package/dist/id/npwp.js +133 -0
- package/dist/id/npwp.js.map +1 -0
- package/dist/ie/mod.d.ts +9 -0
- package/dist/ie/mod.js +12 -0
- package/dist/ie/mod.js.map +1 -0
- package/dist/ie/pps.d.ts +14 -0
- package/dist/ie/pps.js +69 -0
- package/dist/ie/pps.js.map +1 -0
- package/dist/ie/vat.d.ts +14 -0
- package/dist/ie/vat.js +83 -0
- package/dist/ie/vat.js.map +1 -0
- package/dist/il/idnr.d.ts +14 -0
- package/dist/il/idnr.js +61 -0
- package/dist/il/idnr.js.map +1 -0
- package/dist/il/mod.d.ts +8 -0
- package/dist/il/mod.js +8 -0
- package/dist/il/mod.js.map +1 -0
- package/dist/in/aadhaar.d.ts +14 -0
- package/dist/in/aadhaar.js +61 -0
- package/dist/in/aadhaar.js.map +1 -0
- package/dist/in/gstin.d.ts +14 -0
- package/dist/in/gstin.js +130 -0
- package/dist/in/gstin.js.map +1 -0
- package/dist/in/mod.d.ts +10 -0
- package/dist/in/mod.js +14 -0
- package/dist/in/mod.js.map +1 -0
- package/dist/in/pan.d.ts +13 -0
- package/dist/in/pan.js +58 -0
- package/dist/in/pan.js.map +1 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.js +104 -0
- package/dist/iq/mod.d.ts +8 -0
- package/dist/iq/mod.js +8 -0
- package/dist/iq/mod.js.map +1 -0
- package/dist/iq/nid.d.ts +14 -0
- package/dist/iq/nid.js +56 -0
- package/dist/iq/nid.js.map +1 -0
- package/dist/ir/mod.d.ts +8 -0
- package/dist/ir/mod.js +8 -0
- package/dist/ir/mod.js.map +1 -0
- package/dist/ir/nid.d.ts +18 -0
- package/dist/ir/nid.js +90 -0
- package/dist/ir/nid.js.map +1 -0
- package/dist/is/kennitala.d.ts +14 -0
- package/dist/is/kennitala.js +92 -0
- package/dist/is/kennitala.js.map +1 -0
- package/dist/is/mod.d.ts +9 -0
- package/dist/is/mod.js +12 -0
- package/dist/is/mod.js.map +1 -0
- package/dist/is/vsk.d.ts +13 -0
- package/dist/is/vsk.js +47 -0
- package/dist/is/vsk.js.map +1 -0
- package/dist/isin.d.ts +14 -0
- package/dist/isin.js +85 -0
- package/dist/isin.js.map +1 -0
- package/dist/it/codicefiscale.d.ts +18 -0
- package/dist/it/codicefiscale.js +214 -0
- package/dist/it/codicefiscale.js.map +1 -0
- package/dist/it/iva.d.ts +14 -0
- package/dist/it/iva.js +71 -0
- package/dist/it/iva.js.map +1 -0
- package/dist/it/mod.d.ts +9 -0
- package/dist/it/mod.js +12 -0
- package/dist/it/mod.js.map +1 -0
- package/dist/jp/cn.d.ts +14 -0
- package/dist/jp/cn.js +68 -0
- package/dist/jp/cn.js.map +1 -0
- package/dist/jp/mod.d.ts +9 -0
- package/dist/jp/mod.js +12 -0
- package/dist/jp/mod.js.map +1 -0
- package/dist/jp/mynumber.d.ts +14 -0
- package/dist/jp/mynumber.js +86 -0
- package/dist/jp/mynumber.js.map +1 -0
- package/dist/kr/brn.d.ts +13 -0
- package/dist/kr/brn.js +67 -0
- package/dist/kr/brn.js.map +1 -0
- package/dist/kr/mod.d.ts +9 -0
- package/dist/kr/mod.js +12 -0
- package/dist/kr/mod.js.map +1 -0
- package/dist/kr/rrn.d.ts +22 -0
- package/dist/kr/rrn.js +133 -0
- package/dist/kr/rrn.js.map +1 -0
- package/dist/kw/civil.d.ts +18 -0
- package/dist/kw/civil.js +99 -0
- package/dist/kw/civil.js.map +1 -0
- package/dist/kw/mod.d.ts +8 -0
- package/dist/kw/mod.js +8 -0
- package/dist/kw/mod.js.map +1 -0
- package/dist/kz/iin.d.ts +23 -0
- package/dist/kz/iin.js +150 -0
- package/dist/kz/iin.js.map +1 -0
- package/dist/kz/mod.d.ts +8 -0
- package/dist/kz/mod.js +8 -0
- package/dist/kz/mod.js.map +1 -0
- package/dist/lei.d.ts +14 -0
- package/dist/lei.js +68 -0
- package/dist/lei.js.map +1 -0
- package/dist/li/mod.d.ts +8 -0
- package/dist/li/mod.js +8 -0
- package/dist/li/mod.js.map +1 -0
- package/dist/li/peid.d.ts +13 -0
- package/dist/li/peid.js +61 -0
- package/dist/li/peid.js.map +1 -0
- package/dist/lk/mod.d.ts +8 -0
- package/dist/lk/mod.js +8 -0
- package/dist/lk/mod.js.map +1 -0
- package/dist/lk/nic.d.ts +17 -0
- package/dist/lk/nic.js +139 -0
- package/dist/lk/nic.js.map +1 -0
- package/dist/lt/asmens.d.ts +14 -0
- package/dist/lt/asmens.js +81 -0
- package/dist/lt/asmens.js.map +1 -0
- package/dist/lt/mod.d.ts +9 -0
- package/dist/lt/mod.js +12 -0
- package/dist/lt/mod.js.map +1 -0
- package/dist/lt/vat.d.ts +14 -0
- package/dist/lt/vat.js +72 -0
- package/dist/lt/vat.js.map +1 -0
- package/dist/lu/mod.d.ts +8 -0
- package/dist/lu/mod.js +8 -0
- package/dist/lu/mod.js.map +1 -0
- package/dist/lu/vat.d.ts +14 -0
- package/dist/lu/vat.js +56 -0
- package/dist/lu/vat.js.map +1 -0
- package/dist/luhn.d.ts +17 -0
- package/dist/luhn.js +51 -0
- package/dist/luhn.js.map +1 -0
- package/dist/lv/mod.d.ts +8 -0
- package/dist/lv/mod.js +8 -0
- package/dist/lv/mod.js.map +1 -0
- package/dist/lv/vat.d.ts +14 -0
- package/dist/lv/vat.js +104 -0
- package/dist/lv/vat.js.map +1 -0
- package/dist/ma/ice.d.ts +14 -0
- package/dist/ma/ice.js +57 -0
- package/dist/ma/ice.js.map +1 -0
- package/dist/ma/mod.d.ts +8 -0
- package/dist/ma/mod.js +8 -0
- package/dist/ma/mod.js.map +1 -0
- package/dist/mc/mod.d.ts +8 -0
- package/dist/mc/mod.js +8 -0
- package/dist/mc/mod.js.map +1 -0
- package/dist/mc/tva.d.ts +14 -0
- package/dist/mc/tva.js +53 -0
- package/dist/mc/tva.js.map +1 -0
- package/dist/md/idno.d.ts +12 -0
- package/dist/md/idno.js +71 -0
- package/dist/md/idno.js.map +1 -0
- package/dist/md/mod.d.ts +8 -0
- package/dist/md/mod.js +8 -0
- package/dist/md/mod.js.map +1 -0
- package/dist/me/mod.d.ts +8 -0
- package/dist/me/mod.js +8 -0
- package/dist/me/mod.js.map +1 -0
- package/dist/me/pib.d.ts +14 -0
- package/dist/me/pib.js +63 -0
- package/dist/me/pib.js.map +1 -0
- package/dist/mk/edb.d.ts +14 -0
- package/dist/mk/edb.js +77 -0
- package/dist/mk/edb.js.map +1 -0
- package/dist/mk/mod.d.ts +8 -0
- package/dist/mk/mod.js +8 -0
- package/dist/mk/mod.js.map +1 -0
- package/dist/mt/mod.d.ts +8 -0
- package/dist/mt/mod.js +8 -0
- package/dist/mt/mod.js.map +1 -0
- package/dist/mt/vat.d.ts +14 -0
- package/dist/mt/vat.js +69 -0
- package/dist/mt/vat.js.map +1 -0
- package/dist/mu/brn.d.ts +13 -0
- package/dist/mu/brn.js +68 -0
- package/dist/mu/brn.js.map +1 -0
- package/dist/mu/mod.d.ts +8 -0
- package/dist/mu/mod.js +8 -0
- package/dist/mu/mod.js.map +1 -0
- package/dist/mx/clabe.d.ts +18 -0
- package/dist/mx/clabe.js +87 -0
- package/dist/mx/clabe.js.map +1 -0
- package/dist/mx/curp.d.ts +21 -0
- package/dist/mx/curp.js +140 -0
- package/dist/mx/curp.js.map +1 -0
- package/dist/mx/mod.d.ts +10 -0
- package/dist/mx/mod.js +14 -0
- package/dist/mx/mod.js.map +1 -0
- package/dist/mx/rfc.d.ts +16 -0
- package/dist/mx/rfc.js +92 -0
- package/dist/mx/rfc.js.map +1 -0
- package/dist/my/mod.d.ts +8 -0
- package/dist/my/mod.js +8 -0
- package/dist/my/mod.js.map +1 -0
- package/dist/my/nric.d.ts +17 -0
- package/dist/my/nric.js +186 -0
- package/dist/my/nric.js.map +1 -0
- package/dist/ng/mod.d.ts +8 -0
- package/dist/ng/mod.js +8 -0
- package/dist/ng/mod.js.map +1 -0
- package/dist/ng/nin.d.ts +13 -0
- package/dist/ng/nin.js +54 -0
- package/dist/ng/nin.js.map +1 -0
- package/dist/ni/mod.d.ts +8 -0
- package/dist/ni/mod.js +8 -0
- package/dist/ni/mod.js.map +1 -0
- package/dist/ni/ruc.d.ts +23 -0
- package/dist/ni/ruc.js +113 -0
- package/dist/ni/ruc.js.map +1 -0
- package/dist/nl/bsn.d.ts +14 -0
- package/dist/nl/bsn.js +70 -0
- package/dist/nl/bsn.js.map +1 -0
- package/dist/nl/kvk.d.ts +13 -0
- package/dist/nl/kvk.js +45 -0
- package/dist/nl/kvk.js.map +1 -0
- package/dist/nl/mod.d.ts +10 -0
- package/dist/nl/mod.js +14 -0
- package/dist/nl/mod.js.map +1 -0
- package/dist/nl/vat.d.ts +14 -0
- package/dist/nl/vat.js +94 -0
- package/dist/nl/vat.js.map +1 -0
- package/dist/no/fodselsnummer.d.ts +20 -0
- package/dist/no/fodselsnummer.js +134 -0
- package/dist/no/fodselsnummer.js.map +1 -0
- package/dist/no/mod.d.ts +10 -0
- package/dist/no/mod.js +14 -0
- package/dist/no/mod.js.map +1 -0
- package/dist/no/mva.d.ts +14 -0
- package/dist/no/mva.js +54 -0
- package/dist/no/mva.js.map +1 -0
- package/dist/no/orgnr.d.ts +14 -0
- package/dist/no/orgnr.js +66 -0
- package/dist/no/orgnr.js.map +1 -0
- package/dist/nz/ird.d.ts +14 -0
- package/dist/nz/ird.js +105 -0
- package/dist/nz/ird.js.map +1 -0
- package/dist/nz/mod.d.ts +8 -0
- package/dist/nz/mod.js +8 -0
- package/dist/nz/mod.js.map +1 -0
- package/dist/pa/mod.d.ts +8 -0
- package/dist/pa/mod.js +8 -0
- package/dist/pa/mod.js.map +1 -0
- package/dist/pa/ruc.d.ts +23 -0
- package/dist/pa/ruc.js +200 -0
- package/dist/pa/ruc.js.map +1 -0
- package/dist/patterns.d.ts +45 -0
- package/dist/patterns.js +123 -0
- package/dist/patterns.js.map +1 -0
- package/dist/pe/mod.d.ts +8 -0
- package/dist/pe/mod.js +8 -0
- package/dist/pe/mod.js.map +1 -0
- package/dist/pe/ruc.d.ts +19 -0
- package/dist/pe/ruc.js +109 -0
- package/dist/pe/ruc.js.map +1 -0
- package/dist/ph/mod.d.ts +8 -0
- package/dist/ph/mod.js +8 -0
- package/dist/ph/mod.js.map +1 -0
- package/dist/ph/philid.d.ts +13 -0
- package/dist/ph/philid.js +60 -0
- package/dist/ph/philid.js.map +1 -0
- package/dist/pk/cnic.d.ts +13 -0
- package/dist/pk/cnic.js +69 -0
- package/dist/pk/cnic.js.map +1 -0
- package/dist/pk/mod.d.ts +8 -0
- package/dist/pk/mod.js +8 -0
- package/dist/pk/mod.js.map +1 -0
- package/dist/pl/mod.d.ts +10 -0
- package/dist/pl/mod.js +14 -0
- package/dist/pl/mod.js.map +1 -0
- package/dist/pl/nip.d.ts +18 -0
- package/dist/pl/nip.js +77 -0
- package/dist/pl/nip.js.map +1 -0
- package/dist/pl/pesel.d.ts +19 -0
- package/dist/pl/pesel.js +109 -0
- package/dist/pl/pesel.js.map +1 -0
- package/dist/pl/regon.d.ts +14 -0
- package/dist/pl/regon.js +85 -0
- package/dist/pl/regon.js.map +1 -0
- package/dist/pt/cc.d.ts +14 -0
- package/dist/pt/cc.js +77 -0
- package/dist/pt/cc.js.map +1 -0
- package/dist/pt/mod.d.ts +9 -0
- package/dist/pt/mod.js +12 -0
- package/dist/pt/mod.js.map +1 -0
- package/dist/pt/vat.d.ts +14 -0
- package/dist/pt/vat.js +73 -0
- package/dist/pt/vat.js.map +1 -0
- package/dist/ro/cnp.d.ts +19 -0
- package/dist/ro/cnp.js +176 -0
- package/dist/ro/cnp.js.map +1 -0
- package/dist/ro/mod.d.ts +9 -0
- package/dist/ro/mod.js +12 -0
- package/dist/ro/mod.js.map +1 -0
- package/dist/ro/vat.d.ts +14 -0
- package/dist/ro/vat.js +76 -0
- package/dist/ro/vat.js.map +1 -0
- package/dist/rs/mod.d.ts +8 -0
- package/dist/rs/mod.js +8 -0
- package/dist/rs/mod.js.map +1 -0
- package/dist/rs/pib.d.ts +14 -0
- package/dist/rs/pib.js +60 -0
- package/dist/rs/pib.js.map +1 -0
- package/dist/ru/inn.d.ts +14 -0
- package/dist/ru/inn.js +103 -0
- package/dist/ru/inn.js.map +1 -0
- package/dist/ru/mod.d.ts +8 -0
- package/dist/ru/mod.js +8 -0
- package/dist/ru/mod.js.map +1 -0
- package/dist/se/mod.d.ts +10 -0
- package/dist/se/mod.js +14 -0
- package/dist/se/mod.js.map +1 -0
- package/dist/se/orgnr.d.ts +14 -0
- package/dist/se/orgnr.js +59 -0
- package/dist/se/orgnr.js.map +1 -0
- package/dist/se/personnummer.d.ts +23 -0
- package/dist/se/personnummer.js +122 -0
- package/dist/se/personnummer.js.map +1 -0
- package/dist/se/vat.d.ts +14 -0
- package/dist/se/vat.js +63 -0
- package/dist/se/vat.js.map +1 -0
- package/dist/sg/mod.d.ts +8 -0
- package/dist/sg/mod.js +8 -0
- package/dist/sg/mod.js.map +1 -0
- package/dist/sg/uen.d.ts +14 -0
- package/dist/sg/uen.js +207 -0
- package/dist/sg/uen.js.map +1 -0
- package/dist/si/emso.d.ts +19 -0
- package/dist/si/emso.js +108 -0
- package/dist/si/emso.js.map +1 -0
- package/dist/si/mod.d.ts +9 -0
- package/dist/si/mod.js +12 -0
- package/dist/si/mod.js.map +1 -0
- package/dist/si/vat.d.ts +14 -0
- package/dist/si/vat.js +74 -0
- package/dist/si/vat.js.map +1 -0
- package/dist/sk/dic.d.ts +14 -0
- package/dist/sk/dic.js +66 -0
- package/dist/sk/dic.js.map +1 -0
- package/dist/sk/ico.d.ts +10 -0
- package/dist/sk/ico.js +30 -0
- package/dist/sk/ico.js.map +1 -0
- package/dist/sk/mod.d.ts +10 -0
- package/dist/sk/mod.js +14 -0
- package/dist/sk/mod.js.map +1 -0
- package/dist/sk/rc.d.ts +10 -0
- package/dist/sk/rc.js +30 -0
- package/dist/sk/rc.js.map +1 -0
- package/dist/th/mod.d.ts +8 -0
- package/dist/th/mod.js +8 -0
- package/dist/th/mod.js.map +1 -0
- package/dist/th/tin.d.ts +14 -0
- package/dist/th/tin.js +63 -0
- package/dist/th/tin.js.map +1 -0
- package/dist/tr/mod.d.ts +9 -0
- package/dist/tr/mod.js +12 -0
- package/dist/tr/mod.js.map +1 -0
- package/dist/tr/tckimlik.d.ts +15 -0
- package/dist/tr/tckimlik.js +79 -0
- package/dist/tr/tckimlik.js.map +1 -0
- package/dist/tr/vkn.d.ts +15 -0
- package/dist/tr/vkn.js +79 -0
- package/dist/tr/vkn.js.map +1 -0
- package/dist/tw/mod.d.ts +8 -0
- package/dist/tw/mod.js +8 -0
- package/dist/tw/mod.js.map +1 -0
- package/dist/tw/ubn.d.ts +14 -0
- package/dist/tw/ubn.js +86 -0
- package/dist/tw/ubn.js.map +1 -0
- package/dist/types.d.ts +95 -0
- package/dist/types.js +1 -0
- package/dist/ua/edrpou.d.ts +14 -0
- package/dist/ua/edrpou.js +103 -0
- package/dist/ua/edrpou.js.map +1 -0
- package/dist/ua/mod.d.ts +8 -0
- package/dist/ua/mod.js +8 -0
- package/dist/ua/mod.js.map +1 -0
- package/dist/us/ein.d.ts +13 -0
- package/dist/us/ein.js +234 -0
- package/dist/us/ein.js.map +1 -0
- package/dist/us/itin.d.ts +15 -0
- package/dist/us/itin.js +69 -0
- package/dist/us/itin.js.map +1 -0
- package/dist/us/mod.d.ts +11 -0
- package/dist/us/mod.js +16 -0
- package/dist/us/mod.js.map +1 -0
- package/dist/us/rtn.d.ts +14 -0
- package/dist/us/rtn.js +91 -0
- package/dist/us/rtn.js.map +1 -0
- package/dist/us/ssn.d.ts +13 -0
- package/dist/us/ssn.js +77 -0
- package/dist/us/ssn.js.map +1 -0
- package/dist/uy/mod.d.ts +8 -0
- package/dist/uy/mod.js +8 -0
- package/dist/uy/mod.js.map +1 -0
- package/dist/uy/rut.d.ts +18 -0
- package/dist/uy/rut.js +105 -0
- package/dist/uy/rut.js.map +1 -0
- package/dist/ve/mod.d.ts +8 -0
- package/dist/ve/mod.js +8 -0
- package/dist/ve/mod.js.map +1 -0
- package/dist/ve/rif.d.ts +18 -0
- package/dist/ve/rif.js +109 -0
- package/dist/ve/rif.js.map +1 -0
- package/dist/vn/mod.d.ts +8 -0
- package/dist/vn/mod.js +8 -0
- package/dist/vn/mod.js.map +1 -0
- package/dist/vn/mst.d.ts +14 -0
- package/dist/vn/mst.js +82 -0
- package/dist/vn/mst.js.map +1 -0
- package/dist/za/idnr.d.ts +19 -0
- package/dist/za/idnr.js +110 -0
- package/dist/za/idnr.js.map +1 -0
- package/dist/za/mod.d.ts +8 -0
- package/dist/za/mod.js +8 -0
- package/dist/za/mod.js.map +1 -0
- package/package.json +936 -0
- package/src/_checksums/luhn.ts +24 -0
- package/src/_checksums/mod1110.ts +24 -0
- package/src/_checksums/mod112.ts +40 -0
- package/src/_checksums/mod97.ts +28 -0
- package/src/_checksums/verhoeff.ts +71 -0
- package/src/_checksums/weighted-sum.ts +23 -0
- package/src/_util/arabic.ts +48 -0
- package/src/_util/clean.ts +86 -0
- package/src/_util/date.ts +23 -0
- package/src/_util/generate.ts +24 -0
- package/src/_util/result.ts +10 -0
- package/src/_util/strings.ts +32 -0
- package/src/ad/mod.ts +1 -0
- package/src/ad/nrt.ts +111 -0
- package/src/ae/eid.ts +106 -0
- package/src/ae/mod.ts +1 -0
- package/src/ai/mod.ts +1 -0
- package/src/ai/tin.ts +98 -0
- package/src/al/mod.ts +1 -0
- package/src/al/nipt.ts +78 -0
- package/src/am/mod.ts +1 -0
- package/src/am/tin.ts +73 -0
- package/src/ar/cbu.ts +106 -0
- package/src/ar/cuit.ts +137 -0
- package/src/ar/dni.ts +79 -0
- package/src/ar/mod.ts +3 -0
- package/src/at/businessid.ts +74 -0
- package/src/at/mod.ts +4 -0
- package/src/at/tin.ts +90 -0
- package/src/at/uid.ts +92 -0
- package/src/at/vnr.ts +111 -0
- package/src/au/abn.ts +85 -0
- package/src/au/acn.ts +86 -0
- package/src/au/mod.ts +3 -0
- package/src/au/tfn.ts +85 -0
- package/src/az/mod.ts +1 -0
- package/src/az/voen.ts +125 -0
- package/src/ba/jmbg.ts +128 -0
- package/src/ba/mod.ts +1 -0
- package/src/bd/mod.ts +1 -0
- package/src/bd/nid.ts +139 -0
- package/src/be/bis.ts +105 -0
- package/src/be/mod.ts +3 -0
- package/src/be/nn.ts +125 -0
- package/src/be/vat.ts +107 -0
- package/src/bg/egn.ts +155 -0
- package/src/bg/mod.ts +3 -0
- package/src/bg/pnf.ts +86 -0
- package/src/bg/vat.ts +155 -0
- package/src/bh/cpr.ts +81 -0
- package/src/bh/mod.ts +1 -0
- package/src/bic.ts +99 -0
- package/src/br/cnpj.ts +152 -0
- package/src/br/cpf.ts +114 -0
- package/src/br/mod.ts +2 -0
- package/src/by/mod.ts +1 -0
- package/src/by/unp.ts +153 -0
- package/src/bz/mod.ts +1 -0
- package/src/bz/tin.ts +107 -0
- package/src/ca/bn.ts +107 -0
- package/src/ca/mod.ts +2 -0
- package/src/ca/sin.ts +91 -0
- package/src/ch/mod.ts +3 -0
- package/src/ch/ssn.ts +95 -0
- package/src/ch/uid.ts +108 -0
- package/src/ch/vat.ts +85 -0
- package/src/cl/mod.ts +1 -0
- package/src/cl/rut.ts +118 -0
- package/src/cn/mod.ts +2 -0
- package/src/cn/ric.ts +180 -0
- package/src/cn/uscc.ts +111 -0
- package/src/co/mod.ts +1 -0
- package/src/co/nit.ts +108 -0
- package/src/cr/cpf.ts +111 -0
- package/src/cr/mod.ts +1 -0
- package/src/creditcard.ts +190 -0
- package/src/cu/mod.ts +1 -0
- package/src/cu/ni.ts +125 -0
- package/src/cy/mod.ts +1 -0
- package/src/cy/vat.ts +130 -0
- package/src/cz/dic.ts +135 -0
- package/src/cz/ico.ts +82 -0
- package/src/cz/mod.ts +3 -0
- package/src/cz/rc.ts +190 -0
- package/src/de/handelsreg.ts +107 -0
- package/src/de/idnr.ts +140 -0
- package/src/de/mod.ts +5 -0
- package/src/de/stnr.ts +214 -0
- package/src/de/svnr.ts +162 -0
- package/src/de/vat.ts +98 -0
- package/src/dk/cpr.ts +122 -0
- package/src/dk/cvr.ts +87 -0
- package/src/dk/mod.ts +3 -0
- package/src/dk/vat.ts +91 -0
- package/src/do/mod.ts +1 -0
- package/src/do/rnc.ts +126 -0
- package/src/ec/mod.ts +1 -0
- package/src/ec/ruc.ts +195 -0
- package/src/ee/ik.ts +156 -0
- package/src/ee/mod.ts +3 -0
- package/src/ee/registrikood.ts +81 -0
- package/src/ee/vat.ts +85 -0
- package/src/eg/mod.ts +1 -0
- package/src/eg/tn.ts +103 -0
- package/src/es/cif.ts +105 -0
- package/src/es/dni.ts +90 -0
- package/src/es/mod.ts +5 -0
- package/src/es/nie.ts +102 -0
- package/src/es/nss.ts +109 -0
- package/src/es/vat.ts +178 -0
- package/src/eu/mod.ts +1 -0
- package/src/eu/vat.ts +171 -0
- package/src/fi/hetu.ts +182 -0
- package/src/fi/mod.ts +3 -0
- package/src/fi/vat.ts +82 -0
- package/src/fi/ytunnus.ts +83 -0
- package/src/fr/mod.ts +5 -0
- package/src/fr/nif.ts +93 -0
- package/src/fr/nir.ts +195 -0
- package/src/fr/siren.ts +79 -0
- package/src/fr/siret.ts +122 -0
- package/src/fr/tva.ts +146 -0
- package/src/gb/mod.ts +4 -0
- package/src/gb/nino.ts +153 -0
- package/src/gb/sedol.ts +137 -0
- package/src/gb/utr.ts +81 -0
- package/src/gb/vat.ts +158 -0
- package/src/ge/mod.ts +1 -0
- package/src/ge/pin.ts +71 -0
- package/src/gh/mod.ts +1 -0
- package/src/gh/tin.ts +100 -0
- package/src/gr/amka.ts +104 -0
- package/src/gr/mod.ts +2 -0
- package/src/gr/vat.ts +96 -0
- package/src/gt/mod.ts +1 -0
- package/src/gt/nit.ts +116 -0
- package/src/hk/hkid.ts +131 -0
- package/src/hk/mod.ts +1 -0
- package/src/hr/mod.ts +1 -0
- package/src/hr/vat.ts +79 -0
- package/src/hu/mod.ts +1 -0
- package/src/hu/vat.ts +82 -0
- package/src/iban.ts +340 -0
- package/src/id/mod.ts +1 -0
- package/src/id/npwp.ts +187 -0
- package/src/ie/mod.ts +2 -0
- package/src/ie/pps.ts +105 -0
- package/src/ie/vat.ts +138 -0
- package/src/il/idnr.ts +87 -0
- package/src/il/mod.ts +1 -0
- package/src/in/aadhaar.ts +96 -0
- package/src/in/gstin.ts +169 -0
- package/src/in/mod.ts +3 -0
- package/src/in/pan.ts +88 -0
- package/src/index.ts +116 -0
- package/src/iq/mod.ts +1 -0
- package/src/iq/nid.ts +71 -0
- package/src/ir/mod.ts +1 -0
- package/src/ir/nid.ts +120 -0
- package/src/is/kennitala.ts +125 -0
- package/src/is/mod.ts +2 -0
- package/src/is/vsk.ts +63 -0
- package/src/isin.ts +114 -0
- package/src/it/codicefiscale.ts +290 -0
- package/src/it/iva.ts +115 -0
- package/src/it/mod.ts +2 -0
- package/src/jp/cn.ts +91 -0
- package/src/jp/mod.ts +2 -0
- package/src/jp/mynumber.ts +103 -0
- package/src/kr/brn.ts +101 -0
- package/src/kr/mod.ts +2 -0
- package/src/kr/rrn.ts +170 -0
- package/src/kw/civil.ts +144 -0
- package/src/kw/mod.ts +1 -0
- package/src/kz/iin.ts +183 -0
- package/src/kz/mod.ts +1 -0
- package/src/lei.ts +98 -0
- package/src/li/mod.ts +1 -0
- package/src/li/peid.ts +66 -0
- package/src/lk/mod.ts +1 -0
- package/src/lk/nic.ts +210 -0
- package/src/lt/asmens.ts +120 -0
- package/src/lt/mod.ts +2 -0
- package/src/lt/vat.ts +109 -0
- package/src/lu/mod.ts +1 -0
- package/src/lu/vat.ts +80 -0
- package/src/luhn.ts +72 -0
- package/src/lv/mod.ts +1 -0
- package/src/lv/vat.ts +139 -0
- package/src/ma/ice.ts +79 -0
- package/src/ma/mod.ts +1 -0
- package/src/mc/mod.ts +1 -0
- package/src/mc/tva.ts +74 -0
- package/src/md/idno.ts +86 -0
- package/src/md/mod.ts +1 -0
- package/src/me/mod.ts +1 -0
- package/src/me/pib.ts +79 -0
- package/src/mk/edb.ts +91 -0
- package/src/mk/mod.ts +1 -0
- package/src/mt/mod.ts +1 -0
- package/src/mt/vat.ts +88 -0
- package/src/mu/brn.ts +102 -0
- package/src/mu/mod.ts +1 -0
- package/src/mx/clabe.ts +111 -0
- package/src/mx/curp.ts +210 -0
- package/src/mx/mod.ts +3 -0
- package/src/mx/rfc.ts +144 -0
- package/src/my/mod.ts +1 -0
- package/src/my/nric.ts +235 -0
- package/src/ng/mod.ts +1 -0
- package/src/ng/nin.ts +72 -0
- package/src/ni/mod.ts +1 -0
- package/src/ni/ruc.ts +176 -0
- package/src/nl/bsn.ts +87 -0
- package/src/nl/kvk.ts +59 -0
- package/src/nl/mod.ts +3 -0
- package/src/nl/vat.ts +146 -0
- package/src/no/fodselsnummer.ts +192 -0
- package/src/no/mod.ts +3 -0
- package/src/no/mva.ts +73 -0
- package/src/no/orgnr.ts +79 -0
- package/src/nz/ird.ts +128 -0
- package/src/nz/mod.ts +1 -0
- package/src/pa/mod.ts +1 -0
- package/src/pa/ruc.ts +359 -0
- package/src/patterns.ts +252 -0
- package/src/pe/mod.ts +1 -0
- package/src/pe/ruc.ts +121 -0
- package/src/ph/mod.ts +1 -0
- package/src/ph/philid.ts +76 -0
- package/src/pk/cnic.ts +103 -0
- package/src/pk/mod.ts +1 -0
- package/src/pl/mod.ts +3 -0
- package/src/pl/nip.ts +96 -0
- package/src/pl/pesel.ts +153 -0
- package/src/pl/regon.ts +98 -0
- package/src/pt/cc.ts +106 -0
- package/src/pt/mod.ts +2 -0
- package/src/pt/vat.ts +93 -0
- package/src/ro/cnp.ts +171 -0
- package/src/ro/mod.ts +2 -0
- package/src/ro/vat.ts +94 -0
- package/src/rs/mod.ts +1 -0
- package/src/rs/pib.ts +83 -0
- package/src/ru/inn.ts +109 -0
- package/src/ru/mod.ts +1 -0
- package/src/se/mod.ts +3 -0
- package/src/se/orgnr.ts +81 -0
- package/src/se/personnummer.ts +180 -0
- package/src/se/vat.ts +92 -0
- package/src/sg/mod.ts +1 -0
- package/src/sg/uen.ts +267 -0
- package/src/si/emso.ts +152 -0
- package/src/si/mod.ts +2 -0
- package/src/si/vat.ts +108 -0
- package/src/sk/dic.ts +106 -0
- package/src/sk/ico.ts +39 -0
- package/src/sk/mod.ts +3 -0
- package/src/sk/rc.ts +31 -0
- package/src/th/mod.ts +1 -0
- package/src/th/tin.ts +102 -0
- package/src/tr/mod.ts +2 -0
- package/src/tr/tckimlik.ts +111 -0
- package/src/tr/vkn.ts +97 -0
- package/src/tw/mod.ts +1 -0
- package/src/tw/ubn.ts +108 -0
- package/src/types.ts +200 -0
- package/src/ua/edrpou.ts +103 -0
- package/src/ua/mod.ts +1 -0
- package/src/us/ein.ts +257 -0
- package/src/us/itin.ts +126 -0
- package/src/us/mod.ts +4 -0
- package/src/us/rtn.ts +126 -0
- package/src/us/ssn.ts +117 -0
- package/src/uy/mod.ts +1 -0
- package/src/uy/rut.ts +146 -0
- package/src/ve/mod.ts +1 -0
- package/src/ve/rif.ts +140 -0
- package/src/vn/mod.ts +1 -0
- package/src/vn/mst.ts +128 -0
- package/src/za/idnr.ts +157 -0
- package/src/za/mod.ts +1 -0
|
@@ -0,0 +1,79 @@
|
|
|
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/tr/tckimlik.ts
|
|
6
|
+
/**
|
|
7
|
+
* T.C. Kimlik No.
|
|
8
|
+
* (Türkiye Cumhuriyeti Kimlik Numarası,
|
|
9
|
+
* Turkish personal identification number).
|
|
10
|
+
*
|
|
11
|
+
* 11-digit unique personal ID assigned to every
|
|
12
|
+
* Turkish citizen by MERNİS (Merkezi Nüfus İdaresi
|
|
13
|
+
* Sistemi). The first digit is never zero. The last
|
|
14
|
+
* two digits are check digits.
|
|
15
|
+
*
|
|
16
|
+
* Check digit algorithm:
|
|
17
|
+
* Let A = sum of digits at odd positions (1,3,5,7,9)
|
|
18
|
+
* Let B = sum of digits at even positions (2,4,6,8)
|
|
19
|
+
* d10 = (7 * A - B) mod 10
|
|
20
|
+
* d11 = (d1 + d2 + ... + d10) mod 10
|
|
21
|
+
*
|
|
22
|
+
* @see https://tckimlik.nvi.gov.tr/
|
|
23
|
+
* @see https://en.wikipedia.org/wiki/Turkish_Identification_Number
|
|
24
|
+
* @see https://www.turkiye.gov.tr/nvi-tckn-dogrulama
|
|
25
|
+
*/
|
|
26
|
+
const compact = (value) => clean(value, " -./");
|
|
27
|
+
/**
|
|
28
|
+
* Calculate the two check digits from the first
|
|
29
|
+
* nine digits of a T.C. Kimlik number.
|
|
30
|
+
*/
|
|
31
|
+
const calcCheckDigits = (number) => {
|
|
32
|
+
let oddSum = 0;
|
|
33
|
+
let evenSum = 0;
|
|
34
|
+
for (let i = 0; i < 9; i++) {
|
|
35
|
+
const d = Number(number[i]);
|
|
36
|
+
if (i % 2 === 0) oddSum += d;
|
|
37
|
+
else evenSum += d;
|
|
38
|
+
}
|
|
39
|
+
const d10 = ((7 * oddSum - evenSum) % 10 + 10) % 10;
|
|
40
|
+
return `${d10}${(oddSum + evenSum + d10) % 10}`;
|
|
41
|
+
};
|
|
42
|
+
const validate = (value) => {
|
|
43
|
+
const v = compact(value);
|
|
44
|
+
if (v.length !== 11) return err("INVALID_LENGTH", "T.C. Kimlik number must be 11 digits");
|
|
45
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "T.C. Kimlik number must contain only digits");
|
|
46
|
+
if (v[0] === "0") return err("INVALID_COMPONENT", "T.C. Kimlik number cannot start with 0");
|
|
47
|
+
if (calcCheckDigits(v) !== v.slice(9)) return err("INVALID_CHECKSUM", "T.C. Kimlik number check digit mismatch");
|
|
48
|
+
return {
|
|
49
|
+
valid: true,
|
|
50
|
+
compact: v
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/** TR IDs are displayed without separators. */
|
|
54
|
+
const format = (value) => compact(value);
|
|
55
|
+
/** Generate a random valid Turkish T.C. Kimlik No. */
|
|
56
|
+
const generate = () => {
|
|
57
|
+
const payload = String(randomInt(1, 9)) + randomDigits(8);
|
|
58
|
+
return payload + calcCheckDigits(payload);
|
|
59
|
+
};
|
|
60
|
+
/** Turkish Personal Identification Number. */
|
|
61
|
+
const tckimlik = {
|
|
62
|
+
name: "Turkish Personal ID",
|
|
63
|
+
localName: "T.C. Kimlik Numarası",
|
|
64
|
+
abbreviation: "T.C. Kimlik",
|
|
65
|
+
aliases: ["TC Kimlik No", "T.C. Kimlik Numarası"],
|
|
66
|
+
candidatePattern: "[1-9]\\d{10}",
|
|
67
|
+
country: "TR",
|
|
68
|
+
entityType: "person",
|
|
69
|
+
sourceUrl: "https://www.nvi.gov.tr/",
|
|
70
|
+
examples: ["17291716060"],
|
|
71
|
+
compact,
|
|
72
|
+
format,
|
|
73
|
+
validate,
|
|
74
|
+
generate
|
|
75
|
+
};
|
|
76
|
+
//#endregion
|
|
77
|
+
export { compact, tckimlik as default, format, generate, validate };
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=tckimlik.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tckimlik.js","names":[],"sources":["../../src/tr/tckimlik.ts"],"sourcesContent":["/**\n * T.C. Kimlik No.\n * (Türkiye Cumhuriyeti Kimlik Numarası,\n * Turkish personal identification number).\n *\n * 11-digit unique personal ID assigned to every\n * Turkish citizen by MERNİS (Merkezi Nüfus İdaresi\n * Sistemi). The first digit is never zero. The last\n * two digits are check digits.\n *\n * Check digit algorithm:\n * Let A = sum of digits at odd positions (1,3,5,7,9)\n * Let B = sum of digits at even positions (2,4,6,8)\n * d10 = (7 * A - B) mod 10\n * d11 = (d1 + d2 + ... + d10) mod 10\n *\n * @see https://tckimlik.nvi.gov.tr/\n * @see https://en.wikipedia.org/wiki/Turkish_Identification_Number\n * @see https://www.turkiye.gov.tr/nvi-tckn-dogrulama\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/**\n * Calculate the two check digits from the first\n * nine digits of a T.C. Kimlik number.\n */\nconst calcCheckDigits = (number: string): string => {\n let oddSum = 0;\n let evenSum = 0;\n for (let i = 0; i < 9; i++) {\n const d = Number(number[i]);\n if (i % 2 === 0) {\n oddSum += d;\n } else {\n evenSum += d;\n }\n }\n const d10 = (((7 * oddSum - evenSum) % 10) + 10) % 10;\n const d11 = (oddSum + evenSum + d10) % 10;\n return `${d10}${d11}`;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"T.C. Kimlik number must be 11 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"T.C. Kimlik number must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"T.C. Kimlik number cannot start with 0\",\n );\n }\n if (calcCheckDigits(v) !== v.slice(9)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"T.C. Kimlik number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\n/** TR IDs are displayed without separators. */\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Turkish T.C. Kimlik No. */\nconst generate = (): string => {\n const payload = String(randomInt(1, 9)) + randomDigits(8);\n return payload + calcCheckDigits(payload);\n};\n\n/** Turkish Personal Identification Number. */\nconst tckimlik: Validator = {\n name: \"Turkish Personal ID\",\n localName: \"T.C. Kimlik Numarası\",\n abbreviation: \"T.C. Kimlik\",\n aliases: [\n \"TC Kimlik No\",\n \"T.C. Kimlik Numarası\",\n ] as const,\n candidatePattern: \"[1-9]\\\\d{10}\",\n country: \"TR\",\n entityType: \"person\",\n sourceUrl: \"https://www.nvi.gov.tr/\",\n examples: [\"17291716060\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default tckimlik;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,WAAW,UACf,MAAM,OAAO,OAAO;;;;;AAMtB,MAAM,mBAAmB,WAA2B;CAClD,IAAI,SAAS;CACb,IAAI,UAAU;AACd,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;EAC1B,MAAM,IAAI,OAAO,OAAO,GAAG;AAC3B,MAAI,IAAI,MAAM,EACZ,WAAU;MAEV,YAAW;;CAGf,MAAM,QAAS,IAAI,SAAS,WAAW,KAAM,MAAM;AAEnD,QAAO,GAAG,OADG,SAAS,UAAU,OAAO;;AAIzC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,uCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,8CACD;AAEH,KAAI,EAAE,OAAO,IACX,QAAO,IACL,qBACA,yCACD;AAEH,KAAI,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CACnC,QAAO,IACL,oBACA,0CACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;;AAIpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;CAC7B,MAAM,UAAU,OAAO,UAAU,GAAG,EAAE,CAAC,GAAG,aAAa,EAAE;AACzD,QAAO,UAAU,gBAAgB,QAAQ;;;AAI3C,MAAM,WAAsB;CAC1B,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,gBACA,uBACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,cAAc;CACzB;CACA;CACA;CACA;CACD"}
|
package/dist/tr/vkn.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/tr/vkn.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
/** TR IDs are displayed without separators. */
|
|
8
|
+
declare const format: (value: string) => string;
|
|
9
|
+
/** Generate a random valid Turkish VKN. */
|
|
10
|
+
declare const generate: () => string;
|
|
11
|
+
/** Turkish Tax Identification Number. */
|
|
12
|
+
declare const vkn: Validator;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { compact, vkn as default, format, generate, validate };
|
|
15
|
+
//# sourceMappingURL=vkn.d.ts.map
|
package/dist/tr/vkn.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
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/tr/vkn.ts
|
|
6
|
+
/**
|
|
7
|
+
* VKN (Vergi Kimlik Numarası, Turkish tax
|
|
8
|
+
* identification number).
|
|
9
|
+
*
|
|
10
|
+
* 10-digit tax ID used for businesses in Turkey.
|
|
11
|
+
* The last digit is a check digit.
|
|
12
|
+
*
|
|
13
|
+
* Check digit algorithm:
|
|
14
|
+
* For each of the first 9 digits (right to left,
|
|
15
|
+
* position i = 1..9):
|
|
16
|
+
* c1 = (digit + i) mod 10
|
|
17
|
+
* c2 = if c1 != 0: (c1 * 2^i) mod 9, or 9 if
|
|
18
|
+
* that result is 0
|
|
19
|
+
* sum += c2
|
|
20
|
+
* check = (10 - sum) mod 10
|
|
21
|
+
*
|
|
22
|
+
* @see https://www.turkiye.gov.tr/gib-intvrg-vergi-kimlik-numarasi-dogrulama
|
|
23
|
+
* @see https://arthurdejong.org/python-stdnum/doc/1.17/stdnum.tr.vkn
|
|
24
|
+
* @see https://www.gib.gov.tr/
|
|
25
|
+
*/
|
|
26
|
+
const compact = (value) => clean(value, " -./");
|
|
27
|
+
/**
|
|
28
|
+
* Calculate the check digit for the first 9 digits
|
|
29
|
+
* of a VKN.
|
|
30
|
+
*/
|
|
31
|
+
const calcCheckDigit = (number) => {
|
|
32
|
+
let s = 0;
|
|
33
|
+
for (let i = 0; i < 9; i++) {
|
|
34
|
+
const pos = 9 - i;
|
|
35
|
+
const c1 = (Number(number[i]) + pos) % 10;
|
|
36
|
+
if (c1 !== 0) {
|
|
37
|
+
const c2 = c1 * 2 ** pos % 9 || 9;
|
|
38
|
+
s += c2;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return String((10 - s % 10) % 10);
|
|
42
|
+
};
|
|
43
|
+
const validate = (value) => {
|
|
44
|
+
const v = compact(value);
|
|
45
|
+
if (v.length !== 10) return err("INVALID_LENGTH", "VKN must be 10 digits");
|
|
46
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "VKN must contain only digits");
|
|
47
|
+
if (calcCheckDigit(v) !== v[9]) return err("INVALID_CHECKSUM", "VKN check digit mismatch");
|
|
48
|
+
return {
|
|
49
|
+
valid: true,
|
|
50
|
+
compact: v
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/** TR IDs are displayed without separators. */
|
|
54
|
+
const format = (value) => compact(value);
|
|
55
|
+
/** Generate a random valid Turkish VKN. */
|
|
56
|
+
const generate = () => {
|
|
57
|
+
const payload = randomDigits(9);
|
|
58
|
+
return payload + calcCheckDigit(payload);
|
|
59
|
+
};
|
|
60
|
+
/** Turkish Tax Identification Number. */
|
|
61
|
+
const vkn = {
|
|
62
|
+
name: "Turkish Tax ID",
|
|
63
|
+
localName: "Vergi Kimlik Numarası",
|
|
64
|
+
abbreviation: "VKN",
|
|
65
|
+
aliases: ["VKN", "Vergi Kimlik Numarası"],
|
|
66
|
+
candidatePattern: "\\d{10}",
|
|
67
|
+
country: "TR",
|
|
68
|
+
entityType: "company",
|
|
69
|
+
sourceUrl: "https://www.gib.gov.tr/",
|
|
70
|
+
examples: ["4540536920"],
|
|
71
|
+
compact,
|
|
72
|
+
format,
|
|
73
|
+
validate,
|
|
74
|
+
generate
|
|
75
|
+
};
|
|
76
|
+
//#endregion
|
|
77
|
+
export { compact, vkn as default, format, generate, validate };
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=vkn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vkn.js","names":[],"sources":["../../src/tr/vkn.ts"],"sourcesContent":["/**\n * VKN (Vergi Kimlik Numarası, Turkish tax\n * identification number).\n *\n * 10-digit tax ID used for businesses in Turkey.\n * The last digit is a check digit.\n *\n * Check digit algorithm:\n * For each of the first 9 digits (right to left,\n * position i = 1..9):\n * c1 = (digit + i) mod 10\n * c2 = if c1 != 0: (c1 * 2^i) mod 9, or 9 if\n * that result is 0\n * sum += c2\n * check = (10 - sum) mod 10\n *\n * @see https://www.turkiye.gov.tr/gib-intvrg-vergi-kimlik-numarasi-dogrulama\n * @see https://arthurdejong.org/python-stdnum/doc/1.17/stdnum.tr.vkn\n * @see https://www.gib.gov.tr/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst compact = (value: string): string =>\n clean(value, \" -./\");\n\n/**\n * Calculate the check digit for the first 9 digits\n * of a VKN.\n */\nconst calcCheckDigit = (number: string): string => {\n let s = 0;\n for (let i = 0; i < 9; i++) {\n const pos = 9 - i; // position 1..9 from right\n const c1 = (Number(number[i]) + pos) % 10;\n if (c1 !== 0) {\n const pow = 2 ** pos;\n const c2 = (c1 * pow) % 9 || 9;\n s += c2;\n }\n }\n return String((10 - (s % 10)) % 10);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 10) {\n return err(\"INVALID_LENGTH\", \"VKN must be 10 digits\");\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"VKN must contain only digits\",\n );\n }\n if (calcCheckDigit(v) !== v[9]) {\n return err(\n \"INVALID_CHECKSUM\",\n \"VKN check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\n/** TR IDs are displayed without separators. */\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Turkish VKN. */\nconst generate = (): string => {\n const payload = randomDigits(9);\n return payload + calcCheckDigit(payload);\n};\n\n/** Turkish Tax Identification Number. */\nconst vkn: Validator = {\n name: \"Turkish Tax ID\",\n localName: \"Vergi Kimlik Numarası\",\n abbreviation: \"VKN\",\n aliases: [\"VKN\", \"Vergi Kimlik Numarası\"] as const,\n candidatePattern: \"\\\\d{10}\",\n country: \"TR\",\n entityType: \"company\",\n sourceUrl: \"https://www.gib.gov.tr/\",\n examples: [\"4540536920\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vkn;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAM,WAAW,UACf,MAAM,OAAO,OAAO;;;;;AAMtB,MAAM,kBAAkB,WAA2B;CACjD,IAAI,IAAI;AACR,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;EAC1B,MAAM,MAAM,IAAI;EAChB,MAAM,MAAM,OAAO,OAAO,GAAG,GAAG,OAAO;AACvC,MAAI,OAAO,GAAG;GAEZ,MAAM,KAAM,KADA,KAAK,MACO,KAAK;AAC7B,QAAK;;;AAGT,QAAO,QAAQ,KAAM,IAAI,MAAO,GAAG;;AAGrC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IAAI,kBAAkB,wBAAwB;AAEvD,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;AAEH,KAAI,eAAe,EAAE,KAAK,EAAE,GAC1B,QAAO,IACL,oBACA,2BACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;;AAIpC,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,CAAC,OAAO,wBAAwB;CACzC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa;CACxB;CACA;CACA;CACA;CACD"}
|
package/dist/tw/mod.d.ts
ADDED
package/dist/tw/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import ubn from "./ubn.js";
|
|
3
|
+
//#region src/tw/mod.ts
|
|
4
|
+
var tw_exports = /* @__PURE__ */ __exportAll({ ubn: () => ubn });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { tw_exports, ubn };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/tw/mod.ts"],"sourcesContent":["export { default as ubn } from \"./ubn\";\n"],"mappings":""}
|
package/dist/tw/ubn.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/tw/ubn.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 UBN. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Taiwanese Unified Business Number. */
|
|
11
|
+
declare const ubn: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, ubn as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=ubn.d.ts.map
|
package/dist/tw/ubn.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
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/tw/ubn.ts
|
|
6
|
+
/**
|
|
7
|
+
* UBN (Unified Business Number, 統一編號).
|
|
8
|
+
*
|
|
9
|
+
* Taiwanese company identifier. 8 digits with a
|
|
10
|
+
* weighted checksum. Weights [1,2,1,2,1,2,4,1];
|
|
11
|
+
* sum the individual digits of each product, total
|
|
12
|
+
* mod 10 must be 0. Special case: when the 7th digit
|
|
13
|
+
* is 7, checksum 9 is also accepted.
|
|
14
|
+
*
|
|
15
|
+
* @see https://zh.wikipedia.org/wiki/統一編號
|
|
16
|
+
*/
|
|
17
|
+
const WEIGHTS = [
|
|
18
|
+
1,
|
|
19
|
+
2,
|
|
20
|
+
1,
|
|
21
|
+
2,
|
|
22
|
+
1,
|
|
23
|
+
2,
|
|
24
|
+
4,
|
|
25
|
+
1
|
|
26
|
+
];
|
|
27
|
+
/** Sum the individual digits of a number. */
|
|
28
|
+
const digitSum = (n) => {
|
|
29
|
+
let sum = 0;
|
|
30
|
+
while (n > 0) {
|
|
31
|
+
sum += n % 10;
|
|
32
|
+
n = Math.floor(n / 10);
|
|
33
|
+
}
|
|
34
|
+
return sum;
|
|
35
|
+
};
|
|
36
|
+
const compact = (value) => clean(value, " -");
|
|
37
|
+
const validate = (value) => {
|
|
38
|
+
const v = compact(value);
|
|
39
|
+
if (v.length !== 8) return err("INVALID_LENGTH", "UBN must be exactly 8 digits");
|
|
40
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "UBN must contain only digits");
|
|
41
|
+
let sum = 0;
|
|
42
|
+
for (let i = 0; i < 8; i++) sum += digitSum(Number(v[i]) * WEIGHTS[i]);
|
|
43
|
+
const checksum = sum % 10;
|
|
44
|
+
if (checksum === 0) return {
|
|
45
|
+
valid: true,
|
|
46
|
+
compact: v
|
|
47
|
+
};
|
|
48
|
+
if (checksum === 9 && v[6] === "7") return {
|
|
49
|
+
valid: true,
|
|
50
|
+
compact: v
|
|
51
|
+
};
|
|
52
|
+
return err("INVALID_CHECKSUM", "UBN checksum does not match");
|
|
53
|
+
};
|
|
54
|
+
const format = (value) => compact(value);
|
|
55
|
+
/** Generate a random valid UBN. */
|
|
56
|
+
const generate = () => {
|
|
57
|
+
for (;;) {
|
|
58
|
+
const prefix = randomDigits(7);
|
|
59
|
+
for (let d = 0; d < 10; d++) {
|
|
60
|
+
const candidate = `${prefix}${d}`;
|
|
61
|
+
if (validate(candidate).valid) return candidate;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/** Taiwanese Unified Business Number. */
|
|
66
|
+
const ubn = {
|
|
67
|
+
name: "Unified Business Number",
|
|
68
|
+
localName: "統一編號",
|
|
69
|
+
abbreviation: "UBN",
|
|
70
|
+
aliases: ["統一編號", "UBN"],
|
|
71
|
+
candidatePattern: "\\d{8}",
|
|
72
|
+
country: "TW",
|
|
73
|
+
entityType: "company",
|
|
74
|
+
description: "8-digit company identifier issued by the Ministry of Economic Affairs",
|
|
75
|
+
sourceUrl: "https://zh.wikipedia.org/wiki/%E7%B5%B1%E4%B8%80%E7%B7%A8%E8%99%9F",
|
|
76
|
+
lengths: [8],
|
|
77
|
+
examples: ["00501503", "04595257"],
|
|
78
|
+
compact,
|
|
79
|
+
format,
|
|
80
|
+
validate,
|
|
81
|
+
generate
|
|
82
|
+
};
|
|
83
|
+
//#endregion
|
|
84
|
+
export { compact, ubn as default, format, generate, validate };
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=ubn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ubn.js","names":[],"sources":["../../src/tw/ubn.ts"],"sourcesContent":["/**\n * UBN (Unified Business Number, 統一編號).\n *\n * Taiwanese company identifier. 8 digits with a\n * weighted checksum. Weights [1,2,1,2,1,2,4,1];\n * sum the individual digits of each product, total\n * mod 10 must be 0. Special case: when the 7th digit\n * is 7, checksum 9 is also accepted.\n *\n * @see https://zh.wikipedia.org/wiki/統一編號\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 = [1, 2, 1, 2, 1, 2, 4, 1] as const;\n\n/** Sum the individual digits of a number. */\nconst digitSum = (n: number): number => {\n let sum = 0;\n while (n > 0) {\n sum += n % 10;\n n = Math.floor(n / 10);\n }\n return sum;\n};\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"UBN must be exactly 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"UBN must contain only digits\",\n );\n }\n\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += digitSum(Number(v[i]) * WEIGHTS[i]!);\n }\n\n const checksum = sum % 10;\n if (checksum === 0) {\n return { valid: true, compact: v };\n }\n\n // Special case: when the 7th digit is 7 (product\n // 4*7=28), the checksum may be 9 instead of 0.\n if (checksum === 9 && v[6] === \"7\") {\n return { valid: true, compact: v };\n }\n\n return err(\n \"INVALID_CHECKSUM\",\n \"UBN checksum does not match\",\n );\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid UBN. */\nconst generate = (): string => {\n for (;;) {\n const prefix = randomDigits(7);\n for (let d = 0; d < 10; d++) {\n const candidate = `${prefix}${d}`;\n const r = validate(candidate);\n if (r.valid) return candidate;\n }\n }\n};\n\n/** Taiwanese Unified Business Number. */\nconst ubn: Validator = {\n name: \"Unified Business Number\",\n localName: \"統一編號\",\n abbreviation: \"UBN\",\n aliases: [\"統一編號\", \"UBN\"] as const,\n candidatePattern: \"\\\\d{8}\",\n country: \"TW\",\n entityType: \"company\",\n description:\n \"8-digit company identifier issued by the Ministry of Economic Affairs\",\n sourceUrl:\n \"https://zh.wikipedia.org/wiki/%E7%B5%B1%E4%B8%80%E7%B7%A8%E8%99%9F\",\n lengths: [8] as const,\n examples: [\"00501503\", \"04595257\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default ubn;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;;AAGxC,MAAM,YAAY,MAAsB;CACtC,IAAI,MAAM;AACV,QAAO,IAAI,GAAG;AACZ,SAAO,IAAI;AACX,MAAI,KAAK,MAAM,IAAI,GAAG;;AAExB,QAAO;;AAGT,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,+BACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;CAGH,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,QAAO,SAAS,OAAO,EAAE,GAAG,GAAG,QAAQ,GAAI;CAG7C,MAAM,WAAW,MAAM;AACvB,KAAI,aAAa,EACf,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;AAKpC,KAAI,aAAa,KAAK,EAAE,OAAO,IAC7B,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;AAGpC,QAAO,IACL,oBACA,8BACD;;AAGH,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,SAAS,aAAa,EAAE;AAC9B,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;GAC3B,MAAM,YAAY,GAAG,SAAS;AAE9B,OADU,SAAS,UAAU,CACvB,MAAO,QAAO;;;;;AAM1B,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,QAAQ,MAAM;CACxB,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,aACE;CACF,WACE;CACF,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,YAAY,WAAW;CAClC;CACA;CACA;CACA;CACD"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
//#region src/types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* ISO 3166-1 alpha-2 country codes for countries
|
|
4
|
+
* with at least one validator in this package.
|
|
5
|
+
*/
|
|
6
|
+
type CountryCode = "AD" | "AE" | "AI" | "AL" | "AM" | "AR" | "AT" | "AU" | "AZ" | "BA" | "BD" | "BE" | "BG" | "BH" | "BR" | "BY" | "BZ" | "CA" | "CH" | "CL" | "CN" | "CO" | "CR" | "CU" | "CY" | "CZ" | "DE" | "DK" | "DO" | "EC" | "EE" | "EG" | "ES" | "FI" | "FR" | "GB" | "GE" | "GH" | "GR" | "GT" | "HK" | "HR" | "HU" | "ID" | "IE" | "IL" | "IN" | "IQ" | "IR" | "IS" | "IT" | "JP" | "KR" | "KW" | "KZ" | "LI" | "LK" | "LT" | "LU" | "LV" | "MA" | "MC" | "MD" | "ME" | "MK" | "MT" | "MU" | "MX" | "MY" | "NG" | "NI" | "NL" | "NO" | "NZ" | "PA" | "PE" | "PH" | "PK" | "PL" | "PT" | "RO" | "RS" | "RU" | "SE" | "SG" | "SI" | "SK" | "TH" | "TR" | "TW" | "UA" | "US" | "UY" | "VE" | "VN" | "ZA";
|
|
7
|
+
type ErrorCode = "INVALID_FORMAT" | "INVALID_LENGTH" | "INVALID_CHECKSUM" | "INVALID_COMPONENT";
|
|
8
|
+
type StdnumError = {
|
|
9
|
+
code: ErrorCode;
|
|
10
|
+
message: string;
|
|
11
|
+
};
|
|
12
|
+
type ValidateResult = {
|
|
13
|
+
valid: true;
|
|
14
|
+
compact: string;
|
|
15
|
+
} | {
|
|
16
|
+
valid: false;
|
|
17
|
+
error: StdnumError;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Structured data extracted from a personal ID number.
|
|
21
|
+
* Returned by `parse()` on validators that encode
|
|
22
|
+
* birth date and gender.
|
|
23
|
+
*/
|
|
24
|
+
type ParsedPersonId = {
|
|
25
|
+
birthDate: Date;
|
|
26
|
+
gender: "male" | "female";
|
|
27
|
+
};
|
|
28
|
+
type Validator = {
|
|
29
|
+
/** English name. */
|
|
30
|
+
name: string;
|
|
31
|
+
/** Name in the local language. */
|
|
32
|
+
localName: string;
|
|
33
|
+
/** Common abbreviation (e.g. "IČO"). */
|
|
34
|
+
abbreviation: string;
|
|
35
|
+
/** Country this identifier belongs to. */
|
|
36
|
+
country?: CountryCode;
|
|
37
|
+
/** What kind of entity this identifies. */
|
|
38
|
+
entityType: "person" | "company" | "any";
|
|
39
|
+
/**
|
|
40
|
+
* Strip separators and normalize to a
|
|
41
|
+
* canonical compact form.
|
|
42
|
+
*/
|
|
43
|
+
compact: (value: string) => string;
|
|
44
|
+
/**
|
|
45
|
+
* Format the identifier for display
|
|
46
|
+
* (e.g. add separators, group digits).
|
|
47
|
+
*/
|
|
48
|
+
format: (value: string) => string;
|
|
49
|
+
/**
|
|
50
|
+
* Validate the identifier. Returns the
|
|
51
|
+
* compact form on success, or an error
|
|
52
|
+
* with a code and message on failure.
|
|
53
|
+
*/
|
|
54
|
+
validate: (value: string) => ValidateResult;
|
|
55
|
+
/** One-liner describing the identifier. */
|
|
56
|
+
description?: string;
|
|
57
|
+
/** URL to official authority or spec page. */
|
|
58
|
+
sourceUrl?: string;
|
|
59
|
+
/** Valid lengths of the compact form. */
|
|
60
|
+
lengths?: readonly number[];
|
|
61
|
+
/**
|
|
62
|
+
* Known-valid compact values. Useful as test
|
|
63
|
+
* seeds, form placeholders, API schema examples,
|
|
64
|
+
* and documentation. Sourced from official
|
|
65
|
+
* government specs where available.
|
|
66
|
+
*/
|
|
67
|
+
examples?: readonly string[];
|
|
68
|
+
/**
|
|
69
|
+
* Generate a random valid identifier in compact
|
|
70
|
+
* form. Available on validators with checksum
|
|
71
|
+
* algorithms. Useful for testing, demos, and
|
|
72
|
+
* form placeholders. NOT cryptographically secure.
|
|
73
|
+
*/
|
|
74
|
+
generate?: () => string;
|
|
75
|
+
/**
|
|
76
|
+
* All known names, abbreviations, and common
|
|
77
|
+
* references for this identifier. Superset of
|
|
78
|
+
* name/localName/abbreviation. Useful for
|
|
79
|
+
* searching documents, building autocomplete,
|
|
80
|
+
* or contextual detection.
|
|
81
|
+
*/
|
|
82
|
+
aliases?: readonly string[];
|
|
83
|
+
/**
|
|
84
|
+
* Regex pattern string to find candidates of
|
|
85
|
+
* this identifier in free text. Should be loose
|
|
86
|
+
* enough to catch formatted variants (dots,
|
|
87
|
+
* spaces, hyphens) but specific enough to avoid
|
|
88
|
+
* excessive noise. Matched candidates should be
|
|
89
|
+
* passed to validate() for confirmation.
|
|
90
|
+
*/
|
|
91
|
+
candidatePattern?: string;
|
|
92
|
+
};
|
|
93
|
+
//#endregion
|
|
94
|
+
export { CountryCode, ErrorCode, ParsedPersonId, StdnumError, ValidateResult, Validator };
|
|
95
|
+
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/ua/edrpou.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 Ukrainian EDRPOU. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Ukrainian Company Register Number. */
|
|
11
|
+
declare const edrpou: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, edrpou as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=edrpou.d.ts.map
|
|
@@ -0,0 +1,103 @@
|
|
|
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/ua/edrpou.ts
|
|
6
|
+
/**
|
|
7
|
+
* EDRPOU (ЄДРПОУ, Unified State Register of
|
|
8
|
+
* Enterprises and Organizations of Ukraine).
|
|
9
|
+
*
|
|
10
|
+
* 8-digit company identification number with a
|
|
11
|
+
* weighted checksum. Two sets of weights are used
|
|
12
|
+
* depending on whether the first digit is 0-2/6-9 or 3-5.
|
|
13
|
+
*
|
|
14
|
+
* @see https://en.wikipedia.org/wiki/EDRPOU
|
|
15
|
+
* @see https://usr.minjust.gov.ua/
|
|
16
|
+
*/
|
|
17
|
+
const WEIGHTS_A = [
|
|
18
|
+
1,
|
|
19
|
+
2,
|
|
20
|
+
3,
|
|
21
|
+
4,
|
|
22
|
+
5,
|
|
23
|
+
6,
|
|
24
|
+
7
|
|
25
|
+
];
|
|
26
|
+
const WEIGHTS_B = [
|
|
27
|
+
7,
|
|
28
|
+
1,
|
|
29
|
+
2,
|
|
30
|
+
3,
|
|
31
|
+
4,
|
|
32
|
+
5,
|
|
33
|
+
6
|
|
34
|
+
];
|
|
35
|
+
const WEIGHTS_A2 = [
|
|
36
|
+
3,
|
|
37
|
+
4,
|
|
38
|
+
5,
|
|
39
|
+
6,
|
|
40
|
+
7,
|
|
41
|
+
8,
|
|
42
|
+
9
|
|
43
|
+
];
|
|
44
|
+
const WEIGHTS_B2 = [
|
|
45
|
+
9,
|
|
46
|
+
3,
|
|
47
|
+
4,
|
|
48
|
+
5,
|
|
49
|
+
6,
|
|
50
|
+
7,
|
|
51
|
+
8
|
|
52
|
+
];
|
|
53
|
+
const calcCheck = (value, weights) => {
|
|
54
|
+
let sum = 0;
|
|
55
|
+
for (let i = 0; i < 7; i++) sum += Number(value[i]) * weights[i];
|
|
56
|
+
return sum % 11;
|
|
57
|
+
};
|
|
58
|
+
const compact = (value) => clean(value, " -");
|
|
59
|
+
const validate = (value) => {
|
|
60
|
+
const v = compact(value);
|
|
61
|
+
if (v.length !== 8) return err("INVALID_LENGTH", "EDRPOU must be exactly 8 digits");
|
|
62
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "EDRPOU must contain only digits");
|
|
63
|
+
const firstDigit = Number(v[0]);
|
|
64
|
+
const useA = firstDigit < 3 || firstDigit >= 6;
|
|
65
|
+
const weightsFirst = useA ? WEIGHTS_A : WEIGHTS_B;
|
|
66
|
+
const weightsSecond = useA ? WEIGHTS_A2 : WEIGHTS_B2;
|
|
67
|
+
let check = calcCheck(v, weightsFirst);
|
|
68
|
+
if (check >= 10) check = calcCheck(v, weightsSecond) % 10;
|
|
69
|
+
if (check !== Number(v[7])) return err("INVALID_CHECKSUM", "EDRPOU check digit mismatch");
|
|
70
|
+
return {
|
|
71
|
+
valid: true,
|
|
72
|
+
compact: v
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
const format = (value) => compact(value);
|
|
76
|
+
/** Generate a random valid Ukrainian EDRPOU. */
|
|
77
|
+
const generate = () => {
|
|
78
|
+
for (;;) {
|
|
79
|
+
const c = randomDigits(8);
|
|
80
|
+
if (validate(c).valid) return c;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
/** Ukrainian Company Register Number. */
|
|
84
|
+
const edrpou = {
|
|
85
|
+
name: "Ukrainian Company Register Number",
|
|
86
|
+
localName: "ЄДРПОУ",
|
|
87
|
+
abbreviation: "ЄДРПОУ",
|
|
88
|
+
aliases: ["ЄДРПОУ", "EDRPOU"],
|
|
89
|
+
candidatePattern: "\\d{8}",
|
|
90
|
+
country: "UA",
|
|
91
|
+
entityType: "company",
|
|
92
|
+
lengths: [8],
|
|
93
|
+
sourceUrl: "https://usr.minjust.gov.ua/",
|
|
94
|
+
examples: ["14360570"],
|
|
95
|
+
compact,
|
|
96
|
+
format,
|
|
97
|
+
validate,
|
|
98
|
+
generate
|
|
99
|
+
};
|
|
100
|
+
//#endregion
|
|
101
|
+
export { compact, edrpou as default, format, generate, validate };
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=edrpou.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edrpou.js","names":[],"sources":["../../src/ua/edrpou.ts"],"sourcesContent":["/**\n * EDRPOU (ЄДРПОУ, Unified State Register of\n * Enterprises and Organizations of Ukraine).\n *\n * 8-digit company identification number with a\n * weighted checksum. Two sets of weights are used\n * depending on whether the first digit is 0-2/6-9 or 3-5.\n *\n * @see https://en.wikipedia.org/wiki/EDRPOU\n * @see https://usr.minjust.gov.ua/\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_A = [1, 2, 3, 4, 5, 6, 7] as const;\nconst WEIGHTS_B = [7, 1, 2, 3, 4, 5, 6] as const;\nconst WEIGHTS_A2 = [3, 4, 5, 6, 7, 8, 9] as const;\nconst WEIGHTS_B2 = [9, 3, 4, 5, 6, 7, 8] as const;\n\nconst calcCheck = (\n value: string,\n weights: readonly number[],\n): number => {\n let sum = 0;\n for (let i = 0; i < 7; i++) {\n sum += Number(value[i]) * weights[i]!;\n }\n return sum % 11;\n};\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"EDRPOU must be exactly 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"EDRPOU must contain only digits\",\n );\n }\n\n const firstDigit = Number(v[0]);\n const useA = firstDigit < 3 || firstDigit >= 6;\n const weightsFirst = useA ? WEIGHTS_A : WEIGHTS_B;\n const weightsSecond = useA ? WEIGHTS_A2 : WEIGHTS_B2;\n\n let check = calcCheck(v, weightsFirst);\n if (check >= 10) {\n check = calcCheck(v, weightsSecond) % 10;\n }\n\n if (check !== Number(v[7])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"EDRPOU check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Ukrainian EDRPOU. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(8);\n if (validate(c).valid) return c;\n }\n};\n\n/** Ukrainian Company Register Number. */\nconst edrpou: Validator = {\n name: \"Ukrainian Company Register Number\",\n localName: \"ЄДРПОУ\",\n abbreviation: \"ЄДРПОУ\",\n aliases: [\"ЄДРПОУ\", \"EDRPOU\"] as const,\n candidatePattern: \"\\\\d{8}\",\n country: \"UA\",\n entityType: \"company\",\n lengths: [8] as const,\n sourceUrl: \"https://usr.minjust.gov.ua/\",\n examples: [\"14360570\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default edrpou;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,YAAY;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AACvC,MAAM,YAAY;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AACvC,MAAM,aAAa;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AACxC,MAAM,aAAa;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAExC,MAAM,aACJ,OACA,YACW;CACX,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,QAAO,OAAO,MAAM,GAAG,GAAG,QAAQ;AAEpC,QAAO,MAAM;;AAGf,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,kCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,kCACD;CAGH,MAAM,aAAa,OAAO,EAAE,GAAG;CAC/B,MAAM,OAAO,aAAa,KAAK,cAAc;CAC7C,MAAM,eAAe,OAAO,YAAY;CACxC,MAAM,gBAAgB,OAAO,aAAa;CAE1C,IAAI,QAAQ,UAAU,GAAG,aAAa;AACtC,KAAI,SAAS,GACX,SAAQ,UAAU,GAAG,cAAc,GAAG;AAGxC,KAAI,UAAU,OAAO,EAAE,GAAG,CACxB,QAAO,IACL,oBACA,8BACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,IAAI,aAAa,EAAE;AACzB,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,SAAoB;CACxB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,UAAU,SAAS;CAC7B,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,EAAE;CACZ,WAAW;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;CACD"}
|
package/dist/ua/mod.d.ts
ADDED
package/dist/ua/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import edrpou from "./edrpou.js";
|
|
3
|
+
//#region src/ua/mod.ts
|
|
4
|
+
var ua_exports = /* @__PURE__ */ __exportAll({ edrpou: () => edrpou });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { edrpou, ua_exports };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/ua/mod.ts"],"sourcesContent":["export { default as edrpou } from \"./edrpou\";\n"],"mappings":""}
|
package/dist/us/ein.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/us/ein.d.ts
|
|
4
|
+
/** Generate a random valid U.S. EIN. */
|
|
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
|
+
/** U.S. Employer Identification Number. */
|
|
10
|
+
declare const ein: Validator;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { compact, ein as default, format, generate, validate };
|
|
13
|
+
//# sourceMappingURL=ein.d.ts.map
|