@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/de/stnr.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
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/de/stnr.ts
|
|
6
|
+
/**
|
|
7
|
+
* StNr (Steuernummer).
|
|
8
|
+
*
|
|
9
|
+
* German tax number assigned by the local tax office.
|
|
10
|
+
* Regional format: 10 or 11 digits. Unified federal
|
|
11
|
+
* format: 13 digits (prefixed with a 2–4 digit BUFA
|
|
12
|
+
* code). Structure varies by federal state.
|
|
13
|
+
*
|
|
14
|
+
* The number encodes: BUFA (Bundesfinanzamtsnummer),
|
|
15
|
+
* district code, serial number, and check digit. No
|
|
16
|
+
* algorithmic check digit validation is standardised
|
|
17
|
+
* across all states; validation is format-only.
|
|
18
|
+
*
|
|
19
|
+
* @see https://de.wikipedia.org/wiki/Steuernummer
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Generate a random valid Steuernummer.
|
|
23
|
+
* Uses Berlin regional format (FFBBBUUUUP, 10 digits).
|
|
24
|
+
*/
|
|
25
|
+
const generate = () => {
|
|
26
|
+
return `${randomDigits(2)}${randomDigits(3)}${randomDigits(4)}${randomDigits(1)}`;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Format patterns per federal state.
|
|
30
|
+
* [0] = regional format, [1] = unified (federal) format.
|
|
31
|
+
*
|
|
32
|
+
* Legend: F = finance office, B = district,
|
|
33
|
+
* U = serial, P = check digit,
|
|
34
|
+
* leading digits are literal.
|
|
35
|
+
*/
|
|
36
|
+
const STATES = {
|
|
37
|
+
"Baden-Württemberg": ["FFBBBUUUUP", "28FF0BBBUUUUP"],
|
|
38
|
+
Bayern: ["FFFBBBUUUUP", "9FFF0BBBUUUUP"],
|
|
39
|
+
Berlin: ["FFBBBUUUUP", "11FF0BBBUUUUP"],
|
|
40
|
+
Brandenburg: ["0FFBBBUUUUP", "30FF0BBBUUUUP"],
|
|
41
|
+
Bremen: ["FFBBBUUUUP", "24FF0BBBUUUUP"],
|
|
42
|
+
Hamburg: ["FFBBBUUUUP", "22FF0BBBUUUUP"],
|
|
43
|
+
Hessen: ["0FFBBBUUUUP", "26FF0BBBUUUUP"],
|
|
44
|
+
"Mecklenburg-Vorpommern": ["0FFBBBUUUUP", "40FF0BBBUUUUP"],
|
|
45
|
+
Niedersachsen: ["FFBBBUUUUP", "23FF0BBBUUUUP"],
|
|
46
|
+
"Nordrhein-Westfalen": ["FFFBBBBUUUP", "5FFF0BBBBUUUP"],
|
|
47
|
+
"Rheinland-Pfalz": ["FFBBBUUUUP", "27FF0BBBUUUUP"],
|
|
48
|
+
Saarland: ["0FFBBBUUUUP", "10FF0BBBUUUUP"],
|
|
49
|
+
Sachsen: ["2FFBBBUUUUP", "32FF0BBBUUUUP"],
|
|
50
|
+
"Sachsen-Anhalt": ["1FFBBBUUUUP", "31FF0BBBUUUUP"],
|
|
51
|
+
"Schleswig-Holstein": ["FFBBBUUUUP", "21FF0BBBUUUUP"],
|
|
52
|
+
Thüringen: ["1FFBBBUUUUP", "41FF0BBBUUUUP"]
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Convert a format pattern to a regex.
|
|
56
|
+
* Literal digits match themselves; F/B/U match any
|
|
57
|
+
* digit; P (check digit) matches any digit.
|
|
58
|
+
*/
|
|
59
|
+
const patternToRegex = (pattern) => {
|
|
60
|
+
let re = "^";
|
|
61
|
+
for (const ch of pattern) if (ch >= "0" && ch <= "9") re += ch;
|
|
62
|
+
else re += "\\d";
|
|
63
|
+
re += "$";
|
|
64
|
+
return new RegExp(re);
|
|
65
|
+
};
|
|
66
|
+
/** Pre-compiled regexes for each state + format. */
|
|
67
|
+
const COMPILED = Object.entries(STATES).map(([state, [regionalFmt, federalFmt]]) => ({
|
|
68
|
+
state,
|
|
69
|
+
regional: patternToRegex(regionalFmt),
|
|
70
|
+
regionalFmt,
|
|
71
|
+
federal: patternToRegex(federalFmt),
|
|
72
|
+
federalFmt
|
|
73
|
+
}));
|
|
74
|
+
const compact = (value) => clean(value, " -/.");
|
|
75
|
+
const matchesAnyPattern = (v) => {
|
|
76
|
+
for (const { regional, federal } of COMPILED) if (regional.test(v) || federal.test(v)) return true;
|
|
77
|
+
return false;
|
|
78
|
+
};
|
|
79
|
+
const validate = (value) => {
|
|
80
|
+
const v = compact(value);
|
|
81
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "German Steuernummer must contain only digits");
|
|
82
|
+
if (v.length !== 10 && v.length !== 11 && v.length !== 13) return err("INVALID_LENGTH", "German Steuernummer must be 10, 11, or 13 digits");
|
|
83
|
+
if (!matchesAnyPattern(v)) return err("INVALID_COMPONENT", "German Steuernummer does not match any known state format");
|
|
84
|
+
return {
|
|
85
|
+
valid: true,
|
|
86
|
+
compact: v
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Format with slashes at segment boundaries.
|
|
91
|
+
* Uses the first matching state pattern to determine
|
|
92
|
+
* segment positions.
|
|
93
|
+
*/
|
|
94
|
+
const format = (value) => {
|
|
95
|
+
const v = compact(value);
|
|
96
|
+
for (const entry of COMPILED) {
|
|
97
|
+
if (!(v.length === 13 ? entry.federal : entry.regional).test(v)) continue;
|
|
98
|
+
const fmt = v.length === 13 ? entry.federalFmt : entry.regionalFmt;
|
|
99
|
+
const segments = [];
|
|
100
|
+
let segStart = 0;
|
|
101
|
+
let prevCat = charCat(fmt[0]);
|
|
102
|
+
for (let i = 1; i < fmt.length; i++) {
|
|
103
|
+
const cat = charCat(fmt[i]);
|
|
104
|
+
if (cat !== prevCat) {
|
|
105
|
+
segments.push(v.slice(segStart, i));
|
|
106
|
+
segStart = i;
|
|
107
|
+
prevCat = cat;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
segments.push(v.slice(segStart));
|
|
111
|
+
return segments.join("/");
|
|
112
|
+
}
|
|
113
|
+
return v;
|
|
114
|
+
};
|
|
115
|
+
const charCat = (ch) => {
|
|
116
|
+
if (ch >= "0" && ch <= "9") return "L";
|
|
117
|
+
return ch;
|
|
118
|
+
};
|
|
119
|
+
/** German Tax Number (Steuernummer). */
|
|
120
|
+
const stnr = {
|
|
121
|
+
name: "German Tax Number",
|
|
122
|
+
localName: "Steuernummer",
|
|
123
|
+
abbreviation: "StNr",
|
|
124
|
+
aliases: ["Steuernummer", "St.Nr."],
|
|
125
|
+
candidatePattern: "\\d{2,4}/\\d{3,4}/\\d{4,5}",
|
|
126
|
+
country: "DE",
|
|
127
|
+
entityType: "any",
|
|
128
|
+
description: "German tax number assigned by the local tax office, varies by federal state",
|
|
129
|
+
sourceUrl: "https://de.wikipedia.org/wiki/Steuernummer",
|
|
130
|
+
lengths: [
|
|
131
|
+
10,
|
|
132
|
+
11,
|
|
133
|
+
13
|
|
134
|
+
],
|
|
135
|
+
examples: ["2181508150", "18181508155"],
|
|
136
|
+
compact,
|
|
137
|
+
format,
|
|
138
|
+
validate,
|
|
139
|
+
generate
|
|
140
|
+
};
|
|
141
|
+
//#endregion
|
|
142
|
+
export { compact, stnr as default, format, generate, validate };
|
|
143
|
+
|
|
144
|
+
//# sourceMappingURL=stnr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stnr.js","names":[],"sources":["../../src/de/stnr.ts"],"sourcesContent":["/**\n * Generate a random valid Steuernummer.\n * Uses Berlin regional format (FFBBBUUUUP, 10 digits).\n */\nconst generate = (): string => {\n const ff = randomDigits(2);\n const bbb = randomDigits(3);\n const uuuu = randomDigits(4);\n const p = randomDigits(1);\n return `${ff}${bbb}${uuuu}${p}`;\n};\n\n/**\n * StNr (Steuernummer).\n *\n * German tax number assigned by the local tax office.\n * Regional format: 10 or 11 digits. Unified federal\n * format: 13 digits (prefixed with a 2–4 digit BUFA\n * code). Structure varies by federal state.\n *\n * The number encodes: BUFA (Bundesfinanzamtsnummer),\n * district code, serial number, and check digit. No\n * algorithmic check digit validation is standardised\n * across all states; validation is format-only.\n *\n * @see https://de.wikipedia.org/wiki/Steuernummer\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\n/**\n * Format patterns per federal state.\n * [0] = regional format, [1] = unified (federal) format.\n *\n * Legend: F = finance office, B = district,\n * U = serial, P = check digit,\n * leading digits are literal.\n */\nconst STATES = {\n \"Baden-Württemberg\": [\"FFBBBUUUUP\", \"28FF0BBBUUUUP\"],\n Bayern: [\"FFFBBBUUUUP\", \"9FFF0BBBUUUUP\"],\n Berlin: [\"FFBBBUUUUP\", \"11FF0BBBUUUUP\"],\n Brandenburg: [\"0FFBBBUUUUP\", \"30FF0BBBUUUUP\"],\n Bremen: [\"FFBBBUUUUP\", \"24FF0BBBUUUUP\"],\n Hamburg: [\"FFBBBUUUUP\", \"22FF0BBBUUUUP\"],\n Hessen: [\"0FFBBBUUUUP\", \"26FF0BBBUUUUP\"],\n \"Mecklenburg-Vorpommern\": [\n \"0FFBBBUUUUP\",\n \"40FF0BBBUUUUP\",\n ],\n Niedersachsen: [\"FFBBBUUUUP\", \"23FF0BBBUUUUP\"],\n \"Nordrhein-Westfalen\": [\"FFFBBBBUUUP\", \"5FFF0BBBBUUUP\"],\n \"Rheinland-Pfalz\": [\"FFBBBUUUUP\", \"27FF0BBBUUUUP\"],\n Saarland: [\"0FFBBBUUUUP\", \"10FF0BBBUUUUP\"],\n Sachsen: [\"2FFBBBUUUUP\", \"32FF0BBBUUUUP\"],\n \"Sachsen-Anhalt\": [\"1FFBBBUUUUP\", \"31FF0BBBUUUUP\"],\n \"Schleswig-Holstein\": [\"FFBBBUUUUP\", \"21FF0BBBUUUUP\"],\n Thüringen: [\"1FFBBBUUUUP\", \"41FF0BBBUUUUP\"],\n} as const;\n\ntype StateName = keyof typeof STATES;\n\n/**\n * Convert a format pattern to a regex.\n * Literal digits match themselves; F/B/U match any\n * digit; P (check digit) matches any digit.\n */\nconst patternToRegex = (pattern: string): RegExp => {\n let re = \"^\";\n for (const ch of pattern) {\n if (ch >= \"0\" && ch <= \"9\") {\n re += ch;\n } else {\n re += \"\\\\d\";\n }\n }\n re += \"$\";\n return new RegExp(re);\n};\n\n/** Pre-compiled regexes for each state + format. */\nconst COMPILED: Array<{\n state: StateName;\n regional: RegExp;\n regionalFmt: string;\n federal: RegExp;\n federalFmt: string;\n}> = (\n Object.entries(STATES) as Array<\n [StateName, readonly [string, string]]\n >\n).map(([state, [regionalFmt, federalFmt]]) => ({\n state,\n regional: patternToRegex(regionalFmt),\n regionalFmt,\n federal: patternToRegex(federalFmt),\n federalFmt,\n}));\n\nconst compact = (value: string): string =>\n clean(value, \" -/.\");\n\nconst matchesAnyPattern = (v: string): boolean => {\n for (const { regional, federal } of COMPILED) {\n if (regional.test(v) || federal.test(v)) return true;\n }\n return false;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"German Steuernummer must contain only digits\",\n );\n }\n\n if (\n v.length !== 10 &&\n v.length !== 11 &&\n v.length !== 13\n ) {\n return err(\n \"INVALID_LENGTH\",\n \"German Steuernummer must be 10, 11, or 13 digits\",\n );\n }\n\n if (!matchesAnyPattern(v)) {\n return err(\n \"INVALID_COMPONENT\",\n \"German Steuernummer does not match any \" +\n \"known state format\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\n/**\n * Format with slashes at segment boundaries.\n * Uses the first matching state pattern to determine\n * segment positions.\n */\nconst format = (value: string): string => {\n const v = compact(value);\n\n for (const entry of COMPILED) {\n const pattern =\n v.length === 13 ? entry.federal : entry.regional;\n if (!pattern.test(v)) continue;\n\n const fmt =\n v.length === 13\n ? entry.federalFmt\n : entry.regionalFmt;\n\n // Group by consecutive runs of the same letter\n // category: literal digits, F, B, U, P\n const segments: string[] = [];\n let segStart = 0;\n let prevCat = charCat(fmt[0]!);\n\n for (let i = 1; i < fmt.length; i++) {\n const cat = charCat(fmt[i]!);\n if (cat !== prevCat) {\n segments.push(v.slice(segStart, i));\n segStart = i;\n prevCat = cat;\n }\n }\n segments.push(v.slice(segStart));\n\n return segments.join(\"/\");\n }\n\n return v;\n};\n\nconst charCat = (ch: string): string => {\n if (ch >= \"0\" && ch <= \"9\") return \"L\"; // literal\n return ch; // F, B, U, P\n};\n\n/** German Tax Number (Steuernummer). */\nconst stnr: Validator = {\n name: \"German Tax Number\",\n localName: \"Steuernummer\",\n abbreviation: \"StNr\",\n aliases: [\"Steuernummer\", \"St.Nr.\"] as const,\n candidatePattern: \"\\\\d{2,4}/\\\\d{3,4}/\\\\d{4,5}\",\n country: \"DE\",\n entityType: \"any\",\n description:\n \"German tax number assigned by the local \" +\n \"tax office, varies by federal state\",\n sourceUrl: \"https://de.wikipedia.org/wiki/Steuernummer\",\n lengths: [10, 11, 13] as const,\n examples: [\"2181508150\", \"18181508155\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default stnr;\nexport { compact, format, validate, generate };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/de/svnr.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 German SVNR. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** German Social Insurance Number. */
|
|
11
|
+
declare const svnr: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, svnr as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=svnr.d.ts.map
|
package/dist/de/svnr.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isValidDate, resolveTwoDigitYear } from "../_util/date.js";
|
|
5
|
+
//#region src/de/svnr.ts
|
|
6
|
+
/**
|
|
7
|
+
* SVNR (Sozialversicherungsnummer).
|
|
8
|
+
*
|
|
9
|
+
* German social insurance number. 12 characters:
|
|
10
|
+
* area number (2 digits) + date of birth (DDMMYY)
|
|
11
|
+
* + initial letter of birth name (1 letter) +
|
|
12
|
+
* serial number (2 digits) + check digit (1 digit).
|
|
13
|
+
*
|
|
14
|
+
* @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer
|
|
15
|
+
*/
|
|
16
|
+
const letterValue = (ch) => {
|
|
17
|
+
const code = ch.charCodeAt(0);
|
|
18
|
+
if (code >= 65 && code <= 90) return code - 64;
|
|
19
|
+
return -1;
|
|
20
|
+
};
|
|
21
|
+
const WEIGHTS = [
|
|
22
|
+
2,
|
|
23
|
+
1,
|
|
24
|
+
2,
|
|
25
|
+
5,
|
|
26
|
+
7,
|
|
27
|
+
1,
|
|
28
|
+
2,
|
|
29
|
+
1,
|
|
30
|
+
2,
|
|
31
|
+
1,
|
|
32
|
+
2,
|
|
33
|
+
1
|
|
34
|
+
];
|
|
35
|
+
const compact = (value) => clean(value, " -/").toUpperCase();
|
|
36
|
+
const computeCheck = (v) => {
|
|
37
|
+
const digits = [];
|
|
38
|
+
for (let i = 0; i < 8; i++) digits.push(Number(v[i]));
|
|
39
|
+
const lv = letterValue(v[8]);
|
|
40
|
+
digits.push(Math.floor(lv / 10));
|
|
41
|
+
digits.push(lv % 10);
|
|
42
|
+
digits.push(Number(v[9]));
|
|
43
|
+
digits.push(Number(v[10]));
|
|
44
|
+
let sum = 0;
|
|
45
|
+
for (let i = 0; i < 12; i++) {
|
|
46
|
+
const product = digits[i] * WEIGHTS[i];
|
|
47
|
+
if (product >= 10) sum += Math.floor(product / 10) + product % 10;
|
|
48
|
+
else sum += product;
|
|
49
|
+
}
|
|
50
|
+
return sum % 10;
|
|
51
|
+
};
|
|
52
|
+
const validate = (value) => {
|
|
53
|
+
const v = compact(value);
|
|
54
|
+
if (v.length !== 12) return err("INVALID_LENGTH", "German SVNR must be 12 characters");
|
|
55
|
+
if (!/^\d{8}[A-Z]\d{3}$/.test(v)) return err("INVALID_FORMAT", "German SVNR must be 8 digits, 1 letter, 3 digits");
|
|
56
|
+
const dd = Number(v.slice(2, 4));
|
|
57
|
+
const mm = Number(v.slice(4, 6));
|
|
58
|
+
if (!isValidDate(resolveTwoDigitYear(Number(v.slice(6, 8))), mm, dd)) return err("INVALID_COMPONENT", "German SVNR contains an invalid birth date");
|
|
59
|
+
if (computeCheck(v) !== Number(v[11])) return err("INVALID_CHECKSUM", "German SVNR check digit mismatch");
|
|
60
|
+
return {
|
|
61
|
+
valid: true,
|
|
62
|
+
compact: v
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
const format = (value) => {
|
|
66
|
+
const v = compact(value);
|
|
67
|
+
return `${v.slice(0, 2)} ${v.slice(2, 8)} ${v.slice(8, 9)} ${v.slice(9, 11)} ${v.slice(11)}`;
|
|
68
|
+
};
|
|
69
|
+
/** Generate a random valid German SVNR. */
|
|
70
|
+
const generate = () => {
|
|
71
|
+
for (;;) {
|
|
72
|
+
const area = String(randomInt(1, 99)).padStart(2, "0");
|
|
73
|
+
const dd = String(randomInt(1, 28)).padStart(2, "0");
|
|
74
|
+
const mm = String(randomInt(1, 12)).padStart(2, "0");
|
|
75
|
+
const yy = String(randomInt(40, 99)).padStart(2, "0");
|
|
76
|
+
const letter = String.fromCharCode(65 + randomInt(0, 25));
|
|
77
|
+
const serial = String(randomInt(0, 49)).padStart(2, "0");
|
|
78
|
+
const partial = area + dd + mm + yy + letter + serial;
|
|
79
|
+
const c = partial + String(computeCheck(partial));
|
|
80
|
+
if (validate(c).valid) return c;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
/** German Social Insurance Number. */
|
|
84
|
+
const svnr = {
|
|
85
|
+
name: "German Social Insurance Number",
|
|
86
|
+
localName: "Sozialversicherungsnummer",
|
|
87
|
+
abbreviation: "SVNR",
|
|
88
|
+
aliases: [
|
|
89
|
+
"Sozialversicherungsnummer",
|
|
90
|
+
"SVNR",
|
|
91
|
+
"Versicherungsnummer"
|
|
92
|
+
],
|
|
93
|
+
candidatePattern: "\\d{2}\\s?\\d{6}\\s?[A-Z]\\s?\\d{3}",
|
|
94
|
+
country: "DE",
|
|
95
|
+
entityType: "person",
|
|
96
|
+
description: "German social insurance number encoding birth date and name initial",
|
|
97
|
+
sourceUrl: "https://de.wikipedia.org/wiki/Sozialversicherungsnummer",
|
|
98
|
+
lengths: [12],
|
|
99
|
+
examples: ["12010188M011"],
|
|
100
|
+
compact,
|
|
101
|
+
format,
|
|
102
|
+
validate,
|
|
103
|
+
generate
|
|
104
|
+
};
|
|
105
|
+
//#endregion
|
|
106
|
+
export { compact, svnr as default, format, generate, validate };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=svnr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svnr.js","names":[],"sources":["../../src/de/svnr.ts"],"sourcesContent":["/**\n * SVNR (Sozialversicherungsnummer).\n *\n * German social insurance number. 12 characters:\n * area number (2 digits) + date of birth (DDMMYY)\n * + initial letter of birth name (1 letter) +\n * serial number (2 digits) + check digit (1 digit).\n *\n * @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer\n */\n\nimport { clean } from \"#util/clean\";\nimport {\n isValidDate,\n resolveTwoDigitYear,\n} from \"#util/date\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst letterValue = (ch: string): number => {\n const code = ch.charCodeAt(0);\n if (code >= 65 && code <= 90) return code - 64;\n return -1;\n};\n\nconst WEIGHTS = [\n 2, 1, 2, 5, 7, 1, 2, 1, 2, 1, 2, 1,\n] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -/\").toUpperCase();\n\nconst computeCheck = (v: string): number => {\n const digits: number[] = [];\n\n for (let i = 0; i < 8; i++) {\n digits.push(Number(v[i]));\n }\n\n const lv = letterValue(v[8]!);\n digits.push(Math.floor(lv / 10));\n digits.push(lv % 10);\n\n digits.push(Number(v[9]));\n digits.push(Number(v[10]));\n\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n const product = digits[i]! * WEIGHTS[i]!;\n if (product >= 10) {\n sum += Math.floor(product / 10) + (product % 10);\n } else {\n sum += product;\n }\n }\n\n return sum % 10;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 12) {\n return err(\n \"INVALID_LENGTH\",\n \"German SVNR must be 12 characters\",\n );\n }\n\n if (!/^\\d{8}[A-Z]\\d{3}$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"German SVNR must be 8 digits, 1 letter, \" +\n \"3 digits\",\n );\n }\n\n const dd = Number(v.slice(2, 4));\n const mm = Number(v.slice(4, 6));\n const yy = Number(v.slice(6, 8));\n\n const year = resolveTwoDigitYear(yy);\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"German SVNR contains an invalid birth date\",\n );\n }\n\n const expected = computeCheck(v);\n const actual = Number(v[11]);\n\n if (expected !== actual) {\n return err(\n \"INVALID_CHECKSUM\",\n \"German SVNR check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return (\n `${v.slice(0, 2)} ${v.slice(2, 8)}` +\n ` ${v.slice(8, 9)} ${v.slice(9, 11)}` +\n ` ${v.slice(11)}`\n );\n};\n\n/** Generate a random valid German SVNR. */\nconst generate = (): string => {\n for (;;) {\n const area = String(randomInt(1, 99)).padStart(2, \"0\");\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const mm = String(randomInt(1, 12)).padStart(2, \"0\");\n const yy = String(randomInt(40, 99)).padStart(2, \"0\");\n const letter = String.fromCharCode(\n 65 + randomInt(0, 25),\n );\n const serial = String(randomInt(0, 49)).padStart(\n 2,\n \"0\",\n );\n const partial = area + dd + mm + yy + letter + serial;\n const c = partial + String(computeCheck(partial));\n if (validate(c).valid) return c;\n }\n};\n\n/** German Social Insurance Number. */\nconst svnr: Validator = {\n name: \"German Social Insurance Number\",\n localName: \"Sozialversicherungsnummer\",\n abbreviation: \"SVNR\",\n aliases: [\n \"Sozialversicherungsnummer\",\n \"SVNR\",\n \"Versicherungsnummer\",\n ] as const,\n candidatePattern: \"\\\\d{2}\\\\s?\\\\d{6}\\\\s?[A-Z]\\\\s?\\\\d{3}\",\n country: \"DE\",\n entityType: \"person\",\n description:\n \"German social insurance number encoding \" +\n \"birth date and name initial\",\n sourceUrl:\n \"https://de.wikipedia.org/wiki/\" +\n \"Sozialversicherungsnummer\",\n lengths: [12] as const,\n examples: [\"12010188M011\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default svnr;\nexport { compact, format, validate, generate };\n"],"mappings":"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"}
|
package/dist/de/vat.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/de/vat.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid German VAT number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** German VAT Identification Number. */
|
|
11
|
+
declare const vat: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, vat as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=vat.d.ts.map
|
package/dist/de/vat.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
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 { mod1110checkDigit, mod1110validate } from "../_checksums/mod1110.js";
|
|
6
|
+
//#region src/de/vat.ts
|
|
7
|
+
/**
|
|
8
|
+
* USt-IdNr. (Umsatzsteuer-Identifikationsnummer).
|
|
9
|
+
*
|
|
10
|
+
* German VAT identification number. Format:
|
|
11
|
+
* "DE" + 9 digits. The last digit is a check
|
|
12
|
+
* digit computed using ISO 7064 Mod 11,10.
|
|
13
|
+
*
|
|
14
|
+
* @see https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html
|
|
15
|
+
* @see https://www.bzst.de/SharedDocs/Downloads/DE/Merkblaetter/ust_idnr_aufbau.pdf
|
|
16
|
+
*/
|
|
17
|
+
const compact = (value) => {
|
|
18
|
+
const v = clean(value, " -/");
|
|
19
|
+
if (v.startsWith("DE") || v.startsWith("de")) return v.slice(2);
|
|
20
|
+
return v;
|
|
21
|
+
};
|
|
22
|
+
const validate = (value) => {
|
|
23
|
+
const v = compact(value);
|
|
24
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "German VAT number must be 9 digits");
|
|
25
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "German VAT number must contain only digits");
|
|
26
|
+
if (v[0] === "0") return err("INVALID_COMPONENT", "German VAT number cannot start with 0");
|
|
27
|
+
if (!mod1110validate(v)) return err("INVALID_CHECKSUM", "German VAT number check digit mismatch");
|
|
28
|
+
return {
|
|
29
|
+
valid: true,
|
|
30
|
+
compact: v
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const format = (value) => `DE${compact(value)}`;
|
|
34
|
+
/** Generate a random valid German VAT number. */
|
|
35
|
+
const generate = () => {
|
|
36
|
+
const payload = `${String(randomInt(1, 9))}${randomDigits(7)}`;
|
|
37
|
+
const check = mod1110checkDigit(payload);
|
|
38
|
+
return `${payload}${String(check)}`;
|
|
39
|
+
};
|
|
40
|
+
/** German VAT Identification Number. */
|
|
41
|
+
const vat = {
|
|
42
|
+
name: "German VAT Number",
|
|
43
|
+
localName: "Umsatzsteuer-Identifikationsnummer",
|
|
44
|
+
abbreviation: "USt-IdNr.",
|
|
45
|
+
aliases: [
|
|
46
|
+
"USt-IdNr",
|
|
47
|
+
"Umsatzsteuer-Identifikationsnummer",
|
|
48
|
+
"VAT DE"
|
|
49
|
+
],
|
|
50
|
+
candidatePattern: "DE\\d{9}",
|
|
51
|
+
country: "DE",
|
|
52
|
+
entityType: "company",
|
|
53
|
+
description: "German VAT ID issued by the Federal Tax Office (BZSt)",
|
|
54
|
+
sourceUrl: "https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html",
|
|
55
|
+
lengths: [9],
|
|
56
|
+
examples: ["136695976"],
|
|
57
|
+
compact,
|
|
58
|
+
format,
|
|
59
|
+
validate,
|
|
60
|
+
generate
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
export { compact, vat as default, format, generate, validate };
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=vat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/de/vat.ts"],"sourcesContent":["/**\n * USt-IdNr. (Umsatzsteuer-Identifikationsnummer).\n *\n * German VAT identification number. Format:\n * \"DE\" + 9 digits. The last digit is a check\n * digit computed using ISO 7064 Mod 11,10.\n *\n * @see https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html\n * @see https://www.bzst.de/SharedDocs/Downloads/DE/Merkblaetter/ust_idnr_aufbau.pdf\n */\n\nimport {\n mod1110checkDigit,\n mod1110validate,\n} from \"#checksums/mod1110\";\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 const v = clean(value, \" -/\");\n if (v.startsWith(\"DE\") || v.startsWith(\"de\")) {\n return v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"German VAT number must be 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"German VAT number must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"German VAT number cannot start with 0\",\n );\n }\n if (!mod1110validate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"German VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `DE${compact(value)}`;\n\n/** Generate a random valid German VAT number. */\nconst generate = (): string => {\n const first = String(randomInt(1, 9));\n const rest = randomDigits(7);\n const payload = `${first}${rest}`;\n const check = mod1110checkDigit(payload);\n return `${payload}${String(check)}`;\n};\n\n/** German VAT Identification Number. */\nconst vat: Validator = {\n name: \"German VAT Number\",\n localName: \"Umsatzsteuer-Identifikationsnummer\",\n abbreviation: \"USt-IdNr.\",\n aliases: [\n \"USt-IdNr\",\n \"Umsatzsteuer-Identifikationsnummer\",\n \"VAT DE\",\n ] as const,\n candidatePattern: \"DE\\\\d{9}\",\n country: \"DE\",\n entityType: \"company\",\n description:\n \"German VAT ID issued by the Federal Tax Office (BZSt)\",\n sourceUrl:\n \"https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html\",\n lengths: [9] as const,\n examples: [\"136695976\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;;;;;;;;;;;;AAsBA,MAAM,WAAW,UAA0B;CACzC,MAAM,IAAI,MAAM,OAAO,MAAM;AAC7B,KAAI,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,CAC1C,QAAO,EAAE,MAAM,EAAE;AAEnB,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;AAEH,KAAI,CAAC,gBAAgB,EAAE,CACrB,QAAO,IACL,oBACA,yCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UACd,KAAK,QAAQ,MAAM;;AAGrB,MAAM,iBAAyB;CAG7B,MAAM,UAAU,GAFF,OAAO,UAAU,GAAG,EAAE,CAAC,GACxB,aAAa,EAAE;CAE5B,MAAM,QAAQ,kBAAkB,QAAQ;AACxC,QAAO,GAAG,UAAU,OAAO,MAAM;;;AAInC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,aACE;CACF,WACE;CACF,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
|
package/dist/dk/cpr.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ParsedPersonId, ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/dk/cpr.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Extract birth date and gender from a CPR number.
|
|
10
|
+
* Returns null if the value is not valid.
|
|
11
|
+
*/
|
|
12
|
+
declare const parse: (value: string) => ParsedPersonId | null;
|
|
13
|
+
/** Danish Personal Identification Number. */
|
|
14
|
+
declare const cpr: Validator;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { compact, cpr as default, format, parse, validate };
|
|
17
|
+
//# sourceMappingURL=cpr.d.ts.map
|
package/dist/dk/cpr.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { err } from "../_util/result.js";
|
|
3
|
+
import { isdigits } from "../_util/strings.js";
|
|
4
|
+
import { isValidDate } from "../_util/date.js";
|
|
5
|
+
//#region src/dk/cpr.ts
|
|
6
|
+
/**
|
|
7
|
+
* CPR (Det Centrale Personregister).
|
|
8
|
+
*
|
|
9
|
+
* Danish personal identification number. 10 digits
|
|
10
|
+
* in format DDMMYY-SSSS. Checksum enforcement was
|
|
11
|
+
* dropped in 2007; only date validation is performed.
|
|
12
|
+
*
|
|
13
|
+
* @see https://cpr.dk/
|
|
14
|
+
*/
|
|
15
|
+
const compact = (value) => clean(value, " -");
|
|
16
|
+
const getCentury = (yy, s7) => {
|
|
17
|
+
if (s7 >= 0 && s7 <= 3) return 1900;
|
|
18
|
+
if (s7 === 4 || s7 === 9) return yy <= 36 ? 2e3 : 1900;
|
|
19
|
+
return yy <= 57 ? 2e3 : 1800;
|
|
20
|
+
};
|
|
21
|
+
const validate = (value) => {
|
|
22
|
+
const v = compact(value);
|
|
23
|
+
if (v.length !== 10) return err("INVALID_LENGTH", "CPR must be exactly 10 digits");
|
|
24
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "CPR must contain only digits");
|
|
25
|
+
const dd = Number(v.slice(0, 2));
|
|
26
|
+
const mm = Number(v.slice(2, 4));
|
|
27
|
+
const yy = Number(v.slice(4, 6));
|
|
28
|
+
const year = getCentury(yy, Number(v[6])) + yy;
|
|
29
|
+
if (!isValidDate(year, mm, dd)) return err("INVALID_COMPONENT", "CPR contains an invalid date");
|
|
30
|
+
if (new Date(year, mm - 1, dd) > /* @__PURE__ */ new Date()) return err("INVALID_COMPONENT", "CPR birth date is in the future");
|
|
31
|
+
return {
|
|
32
|
+
valid: true,
|
|
33
|
+
compact: v
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const format = (value) => {
|
|
37
|
+
const v = compact(value);
|
|
38
|
+
return `${v.slice(0, 6)}-${v.slice(6)}`;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Extract birth date and gender from a CPR number.
|
|
42
|
+
* Returns null if the value is not valid.
|
|
43
|
+
*/
|
|
44
|
+
const parse = (value) => {
|
|
45
|
+
const result = validate(value);
|
|
46
|
+
if (!result.valid) return null;
|
|
47
|
+
const v = result.compact;
|
|
48
|
+
const dd = Number(v.slice(0, 2));
|
|
49
|
+
const mm = Number(v.slice(2, 4));
|
|
50
|
+
const yy = Number(v.slice(4, 6));
|
|
51
|
+
const s7 = Number(v[6]);
|
|
52
|
+
const lastDigit = Number(v[9]);
|
|
53
|
+
const year = getCentury(yy, s7) + yy;
|
|
54
|
+
return {
|
|
55
|
+
birthDate: new Date(year, mm - 1, dd),
|
|
56
|
+
gender: lastDigit % 2 === 0 ? "female" : "male"
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/** Danish Personal Identification Number. */
|
|
60
|
+
const cpr = {
|
|
61
|
+
name: "Danish Personal ID",
|
|
62
|
+
localName: "Det Centrale Personregister",
|
|
63
|
+
abbreviation: "CPR",
|
|
64
|
+
aliases: [
|
|
65
|
+
"CPR-nummer",
|
|
66
|
+
"personnummer",
|
|
67
|
+
"CPR"
|
|
68
|
+
],
|
|
69
|
+
candidatePattern: "\\d{6}-?\\d{4}",
|
|
70
|
+
country: "DK",
|
|
71
|
+
entityType: "person",
|
|
72
|
+
sourceUrl: "https://cpr.dk/",
|
|
73
|
+
examples: ["2110625629"],
|
|
74
|
+
compact,
|
|
75
|
+
format,
|
|
76
|
+
validate
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
export { compact, cpr as default, format, parse, validate };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=cpr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpr.js","names":[],"sources":["../../src/dk/cpr.ts"],"sourcesContent":["/**\n * CPR (Det Centrale Personregister).\n *\n * Danish personal identification number. 10 digits\n * in format DDMMYY-SSSS. Checksum enforcement was\n * dropped in 2007; only date validation is performed.\n *\n * @see https://cpr.dk/\n */\n\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n Validator,\n} from \"../types\";\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst getCentury = (yy: number, s7: number): number => {\n // 7th digit (first of serial) determines century\n if (s7 >= 0 && s7 <= 3) return 1900;\n if (s7 === 4 || s7 === 9) {\n return yy <= 36 ? 2000 : 1900;\n }\n // s7 5..8\n return yy <= 57 ? 2000 : 1800;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"CPR must be exactly 10 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"CPR must contain only digits\",\n );\n }\n\n const dd = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const yy = Number(v.slice(4, 6));\n const s7 = Number(v[6]);\n\n const century = getCentury(yy, s7);\n const year = century + yy;\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"CPR contains an invalid date\",\n );\n }\n\n // Reject future birth dates\n if (new Date(year, mm - 1, dd) > new Date()) {\n return err(\n \"INVALID_COMPONENT\",\n \"CPR birth date is in the future\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v.slice(0, 6)}-${v.slice(6)}`;\n};\n\n/**\n * Extract birth date and gender from a CPR number.\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 dd = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const yy = Number(v.slice(4, 6));\n const s7 = Number(v[6]);\n const lastDigit = Number(v[9]);\n\n const century = getCentury(yy, s7);\n const year = century + yy;\n\n return {\n birthDate: new Date(year, mm - 1, dd),\n gender: lastDigit % 2 === 0 ? \"female\" : \"male\",\n };\n};\n\n/** Danish Personal Identification Number. */\nconst cpr: Validator = {\n name: \"Danish Personal ID\",\n localName: \"Det Centrale Personregister\",\n abbreviation: \"CPR\",\n aliases: [\"CPR-nummer\", \"personnummer\", \"CPR\"] as const,\n candidatePattern: \"\\\\d{6}-?\\\\d{4}\",\n country: \"DK\",\n entityType: \"person\",\n sourceUrl: \"https://cpr.dk/\",\n examples: [\"2110625629\"] as const,\n compact,\n format,\n validate,\n};\n\nexport default cpr;\nexport { compact, format, parse, validate };\n"],"mappings":";;;;;;;;;;;;;;AAqBA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,cAAc,IAAY,OAAuB;AAErD,KAAI,MAAM,KAAK,MAAM,EAAG,QAAO;AAC/B,KAAI,OAAO,KAAK,OAAO,EACrB,QAAO,MAAM,KAAK,MAAO;AAG3B,QAAO,MAAM,KAAK,MAAO;;AAG3B,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,gCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;CAGH,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAIhC,MAAM,OADU,WAAW,IAFhB,OAAO,EAAE,GAAG,CAEW,GACX;AAEvB,KAAI,CAAC,YAAY,MAAM,IAAI,GAAG,CAC5B,QAAO,IACL,qBACA,+BACD;AAIH,KAAI,IAAI,KAAK,MAAM,KAAK,GAAG,GAAG,mBAAG,IAAI,MAAM,CACzC,QAAO,IACL,qBACA,kCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;;;;AAOvC,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,MAAM;AAC9B,KAAI,CAAC,OAAO,MAAO,QAAO;CAE1B,MAAM,IAAI,OAAO;CACjB,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,GAAG;CACvB,MAAM,YAAY,OAAO,EAAE,GAAG;CAG9B,MAAM,OADU,WAAW,IAAI,GAAG,GACX;AAEvB,QAAO;EACL,WAAW,IAAI,KAAK,MAAM,KAAK,GAAG,GAAG;EACrC,QAAQ,YAAY,MAAM,IAAI,WAAW;EAC1C;;;AAIH,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAc;EAAgB;EAAM;CAC9C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa;CACxB;CACA;CACA;CACD"}
|
package/dist/dk/cvr.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/dk/cvr.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 Danish CVR. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Danish Central Business Register Number. */
|
|
11
|
+
declare const cvr: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, cvr as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=cvr.d.ts.map
|
package/dist/dk/cvr.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
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/cvr.ts
|
|
7
|
+
/**
|
|
8
|
+
* CVR (Central Business Register number).
|
|
9
|
+
*
|
|
10
|
+
* 8 digits, no leading 0.
|
|
11
|
+
* Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.
|
|
12
|
+
*
|
|
13
|
+
* Same algorithm as the Danish VAT number, but this
|
|
14
|
+
* is the company register identifier.
|
|
15
|
+
*
|
|
16
|
+
* @see https://erhvervsstyrelsen.dk/
|
|
17
|
+
*
|
|
18
|
+
* Denmark dropped mod-11 for CPR in 2007; unconfirmed
|
|
19
|
+
* for CVR.
|
|
20
|
+
*/
|
|
21
|
+
const WEIGHTS = [
|
|
22
|
+
2,
|
|
23
|
+
7,
|
|
24
|
+
6,
|
|
25
|
+
5,
|
|
26
|
+
4,
|
|
27
|
+
3,
|
|
28
|
+
2,
|
|
29
|
+
1
|
|
30
|
+
];
|
|
31
|
+
const compact = (value) => clean(value, " -/.");
|
|
32
|
+
const validate = (value) => {
|
|
33
|
+
const v = compact(value);
|
|
34
|
+
if (v.length !== 8) return err("INVALID_LENGTH", "Danish CVR must be 8 digits");
|
|
35
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Danish CVR must contain only digits");
|
|
36
|
+
if (v[0] === "0") return err("INVALID_COMPONENT", "Danish CVR cannot start with 0");
|
|
37
|
+
if (weightedSum(v, WEIGHTS, 11) !== 0) return err("INVALID_CHECKSUM", "Danish CVR check digit mismatch");
|
|
38
|
+
return {
|
|
39
|
+
valid: true,
|
|
40
|
+
compact: v
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
const format = (value) => compact(value);
|
|
44
|
+
/** Generate a random valid Danish CVR. */
|
|
45
|
+
const generate = () => {
|
|
46
|
+
for (;;) {
|
|
47
|
+
const c = String(randomInt(1, 9)) + randomDigits(7);
|
|
48
|
+
if (validate(c).valid) return c;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
/** Danish Central Business Register Number. */
|
|
52
|
+
const cvr = {
|
|
53
|
+
name: "Danish Business Register Number",
|
|
54
|
+
localName: "CVR-nummer",
|
|
55
|
+
abbreviation: "CVR",
|
|
56
|
+
aliases: ["CVR-nummer", "CVR"],
|
|
57
|
+
candidatePattern: "\\d{8}",
|
|
58
|
+
country: "DK",
|
|
59
|
+
entityType: "company",
|
|
60
|
+
sourceUrl: "https://erhvervsstyrelsen.dk/",
|
|
61
|
+
examples: ["13585628"],
|
|
62
|
+
compact,
|
|
63
|
+
format,
|
|
64
|
+
validate,
|
|
65
|
+
generate
|
|
66
|
+
};
|
|
67
|
+
//#endregion
|
|
68
|
+
export { compact, cvr as default, format, generate, validate };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=cvr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cvr.js","names":[],"sources":["../../src/dk/cvr.ts"],"sourcesContent":["/**\n * CVR (Central Business Register number).\n *\n * 8 digits, no leading 0.\n * Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.\n *\n * Same algorithm as the Danish VAT number, but this\n * is the company register identifier.\n *\n * @see https://erhvervsstyrelsen.dk/\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 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 \"Danish CVR must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Danish CVR must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Danish CVR 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 CVR check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Danish CVR. */\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 Central Business Register Number. */\nconst cvr: Validator = {\n name: \"Danish Business Register Number\",\n localName: \"CVR-nummer\",\n abbreviation: \"CVR\",\n aliases: [\"CVR-nummer\", \"CVR\"] as const,\n candidatePattern: \"\\\\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 cvr;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAExC,MAAM,WAAW,UACf,MAAM,OAAO,OAAO;AAEtB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,8BACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,sCACD;AAEH,KAAI,EAAE,OAAO,IACX,QAAO,IACL,qBACA,iCACD;AAGH,KADY,YAAY,GAAG,SAAS,GAAG,KAC3B,EACV,QAAO,IACL,oBACA,kCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC,GAAG,aAAa,EAAE;AACnD,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,cAAc,MAAM;CAC9B,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;CACD"}
|
package/dist/dk/mod.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import cpr from "./cpr.js";
|
|
3
|
+
import cvr from "./cvr.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
|
|
6
|
+
//#region src/dk/mod.d.ts
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { cpr, cvr, mod_d_exports, vat };
|
|
10
|
+
//# sourceMappingURL=mod.d.ts.map
|
package/dist/dk/mod.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import cpr from "./cpr.js";
|
|
3
|
+
import cvr from "./cvr.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
//#region src/dk/mod.ts
|
|
6
|
+
var dk_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
cpr: () => cpr,
|
|
8
|
+
cvr: () => cvr,
|
|
9
|
+
vat: () => vat
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { cpr, cvr, dk_exports, vat };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/dk/mod.ts"],"sourcesContent":["export { default as cpr } from \"./cpr\";\nexport { default as cvr } from \"./cvr\";\nexport { default as vat } from \"./vat\";\n"],"mappings":""}
|
package/dist/dk/vat.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/dk/vat.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Danish VAT number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Danish VAT Number. */
|
|
11
|
+
declare const vat: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, vat as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=vat.d.ts.map
|