@stll/stdnum 0.0.1 → 2.0.0
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 +1 -5
- package/README.md +28 -4
- package/dist/_checksums/luhn.js.map +1 -1
- package/dist/_checksums/mod1110.js +1 -1
- package/dist/_checksums/mod1110.js.map +1 -1
- package/dist/_checksums/mod112.js +5 -5
- package/dist/_checksums/mod112.js.map +1 -1
- package/dist/_checksums/mod97.js.map +1 -1
- package/dist/_checksums/verhoeff.js.map +1 -1
- package/dist/_checksums/weighted-sum.js.map +1 -1
- package/dist/_util/arabic.js.map +1 -1
- package/dist/_util/clean.js.map +1 -1
- package/dist/_util/date.js.map +1 -1
- package/dist/_util/generate.d.ts +13 -1
- package/dist/_util/generate.js +23 -1
- package/dist/_util/generate.js.map +1 -1
- package/dist/_util/result.js.map +1 -1
- package/dist/_util/strings.js.map +1 -1
- package/dist/ad/mod.d.ts +3 -2
- package/dist/ad/nrt.d.ts +16 -2
- package/dist/ad/nrt.js +4 -16
- package/dist/ad/nrt.js.map +1 -1
- package/dist/ae/eid.d.ts +2 -3
- package/dist/ae/eid.js +2 -12
- package/dist/ae/eid.js.map +1 -1
- package/dist/ae/mod.d.ts +3 -2
- package/dist/ai/mod.d.ts +3 -2
- package/dist/ai/tin.d.ts +20 -2
- package/dist/ai/tin.js +1 -18
- package/dist/ai/tin.js.map +1 -1
- package/dist/al/mod.d.ts +3 -2
- package/dist/al/nipt.d.ts +13 -2
- package/dist/al/nipt.js +1 -11
- package/dist/al/nipt.js.map +1 -1
- package/dist/am/mod.d.ts +3 -2
- package/dist/am/tin.d.ts +16 -2
- package/dist/am/tin.js +1 -14
- package/dist/am/tin.js.map +1 -1
- package/dist/ar/cbu.d.ts +2 -3
- package/dist/ar/cbu.js +2 -10
- package/dist/ar/cbu.js.map +1 -1
- package/dist/ar/cuit.d.ts +2 -3
- package/dist/ar/cuit.js +13 -29
- package/dist/ar/cuit.js.map +1 -1
- package/dist/ar/dni.d.ts +11 -2
- package/dist/ar/dni.js +1 -9
- package/dist/ar/dni.js.map +1 -1
- package/dist/ar/mod.d.ts +3 -2
- package/dist/at/businessid.d.ts +10 -2
- package/dist/at/businessid.js +1 -8
- package/dist/at/businessid.js.map +1 -1
- package/dist/at/mod.d.ts +3 -2
- package/dist/at/tin.d.ts +2 -3
- package/dist/at/tin.js +1 -11
- package/dist/at/tin.js.map +1 -1
- package/dist/at/uid.d.ts +2 -3
- package/dist/at/uid.js +2 -10
- package/dist/at/uid.js.map +1 -1
- package/dist/at/vnr.d.ts +5 -4
- package/dist/at/vnr.js +23 -16
- package/dist/at/vnr.js.map +1 -1
- package/dist/au/abn.d.ts +2 -3
- package/dist/au/abn.js +1 -10
- package/dist/au/abn.js.map +1 -1
- package/dist/au/acn.d.ts +2 -3
- package/dist/au/acn.js +1 -10
- package/dist/au/acn.js.map +1 -1
- package/dist/au/mod.d.ts +3 -2
- package/dist/au/tfn.d.ts +2 -3
- package/dist/au/tfn.js +1 -10
- package/dist/au/tfn.js.map +1 -1
- package/dist/az/mod.d.ts +3 -2
- package/dist/az/voen.d.ts +2 -3
- package/dist/az/voen.js +1 -14
- package/dist/az/voen.js.map +1 -1
- package/dist/ba/jmbg.d.ts +2 -3
- package/dist/ba/jmbg.js +4 -11
- package/dist/ba/jmbg.js.map +1 -1
- package/dist/ba/mod.d.ts +3 -2
- package/dist/bd/mod.d.ts +3 -2
- package/dist/bd/nid.d.ts +23 -2
- package/dist/bd/nid.js +11 -32
- package/dist/bd/nid.js.map +1 -1
- package/dist/be/bis.d.ts +2 -3
- package/dist/be/bis.js +1 -11
- package/dist/be/bis.js.map +1 -1
- package/dist/be/mod.d.ts +3 -2
- package/dist/be/nn.d.ts +2 -3
- package/dist/be/nn.js +1 -11
- package/dist/be/nn.js.map +1 -1
- package/dist/be/vat.d.ts +2 -3
- package/dist/be/vat.js +1 -9
- package/dist/be/vat.js.map +1 -1
- package/dist/bg/egn.d.ts +2 -3
- package/dist/bg/egn.js +5 -13
- package/dist/bg/egn.js.map +1 -1
- package/dist/bg/mod.d.ts +3 -2
- package/dist/bg/pnf.d.ts +2 -3
- package/dist/bg/pnf.js +1 -8
- package/dist/bg/pnf.js.map +1 -1
- package/dist/bg/vat.d.ts +2 -3
- package/dist/bg/vat.js +3 -9
- package/dist/bg/vat.js.map +1 -1
- package/dist/bh/cpr.d.ts +5 -4
- package/dist/bh/cpr.js +9 -19
- package/dist/bh/cpr.js.map +1 -1
- package/dist/bh/mod.d.ts +3 -2
- package/dist/bic.d.ts +13 -2
- package/dist/bic.js +14 -26
- package/dist/bic.js.map +1 -1
- package/dist/br/cnpj.d.ts +2 -3
- package/dist/br/cnpj.js +1 -20
- package/dist/br/cnpj.js.map +1 -1
- package/dist/br/cpf.d.ts +2 -3
- package/dist/br/cpf.js +1 -14
- package/dist/br/cpf.js.map +1 -1
- package/dist/br/mod.d.ts +3 -2
- package/dist/by/mod.d.ts +3 -2
- package/dist/by/unp.d.ts +2 -3
- package/dist/by/unp.js +9 -17
- package/dist/by/unp.js.map +1 -1
- package/dist/bz/mod.d.ts +3 -2
- package/dist/bz/tin.d.ts +5 -4
- package/dist/bz/tin.js +10 -27
- package/dist/bz/tin.js.map +1 -1
- package/dist/ca/bn.d.ts +2 -3
- package/dist/ca/bn.js +2 -10
- package/dist/ca/bn.js.map +1 -1
- package/dist/ca/mod.d.ts +3 -2
- package/dist/ca/sin.d.ts +2 -3
- package/dist/ca/sin.js +2 -10
- package/dist/ca/sin.js.map +1 -1
- package/dist/ch/mod.d.ts +3 -2
- package/dist/ch/ssn.d.ts +2 -3
- package/dist/ch/ssn.js +1 -9
- package/dist/ch/ssn.js.map +1 -1
- package/dist/ch/uid.d.ts +2 -3
- package/dist/ch/uid.js +1 -9
- package/dist/ch/uid.js.map +1 -1
- package/dist/ch/vat.d.ts +2 -3
- package/dist/ch/vat.js +1 -9
- package/dist/ch/vat.js.map +1 -1
- package/dist/cl/mod.d.ts +3 -2
- package/dist/cl/rut.d.ts +2 -3
- package/dist/cl/rut.js +2 -15
- package/dist/cl/rut.js.map +1 -1
- package/dist/cn/mod.d.ts +3 -2
- package/dist/cn/ric.d.ts +2 -3
- package/dist/cn/ric.js +4 -14
- package/dist/cn/ric.js.map +1 -1
- package/dist/cn/uscc.d.ts +2 -3
- package/dist/cn/uscc.js +8 -16
- package/dist/cn/uscc.js.map +1 -1
- package/dist/co/mod.d.ts +3 -2
- package/dist/co/nit.d.ts +2 -3
- package/dist/co/nit.js +6 -13
- package/dist/co/nit.js.map +1 -1
- package/dist/cr/cpf.d.ts +18 -2
- package/dist/cr/cpf.js +5 -19
- package/dist/cr/cpf.js.map +1 -1
- package/dist/cr/mod.d.ts +3 -2
- package/dist/creditcard.d.ts +2 -3
- package/dist/creditcard.js +5 -14
- package/dist/creditcard.js.map +1 -1
- package/dist/cu/mod.d.ts +3 -2
- package/dist/cu/ni.d.ts +5 -4
- package/dist/cu/ni.js +13 -18
- package/dist/cu/ni.js.map +1 -1
- package/dist/cy/mod.d.ts +3 -2
- package/dist/cy/vat.d.ts +2 -3
- package/dist/cy/vat.js +1 -8
- package/dist/cy/vat.js.map +1 -1
- package/dist/cz/dic.d.ts +2 -3
- package/dist/cz/dic.js +7 -13
- package/dist/cz/dic.js.map +1 -1
- package/dist/cz/ico.d.ts +2 -3
- package/dist/cz/ico.js +2 -10
- package/dist/cz/ico.js.map +1 -1
- package/dist/cz/mod.d.ts +3 -2
- package/dist/cz/rc.d.ts +2 -3
- package/dist/cz/rc.js +22 -21
- package/dist/cz/rc.js.map +1 -1
- package/dist/de/handelsreg.d.ts +19 -2
- package/dist/de/handelsreg.js +10 -26
- package/dist/de/handelsreg.js.map +1 -1
- package/dist/de/idnr.d.ts +2 -3
- package/dist/de/idnr.js +2 -12
- package/dist/de/idnr.js.map +1 -1
- package/dist/de/mod.d.ts +3 -2
- package/dist/de/stnr.d.ts +17 -3
- package/dist/de/stnr.js +1 -15
- package/dist/de/stnr.js.map +1 -1
- package/dist/de/svnr.d.ts +2 -3
- package/dist/de/svnr.js +4 -13
- package/dist/de/svnr.js.map +1 -1
- package/dist/de/vat.d.ts +2 -3
- package/dist/de/vat.js +2 -11
- package/dist/de/vat.js.map +1 -1
- package/dist/dk/cpr.d.ts +5 -4
- package/dist/dk/cpr.js +14 -12
- package/dist/dk/cpr.js.map +1 -1
- package/dist/dk/cvr.d.ts +2 -3
- package/dist/dk/cvr.js +2 -15
- package/dist/dk/cvr.js.map +1 -1
- package/dist/dk/mod.d.ts +3 -2
- package/dist/dk/vat.d.ts +2 -3
- package/dist/dk/vat.js +3 -13
- package/dist/dk/vat.js.map +1 -1
- package/dist/do/mod.d.ts +3 -2
- package/dist/do/rnc.d.ts +2 -3
- package/dist/do/rnc.js +3 -17
- package/dist/do/rnc.js.map +1 -1
- package/dist/ec/mod.d.ts +3 -2
- package/dist/ec/ruc.d.ts +2 -3
- package/dist/ec/ruc.js +2 -19
- package/dist/ec/ruc.js.map +1 -1
- package/dist/ee/ik.d.ts +2 -3
- package/dist/ee/ik.js +6 -15
- package/dist/ee/ik.js.map +1 -1
- package/dist/ee/mod.d.ts +3 -2
- package/dist/ee/registrikood.d.ts +2 -3
- package/dist/ee/registrikood.js +9 -15
- package/dist/ee/registrikood.js.map +1 -1
- package/dist/ee/vat.d.ts +2 -3
- package/dist/ee/vat.js +2 -10
- package/dist/ee/vat.js.map +1 -1
- package/dist/eg/mod.d.ts +3 -2
- package/dist/eg/tn.d.ts +11 -2
- package/dist/eg/tn.js +1 -9
- package/dist/eg/tn.js.map +1 -1
- package/dist/es/cif.d.ts +2 -3
- package/dist/es/cif.js +3 -12
- package/dist/es/cif.js.map +1 -1
- package/dist/es/dni.d.ts +2 -3
- package/dist/es/dni.js +1 -9
- package/dist/es/dni.js.map +1 -1
- package/dist/es/mod.d.ts +3 -2
- package/dist/es/nie.d.ts +2 -3
- package/dist/es/nie.js +14 -22
- package/dist/es/nie.js.map +1 -1
- package/dist/es/nss.d.ts +2 -3
- package/dist/es/nss.js +1 -16
- package/dist/es/nss.js.map +1 -1
- package/dist/es/vat.d.ts +2 -3
- package/dist/es/vat.js +5 -10
- package/dist/es/vat.js.map +1 -1
- package/dist/eu/mod.d.ts +3 -2
- package/dist/eu/vat.d.ts +5 -4
- package/dist/eu/vat.js +44 -2
- package/dist/eu/vat.js.map +1 -1
- package/dist/fi/hetu.d.ts +5 -4
- package/dist/fi/hetu.js +19 -12
- package/dist/fi/hetu.js.map +1 -1
- package/dist/fi/mod.d.ts +3 -2
- package/dist/fi/vat.d.ts +2 -3
- package/dist/fi/vat.js +3 -10
- package/dist/fi/vat.js.map +1 -1
- package/dist/fi/ytunnus.d.ts +2 -3
- package/dist/fi/ytunnus.js +2 -10
- package/dist/fi/ytunnus.js.map +1 -1
- package/dist/fr/mod.d.ts +3 -2
- package/dist/fr/nif.d.ts +2 -3
- package/dist/fr/nif.js +1 -9
- package/dist/fr/nif.js.map +1 -1
- package/dist/fr/nir.d.ts +2 -3
- package/dist/fr/nir.js +3 -14
- package/dist/fr/nir.js.map +1 -1
- package/dist/fr/siren.d.ts +2 -3
- package/dist/fr/siren.js +2 -10
- package/dist/fr/siren.js.map +1 -1
- package/dist/fr/siret.d.ts +2 -3
- package/dist/fr/siret.js +2 -11
- package/dist/fr/siret.js.map +1 -1
- package/dist/fr/tva.d.ts +2 -3
- package/dist/fr/tva.js +2 -12
- package/dist/fr/tva.js.map +1 -1
- package/dist/gb/mod.d.ts +3 -2
- package/dist/gb/nino.d.ts +12 -2
- package/dist/gb/nino.js +8 -17
- package/dist/gb/nino.js.map +1 -1
- package/dist/gb/sedol.d.ts +2 -3
- package/dist/gb/sedol.js +9 -18
- package/dist/gb/sedol.js.map +1 -1
- package/dist/gb/utr.d.ts +2 -3
- package/dist/gb/utr.js +2 -10
- package/dist/gb/utr.js.map +1 -1
- package/dist/gb/vat.d.ts +2 -3
- package/dist/gb/vat.js +2 -11
- package/dist/gb/vat.js.map +1 -1
- package/dist/ge/mod.d.ts +3 -2
- package/dist/ge/pin.d.ts +14 -2
- package/dist/ge/pin.js +1 -12
- package/dist/ge/pin.js.map +1 -1
- package/dist/gh/mod.d.ts +3 -2
- package/dist/gh/tin.d.ts +2 -3
- package/dist/gh/tin.js +10 -24
- package/dist/gh/tin.js.map +1 -1
- package/dist/gr/amka.d.ts +2 -3
- package/dist/gr/amka.js +3 -11
- package/dist/gr/amka.js.map +1 -1
- package/dist/gr/mod.d.ts +3 -2
- package/dist/gr/vat.d.ts +2 -3
- package/dist/gr/vat.js +1 -10
- package/dist/gr/vat.js.map +1 -1
- package/dist/gt/mod.d.ts +3 -2
- package/dist/gt/nit.d.ts +2 -3
- package/dist/gt/nit.js +6 -14
- package/dist/gt/nit.js.map +1 -1
- package/dist/hk/hkid.d.ts +2 -3
- package/dist/hk/hkid.js +2 -10
- package/dist/hk/hkid.js.map +1 -1
- package/dist/hk/mod.d.ts +3 -2
- package/dist/hr/mod.d.ts +3 -2
- package/dist/hr/vat.d.ts +2 -3
- package/dist/hr/vat.js +2 -9
- package/dist/hr/vat.js.map +1 -1
- package/dist/hu/mod.d.ts +3 -2
- package/dist/hu/vat.d.ts +2 -3
- package/dist/hu/vat.js +3 -10
- package/dist/hu/vat.js.map +1 -1
- package/dist/iban.d.ts +2 -3
- package/dist/iban.js +2 -8
- package/dist/iban.js.map +1 -1
- package/dist/id/mod.d.ts +3 -2
- package/dist/id/npwp.d.ts +2 -3
- package/dist/id/npwp.js +3 -13
- package/dist/id/npwp.js.map +1 -1
- package/dist/ie/mod.d.ts +3 -2
- package/dist/ie/pps.d.ts +2 -3
- package/dist/ie/pps.js +1 -10
- package/dist/ie/pps.js.map +1 -1
- package/dist/ie/vat.d.ts +2 -3
- package/dist/ie/vat.js +1 -9
- package/dist/ie/vat.js.map +1 -1
- package/dist/il/idnr.d.ts +2 -3
- package/dist/il/idnr.js +2 -9
- package/dist/il/idnr.js.map +1 -1
- package/dist/il/mod.d.ts +3 -2
- package/dist/in/aadhaar.d.ts +2 -3
- package/dist/in/aadhaar.js +2 -12
- package/dist/in/aadhaar.js.map +1 -1
- package/dist/in/gstin.d.ts +2 -3
- package/dist/in/gstin.js +4 -11
- package/dist/in/gstin.js.map +1 -1
- package/dist/in/mod.d.ts +3 -2
- package/dist/in/pan.d.ts +15 -2
- package/dist/in/pan.js +3 -15
- package/dist/in/pan.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -6
- package/dist/iq/mod.d.ts +3 -2
- package/dist/iq/nid.d.ts +16 -2
- package/dist/iq/nid.js +2 -15
- package/dist/iq/nid.js.map +1 -1
- package/dist/ir/mod.d.ts +3 -2
- package/dist/ir/nid.d.ts +2 -3
- package/dist/ir/nid.js +2 -24
- package/dist/ir/nid.js.map +1 -1
- package/dist/is/kennitala.d.ts +2 -3
- package/dist/is/kennitala.js +2 -13
- package/dist/is/kennitala.js.map +1 -1
- package/dist/is/mod.d.ts +3 -2
- package/dist/is/vsk.d.ts +9 -2
- package/dist/is/vsk.js +1 -7
- package/dist/is/vsk.js.map +1 -1
- package/dist/isin.d.ts +2 -3
- package/dist/isin.js +11 -21
- package/dist/isin.js.map +1 -1
- package/dist/it/codicefiscale.d.ts +5 -4
- package/dist/it/codicefiscale.js +27 -23
- package/dist/it/codicefiscale.js.map +1 -1
- package/dist/it/iva.d.ts +2 -3
- package/dist/it/iva.js +2 -9
- package/dist/it/iva.js.map +1 -1
- package/dist/it/mod.d.ts +3 -2
- package/dist/jp/cn.d.ts +2 -3
- package/dist/jp/cn.js +1 -9
- package/dist/jp/cn.js.map +1 -1
- package/dist/jp/mod.d.ts +3 -2
- package/dist/jp/mynumber.d.ts +2 -3
- package/dist/jp/mynumber.js +1 -10
- package/dist/jp/mynumber.js.map +1 -1
- package/dist/kr/brn.d.ts +11 -2
- package/dist/kr/brn.js +1 -9
- package/dist/kr/brn.js.map +1 -1
- package/dist/kr/mod.d.ts +3 -2
- package/dist/kr/rrn.d.ts +5 -4
- package/dist/kr/rrn.js +15 -13
- package/dist/kr/rrn.js.map +1 -1
- package/dist/kw/civil.d.ts +6 -5
- package/dist/kw/civil.js +20 -17
- package/dist/kw/civil.js.map +1 -1
- package/dist/kw/mod.d.ts +3 -2
- package/dist/kz/iin.d.ts +2 -3
- package/dist/kz/iin.js +4 -18
- package/dist/kz/iin.js.map +1 -1
- package/dist/kz/mod.d.ts +3 -2
- package/dist/lei.d.ts +2 -3
- package/dist/lei.js +2 -11
- package/dist/lei.js.map +1 -1
- package/dist/li/mod.d.ts +3 -2
- package/dist/li/peid.d.ts +11 -2
- package/dist/li/peid.js +1 -9
- package/dist/li/peid.js.map +1 -1
- package/dist/lk/mod.d.ts +3 -2
- package/dist/lk/nic.d.ts +5 -4
- package/dist/lk/nic.js +16 -16
- package/dist/lk/nic.js.map +1 -1
- package/dist/lt/asmens.d.ts +2 -3
- package/dist/lt/asmens.js +2 -1
- package/dist/lt/asmens.js.map +1 -1
- package/dist/lt/mod.d.ts +3 -2
- package/dist/lt/vat.d.ts +2 -3
- package/dist/lt/vat.js +2 -10
- package/dist/lt/vat.js.map +1 -1
- package/dist/lu/mod.d.ts +3 -2
- package/dist/lu/vat.d.ts +2 -3
- package/dist/lu/vat.js +2 -8
- package/dist/lu/vat.js.map +1 -1
- package/dist/luhn.d.ts +2 -3
- package/dist/luhn.js +9 -9
- package/dist/luhn.js.map +1 -1
- package/dist/lv/mod.d.ts +3 -2
- package/dist/lv/vat.d.ts +2 -3
- package/dist/lv/vat.js +19 -18
- package/dist/lv/vat.js.map +1 -1
- package/dist/ma/ice.d.ts +2 -3
- package/dist/ma/ice.js +2 -11
- package/dist/ma/ice.js.map +1 -1
- package/dist/ma/mod.d.ts +3 -2
- package/dist/mc/mod.d.ts +3 -2
- package/dist/mc/tva.d.ts +2 -3
- package/dist/mc/tva.js +1 -0
- package/dist/mc/tva.js.map +1 -1
- package/dist/md/idno.d.ts +2 -3
- package/dist/md/idno.js +1 -10
- package/dist/md/idno.js.map +1 -1
- package/dist/md/mod.d.ts +3 -2
- package/dist/me/mod.d.ts +3 -2
- package/dist/me/pib.d.ts +2 -3
- package/dist/me/pib.js +2 -10
- package/dist/me/pib.js.map +1 -1
- package/dist/mk/edb.d.ts +2 -3
- package/dist/mk/edb.js +2 -11
- package/dist/mk/edb.js.map +1 -1
- package/dist/mk/mod.d.ts +3 -2
- package/dist/mt/mod.d.ts +3 -2
- package/dist/mt/vat.d.ts +2 -3
- package/dist/mt/vat.js +3 -10
- package/dist/mt/vat.js.map +1 -1
- package/dist/mu/brn.d.ts +23 -2
- package/dist/mu/brn.js +1 -21
- package/dist/mu/brn.js.map +1 -1
- package/dist/mu/mod.d.ts +3 -2
- package/dist/mx/clabe.d.ts +2 -3
- package/dist/mx/clabe.js +1 -14
- package/dist/mx/clabe.js.map +1 -1
- package/dist/mx/curp.d.ts +5 -4
- package/dist/mx/curp.js +27 -19
- package/dist/mx/curp.js.map +1 -1
- package/dist/mx/mod.d.ts +3 -2
- package/dist/mx/rfc.d.ts +5 -4
- package/dist/mx/rfc.js +23 -20
- package/dist/mx/rfc.js.map +1 -1
- package/dist/my/mod.d.ts +3 -2
- package/dist/my/nric.d.ts +5 -4
- package/dist/my/nric.js +18 -16
- package/dist/my/nric.js.map +1 -1
- package/dist/ng/mod.d.ts +3 -2
- package/dist/ng/nin.d.ts +13 -2
- package/dist/ng/nin.js +1 -11
- package/dist/ng/nin.js.map +1 -1
- package/dist/ni/mod.d.ts +3 -2
- package/dist/ni/ruc.d.ts +2 -3
- package/dist/ni/ruc.js +1 -23
- package/dist/ni/ruc.js.map +1 -1
- package/dist/nl/bsn.d.ts +2 -3
- package/dist/nl/bsn.js +2 -10
- package/dist/nl/bsn.js.map +1 -1
- package/dist/nl/kvk.d.ts +9 -2
- package/dist/nl/kvk.js +1 -7
- package/dist/nl/kvk.js.map +1 -1
- package/dist/nl/mod.d.ts +3 -2
- package/dist/nl/vat.d.ts +2 -3
- package/dist/nl/vat.js +4 -50
- package/dist/nl/vat.js.map +1 -1
- package/dist/no/fodselsnummer.d.ts +2 -3
- package/dist/no/fodselsnummer.js +3 -10
- package/dist/no/fodselsnummer.js.map +1 -1
- package/dist/no/mod.d.ts +3 -2
- package/dist/no/mva.d.ts +2 -3
- package/dist/no/mva.js +1 -8
- package/dist/no/mva.js.map +1 -1
- package/dist/no/orgnr.d.ts +2 -3
- package/dist/no/orgnr.js +2 -8
- package/dist/no/orgnr.js.map +1 -1
- package/dist/nz/ird.d.ts +2 -3
- package/dist/nz/ird.js +4 -13
- package/dist/nz/ird.js.map +1 -1
- package/dist/nz/mod.d.ts +3 -2
- package/dist/pa/mod.d.ts +3 -2
- package/dist/pa/ruc.d.ts +2 -3
- package/dist/pa/ruc.js +4 -19
- package/dist/pa/ruc.js.map +1 -1
- package/dist/patterns.d.ts +8 -10
- package/dist/patterns.js +83 -28
- package/dist/patterns.js.map +1 -1
- package/dist/pe/mod.d.ts +3 -2
- package/dist/pe/ruc.d.ts +2 -3
- package/dist/pe/ruc.js +10 -24
- package/dist/pe/ruc.js.map +1 -1
- package/dist/ph/mod.d.ts +3 -2
- package/dist/ph/philid.d.ts +14 -2
- package/dist/ph/philid.js +1 -12
- package/dist/ph/philid.js.map +1 -1
- package/dist/pk/cnic.d.ts +14 -2
- package/dist/pk/cnic.js +1 -12
- package/dist/pk/cnic.js.map +1 -1
- package/dist/pk/mod.d.ts +3 -2
- package/dist/pl/mod.d.ts +3 -2
- package/dist/pl/nip.d.ts +2 -3
- package/dist/pl/nip.js +2 -10
- package/dist/pl/nip.js.map +1 -1
- package/dist/pl/pesel.d.ts +2 -3
- package/dist/pl/pesel.js +4 -13
- package/dist/pl/pesel.js.map +1 -1
- package/dist/pl/regon.d.ts +2 -3
- package/dist/pl/regon.js +2 -11
- package/dist/pl/regon.js.map +1 -1
- package/dist/pt/cc.d.ts +2 -3
- package/dist/pt/cc.js +7 -13
- package/dist/pt/cc.js.map +1 -1
- package/dist/pt/mod.d.ts +3 -2
- package/dist/pt/vat.d.ts +2 -3
- package/dist/pt/vat.js +3 -11
- package/dist/pt/vat.js.map +1 -1
- package/dist/ro/cnp.d.ts +2 -3
- package/dist/ro/cnp.js +5 -14
- package/dist/ro/cnp.js.map +1 -1
- package/dist/ro/mod.d.ts +3 -2
- package/dist/ro/vat.d.ts +2 -3
- package/dist/ro/vat.js +13 -11
- package/dist/ro/vat.js.map +1 -1
- package/dist/rs/mod.d.ts +3 -2
- package/dist/rs/pib.d.ts +2 -3
- package/dist/rs/pib.js +1 -9
- package/dist/rs/pib.js.map +1 -1
- package/dist/ru/inn.d.ts +2 -3
- package/dist/ru/inn.js +2 -12
- package/dist/ru/inn.js.map +1 -1
- package/dist/ru/mod.d.ts +3 -2
- package/dist/se/mod.d.ts +3 -2
- package/dist/se/orgnr.d.ts +2 -3
- package/dist/se/orgnr.js +2 -9
- package/dist/se/orgnr.js.map +1 -1
- package/dist/se/personnummer.d.ts +2 -3
- package/dist/se/personnummer.js +8 -15
- package/dist/se/personnummer.js.map +1 -1
- package/dist/se/vat.d.ts +2 -3
- package/dist/se/vat.js +3 -10
- package/dist/se/vat.js.map +1 -1
- package/dist/sg/mod.d.ts +3 -2
- package/dist/sg/uen.d.ts +2 -3
- package/dist/sg/uen.js +47 -70
- package/dist/sg/uen.js.map +1 -1
- package/dist/si/emso.d.ts +2 -3
- package/dist/si/emso.js +12 -14
- package/dist/si/emso.js.map +1 -1
- package/dist/si/mod.d.ts +3 -2
- package/dist/si/vat.d.ts +2 -3
- package/dist/si/vat.js +3 -12
- package/dist/si/vat.js.map +1 -1
- package/dist/sk/dic.d.ts +2 -3
- package/dist/sk/dic.js +1 -0
- package/dist/sk/dic.js.map +1 -1
- package/dist/sk/ico.d.ts +2 -3
- package/dist/sk/ico.js +1 -0
- package/dist/sk/ico.js.map +1 -1
- package/dist/sk/mod.d.ts +3 -2
- package/dist/sk/rc.d.ts +4 -5
- package/dist/sk/rc.js +6 -2
- package/dist/sk/rc.js.map +1 -1
- package/dist/th/mod.d.ts +3 -2
- package/dist/th/tin.d.ts +2 -3
- package/dist/th/tin.js +1 -11
- package/dist/th/tin.js.map +1 -1
- package/dist/tr/mod.d.ts +3 -2
- package/dist/tr/tckimlik.d.ts +2 -3
- package/dist/tr/tckimlik.js +1 -20
- package/dist/tr/tckimlik.js.map +1 -1
- package/dist/tr/vkn.d.ts +2 -3
- package/dist/tr/vkn.js +1 -20
- package/dist/tr/vkn.js.map +1 -1
- package/dist/tw/mod.d.ts +3 -2
- package/dist/tw/ubn.d.ts +2 -3
- package/dist/tw/ubn.js +2 -12
- package/dist/tw/ubn.js.map +1 -1
- package/dist/types.d.ts +56 -21
- package/dist/ua/edrpou.d.ts +2 -3
- package/dist/ua/edrpou.js +5 -12
- package/dist/ua/edrpou.js.map +1 -1
- package/dist/ua/mod.d.ts +3 -2
- package/dist/us/ein.d.ts +12 -2
- package/dist/us/ein.js +88 -97
- package/dist/us/ein.js.map +1 -1
- package/dist/us/itin.d.ts +13 -2
- package/dist/us/itin.js +4 -15
- package/dist/us/itin.js.map +1 -1
- package/dist/us/mod.d.ts +3 -2
- package/dist/us/rtn.d.ts +2 -3
- package/dist/us/rtn.js +11 -23
- package/dist/us/rtn.js.map +1 -1
- package/dist/us/ssn.d.ts +13 -2
- package/dist/us/ssn.js +1 -11
- package/dist/us/ssn.js.map +1 -1
- package/dist/uy/mod.d.ts +3 -2
- package/dist/uy/rut.d.ts +2 -3
- package/dist/uy/rut.js +2 -15
- package/dist/uy/rut.js.map +1 -1
- package/dist/ve/mod.d.ts +3 -2
- package/dist/ve/rif.d.ts +2 -3
- package/dist/ve/rif.js +13 -26
- package/dist/ve/rif.js.map +1 -1
- package/dist/vn/mod.d.ts +3 -2
- package/dist/vn/mst.d.ts +2 -3
- package/dist/vn/mst.js +1 -12
- package/dist/vn/mst.js.map +1 -1
- package/dist/za/idnr.d.ts +2 -3
- package/dist/za/idnr.js +4 -16
- package/dist/za/idnr.js.map +1 -1
- package/dist/za/mod.d.ts +3 -2
- package/package.json +34 -21
- package/src/_checksums/mod1110.ts +1 -1
- package/src/_checksums/mod112.ts +7 -6
- package/src/_util/generate.ts +38 -0
- package/src/ad/nrt.ts +19 -7
- package/src/ae/eid.ts +7 -3
- package/src/ai/tin.ts +7 -3
- package/src/al/nipt.ts +7 -3
- package/src/am/tin.ts +7 -3
- package/src/ar/cbu.ts +9 -5
- package/src/ar/cuit.ts +22 -10
- package/src/ar/dni.ts +7 -3
- package/src/at/businessid.ts +7 -3
- package/src/at/tin.ts +7 -3
- package/src/at/uid.ts +7 -3
- package/src/at/vnr.ts +62 -12
- package/src/au/abn.ts +7 -3
- package/src/au/acn.ts +7 -3
- package/src/au/tfn.ts +7 -3
- package/src/az/voen.ts +9 -3
- package/src/ba/jmbg.ts +9 -7
- package/src/bd/nid.ts +11 -7
- package/src/be/bis.ts +8 -4
- package/src/be/nn.ts +7 -3
- package/src/be/vat.ts +7 -3
- package/src/bg/egn.ts +19 -10
- package/src/bg/pnf.ts +7 -3
- package/src/bg/vat.ts +8 -3
- package/src/bh/cpr.ts +17 -4
- package/src/bic.ts +26 -20
- package/src/br/cnpj.ts +7 -3
- package/src/br/cpf.ts +7 -3
- package/src/by/unp.ts +19 -9
- package/src/bz/tin.ts +19 -4
- package/src/ca/bn.ts +7 -3
- package/src/ca/sin.ts +7 -3
- package/src/ch/ssn.ts +7 -3
- package/src/ch/uid.ts +7 -3
- package/src/ch/vat.ts +9 -5
- package/src/cl/rut.ts +11 -5
- package/src/cn/ric.ts +11 -7
- package/src/cn/uscc.ts +27 -11
- package/src/co/nit.ts +14 -6
- package/src/cr/cpf.ts +11 -6
- package/src/creditcard.ts +10 -6
- package/src/cu/ni.ts +28 -7
- package/src/cy/vat.ts +7 -3
- package/src/cz/dic.ts +9 -4
- package/src/cz/ico.ts +7 -3
- package/src/cz/rc.ts +61 -29
- package/src/de/handelsreg.ts +21 -6
- package/src/de/idnr.ts +10 -3
- package/src/de/stnr.ts +11 -3
- package/src/de/svnr.ts +14 -5
- package/src/de/vat.ts +7 -3
- package/src/dk/cpr.ts +23 -8
- package/src/dk/cvr.ts +7 -3
- package/src/dk/vat.ts +8 -3
- package/src/do/rnc.ts +9 -5
- package/src/ec/ruc.ts +9 -5
- package/src/ee/ik.ts +21 -10
- package/src/ee/registrikood.ts +12 -7
- package/src/ee/vat.ts +7 -3
- package/src/eg/tn.ts +7 -3
- package/src/es/cif.ts +10 -7
- package/src/es/dni.ts +7 -3
- package/src/es/nie.ts +18 -9
- package/src/es/nss.ts +7 -3
- package/src/es/vat.ts +13 -5
- package/src/eu/vat.ts +55 -6
- package/src/fi/hetu.ts +26 -8
- package/src/fi/vat.ts +8 -3
- package/src/fi/ytunnus.ts +7 -3
- package/src/fr/nif.ts +7 -3
- package/src/fr/nir.ts +9 -7
- package/src/fr/siren.ts +7 -3
- package/src/fr/siret.ts +7 -3
- package/src/fr/tva.ts +7 -3
- package/src/gb/nino.ts +18 -13
- package/src/gb/sedol.ts +21 -15
- package/src/gb/utr.ts +7 -3
- package/src/gb/vat.ts +7 -3
- package/src/ge/pin.ts +7 -3
- package/src/gh/tin.ts +11 -6
- package/src/gr/amka.ts +7 -3
- package/src/gr/vat.ts +7 -3
- package/src/gt/nit.ts +13 -6
- package/src/hk/hkid.ts +9 -4
- package/src/hr/vat.ts +7 -3
- package/src/hu/vat.ts +8 -3
- package/src/iban.ts +7 -3
- package/src/id/npwp.ts +7 -3
- package/src/ie/pps.ts +7 -3
- package/src/ie/vat.ts +7 -3
- package/src/il/idnr.ts +7 -3
- package/src/in/aadhaar.ts +7 -3
- package/src/in/gstin.ts +10 -4
- package/src/in/pan.ts +15 -6
- package/src/index.ts +6 -0
- package/src/iq/nid.ts +7 -3
- package/src/ir/nid.ts +7 -3
- package/src/is/kennitala.ts +7 -3
- package/src/is/vsk.ts +7 -3
- package/src/isin.ts +17 -7
- package/src/it/codicefiscale.ts +49 -7
- package/src/it/iva.ts +7 -3
- package/src/jp/cn.ts +7 -3
- package/src/jp/mynumber.ts +7 -3
- package/src/kr/brn.ts +7 -3
- package/src/kr/rrn.ts +27 -8
- package/src/kw/civil.ts +31 -14
- package/src/kz/iin.ts +9 -8
- package/src/lei.ts +7 -3
- package/src/li/peid.ts +7 -3
- package/src/lk/nic.ts +31 -8
- package/src/lt/asmens.ts +8 -4
- package/src/lt/vat.ts +8 -3
- package/src/lu/vat.ts +8 -3
- package/src/luhn.ts +10 -3
- package/src/lv/vat.ts +53 -23
- package/src/ma/ice.ts +7 -3
- package/src/mc/tva.ts +9 -5
- package/src/md/idno.ts +7 -3
- package/src/me/pib.ts +7 -3
- package/src/mk/edb.ts +7 -3
- package/src/mt/vat.ts +8 -3
- package/src/mu/brn.ts +7 -3
- package/src/mx/clabe.ts +7 -3
- package/src/mx/curp.ts +47 -10
- package/src/mx/rfc.ts +42 -7
- package/src/my/nric.ts +33 -8
- package/src/ng/nin.ts +7 -3
- package/src/ni/ruc.ts +7 -3
- package/src/nl/bsn.ts +7 -3
- package/src/nl/kvk.ts +7 -3
- package/src/nl/vat.ts +18 -69
- package/src/no/fodselsnummer.ts +12 -7
- package/src/no/mva.ts +9 -5
- package/src/no/orgnr.ts +7 -3
- package/src/nz/ird.ts +12 -8
- package/src/pa/ruc.ts +39 -11
- package/src/patterns.ts +184 -46
- package/src/pe/ruc.ts +13 -10
- package/src/ph/philid.ts +7 -3
- package/src/pk/cnic.ts +9 -3
- package/src/pl/nip.ts +7 -3
- package/src/pl/pesel.ts +9 -7
- package/src/pl/regon.ts +7 -3
- package/src/pt/cc.ts +13 -7
- package/src/pt/vat.ts +8 -3
- package/src/ro/cnp.ts +16 -8
- package/src/ro/vat.ts +8 -3
- package/src/rs/pib.ts +7 -3
- package/src/ru/inn.ts +9 -5
- package/src/se/orgnr.ts +7 -3
- package/src/se/personnummer.ts +35 -32
- package/src/se/vat.ts +8 -3
- package/src/sg/uen.ts +44 -23
- package/src/si/emso.ts +37 -11
- package/src/si/vat.ts +8 -3
- package/src/sk/dic.ts +8 -4
- package/src/sk/ico.ts +3 -2
- package/src/sk/rc.ts +17 -4
- package/src/th/tin.ts +7 -3
- package/src/tr/tckimlik.ts +7 -3
- package/src/tr/vkn.ts +7 -3
- package/src/tw/ubn.ts +9 -5
- package/src/types.ts +69 -7
- package/src/ua/edrpou.ts +10 -5
- package/src/us/ein.ts +95 -91
- package/src/us/itin.ts +14 -11
- package/src/us/rtn.ts +32 -19
- package/src/us/ssn.ts +7 -3
- package/src/uy/rut.ts +9 -5
- package/src/ve/rif.ts +19 -12
- package/src/vn/mst.ts +7 -3
- package/src/za/idnr.ts +9 -7
package/src/_util/generate.ts
CHANGED
|
@@ -22,3 +22,41 @@ export const randomInt = (
|
|
|
22
22
|
max: number,
|
|
23
23
|
): number =>
|
|
24
24
|
min + Math.floor(Math.random() * (max - min + 1));
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Pick a random element from a non-empty array.
|
|
28
|
+
* Throws if the array is empty so generators that
|
|
29
|
+
* declare a fixed pool fail loudly instead of
|
|
30
|
+
* returning `undefined`.
|
|
31
|
+
*/
|
|
32
|
+
export const randomPick = <T>(values: readonly T[]): T => {
|
|
33
|
+
if (values.length === 0) {
|
|
34
|
+
throw new Error("randomPick called with empty array");
|
|
35
|
+
}
|
|
36
|
+
const idx = randomInt(0, values.length - 1);
|
|
37
|
+
// SAFETY: idx is bounded by values.length and the
|
|
38
|
+
// array is non-empty (checked above).
|
|
39
|
+
const value = values[idx];
|
|
40
|
+
if (value === undefined) {
|
|
41
|
+
throw new Error("randomPick produced undefined");
|
|
42
|
+
}
|
|
43
|
+
return value;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Pick a random character from a non-empty string.
|
|
48
|
+
* Same contract as `randomPick` for arrays.
|
|
49
|
+
*/
|
|
50
|
+
export const randomChar = (chars: string): string => {
|
|
51
|
+
if (chars.length === 0) {
|
|
52
|
+
throw new Error("randomChar called with empty string");
|
|
53
|
+
}
|
|
54
|
+
const idx = randomInt(0, chars.length - 1);
|
|
55
|
+
// SAFETY: idx is bounded by chars.length and the
|
|
56
|
+
// string is non-empty (checked above).
|
|
57
|
+
const ch = chars[idx];
|
|
58
|
+
if (ch === undefined) {
|
|
59
|
+
throw new Error("randomChar produced undefined");
|
|
60
|
+
}
|
|
61
|
+
return ch;
|
|
62
|
+
};
|
package/src/ad/nrt.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
const NRT_PREFIXES = "CDEGOPU";
|
|
2
|
+
|
|
1
3
|
/** Generate a random valid Andorra NRT. */
|
|
2
4
|
const generate = (): string => {
|
|
3
|
-
const
|
|
4
|
-
const prefix =
|
|
5
|
-
prefixes[randomInt(0, prefixes.length - 1)]!;
|
|
5
|
+
const prefix = randomChar(NRT_PREFIXES);
|
|
6
6
|
const digits = randomDigits(6);
|
|
7
7
|
const suffix = String.fromCodePoint(
|
|
8
8
|
65 + randomInt(0, 25),
|
|
@@ -25,13 +25,20 @@ const generate = (): string => {
|
|
|
25
25
|
* @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Andorra-TIN.pdf
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
+
import type {
|
|
29
|
+
ValidateResult,
|
|
30
|
+
CountryValidator,
|
|
31
|
+
} from "../types";
|
|
32
|
+
|
|
28
33
|
import { clean } from "#util/clean";
|
|
29
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
randomChar,
|
|
36
|
+
randomDigits,
|
|
37
|
+
randomInt,
|
|
38
|
+
} from "#util/generate";
|
|
30
39
|
import { err } from "#util/result";
|
|
31
40
|
import { isdigits } from "#util/strings";
|
|
32
41
|
|
|
33
|
-
import type { ValidateResult, Validator } from "../types";
|
|
34
|
-
|
|
35
42
|
const VALID_PREFIXES = "ACDEFGLOPU";
|
|
36
43
|
|
|
37
44
|
const compact = (value: string): string =>
|
|
@@ -45,7 +52,11 @@ const validate = (value: string): ValidateResult => {
|
|
|
45
52
|
"Andorra NRT must be 8 characters",
|
|
46
53
|
);
|
|
47
54
|
}
|
|
55
|
+
// SAFETY: v.length === 8 guarantees both positions
|
|
56
|
+
// exist; oxlint cannot see the length guard.
|
|
57
|
+
// eslint-disable-next-line no-non-null-assertion
|
|
48
58
|
const prefix = v[0]!;
|
|
59
|
+
// eslint-disable-next-line no-non-null-assertion
|
|
49
60
|
const tail = v[7]!;
|
|
50
61
|
const digits = v.slice(1, 7);
|
|
51
62
|
if (!/^[A-Z]$/.test(prefix) || !/^[A-Z]$/.test(tail)) {
|
|
@@ -90,12 +101,13 @@ const format = (value: string): string => {
|
|
|
90
101
|
};
|
|
91
102
|
|
|
92
103
|
/** Andorra NRT (Número de Registre Tributari). */
|
|
93
|
-
const nrt:
|
|
104
|
+
const nrt: CountryValidator<"AD"> = {
|
|
94
105
|
name: "Andorra Tax Number",
|
|
95
106
|
localName: "Número de Registre Tributari",
|
|
96
107
|
abbreviation: "NRT",
|
|
97
108
|
aliases: ["NRT", "Número de Registre Tributari"] as const,
|
|
98
109
|
candidatePattern: "[A-Z]-?\\d{6}-?[A-Z]",
|
|
110
|
+
scope: "country",
|
|
99
111
|
country: "AD",
|
|
100
112
|
entityType: "any",
|
|
101
113
|
sourceUrl:
|
package/src/ae/eid.ts
CHANGED
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* @see https://u.ae/en/information-and-services/visa-and-emirates-id/emirates-id
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import type {
|
|
14
|
+
ValidateResult,
|
|
15
|
+
CountryValidator,
|
|
16
|
+
} from "../types";
|
|
17
|
+
|
|
13
18
|
import {
|
|
14
19
|
luhnChecksum,
|
|
15
20
|
luhnValidate,
|
|
@@ -19,8 +24,6 @@ import { randomDigits, randomInt } from "#util/generate";
|
|
|
19
24
|
import { err } from "#util/result";
|
|
20
25
|
import { isdigits } from "#util/strings";
|
|
21
26
|
|
|
22
|
-
import type { ValidateResult, Validator } from "../types";
|
|
23
|
-
|
|
24
27
|
const compact = (value: string): string =>
|
|
25
28
|
clean(value, " -/");
|
|
26
29
|
|
|
@@ -77,12 +80,13 @@ const generate = (): string => {
|
|
|
77
80
|
};
|
|
78
81
|
|
|
79
82
|
/** UAE Emirates ID. */
|
|
80
|
-
const eid:
|
|
83
|
+
const eid: CountryValidator<"AE"> = {
|
|
81
84
|
name: "Emirates ID",
|
|
82
85
|
localName: "رقم الهوية",
|
|
83
86
|
abbreviation: "EID",
|
|
84
87
|
aliases: ["EID", "Emirates ID", "رقم الهوية"] as const,
|
|
85
88
|
candidatePattern: "784-\\d{4}-\\d{7}-\\d",
|
|
89
|
+
scope: "country",
|
|
86
90
|
country: "AE",
|
|
87
91
|
entityType: "person",
|
|
88
92
|
lengths: [15],
|
package/src/ai/tin.ts
CHANGED
|
@@ -23,12 +23,15 @@ const generate = (): string => {
|
|
|
23
23
|
* @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Anguilla-TIN.pdf
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
+
import type {
|
|
27
|
+
ValidateResult,
|
|
28
|
+
CountryValidator,
|
|
29
|
+
} from "../types";
|
|
30
|
+
|
|
26
31
|
import { clean } from "#util/clean";
|
|
27
32
|
import { randomDigits } from "#util/generate";
|
|
28
33
|
import { err } from "#util/result";
|
|
29
34
|
|
|
30
|
-
import type { ValidateResult, Validator } from "../types";
|
|
31
|
-
|
|
32
35
|
const compact = (value: string): string => {
|
|
33
36
|
return clean(value, " -").trim();
|
|
34
37
|
};
|
|
@@ -74,12 +77,13 @@ const format = (value: string): string => {
|
|
|
74
77
|
* (format-only validation, no published check
|
|
75
78
|
* digit algorithm).
|
|
76
79
|
*/
|
|
77
|
-
const tin:
|
|
80
|
+
const tin: CountryValidator<"AI"> = {
|
|
78
81
|
name: "Anguilla Tax Identification Number",
|
|
79
82
|
localName: "Tax Identification Number",
|
|
80
83
|
abbreviation: "TIN",
|
|
81
84
|
aliases: ["TIN"] as const,
|
|
82
85
|
candidatePattern: "\\d{11}",
|
|
86
|
+
scope: "country",
|
|
83
87
|
country: "AI",
|
|
84
88
|
entityType: "any",
|
|
85
89
|
lengths: [10] as const,
|
package/src/al/nipt.ts
CHANGED
|
@@ -18,12 +18,15 @@ const generate = (): string => {
|
|
|
18
18
|
* @see https://www.tatime.gov.al/eng/c/4/103/business-lifecycle
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
+
import type {
|
|
22
|
+
ValidateResult,
|
|
23
|
+
CountryValidator,
|
|
24
|
+
} from "../types";
|
|
25
|
+
|
|
21
26
|
import { clean } from "#util/clean";
|
|
22
27
|
import { randomDigits, randomInt } from "#util/generate";
|
|
23
28
|
import { err } from "#util/result";
|
|
24
29
|
|
|
25
|
-
import type { ValidateResult, Validator } from "../types";
|
|
26
|
-
|
|
27
30
|
const NIPT_RE = /^[A-M]\d{8}[A-Z]$/;
|
|
28
31
|
|
|
29
32
|
const compact = (value: string): string => {
|
|
@@ -57,13 +60,14 @@ const validate = (value: string): ValidateResult => {
|
|
|
57
60
|
const format = (value: string): string => compact(value);
|
|
58
61
|
|
|
59
62
|
/** Albanian NIPT (tax identification number). */
|
|
60
|
-
const nipt:
|
|
63
|
+
const nipt: CountryValidator<"AL"> = {
|
|
61
64
|
name: "Albanian Tax Number",
|
|
62
65
|
localName:
|
|
63
66
|
"Numri i Identifikimit për Personin e Tatueshëm",
|
|
64
67
|
abbreviation: "NIPT",
|
|
65
68
|
aliases: ["NIPT", "NUIS"] as const,
|
|
66
69
|
candidatePattern: "[A-Z]\\d{8}[A-Z]",
|
|
70
|
+
scope: "country",
|
|
67
71
|
country: "AL",
|
|
68
72
|
entityType: "any",
|
|
69
73
|
sourceUrl: "https://www.tatime.gov.al/",
|
package/src/am/tin.ts
CHANGED
|
@@ -16,13 +16,16 @@ const generate = (): string => randomDigits(8);
|
|
|
16
16
|
* @see https://www.src.am/en/taxpayerSearchSystemPage/112
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import type {
|
|
20
|
+
ValidateResult,
|
|
21
|
+
CountryValidator,
|
|
22
|
+
} from "../types";
|
|
23
|
+
|
|
19
24
|
import { clean } from "#util/clean";
|
|
20
25
|
import { randomDigits } from "#util/generate";
|
|
21
26
|
import { err } from "#util/result";
|
|
22
27
|
import { isdigits } from "#util/strings";
|
|
23
28
|
|
|
24
|
-
import type { ValidateResult, Validator } from "../types";
|
|
25
|
-
|
|
26
29
|
const compact = (value: string): string =>
|
|
27
30
|
clean(value, " -").trim();
|
|
28
31
|
|
|
@@ -49,12 +52,13 @@ const validate = (value: string): ValidateResult => {
|
|
|
49
52
|
const format = (value: string): string => compact(value);
|
|
50
53
|
|
|
51
54
|
/** Armenian Tax Identification Number. */
|
|
52
|
-
const tin:
|
|
55
|
+
const tin: CountryValidator<"AM"> = {
|
|
53
56
|
name: "Armenian Tax ID",
|
|
54
57
|
localName: "Հարկ վճարողի հաշվառման համար",
|
|
55
58
|
abbreviation: "TIN",
|
|
56
59
|
aliases: ["ՀՎՀՀ", "TIN"] as const,
|
|
57
60
|
candidatePattern: "\\d{8}",
|
|
61
|
+
scope: "country",
|
|
58
62
|
country: "AM",
|
|
59
63
|
entityType: "any",
|
|
60
64
|
lengths: [8] as const,
|
package/src/ar/cbu.ts
CHANGED
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
* @see https://es.wikipedia.org/wiki/Clave_bancaria_uniforme
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {
|
|
12
|
+
ValidateResult,
|
|
13
|
+
CountryValidator,
|
|
14
|
+
} from "../types";
|
|
15
|
+
|
|
11
16
|
import { clean } from "#util/clean";
|
|
12
17
|
import { randomDigits } from "#util/generate";
|
|
13
18
|
import { err } from "#util/result";
|
|
14
19
|
import { isdigits } from "#util/strings";
|
|
15
20
|
|
|
16
|
-
import type { ValidateResult, Validator } from "../types";
|
|
17
|
-
|
|
18
21
|
const WEIGHTS_BLOCK1 = [7, 1, 3, 9, 7, 1, 3];
|
|
19
22
|
const WEIGHTS_BLOCK2 = [
|
|
20
23
|
3, 9, 7, 1, 3, 9, 7, 1, 3, 9, 7, 1, 3,
|
|
@@ -28,8 +31,8 @@ const calcCheck = (
|
|
|
28
31
|
weights: readonly number[],
|
|
29
32
|
): number => {
|
|
30
33
|
let sum = 0;
|
|
31
|
-
for (
|
|
32
|
-
sum += Number(digits[i]) *
|
|
34
|
+
for (const [i, weight] of weights.entries()) {
|
|
35
|
+
sum += Number(digits[i]) * weight;
|
|
33
36
|
}
|
|
34
37
|
return (10 - (sum % 10)) % 10;
|
|
35
38
|
};
|
|
@@ -84,12 +87,13 @@ const generate = (): string => {
|
|
|
84
87
|
};
|
|
85
88
|
|
|
86
89
|
/** Argentine Uniform Bank Key. */
|
|
87
|
-
const cbu:
|
|
90
|
+
const cbu: CountryValidator<"AR"> = {
|
|
88
91
|
name: "Argentine Bank Account Number",
|
|
89
92
|
localName: "Clave Bancaria Uniforme",
|
|
90
93
|
abbreviation: "CBU",
|
|
91
94
|
aliases: ["CBU", "Clave Bancaria Uniforme"] as const,
|
|
92
95
|
candidatePattern: "\\d{22}",
|
|
96
|
+
scope: "country",
|
|
93
97
|
country: "AR",
|
|
94
98
|
entityType: "any",
|
|
95
99
|
sourceUrl:
|
package/src/ar/cuit.ts
CHANGED
|
@@ -16,13 +16,16 @@
|
|
|
16
16
|
* @see https://en.wikipedia.org/wiki/CUIT_(Argentina)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import type {
|
|
20
|
+
ValidateResult,
|
|
21
|
+
CountryValidator,
|
|
22
|
+
} from "../types";
|
|
23
|
+
|
|
19
24
|
import { clean } from "#util/clean";
|
|
20
|
-
import { randomDigits } from "#util/generate";
|
|
25
|
+
import { randomDigits, randomPick } from "#util/generate";
|
|
21
26
|
import { err } from "#util/result";
|
|
22
27
|
import { isdigits } from "#util/strings";
|
|
23
28
|
|
|
24
|
-
import type { ValidateResult, Validator } from "../types";
|
|
25
|
-
|
|
26
29
|
const VALID_TYPES = new Set([
|
|
27
30
|
"20",
|
|
28
31
|
"23",
|
|
@@ -36,7 +39,17 @@ const VALID_TYPES = new Set([
|
|
|
36
39
|
"55",
|
|
37
40
|
]);
|
|
38
41
|
|
|
39
|
-
const WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
|
|
42
|
+
const WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2] as const;
|
|
43
|
+
|
|
44
|
+
const GENERATE_TYPES = [
|
|
45
|
+
"20",
|
|
46
|
+
"23",
|
|
47
|
+
"24",
|
|
48
|
+
"27",
|
|
49
|
+
"30",
|
|
50
|
+
"33",
|
|
51
|
+
"34",
|
|
52
|
+
] as const;
|
|
40
53
|
|
|
41
54
|
const compact = (value: string): string =>
|
|
42
55
|
clean(value, " -.").trim();
|
|
@@ -49,8 +62,8 @@ const compact = (value: string): string =>
|
|
|
49
62
|
*/
|
|
50
63
|
const calcCheckDigit = (body: string): number => {
|
|
51
64
|
let sum = 0;
|
|
52
|
-
for (
|
|
53
|
-
sum += Number(body[i]) *
|
|
65
|
+
for (const [i, weight] of WEIGHTS.entries()) {
|
|
66
|
+
sum += Number(body[i]) * weight;
|
|
54
67
|
}
|
|
55
68
|
const remainder = 11 - (sum % 11);
|
|
56
69
|
if (remainder === 11) return 0;
|
|
@@ -98,9 +111,7 @@ const format = (value: string): string => {
|
|
|
98
111
|
|
|
99
112
|
/** Generate a random valid CUIT. */
|
|
100
113
|
const generate = (): string => {
|
|
101
|
-
const
|
|
102
|
-
const type =
|
|
103
|
-
types[Math.floor(Math.random() * types.length)]!;
|
|
114
|
+
const type = randomPick(GENERATE_TYPES);
|
|
104
115
|
const body = type + randomDigits(8);
|
|
105
116
|
const check = calcCheckDigit(body);
|
|
106
117
|
return body + String(check);
|
|
@@ -112,7 +123,7 @@ const generate = (): string => {
|
|
|
112
123
|
* Examples sourced from python-stdnum test suite
|
|
113
124
|
* (ar.cuit module).
|
|
114
125
|
*/
|
|
115
|
-
const cuit:
|
|
126
|
+
const cuit: CountryValidator<"AR"> = {
|
|
116
127
|
name: "Argentine Tax ID",
|
|
117
128
|
localName: "Clave Única de Identificación Tributaria",
|
|
118
129
|
abbreviation: "CUIT",
|
|
@@ -122,6 +133,7 @@ const cuit: Validator = {
|
|
|
122
133
|
"Clave Única de Identificación Tributaria",
|
|
123
134
|
] as const,
|
|
124
135
|
candidatePattern: "\\d{2}-?\\d{8}-?\\d",
|
|
136
|
+
scope: "country",
|
|
125
137
|
country: "AR",
|
|
126
138
|
entityType: "any",
|
|
127
139
|
compact,
|
package/src/ar/dni.ts
CHANGED
|
@@ -11,13 +11,16 @@ const generate = (): string => randomDigits(8);
|
|
|
11
11
|
* @see https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
import type {
|
|
15
|
+
ValidateResult,
|
|
16
|
+
CountryValidator,
|
|
17
|
+
} from "../types";
|
|
18
|
+
|
|
14
19
|
import { clean } from "#util/clean";
|
|
15
20
|
import { randomDigits } from "#util/generate";
|
|
16
21
|
import { err } from "#util/result";
|
|
17
22
|
import { isdigits } from "#util/strings";
|
|
18
23
|
|
|
19
|
-
import type { ValidateResult, Validator } from "../types";
|
|
20
|
-
|
|
21
24
|
const compact = (value: string): string =>
|
|
22
25
|
clean(value, " -.").trim();
|
|
23
26
|
|
|
@@ -53,7 +56,7 @@ const format = (value: string): string => {
|
|
|
53
56
|
};
|
|
54
57
|
|
|
55
58
|
/** Argentine National Identity Document. */
|
|
56
|
-
const dni:
|
|
59
|
+
const dni: CountryValidator<"AR"> = {
|
|
57
60
|
name: "Argentine Identity Card",
|
|
58
61
|
localName: "Documento Nacional de Identidad",
|
|
59
62
|
abbreviation: "DNI",
|
|
@@ -63,6 +66,7 @@ const dni: Validator = {
|
|
|
63
66
|
"Documento de Identidad",
|
|
64
67
|
] as const,
|
|
65
68
|
candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}",
|
|
69
|
+
scope: "country",
|
|
66
70
|
country: "AR",
|
|
67
71
|
entityType: "person",
|
|
68
72
|
sourceUrl:
|
package/src/at/businessid.ts
CHANGED
|
@@ -16,12 +16,15 @@ const generate = (): string => {
|
|
|
16
16
|
* @see https://www.justiz.gv.at/
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import type {
|
|
20
|
+
ValidateResult,
|
|
21
|
+
CountryValidator,
|
|
22
|
+
} from "../types";
|
|
23
|
+
|
|
19
24
|
import { clean } from "#util/clean";
|
|
20
25
|
import { randomDigits, randomInt } from "#util/generate";
|
|
21
26
|
import { err } from "#util/result";
|
|
22
27
|
|
|
23
|
-
import type { ValidateResult, Validator } from "../types";
|
|
24
|
-
|
|
25
28
|
const FN_RE = /^\d+[a-z]$/i;
|
|
26
29
|
|
|
27
30
|
const compact = (value: string): string => {
|
|
@@ -54,12 +57,13 @@ const format = (value: string): string =>
|
|
|
54
57
|
`FN ${compact(value)}`;
|
|
55
58
|
|
|
56
59
|
/** Austrian Company Register Number. */
|
|
57
|
-
const businessid:
|
|
60
|
+
const businessid: CountryValidator<"AT"> = {
|
|
58
61
|
name: "Austrian Company Register Number",
|
|
59
62
|
localName: "Firmenbuchnummer",
|
|
60
63
|
abbreviation: "FN",
|
|
61
64
|
aliases: ["Firmenbuchnummer", "FN", "FBN"] as const,
|
|
62
65
|
candidatePattern: "FN\\s?\\d{5,6}[a-z]?",
|
|
66
|
+
scope: "country",
|
|
63
67
|
country: "AT",
|
|
64
68
|
entityType: "company",
|
|
65
69
|
sourceUrl: "https://www.justiz.gv.at/",
|
package/src/at/tin.ts
CHANGED
|
@@ -10,13 +10,16 @@
|
|
|
10
10
|
* @see https://service.bmf.gv.at/Service/Anwend/Behoerden/show_mast.asp
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import type {
|
|
14
|
+
ValidateResult,
|
|
15
|
+
CountryValidator,
|
|
16
|
+
} from "../types";
|
|
17
|
+
|
|
13
18
|
import { clean } from "#util/clean";
|
|
14
19
|
import { randomDigits } from "#util/generate";
|
|
15
20
|
import { err } from "#util/result";
|
|
16
21
|
import { isdigits } from "#util/strings";
|
|
17
22
|
|
|
18
|
-
import type { ValidateResult, Validator } from "../types";
|
|
19
|
-
|
|
20
23
|
/** Luhn-variant doubling table: position-dependent. */
|
|
21
24
|
const DOUBLE = "0246813579";
|
|
22
25
|
|
|
@@ -69,12 +72,13 @@ const generate = (): string => {
|
|
|
69
72
|
};
|
|
70
73
|
|
|
71
74
|
/** Austrian Tax Identification Number. */
|
|
72
|
-
const tin:
|
|
75
|
+
const tin: CountryValidator<"AT"> = {
|
|
73
76
|
name: "Austrian Tax Identification Number",
|
|
74
77
|
localName: "Abgabenkontonummer",
|
|
75
78
|
abbreviation: "TIN",
|
|
76
79
|
aliases: ["Steuernummer", "St.Nr.", "TIN"] as const,
|
|
77
80
|
candidatePattern: "\\d{2}-?\\d{3}/\\d{4}",
|
|
81
|
+
scope: "country",
|
|
78
82
|
country: "AT",
|
|
79
83
|
entityType: "any",
|
|
80
84
|
sourceUrl:
|
package/src/at/uid.ts
CHANGED
|
@@ -8,14 +8,17 @@
|
|
|
8
8
|
* @see https://www.bmf.gv.at/
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import type {
|
|
12
|
+
ValidateResult,
|
|
13
|
+
CountryValidator,
|
|
14
|
+
} from "../types";
|
|
15
|
+
|
|
11
16
|
import { luhnChecksum } from "#checksums/luhn";
|
|
12
17
|
import { clean } from "#util/clean";
|
|
13
18
|
import { randomDigits } from "#util/generate";
|
|
14
19
|
import { err } from "#util/result";
|
|
15
20
|
import { isdigits } from "#util/strings";
|
|
16
21
|
|
|
17
|
-
import type { ValidateResult, Validator } from "../types";
|
|
18
|
-
|
|
19
22
|
const compact = (value: string): string => {
|
|
20
23
|
let v = clean(value, " -/");
|
|
21
24
|
if (v.startsWith("AT") || v.startsWith("at")) {
|
|
@@ -68,7 +71,7 @@ const generate = (): string => {
|
|
|
68
71
|
};
|
|
69
72
|
|
|
70
73
|
/** Austrian VAT Identification Number. */
|
|
71
|
-
const uid:
|
|
74
|
+
const uid: CountryValidator<"AT"> = {
|
|
72
75
|
name: "Austrian VAT Number",
|
|
73
76
|
localName: "Umsatzsteuer-Identifikationsnummer",
|
|
74
77
|
abbreviation: "UID",
|
|
@@ -78,6 +81,7 @@ const uid: Validator = {
|
|
|
78
81
|
"ATU",
|
|
79
82
|
] as const,
|
|
80
83
|
candidatePattern: "ATU\\d{8}",
|
|
84
|
+
scope: "country",
|
|
81
85
|
country: "AT",
|
|
82
86
|
entityType: "company",
|
|
83
87
|
sourceUrl: "https://www.bmf.gv.at/",
|
package/src/at/vnr.ts
CHANGED
|
@@ -6,22 +6,37 @@
|
|
|
6
6
|
* The check digit is computed using a weighted sum
|
|
7
7
|
* mod 11 over the 9 non-check digits.
|
|
8
8
|
*
|
|
9
|
+
* The 6-digit "birth date" field is not always a real
|
|
10
|
+
* calendar date. Sozialversicherung.at documents that
|
|
11
|
+
* persons with unknown date of birth are issued
|
|
12
|
+
* substitute values (01.01. or 01.07.), and that
|
|
13
|
+
* months 13, 14, etc. are issued when the daily serial
|
|
14
|
+
* pool for a given substitute date is exhausted. We
|
|
15
|
+
* therefore do not enforce a calendar-valid month here.
|
|
16
|
+
* The day field, however, is always within 01-31 — even
|
|
17
|
+
* in the documented overflow cases the day stays "01"
|
|
18
|
+
* — so we keep the day-bounds check.
|
|
19
|
+
*
|
|
9
20
|
* @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer#%C3%96sterreich
|
|
10
|
-
* @see https://www.sozialversicherung.at/
|
|
21
|
+
* @see https://www.sozialversicherung.at/cdscontent/?contentid=10007.820902&viewmode=content
|
|
11
22
|
*/
|
|
12
23
|
|
|
24
|
+
import type {
|
|
25
|
+
ValidateResult,
|
|
26
|
+
CountryValidator,
|
|
27
|
+
} from "../types";
|
|
28
|
+
|
|
13
29
|
import { clean } from "#util/clean";
|
|
30
|
+
import { randomDigits, randomInt } from "#util/generate";
|
|
14
31
|
import { err } from "#util/result";
|
|
15
32
|
import { isdigits } from "#util/strings";
|
|
16
33
|
|
|
17
|
-
import type { ValidateResult, Validator } from "../types";
|
|
18
|
-
|
|
19
34
|
/**
|
|
20
35
|
* Weights for the 9 non-check digits (positions
|
|
21
36
|
* 0,1,2, then 4,5,6,7,8,9). Check digit is at
|
|
22
37
|
* position 3 and equals the weighted sum mod 11.
|
|
23
38
|
*/
|
|
24
|
-
const WEIGHTS = [3, 7, 9, 5, 8, 4, 2, 1, 6];
|
|
39
|
+
const WEIGHTS = [3, 7, 9, 5, 8, 4, 2, 1, 6] as const;
|
|
25
40
|
|
|
26
41
|
const compact = (value: string): string =>
|
|
27
42
|
clean(value, " -/").trim();
|
|
@@ -43,13 +58,24 @@ const validate = (value: string): ValidateResult => {
|
|
|
43
58
|
);
|
|
44
59
|
}
|
|
45
60
|
|
|
46
|
-
//
|
|
61
|
+
// Per sozialversicherung.at, the 3-digit serial
|
|
62
|
+
// (positions 0-2) never starts with zero.
|
|
63
|
+
if (v[0] === "0") {
|
|
64
|
+
return err(
|
|
65
|
+
"INVALID_COMPONENT",
|
|
66
|
+
"Austrian VNR serial must not start with zero",
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Day (positions 4-5) is always within 01-31, even
|
|
71
|
+
// in the documented substitute and overflow cases
|
|
72
|
+
// where the month is shifted. The month is left
|
|
73
|
+
// unchecked per the source.
|
|
47
74
|
const day = Number(v.slice(4, 6));
|
|
48
|
-
|
|
49
|
-
if (day < 1 || day > 31 || month < 1 || month > 12) {
|
|
75
|
+
if (day < 1 || day > 31) {
|
|
50
76
|
return err(
|
|
51
77
|
"INVALID_COMPONENT",
|
|
52
|
-
"Austrian VNR
|
|
78
|
+
"Austrian VNR day field must be within 01-31",
|
|
53
79
|
);
|
|
54
80
|
}
|
|
55
81
|
|
|
@@ -58,8 +84,8 @@ const validate = (value: string): ValidateResult => {
|
|
|
58
84
|
// number is invalid.
|
|
59
85
|
const digits = v.slice(0, 3) + v.slice(4);
|
|
60
86
|
let sum = 0;
|
|
61
|
-
for (
|
|
62
|
-
sum += Number(digits[i]) *
|
|
87
|
+
for (const [i, weight] of WEIGHTS.entries()) {
|
|
88
|
+
sum += Number(digits[i]) * weight;
|
|
63
89
|
}
|
|
64
90
|
const check = sum % 11;
|
|
65
91
|
if (check === 10) {
|
|
@@ -84,8 +110,30 @@ const format = (value: string): string => {
|
|
|
84
110
|
return `${v.slice(0, 4)} ${v.slice(4, 6)}${v.slice(6, 8)}${v.slice(8)}`;
|
|
85
111
|
};
|
|
86
112
|
|
|
113
|
+
/** Generate a random valid Austrian VNR. */
|
|
114
|
+
const generate = (): string => {
|
|
115
|
+
for (;;) {
|
|
116
|
+
// Serial must not start with zero (see validate).
|
|
117
|
+
const serial =
|
|
118
|
+
String(randomInt(1, 9)) + randomDigits(2);
|
|
119
|
+
const day = String(randomInt(1, 28)).padStart(2, "0");
|
|
120
|
+
const month = String(randomInt(1, 12)).padStart(2, "0");
|
|
121
|
+
const year = String(randomInt(0, 99)).padStart(2, "0");
|
|
122
|
+
const digits = `${serial}${day}${month}${year}`;
|
|
123
|
+
|
|
124
|
+
let sum = 0;
|
|
125
|
+
for (const [i, weight] of WEIGHTS.entries()) {
|
|
126
|
+
sum += Number(digits[i]) * weight;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const check = sum % 11;
|
|
130
|
+
if (check === 10) continue;
|
|
131
|
+
return `${serial}${String(check)}${day}${month}${year}`;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
87
135
|
/** Austrian Social Insurance Number. */
|
|
88
|
-
const vnr:
|
|
136
|
+
const vnr: CountryValidator<"AT"> = {
|
|
89
137
|
name: "Austrian Social Insurance Number",
|
|
90
138
|
localName: "Versicherungsnummer",
|
|
91
139
|
abbreviation: "VNR",
|
|
@@ -96,6 +144,7 @@ const vnr: Validator = {
|
|
|
96
144
|
"Sozialversicherungsnummer",
|
|
97
145
|
] as const,
|
|
98
146
|
candidatePattern: "\\d{4}\\s?\\d{6}",
|
|
147
|
+
scope: "country",
|
|
99
148
|
country: "AT",
|
|
100
149
|
entityType: "person",
|
|
101
150
|
sourceUrl:
|
|
@@ -105,7 +154,8 @@ const vnr: Validator = {
|
|
|
105
154
|
compact,
|
|
106
155
|
format,
|
|
107
156
|
validate,
|
|
157
|
+
generate,
|
|
108
158
|
};
|
|
109
159
|
|
|
110
160
|
export default vnr;
|
|
111
|
-
export { compact, format, validate };
|
|
161
|
+
export { compact, format, generate, validate };
|
package/src/au/abn.ts
CHANGED
|
@@ -9,13 +9,16 @@
|
|
|
9
9
|
* @see https://abr.business.gov.au/
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import type {
|
|
13
|
+
ValidateResult,
|
|
14
|
+
CountryValidator,
|
|
15
|
+
} from "../types";
|
|
16
|
+
|
|
12
17
|
import { clean } from "#util/clean";
|
|
13
18
|
import { randomDigits } from "#util/generate";
|
|
14
19
|
import { err } from "#util/result";
|
|
15
20
|
import { isdigits } from "#util/strings";
|
|
16
21
|
|
|
17
|
-
import type { ValidateResult, Validator } from "../types";
|
|
18
|
-
|
|
19
22
|
const WEIGHTS = [
|
|
20
23
|
10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
|
|
21
24
|
] as const;
|
|
@@ -65,12 +68,13 @@ const generate = (): string => {
|
|
|
65
68
|
};
|
|
66
69
|
|
|
67
70
|
/** Australian Business Number. */
|
|
68
|
-
const abn:
|
|
71
|
+
const abn: CountryValidator<"AU"> = {
|
|
69
72
|
name: "Australian Business Number",
|
|
70
73
|
localName: "Australian Business Number",
|
|
71
74
|
abbreviation: "ABN",
|
|
72
75
|
aliases: ["ABN", "Australian Business Number"] as const,
|
|
73
76
|
candidatePattern: "\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{3}",
|
|
77
|
+
scope: "country",
|
|
74
78
|
country: "AU",
|
|
75
79
|
entityType: "company",
|
|
76
80
|
sourceUrl: "https://abr.business.gov.au/",
|