@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/ba/jmbg.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
|
+
import { isValidDate } from "../_util/date.js";
|
|
7
|
+
//#region src/ba/jmbg.ts
|
|
8
|
+
/**
|
|
9
|
+
* JMBG (Jedinstveni matični broj građana).
|
|
10
|
+
*
|
|
11
|
+
* Bosnian unique master citizen number. 13 digits
|
|
12
|
+
* encoding DDMMYYY (7-digit birth year), region code,
|
|
13
|
+
* serial number, and a check digit.
|
|
14
|
+
*
|
|
15
|
+
* @see https://en.wikipedia.org/wiki/Unique_Master_Citizen_Number
|
|
16
|
+
*/
|
|
17
|
+
const WEIGHTS = [
|
|
18
|
+
7,
|
|
19
|
+
6,
|
|
20
|
+
5,
|
|
21
|
+
4,
|
|
22
|
+
3,
|
|
23
|
+
2,
|
|
24
|
+
7,
|
|
25
|
+
6,
|
|
26
|
+
5,
|
|
27
|
+
4,
|
|
28
|
+
3,
|
|
29
|
+
2
|
|
30
|
+
];
|
|
31
|
+
const compact = (value) => clean(value, " -");
|
|
32
|
+
const resolveYear = (yyy) => yyy < 900 ? yyy + 2e3 : yyy + 1e3;
|
|
33
|
+
const calcCheckDigit = (v) => {
|
|
34
|
+
return (11 - weightedSum(v.slice(0, 12), WEIGHTS, 11)) % 11 % 10;
|
|
35
|
+
};
|
|
36
|
+
const validate = (value) => {
|
|
37
|
+
const v = compact(value);
|
|
38
|
+
if (v.length !== 13) return err("INVALID_LENGTH", "JMBG must be exactly 13 digits");
|
|
39
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "JMBG must contain only digits");
|
|
40
|
+
const dd = Number(v.slice(0, 2));
|
|
41
|
+
const mm = Number(v.slice(2, 4));
|
|
42
|
+
if (!isValidDate(resolveYear(Number(v.slice(4, 7))), mm, dd)) return err("INVALID_COMPONENT", "JMBG contains an invalid date");
|
|
43
|
+
if (calcCheckDigit(v) !== Number(v[12])) return err("INVALID_CHECKSUM", "JMBG check digit does not match");
|
|
44
|
+
return {
|
|
45
|
+
valid: true,
|
|
46
|
+
compact: v
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const format = (value) => compact(value);
|
|
50
|
+
const parse = (value) => {
|
|
51
|
+
const result = validate(value);
|
|
52
|
+
if (!result.valid) return null;
|
|
53
|
+
const v = result.compact;
|
|
54
|
+
const dd = Number(v.slice(0, 2));
|
|
55
|
+
const mm = Number(v.slice(2, 4));
|
|
56
|
+
const yyyy = resolveYear(Number(v.slice(4, 7)));
|
|
57
|
+
const serial = Number(v.slice(9, 12));
|
|
58
|
+
return {
|
|
59
|
+
birthDate: new Date(yyyy, mm - 1, dd),
|
|
60
|
+
gender: serial < 500 ? "male" : "female"
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
/** Generate a random valid JMBG. */
|
|
64
|
+
const generate = () => {
|
|
65
|
+
for (;;) {
|
|
66
|
+
const dd = String(randomInt(1, 28)).padStart(2, "0");
|
|
67
|
+
const mm = String(randomInt(1, 12)).padStart(2, "0");
|
|
68
|
+
const yyy = String(randomInt(900, 999));
|
|
69
|
+
const rr = String(randomInt(10, 99));
|
|
70
|
+
const sss = String(randomInt(0, 999)).padStart(3, "0");
|
|
71
|
+
const partial = dd + mm + yyy + rr + sss;
|
|
72
|
+
const check = calcCheckDigit(partial);
|
|
73
|
+
const c = partial + String(check);
|
|
74
|
+
if (validate(c).valid) return c;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
/** Bosnian Unique Master Citizen Number. */
|
|
78
|
+
const jmbg = {
|
|
79
|
+
name: "Bosnian Personal ID",
|
|
80
|
+
localName: "Jedinstveni matični broj građana",
|
|
81
|
+
abbreviation: "JMBG",
|
|
82
|
+
aliases: ["JMBG", "matični broj"],
|
|
83
|
+
candidatePattern: "\\d{13}",
|
|
84
|
+
country: "BA",
|
|
85
|
+
entityType: "person",
|
|
86
|
+
lengths: [13],
|
|
87
|
+
sourceUrl: "https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/",
|
|
88
|
+
examples: ["0101006500006"],
|
|
89
|
+
compact,
|
|
90
|
+
format,
|
|
91
|
+
validate,
|
|
92
|
+
generate
|
|
93
|
+
};
|
|
94
|
+
//#endregion
|
|
95
|
+
export { compact, jmbg as default, format, generate, parse, validate };
|
|
96
|
+
|
|
97
|
+
//# sourceMappingURL=jmbg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jmbg.js","names":[],"sources":["../../src/ba/jmbg.ts"],"sourcesContent":["/**\n * JMBG (Jedinstveni matični broj građana).\n *\n * Bosnian unique master citizen number. 13 digits\n * encoding DDMMYYY (7-digit birth year), region code,\n * serial number, and a check digit.\n *\n * @see https://en.wikipedia.org/wiki/Unique_Master_Citizen_Number\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n Validator,\n} from \"../types\";\n\nconst WEIGHTS = [\n 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2,\n] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst resolveYear = (yyy: number): number =>\n yyy < 900 ? yyy + 2000 : yyy + 1000;\n\nconst calcCheckDigit = (v: string): number => {\n const total = weightedSum(v.slice(0, 12), WEIGHTS, 11);\n return ((11 - total) % 11) % 10;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 13) {\n return err(\n \"INVALID_LENGTH\",\n \"JMBG must be exactly 13 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"JMBG 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 yyyy = resolveYear(Number(v.slice(4, 7)));\n if (!isValidDate(yyyy, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"JMBG contains an invalid date\",\n );\n }\n\n if (calcCheckDigit(v) !== Number(v[12])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"JMBG check digit does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\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 yyyy = resolveYear(Number(v.slice(4, 7)));\n\n const serial = Number(v.slice(9, 12));\n\n return {\n birthDate: new Date(yyyy, mm - 1, dd),\n gender: serial < 500 ? \"male\" : \"female\",\n };\n};\n\n/** Generate a random valid JMBG. */\nconst generate = (): string => {\n for (;;) {\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const mm = String(randomInt(1, 12)).padStart(2, \"0\");\n const yyy = String(randomInt(900, 999));\n const rr = String(randomInt(10, 99));\n const sss = String(randomInt(0, 999)).padStart(3, \"0\");\n const partial = dd + mm + yyy + rr + sss;\n const check = calcCheckDigit(partial);\n const c = partial + String(check);\n if (validate(c).valid) return c;\n }\n};\n\n/** Bosnian Unique Master Citizen Number. */\nconst jmbg: Validator = {\n name: \"Bosnian Personal ID\",\n localName: \"Jedinstveni matični broj građana\",\n abbreviation: \"JMBG\",\n aliases: [\"JMBG\", \"matični broj\"] as const,\n candidatePattern: \"\\\\d{13}\",\n country: \"BA\",\n entityType: \"person\",\n lengths: [13] as const,\n sourceUrl:\n \"https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/\",\n examples: [\"0101006500006\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default jmbg;\nexport { compact, format, parse, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;AAuBA,MAAM,UAAU;CACd;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAClC;AAED,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,eAAe,QACnB,MAAM,MAAM,MAAM,MAAO,MAAM;AAEjC,MAAM,kBAAkB,MAAsB;AAE5C,SAAS,KADK,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,SAAS,GAAG,IAC/B,KAAM;;AAG/B,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,iCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,gCACD;CAGH,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAEhC,KAAI,CAAC,YADQ,YAAY,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EACxB,IAAI,GAAG,CAC5B,QAAO,IACL,qBACA,gCACD;AAGH,KAAI,eAAe,EAAE,KAAK,OAAO,EAAE,IAAI,CACrC,QAAO,IACL,oBACA,kCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;AAExD,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,OAAO,YAAY,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;CAE/C,MAAM,SAAS,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;AAErC,QAAO;EACL,WAAW,IAAI,KAAK,MAAM,KAAK,GAAG,GAAG;EACrC,QAAQ,SAAS,MAAM,SAAS;EACjC;;;AAIH,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,MAAM,OAAO,UAAU,KAAK,IAAI,CAAC;EACvC,MAAM,KAAK,OAAO,UAAU,IAAI,GAAG,CAAC;EACpC,MAAM,MAAM,OAAO,UAAU,GAAG,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI;EACtD,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK;EACrC,MAAM,QAAQ,eAAe,QAAQ;EACrC,MAAM,IAAI,UAAU,OAAO,MAAM;AACjC,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,OAAkB;CACtB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,QAAQ,eAAe;CACjC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG;CACb,WACE;CACF,UAAU,CAAC,gBAAgB;CAC3B;CACA;CACA;CACA;CACD"}
|
package/dist/ba/mod.d.ts
ADDED
package/dist/ba/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import jmbg from "./jmbg.js";
|
|
3
|
+
//#region src/ba/mod.ts
|
|
4
|
+
var ba_exports = /* @__PURE__ */ __exportAll({ jmbg: () => jmbg });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { ba_exports, jmbg };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/ba/mod.ts"],"sourcesContent":["export { default as jmbg } from \"./jmbg\";\n"],"mappings":""}
|
package/dist/bd/mod.d.ts
ADDED
package/dist/bd/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import nid from "./nid.js";
|
|
3
|
+
//#region src/bd/mod.ts
|
|
4
|
+
var bd_exports = /* @__PURE__ */ __exportAll({ nid: () => nid });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { bd_exports, nid };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/bd/mod.ts"],"sourcesContent":["export { default as nid } from \"./nid\";\n"],"mappings":""}
|
package/dist/bd/nid.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/bd/nid.d.ts
|
|
4
|
+
/** Generate a random valid Bangladesh NID (13-digit). */
|
|
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
|
+
/** Bangladesh National Identity Number. */
|
|
10
|
+
declare const nid: Validator;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { compact, nid as default, format, generate, validate };
|
|
13
|
+
//# sourceMappingURL=nid.d.ts.map
|
package/dist/bd/nid.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
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/bd/nid.ts
|
|
6
|
+
/**
|
|
7
|
+
* NID (জাতীয় পরিচয়পত্র, Bangladesh National ID).
|
|
8
|
+
*
|
|
9
|
+
* Two formats exist:
|
|
10
|
+
* - 13 digits (old): DD-R-PP-UU-SSSSSS where
|
|
11
|
+
* DD = district, R = residential type (RMO),
|
|
12
|
+
* PP = police station, UU = union/ward code,
|
|
13
|
+
* SSSSSS = serial number.
|
|
14
|
+
* - 17 digits (new): YYYY + 13-digit old format
|
|
15
|
+
* where YYYY is the year of birth.
|
|
16
|
+
* - 10 digits (smart card): a newer format issued
|
|
17
|
+
* on smart NID cards; no public structural spec
|
|
18
|
+
* beyond digit-only validation.
|
|
19
|
+
*
|
|
20
|
+
* No checksum algorithm is used. Validation is
|
|
21
|
+
* structural: length, digit-only, and a valid
|
|
22
|
+
* RMO code (residential type).
|
|
23
|
+
*
|
|
24
|
+
* @see https://en.wikipedia.org/wiki/National_identity_card_(Bangladesh)
|
|
25
|
+
* @see https://www.nidw.gov.bd/
|
|
26
|
+
*/
|
|
27
|
+
/** Generate a random valid Bangladesh NID (13-digit). */
|
|
28
|
+
const generate = () => {
|
|
29
|
+
const district = randomDigits(2);
|
|
30
|
+
const rmoValues = [
|
|
31
|
+
"1",
|
|
32
|
+
"2",
|
|
33
|
+
"3",
|
|
34
|
+
"4",
|
|
35
|
+
"5",
|
|
36
|
+
"9"
|
|
37
|
+
];
|
|
38
|
+
return `${district}${rmoValues[randomInt(0, rmoValues.length - 1)]}${randomDigits(10)}`;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Valid RMO (residential/municipal/other) codes.
|
|
42
|
+
* 1 = Rural, 2 = Municipality, 3 = City,
|
|
43
|
+
* 4 = Others, 5 = Cantonment, 9 = City Corporation.
|
|
44
|
+
*/
|
|
45
|
+
const VALID_RMO = new Set([
|
|
46
|
+
"1",
|
|
47
|
+
"2",
|
|
48
|
+
"3",
|
|
49
|
+
"4",
|
|
50
|
+
"5",
|
|
51
|
+
"9"
|
|
52
|
+
]);
|
|
53
|
+
const compact = (value) => clean(value, " -");
|
|
54
|
+
/**
|
|
55
|
+
* Validate the 13-digit core (without year prefix).
|
|
56
|
+
* Returns an error result or null on success.
|
|
57
|
+
*/
|
|
58
|
+
const validateCore = (core) => {
|
|
59
|
+
const rmo = core[2];
|
|
60
|
+
if (rmo === void 0 || !VALID_RMO.has(rmo)) return err("INVALID_COMPONENT", "NID residential type (RMO) code is invalid");
|
|
61
|
+
return null;
|
|
62
|
+
};
|
|
63
|
+
const validate = (value) => {
|
|
64
|
+
const v = compact(value);
|
|
65
|
+
if (v.length !== 10 && v.length !== 13 && v.length !== 17) return err("INVALID_LENGTH", "NID must be 10, 13, or 17 digits");
|
|
66
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "NID must contain only digits");
|
|
67
|
+
if (v.length === 10) {
|
|
68
|
+
if (v[0] === "0") return err("INVALID_COMPONENT", "NID smart card number must not start with 0");
|
|
69
|
+
return {
|
|
70
|
+
valid: true,
|
|
71
|
+
compact: v
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const coreErr = validateCore(v.length === 17 ? v.slice(4) : v);
|
|
75
|
+
if (coreErr !== null) return coreErr;
|
|
76
|
+
return {
|
|
77
|
+
valid: true,
|
|
78
|
+
compact: v
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
const format = (value) => compact(value);
|
|
82
|
+
/** Bangladesh National Identity Number. */
|
|
83
|
+
const nid = {
|
|
84
|
+
name: "National Identity Number",
|
|
85
|
+
localName: "জাতীয় পরিচয়পত্র",
|
|
86
|
+
abbreviation: "NID",
|
|
87
|
+
aliases: [
|
|
88
|
+
"NID",
|
|
89
|
+
"জাতীয় পরিচয়পত্র",
|
|
90
|
+
"National ID Card"
|
|
91
|
+
],
|
|
92
|
+
candidatePattern: "\\d{10,17}",
|
|
93
|
+
country: "BD",
|
|
94
|
+
entityType: "person",
|
|
95
|
+
lengths: [
|
|
96
|
+
10,
|
|
97
|
+
13,
|
|
98
|
+
17
|
|
99
|
+
],
|
|
100
|
+
examples: [
|
|
101
|
+
"1592824588424",
|
|
102
|
+
"19841592824588424",
|
|
103
|
+
"2610413965404",
|
|
104
|
+
"19892610413965404"
|
|
105
|
+
],
|
|
106
|
+
description: "National identity number issued by the Bangladesh Election Commission",
|
|
107
|
+
sourceUrl: "https://www.nidw.gov.bd/",
|
|
108
|
+
compact,
|
|
109
|
+
format,
|
|
110
|
+
validate,
|
|
111
|
+
generate
|
|
112
|
+
};
|
|
113
|
+
//#endregion
|
|
114
|
+
export { compact, nid as default, format, generate, validate };
|
|
115
|
+
|
|
116
|
+
//# sourceMappingURL=nid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nid.js","names":[],"sources":["../../src/bd/nid.ts"],"sourcesContent":["/** Generate a random valid Bangladesh NID (13-digit). */\nconst generate = (): string => {\n const district = randomDigits(2);\n const rmoValues = [\"1\", \"2\", \"3\", \"4\", \"5\", \"9\"];\n const rmo =\n rmoValues[randomInt(0, rmoValues.length - 1)]!;\n const rest = randomDigits(10);\n return `${district}${rmo}${rest}`;\n};\n\n/**\n * NID (জাতীয় পরিচয়পত্র, Bangladesh National ID).\n *\n * Two formats exist:\n * - 13 digits (old): DD-R-PP-UU-SSSSSS where\n * DD = district, R = residential type (RMO),\n * PP = police station, UU = union/ward code,\n * SSSSSS = serial number.\n * - 17 digits (new): YYYY + 13-digit old format\n * where YYYY is the year of birth.\n * - 10 digits (smart card): a newer format issued\n * on smart NID cards; no public structural spec\n * beyond digit-only validation.\n *\n * No checksum algorithm is used. Validation is\n * structural: length, digit-only, and a valid\n * RMO code (residential type).\n *\n * @see https://en.wikipedia.org/wiki/National_identity_card_(Bangladesh)\n * @see https://www.nidw.gov.bd/\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\n/**\n * Valid RMO (residential/municipal/other) codes.\n * 1 = Rural, 2 = Municipality, 3 = City,\n * 4 = Others, 5 = Cantonment, 9 = City Corporation.\n */\nconst VALID_RMO = new Set([\"1\", \"2\", \"3\", \"4\", \"5\", \"9\"]);\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\n/**\n * Validate the 13-digit core (without year prefix).\n * Returns an error result or null on success.\n */\nconst validateCore = (\n core: string,\n): ValidateResult | null => {\n // core[0..1] = district (any 2 digits)\n // core[2] = RMO code\n const rmo = core[2];\n if (rmo === undefined || !VALID_RMO.has(rmo)) {\n return err(\n \"INVALID_COMPONENT\",\n \"NID residential type (RMO) code is invalid\",\n );\n }\n return null;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (\n v.length !== 10 &&\n v.length !== 13 &&\n v.length !== 17\n ) {\n return err(\n \"INVALID_LENGTH\",\n \"NID must be 10, 13, or 17 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"NID must contain only digits\",\n );\n }\n if (v.length === 10) {\n // Smart card format: first digit must not be 0\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"NID smart card number must not start with 0\",\n );\n }\n return { valid: true, compact: v };\n }\n // 13-digit (old) or 17-digit (new) format\n const core = v.length === 17 ? v.slice(4) : v;\n const coreErr = validateCore(core);\n if (coreErr !== null) {\n return coreErr;\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Bangladesh National Identity Number. */\nconst nid: Validator = {\n name: \"National Identity Number\",\n localName: \"জাতীয় পরিচয়পত্র\",\n abbreviation: \"NID\",\n aliases: [\n \"NID\",\n \"জাতীয় পরিচয়পত্র\",\n \"National ID Card\",\n ] as const,\n candidatePattern: \"\\\\d{10,17}\",\n country: \"BD\",\n entityType: \"person\",\n lengths: [10, 13, 17],\n examples: [\n \"1592824588424\",\n \"19841592824588424\",\n \"2610413965404\",\n \"19892610413965404\",\n ] as const,\n description:\n \"National identity number issued by the \" +\n \"Bangladesh Election Commission\",\n sourceUrl: \"https://www.nidw.gov.bd/\",\n compact,\n format,\n validate,\n generate,\n};\n\nexport default nid;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAM,iBAAyB;CAC7B,MAAM,WAAW,aAAa,EAAE;CAChC,MAAM,YAAY;EAAC;EAAK;EAAK;EAAK;EAAK;EAAK;EAAI;AAIhD,QAAO,GAAG,WAFR,UAAU,UAAU,GAAG,UAAU,SAAS,EAAE,IACjC,aAAa,GAAG;;;;;;;AAsC/B,MAAM,YAAY,IAAI,IAAI;CAAC;CAAK;CAAK;CAAK;CAAK;CAAK;CAAI,CAAC;AAEzD,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;;;;;AAMpB,MAAM,gBACJ,SAC0B;CAG1B,MAAM,MAAM,KAAK;AACjB,KAAI,QAAQ,KAAA,KAAa,CAAC,UAAU,IAAI,IAAI,CAC1C,QAAO,IACL,qBACA,6CACD;AAEH,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KACE,EAAE,WAAW,MACb,EAAE,WAAW,MACb,EAAE,WAAW,GAEb,QAAO,IACL,kBACA,mCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;AAEH,KAAI,EAAE,WAAW,IAAI;AAEnB,MAAI,EAAE,OAAO,IACX,QAAO,IACL,qBACA,8CACD;AAEH,SAAO;GAAE,OAAO;GAAM,SAAS;GAAG;;CAIpC,MAAM,UAAU,aADH,EAAE,WAAW,KAAK,EAAE,MAAM,EAAE,GAAG,EACV;AAClC,KAAI,YAAY,KACd,QAAO;AAET,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS;EAAC;EAAI;EAAI;EAAG;CACrB,UAAU;EACR;EACA;EACA;EACA;EACD;CACD,aACE;CAEF,WAAW;CACX;CACA;CACA;CACA;CACD"}
|
package/dist/be/bis.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/be/bis.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 BIS number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Belgian BIS Number. */
|
|
11
|
+
declare const bis: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, bis as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=bis.d.ts.map
|
package/dist/be/bis.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { checksum, format as format$1 } from "./nn.js";
|
|
6
|
+
//#region src/be/bis.ts
|
|
7
|
+
/**
|
|
8
|
+
* BIS (BIS-nummer / Numéro BIS).
|
|
9
|
+
*
|
|
10
|
+
* Belgian BIS number for individuals not in the
|
|
11
|
+
* National Register. 11 digits, structured like the
|
|
12
|
+
* NN but with the month offset by 20 (gender unknown)
|
|
13
|
+
* or 40 (gender known).
|
|
14
|
+
*
|
|
15
|
+
* @see https://sma-help.bosa.belgium.be/en/faq/where-can-i-find-my-bis-number
|
|
16
|
+
* @see https://nl.wikipedia.org/wiki/Rijksregisternummer
|
|
17
|
+
*/
|
|
18
|
+
const compact = (value) => clean(value, " .-");
|
|
19
|
+
const validate = (value) => {
|
|
20
|
+
const v = compact(value);
|
|
21
|
+
if (v.length !== 11) return err("INVALID_LENGTH", "BIS must be exactly 11 digits");
|
|
22
|
+
if (!isdigits(v) || Number(v) === 0) return err("INVALID_FORMAT", "BIS must contain only digits");
|
|
23
|
+
if (checksum(v) === null) return err("INVALID_CHECKSUM", "BIS check digits do not match");
|
|
24
|
+
const rawMonth = Number(v.slice(2, 4));
|
|
25
|
+
if (!(rawMonth >= 20 && rawMonth <= 32) && !(rawMonth >= 40 && rawMonth <= 52)) return err("INVALID_COMPONENT", "Month must be in 20..32 or 40..52");
|
|
26
|
+
return {
|
|
27
|
+
valid: true,
|
|
28
|
+
compact: v
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const format = (value) => format$1(compact(value));
|
|
32
|
+
/** Generate a random valid BIS number. */
|
|
33
|
+
const generate = () => {
|
|
34
|
+
for (;;) {
|
|
35
|
+
const yy = String(randomInt(0, 99)).padStart(2, "0");
|
|
36
|
+
const offset = Math.random() < .5 ? 20 : 40;
|
|
37
|
+
const mm = String(randomInt(1, 12) + offset).padStart(2, "0");
|
|
38
|
+
const dd = String(randomInt(1, 28)).padStart(2, "0");
|
|
39
|
+
const serial = String(randomInt(1, 997)).padStart(3, "0");
|
|
40
|
+
const base = yy + mm + dd + serial;
|
|
41
|
+
const check2 = 97 - Number("2" + base) % 97;
|
|
42
|
+
const c = base + String(check2).padStart(2, "0");
|
|
43
|
+
if (validate(c).valid) return c;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
/** Belgian BIS Number. */
|
|
47
|
+
const bis = {
|
|
48
|
+
name: "Belgian BIS Number",
|
|
49
|
+
localName: "BIS-nummer",
|
|
50
|
+
abbreviation: "BIS",
|
|
51
|
+
aliases: ["BIS-nummer", "numéro BIS"],
|
|
52
|
+
candidatePattern: "\\d{2}\\.?\\d{2}\\.?\\d{2}-?\\d{3}\\.?\\d{2}",
|
|
53
|
+
country: "BE",
|
|
54
|
+
entityType: "person",
|
|
55
|
+
sourceUrl: "https://sma-help.bosa.belgium.be/en/faq/where-can-i-find-my-bis-number",
|
|
56
|
+
examples: ["98472899765"],
|
|
57
|
+
compact,
|
|
58
|
+
format,
|
|
59
|
+
validate,
|
|
60
|
+
generate
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
export { compact, bis as default, format, generate, validate };
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=bis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bis.js","names":["nnFormat"],"sources":["../../src/be/bis.ts"],"sourcesContent":["/**\n * BIS (BIS-nummer / Numéro BIS).\n *\n * Belgian BIS number for individuals not in the\n * National Register. 11 digits, structured like the\n * NN but with the month offset by 20 (gender unknown)\n * or 40 (gender known).\n *\n * @see https://sma-help.bosa.belgium.be/en/faq/where-can-i-find-my-bis-number\n * @see https://nl.wikipedia.org/wiki/Rijksregisternummer\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\nimport { checksum, format as nnFormat } from \"./nn\";\n\nconst compact = (value: string): string =>\n clean(value, \" .-\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"BIS must be exactly 11 digits\",\n );\n }\n if (!isdigits(v) || Number(v) === 0) {\n return err(\n \"INVALID_FORMAT\",\n \"BIS must contain only digits\",\n );\n }\n\n if (checksum(v) === null) {\n return err(\n \"INVALID_CHECKSUM\",\n \"BIS check digits do not match\",\n );\n }\n\n // Month must be in 20..32 or 40..52\n const rawMonth = Number(v.slice(2, 4));\n const inRange20 = rawMonth >= 20 && rawMonth <= 32;\n const inRange40 = rawMonth >= 40 && rawMonth <= 52;\n if (!inRange20 && !inRange40) {\n return err(\n \"INVALID_COMPONENT\",\n \"Month must be in 20..32 or 40..52\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n nnFormat(compact(value));\n\n/** Generate a random valid BIS number. */\nconst generate = (): string => {\n for (;;) {\n const yy = String(randomInt(0, 99)).padStart(2, \"0\");\n const offset = Math.random() < 0.5 ? 20 : 40;\n const mm = String(randomInt(1, 12) + offset).padStart(\n 2,\n \"0\",\n );\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const serial = String(randomInt(1, 997)).padStart(\n 3,\n \"0\",\n );\n const base = yy + mm + dd + serial;\n const n2 = Number(\"2\" + base);\n const check2 = 97 - (n2 % 97);\n const c = base + String(check2).padStart(2, \"0\");\n if (validate(c).valid) return c;\n }\n};\n\n/** Belgian BIS Number. */\nconst bis: Validator = {\n name: \"Belgian BIS Number\",\n localName: \"BIS-nummer\",\n abbreviation: \"BIS\",\n aliases: [\"BIS-nummer\", \"numéro BIS\"] as const,\n candidatePattern:\n \"\\\\d{2}\\\\.?\\\\d{2}\\\\.?\\\\d{2}-?\\\\d{3}\\\\.?\\\\d{2}\",\n country: \"BE\",\n entityType: \"person\",\n sourceUrl:\n \"https://sma-help.bosa.belgium.be/en/faq/where-can-i-find-my-bis-number\",\n examples: [\"98472899765\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default bis;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,MAAM,WAAW,UACf,MAAM,OAAO,MAAM;AAErB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,gCACD;AAEH,KAAI,CAAC,SAAS,EAAE,IAAI,OAAO,EAAE,KAAK,EAChC,QAAO,IACL,kBACA,+BACD;AAGH,KAAI,SAAS,EAAE,KAAK,KAClB,QAAO,IACL,oBACA,gCACD;CAIH,MAAM,WAAW,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAGtC,KAAI,EAFc,YAAY,MAAM,YAAY,OAE9B,EADA,YAAY,MAAM,YAAY,IAE9C,QAAO,IACL,qBACA,oCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UACdA,SAAS,QAAQ,MAAM,CAAC;;AAG1B,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,SAAS,KAAK,QAAQ,GAAG,KAAM,KAAK;EAC1C,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC,SAC3C,GACA,IACD;EACD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,SAAS,OAAO,UAAU,GAAG,IAAI,CAAC,CAAC,SACvC,GACA,IACD;EACD,MAAM,OAAO,KAAK,KAAK,KAAK;EAE5B,MAAM,SAAS,KADJ,OAAO,MAAM,KAAK,GACH;EAC1B,MAAM,IAAI,OAAO,OAAO,OAAO,CAAC,SAAS,GAAG,IAAI;AAChD,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,cAAc,aAAa;CACrC,kBACE;CACF,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,cAAc;CACzB;CACA;CACA;CACA;CACD"}
|
package/dist/be/mod.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import bis from "./bis.js";
|
|
3
|
+
import nn from "./nn.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
|
|
6
|
+
//#region src/be/mod.d.ts
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { bis, mod_d_exports, nn, vat };
|
|
10
|
+
//# sourceMappingURL=mod.d.ts.map
|
package/dist/be/mod.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import nn from "./nn.js";
|
|
3
|
+
import bis from "./bis.js";
|
|
4
|
+
import vat from "./vat.js";
|
|
5
|
+
//#region src/be/mod.ts
|
|
6
|
+
var be_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
bis: () => bis,
|
|
8
|
+
nn: () => nn,
|
|
9
|
+
vat: () => vat
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { be_exports, bis, nn, vat };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/be/mod.ts"],"sourcesContent":["export { default as bis } from \"./bis\";\nexport { default as nn } from \"./nn\";\nexport { default as vat } from \"./vat\";\n"],"mappings":""}
|
package/dist/be/nn.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/be/nn.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Verify the mod-97 checksum and return the detected
|
|
8
|
+
* century (1900 or 2000). Returns null on mismatch.
|
|
9
|
+
* Matches python-stdnum's _checksum logic: the 2000s
|
|
10
|
+
* century is only attempted when YY+2000 <= current year.
|
|
11
|
+
*/
|
|
12
|
+
declare const checksum: (v: string) => number | null;
|
|
13
|
+
declare const validate: (value: string) => ValidateResult;
|
|
14
|
+
declare const format: (value: string) => string;
|
|
15
|
+
/** Generate a random valid Belgian NN. */
|
|
16
|
+
declare const generate: () => string;
|
|
17
|
+
/** Belgian National Number. */
|
|
18
|
+
declare const nn: Validator;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { checksum, compact, nn as default, format, generate, validate };
|
|
21
|
+
//# sourceMappingURL=nn.d.ts.map
|
package/dist/be/nn.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
//#region src/be/nn.ts
|
|
6
|
+
/**
|
|
7
|
+
* NN (Numéro national / Rijksregisternummer).
|
|
8
|
+
*
|
|
9
|
+
* Belgian national identification number. 11 digits
|
|
10
|
+
* encoding date of birth, serial number, and a
|
|
11
|
+
* check digit pair. The first 6 digits are YYMMDD,
|
|
12
|
+
* followed by a 3-digit serial and 2 check digits.
|
|
13
|
+
*
|
|
14
|
+
* @see https://fr.wikipedia.org/wiki/Numéro_de_registre_national
|
|
15
|
+
* @see https://www.ibz.rrn.fgov.be/
|
|
16
|
+
*/
|
|
17
|
+
const compact = (value) => clean(value, " .-");
|
|
18
|
+
/**
|
|
19
|
+
* Verify the mod-97 checksum and return the detected
|
|
20
|
+
* century (1900 or 2000). Returns null on mismatch.
|
|
21
|
+
* Matches python-stdnum's _checksum logic: the 2000s
|
|
22
|
+
* century is only attempted when YY+2000 <= current year.
|
|
23
|
+
*/
|
|
24
|
+
const checksum = (v) => {
|
|
25
|
+
const first9 = Number(v.slice(0, 9));
|
|
26
|
+
const check = Number(v.slice(9, 11));
|
|
27
|
+
if (97 - first9 % 97 === check) return 1900;
|
|
28
|
+
if (Number(v.slice(0, 2)) + 2e3 <= (/* @__PURE__ */ new Date()).getFullYear()) {
|
|
29
|
+
if (97 - Number(`2${v.slice(0, 9)}`) % 97 === check) return 2e3;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
};
|
|
33
|
+
const validate = (value) => {
|
|
34
|
+
const v = compact(value);
|
|
35
|
+
if (v.length !== 11) return err("INVALID_LENGTH", "NN must be exactly 11 digits");
|
|
36
|
+
if (!isdigits(v) || Number(v) === 0) return err("INVALID_FORMAT", "NN must contain only digits");
|
|
37
|
+
if (checksum(v) === null) return err("INVALID_CHECKSUM", "NN check digits do not match");
|
|
38
|
+
if (Number(v.slice(2, 4)) > 12) return err("INVALID_COMPONENT", "Month must be in 0..12");
|
|
39
|
+
return {
|
|
40
|
+
valid: true,
|
|
41
|
+
compact: v
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
const format = (value) => {
|
|
45
|
+
const v = compact(value);
|
|
46
|
+
return `${v.slice(0, 2)}.${v.slice(2, 4)}.${v.slice(4, 6)}-${v.slice(6, 9)}.${v.slice(9)}`;
|
|
47
|
+
};
|
|
48
|
+
/** Generate a random valid Belgian NN. */
|
|
49
|
+
const generate = () => {
|
|
50
|
+
for (;;) {
|
|
51
|
+
const yy = String(randomInt(0, 99)).padStart(2, "0");
|
|
52
|
+
const mm = String(randomInt(1, 12)).padStart(2, "0");
|
|
53
|
+
const dd = String(randomInt(1, 28)).padStart(2, "0");
|
|
54
|
+
const serial = String(randomInt(1, 997)).padStart(3, "0");
|
|
55
|
+
const base = yy + mm + dd + serial;
|
|
56
|
+
const check1 = 97 - Number(base) % 97;
|
|
57
|
+
const c = base + String(check1).padStart(2, "0");
|
|
58
|
+
if (validate(c).valid) return c;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
/** Belgian National Number. */
|
|
62
|
+
const nn = {
|
|
63
|
+
name: "Belgian National Number",
|
|
64
|
+
localName: "Numéro national",
|
|
65
|
+
abbreviation: "NN",
|
|
66
|
+
aliases: [
|
|
67
|
+
"rijksregisternummer",
|
|
68
|
+
"numéro national",
|
|
69
|
+
"NN"
|
|
70
|
+
],
|
|
71
|
+
candidatePattern: "\\d{2}\\.?\\d{2}\\.?\\d{2}-?\\d{3}\\.?\\d{2}",
|
|
72
|
+
country: "BE",
|
|
73
|
+
entityType: "person",
|
|
74
|
+
sourceUrl: "https://www.ibz.rrn.fgov.be/",
|
|
75
|
+
examples: ["93051822361"],
|
|
76
|
+
compact,
|
|
77
|
+
format,
|
|
78
|
+
validate,
|
|
79
|
+
generate
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
export { checksum, compact, nn as default, format, generate, validate };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=nn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nn.js","names":[],"sources":["../../src/be/nn.ts"],"sourcesContent":["/**\n * NN (Numéro national / Rijksregisternummer).\n *\n * Belgian national identification number. 11 digits\n * encoding date of birth, serial number, and a\n * check digit pair. The first 6 digits are YYMMDD,\n * followed by a 3-digit serial and 2 check digits.\n *\n * @see https://fr.wikipedia.org/wiki/Numéro_de_registre_national\n * @see https://www.ibz.rrn.fgov.be/\n */\n\nimport { clean } from \"#util/clean\";\nimport { 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 * Verify the mod-97 checksum and return the detected\n * century (1900 or 2000). Returns null on mismatch.\n * Matches python-stdnum's _checksum logic: the 2000s\n * century is only attempted when YY+2000 <= current year.\n */\nconst checksum = (v: string): number | null => {\n const first9 = Number(v.slice(0, 9));\n const check = Number(v.slice(9, 11));\n\n if (97 - (first9 % 97) === check) return 1900;\n\n const yy = Number(v.slice(0, 2));\n if (yy + 2000 <= new Date().getFullYear()) {\n const with2 = Number(`2${v.slice(0, 9)}`);\n if (97 - (with2 % 97) === check) return 2000;\n }\n\n return null;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"NN must be exactly 11 digits\",\n );\n }\n if (!isdigits(v) || Number(v) === 0) {\n return err(\n \"INVALID_FORMAT\",\n \"NN must contain only digits\",\n );\n }\n\n if (checksum(v) === null) {\n return err(\n \"INVALID_CHECKSUM\",\n \"NN check digits do not match\",\n );\n }\n\n // Raw month digits must be 0..12 (values 13+ are\n // invalid; counter-exhaustion uses 00, not 20+).\n const rawMonth = Number(v.slice(2, 4));\n if (rawMonth > 12) {\n return err(\n \"INVALID_COMPONENT\",\n \"Month must be in 0..12\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v.slice(0, 2)}.${v.slice(2, 4)}.${v.slice(4, 6)}-${v.slice(6, 9)}.${v.slice(9)}`;\n};\n\n/** Generate a random valid Belgian NN. */\nconst generate = (): string => {\n for (;;) {\n const yy = String(randomInt(0, 99)).padStart(2, \"0\");\n const mm = String(randomInt(1, 12)).padStart(2, \"0\");\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const serial = String(randomInt(1, 997)).padStart(\n 3,\n \"0\",\n );\n const base = yy + mm + dd + serial;\n const n1 = Number(base);\n const check1 = 97 - (n1 % 97);\n const c = base + String(check1).padStart(2, \"0\");\n if (validate(c).valid) return c;\n }\n};\n\n/** Belgian National Number. */\nconst nn: Validator = {\n name: \"Belgian National Number\",\n localName: \"Numéro national\",\n abbreviation: \"NN\",\n aliases: [\n \"rijksregisternummer\",\n \"numéro national\",\n \"NN\",\n ] as const,\n candidatePattern:\n \"\\\\d{2}\\\\.?\\\\d{2}\\\\.?\\\\d{2}-?\\\\d{3}\\\\.?\\\\d{2}\",\n country: \"BE\",\n entityType: \"person\",\n sourceUrl: \"https://www.ibz.rrn.fgov.be/\",\n examples: [\"93051822361\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default nn;\nexport { checksum, compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,WAAW,UACf,MAAM,OAAO,MAAM;;;;;;;AAQrB,MAAM,YAAY,MAA6B;CAC7C,MAAM,SAAS,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CACpC,MAAM,QAAQ,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;AAEpC,KAAI,KAAM,SAAS,OAAQ,MAAO,QAAO;AAGzC,KADW,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,GACvB,wBAAQ,IAAI,MAAM,EAAC,aAAa;MAEnC,KADU,OAAO,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,GACvB,OAAQ,MAAO,QAAO;;AAG1C,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,+BACD;AAEH,KAAI,CAAC,SAAS,EAAE,IAAI,OAAO,EAAE,KAAK,EAChC,QAAO,IACL,kBACA,8BACD;AAGH,KAAI,SAAS,EAAE,KAAK,KAClB,QAAO,IACL,oBACA,+BACD;AAMH,KADiB,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,GACvB,GACb,QAAO,IACL,qBACA,yBACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;AAI1F,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,SAAS,OAAO,UAAU,GAAG,IAAI,CAAC,CAAC,SACvC,GACA,IACD;EACD,MAAM,OAAO,KAAK,KAAK,KAAK;EAE5B,MAAM,SAAS,KADJ,OAAO,KAAK,GACG;EAC1B,MAAM,IAAI,OAAO,OAAO,OAAO,CAAC,SAAS,GAAG,IAAI;AAChD,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,KAAgB;CACpB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACD;CACD,kBACE;CACF,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,cAAc;CACzB;CACA;CACA;CACA;CACD"}
|
package/dist/be/vat.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/be/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 Belgian VAT number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Belgian VAT Number. */
|
|
11
|
+
declare const vat: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, vat as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=vat.d.ts.map
|
package/dist/be/vat.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
//#region src/be/vat.ts
|
|
6
|
+
/**
|
|
7
|
+
* BTW/TVA/MWSt (Belgian VAT number).
|
|
8
|
+
*
|
|
9
|
+
* 10 digits, first must be 0 or 1.
|
|
10
|
+
* Checksum: (first 8 digits + last 2) % 97 === 0.
|
|
11
|
+
*
|
|
12
|
+
* @see https://www.vatify.eu/belgium-vat-number.html
|
|
13
|
+
* @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/belgium-tin.pdf
|
|
14
|
+
*/
|
|
15
|
+
const compact = (value) => {
|
|
16
|
+
let v = clean(value, " -/.");
|
|
17
|
+
if (v.startsWith("BE") || v.startsWith("be")) v = v.slice(2);
|
|
18
|
+
if (v.length === 9) v = `0${v}`;
|
|
19
|
+
return v;
|
|
20
|
+
};
|
|
21
|
+
const validate = (value) => {
|
|
22
|
+
const v = compact(value);
|
|
23
|
+
if (v.length !== 10) return err("INVALID_LENGTH", "Belgian VAT number must be 10 digits");
|
|
24
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Belgian VAT number must contain only digits");
|
|
25
|
+
if (Number(v) === 0) return err("INVALID_FORMAT", "Belgian VAT number cannot be all zeros");
|
|
26
|
+
if (v[0] !== "0" && v[0] !== "1") return err("INVALID_COMPONENT", "Belgian VAT number must start with 0 or 1");
|
|
27
|
+
if ((Number.parseInt(v.slice(0, 8), 10) + Number.parseInt(v.slice(8, 10), 10)) % 97 !== 0) return err("INVALID_CHECKSUM", "Belgian VAT number check digit mismatch");
|
|
28
|
+
return {
|
|
29
|
+
valid: true,
|
|
30
|
+
compact: v
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const format = (value) => {
|
|
34
|
+
return `BE${compact(value)}`;
|
|
35
|
+
};
|
|
36
|
+
/** Generate a random valid Belgian VAT number. */
|
|
37
|
+
const generate = () => {
|
|
38
|
+
for (;;) {
|
|
39
|
+
const front = (Math.random() < .5 ? "0" : "1") + randomDigits(7);
|
|
40
|
+
const rem = Number.parseInt(front, 10) % 97;
|
|
41
|
+
const check = rem === 0 ? 97 : 97 - rem;
|
|
42
|
+
const c = front + String(check).padStart(2, "0");
|
|
43
|
+
if (validate(c).valid) return c;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
/** Belgian VAT Number. */
|
|
47
|
+
const vat = {
|
|
48
|
+
name: "Belgian VAT Number",
|
|
49
|
+
localName: "BTW-identificatienummer",
|
|
50
|
+
abbreviation: "BTW",
|
|
51
|
+
aliases: [
|
|
52
|
+
"BTW",
|
|
53
|
+
"TVA",
|
|
54
|
+
"numéro d'entreprise",
|
|
55
|
+
"ondernemingsnummer"
|
|
56
|
+
],
|
|
57
|
+
candidatePattern: "BE0?\\d{9,10}",
|
|
58
|
+
country: "BE",
|
|
59
|
+
entityType: "company",
|
|
60
|
+
sourceUrl: "https://finances.belgium.be/",
|
|
61
|
+
examples: ["0776091951"],
|
|
62
|
+
compact,
|
|
63
|
+
format,
|
|
64
|
+
validate,
|
|
65
|
+
generate
|
|
66
|
+
};
|
|
67
|
+
//#endregion
|
|
68
|
+
export { compact, vat as default, format, generate, validate };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=vat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/be/vat.ts"],"sourcesContent":["/**\n * BTW/TVA/MWSt (Belgian VAT number).\n *\n * 10 digits, first must be 0 or 1.\n * Checksum: (first 8 digits + last 2) % 97 === 0.\n *\n * @see https://www.vatify.eu/belgium-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/belgium-tin.pdf\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"BE\") || v.startsWith(\"be\")) {\n v = v.slice(2);\n }\n // Old 9-digit format: zero-pad to 10\n if (v.length === 9) {\n v = `0${v}`;\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"Belgian VAT number must be 10 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Belgian VAT number must contain only digits\",\n );\n }\n if (Number(v) === 0) {\n return err(\n \"INVALID_FORMAT\",\n \"Belgian VAT number cannot be all zeros\",\n );\n }\n if (v[0] !== \"0\" && v[0] !== \"1\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Belgian VAT number must start with 0 or 1\",\n );\n }\n const front = Number.parseInt(v.slice(0, 8), 10);\n const check = Number.parseInt(v.slice(8, 10), 10);\n if ((front + check) % 97 !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Belgian VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `BE${v}`;\n};\n\n/** Generate a random valid Belgian VAT number. */\nconst generate = (): string => {\n for (;;) {\n const prefix = Math.random() < 0.5 ? \"0\" : \"1\";\n const front = prefix + randomDigits(7);\n const rem = Number.parseInt(front, 10) % 97;\n const check = rem === 0 ? 97 : 97 - rem;\n const c = front + String(check).padStart(2, \"0\");\n if (validate(c).valid) return c;\n }\n};\n\n/** Belgian VAT Number. */\nconst vat: Validator = {\n name: \"Belgian VAT Number\",\n localName: \"BTW-identificatienummer\",\n abbreviation: \"BTW\",\n aliases: [\n \"BTW\",\n \"TVA\",\n \"numéro d'entreprise\",\n \"ondernemingsnummer\",\n ] as const,\n candidatePattern: \"BE0?\\\\d{9,10}\",\n country: \"BE\",\n entityType: \"company\",\n sourceUrl: \"https://finances.belgium.be/\",\n examples: [\"0776091951\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,OAAO;AAC5B,KAAI,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,CAC1C,KAAI,EAAE,MAAM,EAAE;AAGhB,KAAI,EAAE,WAAW,EACf,KAAI,IAAI;AAEV,QAAO;;AAGT,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,OAAO,EAAE,KAAK,EAChB,QAAO,IACL,kBACA,yCACD;AAEH,KAAI,EAAE,OAAO,OAAO,EAAE,OAAO,IAC3B,QAAO,IACL,qBACA,4CACD;AAIH,MAFc,OAAO,SAAS,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAClC,OAAO,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAC3B,OAAO,EAC3B,QAAO,IACL,oBACA,0CACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;AAExC,QAAO,KADG,QAAQ,MAAM;;;AAK1B,MAAM,iBAAyB;AAC7B,UAAS;EAEP,MAAM,SADS,KAAK,QAAQ,GAAG,KAAM,MAAM,OACpB,aAAa,EAAE;EACtC,MAAM,MAAM,OAAO,SAAS,OAAO,GAAG,GAAG;EACzC,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;EACpC,MAAM,IAAI,QAAQ,OAAO,MAAM,CAAC,SAAS,GAAG,IAAI;AAChD,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACA;EACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa;CACxB;CACA;CACA;CACA;CACD"}
|