@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/dist/at/tin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tin.js","names":[],"sources":["../../src/at/tin.ts"],"sourcesContent":["/**\n * TIN (Abgabenkontonummer).\n *\n * Austrian tax identification number. 9 digits:\n * 2-digit tax office code (Finanzamtsnummer) +\n * 6-digit subject number + 1 check digit.\n * Uses a variant of the Luhn algorithm.\n *\n * @see https://de.wikipedia.org/wiki/Abgabenkontonummer\n * @see https://service.bmf.gv.at/Service/Anwend/Behoerden/show_mast.asp\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"tin.js","names":[],"sources":["../../src/at/tin.ts"],"sourcesContent":["/**\n * TIN (Abgabenkontonummer).\n *\n * Austrian tax identification number. 9 digits:\n * 2-digit tax office code (Finanzamtsnummer) +\n * 6-digit subject number + 1 check digit.\n * Uses a variant of the Luhn algorithm.\n *\n * @see https://de.wikipedia.org/wiki/Abgabenkontonummer\n * @see https://service.bmf.gv.at/Service/Anwend/Behoerden/show_mast.asp\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\n/** Luhn-variant doubling table: position-dependent. */\nconst DOUBLE = \"0246813579\";\n\nconst compact = (value: string): string =>\n clean(value, \" -./,\");\n\nconst calcCheckDigit = (number: string): string => {\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n const d = Number(number[i]);\n // Even positions (0-indexed) add digit as-is;\n // odd positions use the doubling table\n sum += i % 2 === 0 ? d : Number(DOUBLE[d]);\n }\n return String((10 - (sum % 10)) % 10);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Austrian TIN must be exactly 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Austrian TIN must contain only digits\",\n );\n }\n if (calcCheckDigit(v) !== v[8]) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Austrian TIN 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 `${v.slice(0, 2)}-${v.slice(2, 8)}/${v.slice(8)}`;\n};\n\n/** Generate a random valid Austrian TIN. */\nconst generate = (): string => {\n const payload = randomDigits(8);\n return payload + calcCheckDigit(payload);\n};\n\n/** Austrian Tax Identification Number. */\nconst tin: CountryValidator<\"AT\"> = {\n name: \"Austrian Tax Identification Number\",\n localName: \"Abgabenkontonummer\",\n abbreviation: \"TIN\",\n aliases: [\"Steuernummer\", \"St.Nr.\", \"TIN\"] as const,\n candidatePattern: \"\\\\d{2}-?\\\\d{3}/\\\\d{4}\",\n scope: \"country\",\n country: \"AT\",\n entityType: \"any\",\n sourceUrl:\n \"https://de.wikipedia.org/wiki/Abgabenkontonummer\",\n examples: [\"591199013\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default tin;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAuBA,MAAM,SAAS;AAEf,MAAM,WAAW,UACf,MAAM,OAAO,OAAO;AAEtB,MAAM,kBAAkB,WAA2B;CACjD,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;EAC1B,MAAM,IAAI,OAAO,OAAO,EAAE;EAG1B,OAAO,IAAI,MAAM,IAAI,IAAI,OAAO,OAAO,EAAE;CAC3C;CACA,OAAO,QAAQ,KAAM,MAAM,MAAO,EAAE;AACtC;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,uCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,uCACF;CAEF,IAAI,eAAe,CAAC,MAAM,EAAE,IAC1B,OAAO,IACL,oBACA,mCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;AACvD;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,CAAC;CAC9B,OAAO,UAAU,eAAe,OAAO;AACzC;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAgB;EAAU;CAAK;CACzC,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;AACF"}
|
package/dist/at/uid.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/at/uid.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid Austrian UID. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Austrian VAT Identification Number. */
|
|
11
|
-
declare const uid:
|
|
10
|
+
declare const uid: CountryValidator<"AT">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, uid as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=uid.d.ts.map
|
package/dist/at/uid.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
+
import { luhnChecksum } from "../_checksums/luhn.js";
|
|
1
2
|
import { clean } from "../_util/clean.js";
|
|
2
3
|
import { randomDigits } from "../_util/generate.js";
|
|
3
4
|
import { err } from "../_util/result.js";
|
|
4
|
-
import { luhnChecksum } from "../_checksums/luhn.js";
|
|
5
5
|
import { isdigits } from "../_util/strings.js";
|
|
6
6
|
//#region src/at/uid.ts
|
|
7
|
-
/**
|
|
8
|
-
* UID (Umsatzsteuer-Identifikationsnummer).
|
|
9
|
-
*
|
|
10
|
-
* Austrian VAT identification number. Format:
|
|
11
|
-
* "U" + 7 digits + 1 check digit. Uses a
|
|
12
|
-
* modified Luhn algorithm.
|
|
13
|
-
*
|
|
14
|
-
* @see https://www.bmf.gv.at/
|
|
15
|
-
*/
|
|
16
7
|
const compact = (value) => {
|
|
17
8
|
let v = clean(value, " -/");
|
|
18
9
|
if (v.startsWith("AT") || v.startsWith("at")) v = v.slice(2);
|
|
@@ -49,6 +40,7 @@ const uid = {
|
|
|
49
40
|
"ATU"
|
|
50
41
|
],
|
|
51
42
|
candidatePattern: "ATU\\d{8}",
|
|
43
|
+
scope: "country",
|
|
52
44
|
country: "AT",
|
|
53
45
|
entityType: "company",
|
|
54
46
|
sourceUrl: "https://www.bmf.gv.at/",
|
package/dist/at/uid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uid.js","names":[],"sources":["../../src/at/uid.ts"],"sourcesContent":["/**\n * UID (Umsatzsteuer-Identifikationsnummer).\n *\n * Austrian VAT identification number. Format:\n * \"U\" + 7 digits + 1 check digit. Uses a\n * modified Luhn algorithm.\n *\n * @see https://www.bmf.gv.at/\n */\n\nimport { luhnChecksum } from \"#checksums/luhn\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\
|
|
1
|
+
{"version":3,"file":"uid.js","names":[],"sources":["../../src/at/uid.ts"],"sourcesContent":["/**\n * UID (Umsatzsteuer-Identifikationsnummer).\n *\n * Austrian VAT identification number. Format:\n * \"U\" + 7 digits + 1 check digit. Uses a\n * modified Luhn algorithm.\n *\n * @see https://www.bmf.gv.at/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { luhnChecksum } from \"#checksums/luhn\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/\");\n if (v.startsWith(\"AT\") || v.startsWith(\"at\")) {\n v = v.slice(2);\n }\n return v.toUpperCase();\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Austrian UID must be U + 8 digits\",\n );\n }\n if (v[0] !== \"U\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Austrian UID must start with U\",\n );\n }\n const digits = v.slice(1);\n if (!isdigits(digits)) {\n return err(\n \"INVALID_FORMAT\",\n \"Austrian UID must be U + 8 digits\",\n );\n }\n const cs = luhnChecksum(digits.slice(0, 7));\n const check = (((6 - cs) % 10) + 10) % 10;\n if (check < 0 || check !== Number(digits[7])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Austrian UID check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `AT${compact(value)}`;\n\n/** Generate a random valid Austrian UID. */\nconst generate = (): string => {\n const payload = randomDigits(7);\n const cs = luhnChecksum(payload);\n const check = (((6 - cs) % 10) + 10) % 10;\n return \"U\" + payload + String(check);\n};\n\n/** Austrian VAT Identification Number. */\nconst uid: CountryValidator<\"AT\"> = {\n name: \"Austrian VAT Number\",\n localName: \"Umsatzsteuer-Identifikationsnummer\",\n abbreviation: \"UID\",\n aliases: [\n \"UID\",\n \"Umsatzsteuer-Identifikationsnummer\",\n \"ATU\",\n ] as const,\n candidatePattern: \"ATU\\\\d{8}\",\n scope: \"country\",\n country: \"AT\",\n entityType: \"company\",\n sourceUrl: \"https://www.bmf.gv.at/\",\n examples: [\"U13585627\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default uid;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAqBA,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,KAAK;CAC1B,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,GACzC,IAAI,EAAE,MAAM,CAAC;CAEf,OAAO,EAAE,YAAY;AACvB;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,mCACF;CAEF,IAAI,EAAE,OAAO,KACX,OAAO,IACL,qBACA,gCACF;CAEF,MAAM,SAAS,EAAE,MAAM,CAAC;CACxB,IAAI,CAAC,SAAS,MAAM,GAClB,OAAO,IACL,kBACA,mCACF;CAGF,MAAM,UAAW,IADN,aAAa,OAAO,MAAM,GAAG,CAAC,CACnB,KAAK,KAAM,MAAM;CACvC,IAAI,QAAQ,KAAK,UAAU,OAAO,OAAO,EAAE,GACzC,OAAO,IACL,oBACA,mCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UACd,KAAK,QAAQ,KAAK;;AAGpB,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,CAAC;CAE9B,MAAM,UAAW,IADN,aAAa,OACF,KAAK,KAAM,MAAM;CACvC,OAAO,MAAM,UAAU,OAAO,KAAK;AACrC;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;AACF"}
|
package/dist/at/vnr.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/at/vnr.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
7
|
+
/** Generate a random valid Austrian VNR. */
|
|
8
|
+
declare const generate: () => string;
|
|
8
9
|
/** Austrian Social Insurance Number. */
|
|
9
|
-
declare const vnr:
|
|
10
|
+
declare const vnr: CountryValidator<"AT">;
|
|
10
11
|
//#endregion
|
|
11
|
-
export { compact, vnr as default, format, validate };
|
|
12
|
+
export { compact, vnr as default, format, generate, validate };
|
|
12
13
|
//# sourceMappingURL=vnr.d.ts.map
|
package/dist/at/vnr.js
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
2
3
|
import { err } from "../_util/result.js";
|
|
3
4
|
import { isdigits } from "../_util/strings.js";
|
|
4
5
|
//#region src/at/vnr.ts
|
|
5
6
|
/**
|
|
6
|
-
* VNR (Versicherungsnummer).
|
|
7
|
-
*
|
|
8
|
-
* Austrian social insurance number. 10 digits: 3-digit
|
|
9
|
-
* serial + 1 check digit + 6-digit birth date (DDMMYY).
|
|
10
|
-
* The check digit is computed using a weighted sum
|
|
11
|
-
* mod 11 over the 9 non-check digits.
|
|
12
|
-
*
|
|
13
|
-
* @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer#%C3%96sterreich
|
|
14
|
-
* @see https://www.sozialversicherung.at/
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
7
|
* Weights for the 9 non-check digits (positions
|
|
18
8
|
* 0,1,2, then 4,5,6,7,8,9). Check digit is at
|
|
19
9
|
* position 3 and equals the weighted sum mod 11.
|
|
@@ -34,12 +24,12 @@ const validate = (value) => {
|
|
|
34
24
|
const v = compact(value);
|
|
35
25
|
if (v.length !== 10) return err("INVALID_LENGTH", "Austrian VNR must be 10 digits");
|
|
36
26
|
if (!isdigits(v)) return err("INVALID_FORMAT", "Austrian VNR must contain only digits");
|
|
27
|
+
if (v[0] === "0") return err("INVALID_COMPONENT", "Austrian VNR serial must not start with zero");
|
|
37
28
|
const day = Number(v.slice(4, 6));
|
|
38
|
-
|
|
39
|
-
if (day < 1 || day > 31 || month < 1 || month > 12) return err("INVALID_COMPONENT", "Austrian VNR contains an invalid birth date");
|
|
29
|
+
if (day < 1 || day > 31) return err("INVALID_COMPONENT", "Austrian VNR day field must be within 01-31");
|
|
40
30
|
const digits = v.slice(0, 3) + v.slice(4);
|
|
41
31
|
let sum = 0;
|
|
42
|
-
for (
|
|
32
|
+
for (const [i, weight] of WEIGHTS.entries()) sum += Number(digits[i]) * weight;
|
|
43
33
|
const check = sum % 11;
|
|
44
34
|
if (check === 10) return err("INVALID_CHECKSUM", "Austrian VNR check digit is invalid (mod 11 remainder is 10)");
|
|
45
35
|
if (check !== Number(v[3])) return err("INVALID_CHECKSUM", "Austrian VNR check digit mismatch");
|
|
@@ -52,6 +42,21 @@ const format = (value) => {
|
|
|
52
42
|
const v = compact(value);
|
|
53
43
|
return `${v.slice(0, 4)} ${v.slice(4, 6)}${v.slice(6, 8)}${v.slice(8)}`;
|
|
54
44
|
};
|
|
45
|
+
/** Generate a random valid Austrian VNR. */
|
|
46
|
+
const generate = () => {
|
|
47
|
+
for (;;) {
|
|
48
|
+
const serial = String(randomInt(1, 9)) + randomDigits(2);
|
|
49
|
+
const day = String(randomInt(1, 28)).padStart(2, "0");
|
|
50
|
+
const month = String(randomInt(1, 12)).padStart(2, "0");
|
|
51
|
+
const year = String(randomInt(0, 99)).padStart(2, "0");
|
|
52
|
+
const digits = `${serial}${day}${month}${year}`;
|
|
53
|
+
let sum = 0;
|
|
54
|
+
for (const [i, weight] of WEIGHTS.entries()) sum += Number(digits[i]) * weight;
|
|
55
|
+
const check = sum % 11;
|
|
56
|
+
if (check === 10) continue;
|
|
57
|
+
return `${serial}${String(check)}${day}${month}${year}`;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
55
60
|
/** Austrian Social Insurance Number. */
|
|
56
61
|
const vnr = {
|
|
57
62
|
name: "Austrian Social Insurance Number",
|
|
@@ -64,6 +69,7 @@ const vnr = {
|
|
|
64
69
|
"Sozialversicherungsnummer"
|
|
65
70
|
],
|
|
66
71
|
candidatePattern: "\\d{4}\\s?\\d{6}",
|
|
72
|
+
scope: "country",
|
|
67
73
|
country: "AT",
|
|
68
74
|
entityType: "person",
|
|
69
75
|
sourceUrl: "https://de.wikipedia.org/wiki/Sozialversicherungsnummer",
|
|
@@ -71,9 +77,10 @@ const vnr = {
|
|
|
71
77
|
examples: ["1237010180"],
|
|
72
78
|
compact,
|
|
73
79
|
format,
|
|
74
|
-
validate
|
|
80
|
+
validate,
|
|
81
|
+
generate
|
|
75
82
|
};
|
|
76
83
|
//#endregion
|
|
77
|
-
export { compact, vnr as default, format, validate };
|
|
84
|
+
export { compact, vnr as default, format, generate, validate };
|
|
78
85
|
|
|
79
86
|
//# sourceMappingURL=vnr.js.map
|
package/dist/at/vnr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vnr.js","names":[],"sources":["../../src/at/vnr.ts"],"sourcesContent":["/**\n * VNR (Versicherungsnummer).\n *\n * Austrian social insurance number. 10 digits: 3-digit\n * serial + 1 check digit + 6-digit birth date (DDMMYY).\n * The check digit is computed using a weighted sum\n * mod 11 over the 9 non-check digits.\n *\n * @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer#%C3%96sterreich\n * @see https://www.sozialversicherung.at
|
|
1
|
+
{"version":3,"file":"vnr.js","names":[],"sources":["../../src/at/vnr.ts"],"sourcesContent":["/**\n * VNR (Versicherungsnummer).\n *\n * Austrian social insurance number. 10 digits: 3-digit\n * serial + 1 check digit + 6-digit birth date (DDMMYY).\n * The check digit is computed using a weighted sum\n * mod 11 over the 9 non-check digits.\n *\n * The 6-digit \"birth date\" field is not always a real\n * calendar date. Sozialversicherung.at documents that\n * persons with unknown date of birth are issued\n * substitute values (01.01. or 01.07.), and that\n * months 13, 14, etc. are issued when the daily serial\n * pool for a given substitute date is exhausted. We\n * therefore do not enforce a calendar-valid month here.\n * The day field, however, is always within 01-31 — even\n * in the documented overflow cases the day stays \"01\"\n * — so we keep the day-bounds check.\n *\n * @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer#%C3%96sterreich\n * @see https://www.sozialversicherung.at/cdscontent/?contentid=10007.820902&viewmode=content\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\n/**\n * Weights for the 9 non-check digits (positions\n * 0,1,2, then 4,5,6,7,8,9). Check digit is at\n * position 3 and equals the weighted sum mod 11.\n */\nconst WEIGHTS = [3, 7, 9, 5, 8, 4, 2, 1, 6] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -/\").trim();\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"Austrian VNR must be 10 digits\",\n );\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Austrian VNR must contain only digits\",\n );\n }\n\n // Per sozialversicherung.at, the 3-digit serial\n // (positions 0-2) never starts with zero.\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Austrian VNR serial must not start with zero\",\n );\n }\n\n // Day (positions 4-5) is always within 01-31, even\n // in the documented substitute and overflow cases\n // where the month is shifted. The month is left\n // unchecked per the source.\n const day = Number(v.slice(4, 6));\n if (day < 1 || day > 31) {\n return err(\n \"INVALID_COMPONENT\",\n \"Austrian VNR day field must be within 01-31\",\n );\n }\n\n // Check digit at position 3: weighted sum of the\n // other 9 digits mod 11. If remainder is 10 the\n // number is invalid.\n const digits = v.slice(0, 3) + v.slice(4);\n let sum = 0;\n for (const [i, weight] of WEIGHTS.entries()) {\n sum += Number(digits[i]) * weight;\n }\n const check = sum % 11;\n if (check === 10) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Austrian VNR check digit is invalid (mod 11 \" +\n \"remainder is 10)\",\n );\n }\n if (check !== Number(v[3])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Austrian VNR check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v.slice(0, 4)} ${v.slice(4, 6)}${v.slice(6, 8)}${v.slice(8)}`;\n};\n\n/** Generate a random valid Austrian VNR. */\nconst generate = (): string => {\n for (;;) {\n // Serial must not start with zero (see validate).\n const serial =\n String(randomInt(1, 9)) + randomDigits(2);\n const day = String(randomInt(1, 28)).padStart(2, \"0\");\n const month = String(randomInt(1, 12)).padStart(2, \"0\");\n const year = String(randomInt(0, 99)).padStart(2, \"0\");\n const digits = `${serial}${day}${month}${year}`;\n\n let sum = 0;\n for (const [i, weight] of WEIGHTS.entries()) {\n sum += Number(digits[i]) * weight;\n }\n\n const check = sum % 11;\n if (check === 10) continue;\n return `${serial}${String(check)}${day}${month}${year}`;\n }\n};\n\n/** Austrian Social Insurance Number. */\nconst vnr: CountryValidator<\"AT\"> = {\n name: \"Austrian Social Insurance Number\",\n localName: \"Versicherungsnummer\",\n abbreviation: \"VNR\",\n aliases: [\n \"VNR\",\n \"SVNR\",\n \"Versicherungsnummer\",\n \"Sozialversicherungsnummer\",\n ] as const,\n candidatePattern: \"\\\\d{4}\\\\s?\\\\d{6}\",\n scope: \"country\",\n country: \"AT\",\n entityType: \"person\",\n sourceUrl:\n \"https://de.wikipedia.org/wiki/Sozialversicherungsnummer\",\n lengths: [10] as const,\n examples: [\"1237010180\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vnr;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;;;;;;AAsCA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAE1C,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,EAAE,KAAK;AAE3B,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,gCACF;CAGF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,uCACF;CAKF,IAAI,EAAE,OAAO,KACX,OAAO,IACL,qBACA,8CACF;CAOF,MAAM,MAAM,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAChC,IAAI,MAAM,KAAK,MAAM,IACnB,OAAO,IACL,qBACA,6CACF;CAMF,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;CACxC,IAAI,MAAM;CACV,KAAK,MAAM,CAAC,GAAG,WAAW,QAAQ,QAAQ,GACxC,OAAO,OAAO,OAAO,EAAE,IAAI;CAE7B,MAAM,QAAQ,MAAM;CACpB,IAAI,UAAU,IACZ,OAAO,IACL,oBACA,8DAEF;CAEF,IAAI,UAAU,OAAO,EAAE,EAAE,GACvB,OAAO,IACL,oBACA,mCACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACtE;;AAGA,MAAM,iBAAyB;CAC7B,SAAS;EAEP,MAAM,SACJ,OAAO,UAAU,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC;EAC1C,MAAM,MAAM,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;EACpD,MAAM,QAAQ,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;EACtD,MAAM,OAAO,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;EACrD,MAAM,SAAS,GAAG,SAAS,MAAM,QAAQ;EAEzC,IAAI,MAAM;EACV,KAAK,MAAM,CAAC,GAAG,WAAW,QAAQ,QAAQ,GACxC,OAAO,OAAO,OAAO,EAAE,IAAI;EAG7B,MAAM,QAAQ,MAAM;EACpB,IAAI,UAAU,IAAI;EAClB,OAAO,GAAG,SAAS,OAAO,KAAK,IAAI,MAAM,QAAQ;CACnD;AACF;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;AACF"}
|
package/dist/au/abn.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/au/abn.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid ABN. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Australian Business Number. */
|
|
11
|
-
declare const abn:
|
|
10
|
+
declare const abn: CountryValidator<"AU">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, abn as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=abn.d.ts.map
|
package/dist/au/abn.js
CHANGED
|
@@ -3,16 +3,6 @@ import { randomDigits } from "../_util/generate.js";
|
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
//#region src/au/abn.ts
|
|
6
|
-
/**
|
|
7
|
-
* ABN (Australian Business Number).
|
|
8
|
-
*
|
|
9
|
-
* 11-digit identifier. Subtract 1 from the first
|
|
10
|
-
* digit, then apply weights [10,1,3,5,7,9,11,13,
|
|
11
|
-
* 15,17,19]; sum mod 89 must equal 0.
|
|
12
|
-
*
|
|
13
|
-
* @see https://en.wikipedia.org/wiki/Australian_Business_Number
|
|
14
|
-
* @see https://abr.business.gov.au/
|
|
15
|
-
*/
|
|
16
6
|
const WEIGHTS = [
|
|
17
7
|
10,
|
|
18
8
|
1,
|
|
@@ -62,6 +52,7 @@ const abn = {
|
|
|
62
52
|
abbreviation: "ABN",
|
|
63
53
|
aliases: ["ABN", "Australian Business Number"],
|
|
64
54
|
candidatePattern: "\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{3}",
|
|
55
|
+
scope: "country",
|
|
65
56
|
country: "AU",
|
|
66
57
|
entityType: "company",
|
|
67
58
|
sourceUrl: "https://abr.business.gov.au/",
|
package/dist/au/abn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abn.js","names":[],"sources":["../../src/au/abn.ts"],"sourcesContent":["/**\n * ABN (Australian Business Number).\n *\n * 11-digit identifier. Subtract 1 from the first\n * digit, then apply weights [10,1,3,5,7,9,11,13,\n * 15,17,19]; sum mod 89 must equal 0.\n *\n * @see https://en.wikipedia.org/wiki/Australian_Business_Number\n * @see https://abr.business.gov.au/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"abn.js","names":[],"sources":["../../src/au/abn.ts"],"sourcesContent":["/**\n * ABN (Australian Business Number).\n *\n * 11-digit identifier. Subtract 1 from the first\n * digit, then apply weights [10,1,3,5,7,9,11,13,\n * 15,17,19]; sum mod 89 must equal 0.\n *\n * @see https://en.wikipedia.org/wiki/Australian_Business_Number\n * @see https://abr.business.gov.au/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [\n 10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,\n] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"ABN must contain only digits\",\n );\n }\n if (v.length !== 11) {\n return err(\"INVALID_LENGTH\", \"ABN must be 11 digits\");\n }\n\n let sum = 0;\n for (let i = 0; i < 11; i++) {\n let d = Number(v.charAt(i));\n if (i === 0) d -= 1;\n sum += d * (WEIGHTS[i] ?? 0);\n }\n if (sum % 89 !== 0) {\n return err(\"INVALID_CHECKSUM\", \"ABN checksum mismatch\");\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 11) {\n return `${v.slice(0, 2)} ${v.slice(2, 5)} ${v.slice(5, 8)} ${v.slice(8)}`;\n }\n return v;\n};\n\n/** Generate a random valid ABN. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(11);\n if (validate(c).valid) return c;\n }\n};\n\n/** Australian Business Number. */\nconst abn: CountryValidator<\"AU\"> = {\n name: \"Australian Business Number\",\n localName: \"Australian Business Number\",\n abbreviation: \"ABN\",\n aliases: [\"ABN\", \"Australian Business Number\"] as const,\n candidatePattern: \"\\\\d{2}\\\\s?\\\\d{3}\\\\s?\\\\d{3}\\\\s?\\\\d{3}\",\n scope: \"country\",\n country: \"AU\",\n entityType: \"company\",\n sourceUrl: \"https://abr.business.gov.au/\",\n examples: [\"83914571673\", \"51824753556\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default abn;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAqBA,MAAM,UAAU;CACd;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;AACrC;AAEA,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAEF,IAAI,EAAE,WAAW,IACf,OAAO,IAAI,kBAAkB,uBAAuB;CAGtD,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EAC3B,IAAI,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;EAC1B,IAAI,MAAM,GAAG,KAAK;EAClB,OAAO,KAAK,QAAQ,MAAM;CAC5B;CACA,IAAI,MAAM,OAAO,GACf,OAAO,IAAI,oBAAoB,uBAAuB;CAGxD,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;CAExE,OAAO;AACT;;AAGA,MAAM,iBAAyB;CAC7B,SAAS;EACP,MAAM,IAAI,aAAa,EAAE;EACzB,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;AACF;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,4BAA4B;CAC7C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,eAAe,aAAa;CACvC;CACA;CACA;CACA;AACF"}
|
package/dist/au/acn.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/au/acn.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid ACN. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Australian Company Number. */
|
|
11
|
-
declare const acn:
|
|
10
|
+
declare const acn: CountryValidator<"AU">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, acn as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=acn.d.ts.map
|
package/dist/au/acn.js
CHANGED
|
@@ -3,16 +3,6 @@ import { randomDigits } from "../_util/generate.js";
|
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
//#region src/au/acn.ts
|
|
6
|
-
/**
|
|
7
|
-
* ACN (Australian Company Number).
|
|
8
|
-
*
|
|
9
|
-
* 9-digit identifier. Weights [8,7,6,5,4,3,2,1]
|
|
10
|
-
* applied to the first 8 digits; check digit is
|
|
11
|
-
* (10 - sum % 10) % 10.
|
|
12
|
-
*
|
|
13
|
-
* @see https://en.wikipedia.org/wiki/Australian_Company_Number
|
|
14
|
-
* @see https://asic.gov.au/
|
|
15
|
-
*/
|
|
16
6
|
const WEIGHTS = [
|
|
17
7
|
8,
|
|
18
8
|
7,
|
|
@@ -55,6 +45,7 @@ const acn = {
|
|
|
55
45
|
abbreviation: "ACN",
|
|
56
46
|
aliases: ["ACN", "Australian Company Number"],
|
|
57
47
|
candidatePattern: "\\d{3}\\s?\\d{3}\\s?\\d{3}",
|
|
48
|
+
scope: "country",
|
|
58
49
|
country: "AU",
|
|
59
50
|
entityType: "company",
|
|
60
51
|
sourceUrl: "https://asic.gov.au/",
|
package/dist/au/acn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acn.js","names":[],"sources":["../../src/au/acn.ts"],"sourcesContent":["/**\n * ACN (Australian Company Number).\n *\n * 9-digit identifier. Weights [8,7,6,5,4,3,2,1]\n * applied to the first 8 digits; check digit is\n * (10 - sum % 10) % 10.\n *\n * @see https://en.wikipedia.org/wiki/Australian_Company_Number\n * @see https://asic.gov.au/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"acn.js","names":[],"sources":["../../src/au/acn.ts"],"sourcesContent":["/**\n * ACN (Australian Company Number).\n *\n * 9-digit identifier. Weights [8,7,6,5,4,3,2,1]\n * applied to the first 8 digits; check digit is\n * (10 - sum % 10) % 10.\n *\n * @see https://en.wikipedia.org/wiki/Australian_Company_Number\n * @see https://asic.gov.au/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 1] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"ACN must contain only digits\",\n );\n }\n if (v.length !== 9) {\n return err(\"INVALID_LENGTH\", \"ACN must be 9 digits\");\n }\n\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += Number(v.charAt(i)) * (WEIGHTS[i] ?? 0);\n }\n const check = (10 - (sum % 10)) % 10;\n if (check !== Number(v.charAt(8))) {\n return err(\n \"INVALID_CHECKSUM\",\n \"ACN check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 9) {\n return `${v.slice(0, 3)} ${v.slice(3, 6)} ${v.slice(6)}`;\n }\n return v;\n};\n\n/** Generate a random valid ACN. */\nconst generate = (): string => {\n const payload = randomDigits(8);\n let sum = 0;\n for (let i = 0; i < 8; i++)\n sum += Number(payload.charAt(i)) * (WEIGHTS[i] ?? 0);\n return payload + String((10 - (sum % 10)) % 10);\n};\n\n/** Australian Company Number. */\nconst acn: CountryValidator<\"AU\"> = {\n name: \"Australian Company Number\",\n localName: \"Australian Company Number\",\n abbreviation: \"ACN\",\n aliases: [\"ACN\", \"Australian Company Number\"] as const,\n candidatePattern: \"\\\\d{3}\\\\s?\\\\d{3}\\\\s?\\\\d{3}\",\n scope: \"country\",\n country: \"AU\",\n entityType: \"company\",\n sourceUrl: \"https://asic.gov.au/\",\n examples: [\"004085616\", \"010499966\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default acn;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAqBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAEvC,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAEF,IAAI,EAAE,WAAW,GACf,OAAO,IAAI,kBAAkB,sBAAsB;CAGrD,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,OAAO,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,QAAQ,MAAM;CAG9C,KADe,KAAM,MAAM,MAAO,OACpB,OAAO,EAAE,OAAO,CAAC,CAAC,GAC9B,OAAO,IACL,oBACA,0BACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;CAEvD,OAAO;AACT;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,CAAC;CAC9B,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,OAAO,OAAO,QAAQ,OAAO,CAAC,CAAC,KAAK,QAAQ,MAAM;CACpD,OAAO,UAAU,QAAQ,KAAM,MAAM,MAAO,EAAE;AAChD;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,2BAA2B;CAC5C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa,WAAW;CACnC;CACA;CACA;CACA;AACF"}
|
package/dist/au/mod.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import abn from "./abn.js";
|
|
3
2
|
import acn from "./acn.js";
|
|
4
3
|
import tfn from "./tfn.js";
|
|
5
4
|
|
|
6
5
|
//#region src/au/mod.d.ts
|
|
7
|
-
|
|
6
|
+
declare namespace mod_d_exports {
|
|
7
|
+
export { abn, acn, tfn };
|
|
8
|
+
}
|
|
8
9
|
//#endregion
|
|
9
10
|
export { abn, acn, mod_d_exports, tfn };
|
|
10
11
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/au/tfn.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/au/tfn.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid TFN. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Australian Tax File Number. */
|
|
11
|
-
declare const tfn:
|
|
10
|
+
declare const tfn: CountryValidator<"AU">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, tfn as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=tfn.d.ts.map
|
package/dist/au/tfn.js
CHANGED
|
@@ -3,16 +3,6 @@ import { randomDigits } from "../_util/generate.js";
|
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
//#region src/au/tfn.ts
|
|
6
|
-
/**
|
|
7
|
-
* TFN (Australian Tax File Number).
|
|
8
|
-
*
|
|
9
|
-
* 8 or 9 digit identifier. Weighted checksum with
|
|
10
|
-
* weights [1,4,3,7,5,8,6,9,10]; sum mod 11
|
|
11
|
-
* must equal 0.
|
|
12
|
-
*
|
|
13
|
-
* @see https://en.wikipedia.org/wiki/Tax_file_number
|
|
14
|
-
* @see https://www.ato.gov.au/Individuals/Tax-file-number/
|
|
15
|
-
*/
|
|
16
6
|
const WEIGHTS = [
|
|
17
7
|
1,
|
|
18
8
|
4,
|
|
@@ -56,6 +46,7 @@ const tfn = {
|
|
|
56
46
|
abbreviation: "TFN",
|
|
57
47
|
aliases: ["TFN", "Tax File Number"],
|
|
58
48
|
candidatePattern: "\\d{8,9}",
|
|
49
|
+
scope: "country",
|
|
59
50
|
country: "AU",
|
|
60
51
|
entityType: "person",
|
|
61
52
|
sourceUrl: "https://www.ato.gov.au/individuals-and-families/tax-file-number",
|
package/dist/au/tfn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tfn.js","names":[],"sources":["../../src/au/tfn.ts"],"sourcesContent":["/**\n * TFN (Australian Tax File Number).\n *\n * 8 or 9 digit identifier. Weighted checksum with\n * weights [1,4,3,7,5,8,6,9,10]; sum mod 11\n * must equal 0.\n *\n * @see https://en.wikipedia.org/wiki/Tax_file_number\n * @see https://www.ato.gov.au/Individuals/Tax-file-number/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"tfn.js","names":[],"sources":["../../src/au/tfn.ts"],"sourcesContent":["/**\n * TFN (Australian Tax File Number).\n *\n * 8 or 9 digit identifier. Weighted checksum with\n * weights [1,4,3,7,5,8,6,9,10]; sum mod 11\n * must equal 0.\n *\n * @see https://en.wikipedia.org/wiki/Tax_file_number\n * @see https://www.ato.gov.au/Individuals/Tax-file-number/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [1, 4, 3, 7, 5, 8, 6, 9, 10] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"TFN must contain only digits\",\n );\n }\n if (v.length !== 8 && v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"TFN must be 8 or 9 digits\",\n );\n }\n\n let sum = 0;\n for (let i = 0; i < v.length; i++) {\n sum += Number(v.charAt(i)) * (WEIGHTS[i] ?? 0);\n }\n if (sum % 11 !== 0) {\n return err(\"INVALID_CHECKSUM\", \"TFN checksum mismatch\");\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 8 || v.length === 9) {\n return `${v.slice(0, 3)} ${v.slice(3, 6)} ${v.slice(6)}`;\n }\n return v;\n};\n\n/** Generate a random valid TFN. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(9);\n if (validate(c).valid) return c;\n }\n};\n\n/** Australian Tax File Number. */\nconst tfn: CountryValidator<\"AU\"> = {\n name: \"Tax File Number\",\n localName: \"Tax File Number\",\n abbreviation: \"TFN\",\n aliases: [\"TFN\", \"Tax File Number\"] as const,\n candidatePattern: \"\\\\d{8,9}\",\n scope: \"country\",\n country: \"AU\",\n entityType: \"person\",\n sourceUrl:\n \"https://www.ato.gov.au/individuals-and-families/tax-file-number\",\n examples: [\"87650006\", \"123456782\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default tfn;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAqBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAE;AAE3C,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAEF,IAAI,EAAE,WAAW,KAAK,EAAE,WAAW,GACjC,OAAO,IACL,kBACA,2BACF;CAGF,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAC5B,OAAO,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,QAAQ,MAAM;CAE9C,IAAI,MAAM,OAAO,GACf,OAAO,IAAI,oBAAoB,uBAAuB;CAGxD,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,KAAK,EAAE,WAAW,GACjC,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;CAEvD,OAAO;AACT;;AAGA,MAAM,iBAAyB;CAC7B,SAAS;EACP,MAAM,IAAI,aAAa,CAAC;EACxB,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;AACF;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,iBAAiB;CAClC,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,YAAY,WAAW;CAClC;CACA;CACA;CACA;AACF"}
|
package/dist/az/mod.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import voen from "./voen.js";
|
|
3
2
|
|
|
4
3
|
//#region src/az/mod.d.ts
|
|
5
|
-
|
|
4
|
+
declare namespace mod_d_exports {
|
|
5
|
+
export { voen };
|
|
6
|
+
}
|
|
6
7
|
//#endregion
|
|
7
8
|
export { mod_d_exports, voen };
|
|
8
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/az/voen.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/az/voen.d.ts
|
|
4
|
-
|
|
5
4
|
/**
|
|
6
5
|
* Compact: strip spaces, prepend '0' if 9 digits.
|
|
7
6
|
*/
|
|
@@ -15,7 +14,7 @@ declare const generate: () => string;
|
|
|
15
14
|
*
|
|
16
15
|
* Examples sourced from python-stdnum test suite.
|
|
17
16
|
*/
|
|
18
|
-
declare const voen:
|
|
17
|
+
declare const voen: CountryValidator<"AZ">;
|
|
19
18
|
//#endregion
|
|
20
19
|
export { compact, voen as default, format, generate, validate };
|
|
21
20
|
//# sourceMappingURL=voen.d.ts.map
|
package/dist/az/voen.js
CHANGED
|
@@ -2,20 +2,6 @@ import { clean } from "../_util/clean.js";
|
|
|
2
2
|
import { randomDigits } from "../_util/generate.js";
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
//#region src/az/voen.ts
|
|
5
|
-
/**
|
|
6
|
-
* VÖEN (Vergi Ödəyicisinin Eyniləşdirmə Nömrəsi,
|
|
7
|
-
* Azerbaijani tax identification number).
|
|
8
|
-
*
|
|
9
|
-
* 10 digits: TTSSSSSSCD where:
|
|
10
|
-
* - TT = territorial unit code
|
|
11
|
-
* - SSSSSS = serial number
|
|
12
|
-
* - C = check digit (weighted sum mod 11)
|
|
13
|
-
* - D = legal status (1=legal person, 2=natural person)
|
|
14
|
-
*
|
|
15
|
-
* Ported from python-stdnum az.voen module.
|
|
16
|
-
*
|
|
17
|
-
* @see https://www.taxes.gov.az/
|
|
18
|
-
*/
|
|
19
5
|
/** Weights for check digit computation (positions 0-7). */
|
|
20
6
|
const WEIGHTS = [
|
|
21
7
|
4,
|
|
@@ -84,6 +70,7 @@ const voen = {
|
|
|
84
70
|
abbreviation: "VÖEN",
|
|
85
71
|
aliases: ["VÖEN"],
|
|
86
72
|
candidatePattern: "\\d{10}",
|
|
73
|
+
scope: "country",
|
|
87
74
|
country: "AZ",
|
|
88
75
|
entityType: "any",
|
|
89
76
|
lengths: [10],
|
package/dist/az/voen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voen.js","names":[],"sources":["../../src/az/voen.ts"],"sourcesContent":["/**\n * VÖEN (Vergi Ödəyicisinin Eyniləşdirmə Nömrəsi,\n * Azerbaijani tax identification number).\n *\n * 10 digits: TTSSSSSSCD where:\n * - TT = territorial unit code\n * - SSSSSS = serial number\n * - C = check digit (weighted sum mod 11)\n * - D = legal status (1=legal person, 2=natural person)\n *\n * Ported from python-stdnum az.voen module.\n *\n * @see https://www.taxes.gov.az/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"voen.js","names":[],"sources":["../../src/az/voen.ts"],"sourcesContent":["/**\n * VÖEN (Vergi Ödəyicisinin Eyniləşdirmə Nömrəsi,\n * Azerbaijani tax identification number).\n *\n * 10 digits: TTSSSSSSCD where:\n * - TT = territorial unit code\n * - SSSSSS = serial number\n * - C = check digit (weighted sum mod 11)\n * - D = legal status (1=legal person, 2=natural person)\n *\n * Ported from python-stdnum az.voen module.\n *\n * @see https://www.taxes.gov.az/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\n/** Weights for check digit computation (positions 0-7). */\nconst WEIGHTS = [4, 1, 8, 6, 2, 7, 5, 3] as const;\n\n/**\n * Compact: strip spaces, prepend '0' if 9 digits.\n */\nconst compact = (value: string): string => {\n let number = clean(value, \" \").trim();\n if (number.length === 9) {\n number = \"0\" + number;\n }\n return number;\n};\n\n/**\n * Calculate the check digit (position 8) using\n * weighted sum of the first 8 digits mod 11.\n */\nconst calcCheckDigit = (value: string): string | null => {\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += (WEIGHTS[i] ?? 0) * Number(value.charAt(i));\n }\n const result = sum % 11;\n return result === 10 ? null : String(result);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"Azerbaijani VÖEN must be 10 digits\",\n );\n }\n\n if (!/^\\d{10}$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Azerbaijani VÖEN must contain only digits\",\n );\n }\n\n // SAFETY: regex above guarantees length === 10.\n // eslint-disable-next-line no-non-null-assertion\n const lastDigit = v[9]!;\n if (lastDigit !== \"1\" && lastDigit !== \"2\") {\n return err(\n \"INVALID_COMPONENT\",\n \"VÖEN last digit must be 1 or 2\",\n );\n }\n\n const expected = calcCheckDigit(v);\n if (expected === null || v[8] !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"VÖEN check digit does not match\",\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, 3)} ${v.slice(3, 6)} ${v.slice(6, 10)}`;\n};\n\n/** Generate a random valid VOEN. */\nconst generate = (): string => {\n for (let i = 0; i < 100; i++) {\n const payload = randomDigits(8);\n const check = calcCheckDigit(payload);\n if (check === null) continue;\n const status = Math.random() < 0.5 ? \"1\" : \"2\";\n return payload + check + status;\n }\n throw new Error(\"Failed to generate valid VOEN\");\n};\n\n/**\n * Azerbaijani tax identification number (VÖEN).\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst voen: CountryValidator<\"AZ\"> = {\n name: \"Azerbaijani Tax ID\",\n localName: \"Vergi Ödəyicisinin Eyniləşdirmə Nömrəsi\",\n abbreviation: \"VÖEN\",\n aliases: [\"VÖEN\"] as const,\n candidatePattern: \"\\\\d{10}\",\n scope: \"country\",\n country: \"AZ\",\n entityType: \"any\",\n lengths: [10] as const,\n examples: [\"1401555071\", \"1400057421\"] as const,\n compact,\n format,\n validate,\n sourceUrl: \"https://www.taxes.gov.az/\",\n generate,\n};\n\nexport default voen;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAyBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;;;;AAKvC,MAAM,WAAW,UAA0B;CACzC,IAAI,SAAS,MAAM,OAAO,GAAG,EAAE,KAAK;CACpC,IAAI,OAAO,WAAW,GACpB,SAAS,MAAM;CAEjB,OAAO;AACT;;;;;AAMA,MAAM,kBAAkB,UAAiC;CACvD,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,QAAQ,QAAQ,MAAM,KAAK,OAAO,MAAM,OAAO,CAAC,CAAC;CAEnD,MAAM,SAAS,MAAM;CACrB,OAAO,WAAW,KAAK,OAAO,OAAO,MAAM;AAC7C;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,oCACF;CAGF,IAAI,CAAC,WAAW,KAAK,CAAC,GACpB,OAAO,IACL,kBACA,2CACF;CAKF,MAAM,YAAY,EAAE;CACpB,IAAI,cAAc,OAAO,cAAc,KACrC,OAAO,IACL,qBACA,gCACF;CAGF,MAAM,WAAW,eAAe,CAAC;CACjC,IAAI,aAAa,QAAQ,EAAE,OAAO,UAChC,OAAO,IACL,oBACA,iCACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE;AAC3D;;AAGA,MAAM,iBAAyB;CAC7B,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;EAC5B,MAAM,UAAU,aAAa,CAAC;EAC9B,MAAM,QAAQ,eAAe,OAAO;EACpC,IAAI,UAAU,MAAM;EACpB,MAAM,SAAS,KAAK,OAAO,IAAI,KAAM,MAAM;EAC3C,OAAO,UAAU,QAAQ;CAC3B;CACA,MAAM,IAAI,MAAM,+BAA+B;AACjD;;;;;;AAOA,MAAM,OAA+B;CACnC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,MAAM;CAChB,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,cAAc,YAAY;CACrC;CACA;CACA;CACA,WAAW;CACX;AACF"}
|
package/dist/ba/jmbg.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ParsedPersonId, ValidateResult
|
|
1
|
+
import { CountryValidator, ParsedPersonId, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ba/jmbg.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
@@ -9,7 +8,7 @@ declare const parse: (value: string) => ParsedPersonId | null;
|
|
|
9
8
|
/** Generate a random valid JMBG. */
|
|
10
9
|
declare const generate: () => string;
|
|
11
10
|
/** Bosnian Unique Master Citizen Number. */
|
|
12
|
-
declare const jmbg:
|
|
11
|
+
declare const jmbg: CountryValidator<"BA", ParsedPersonId>;
|
|
13
12
|
//#endregion
|
|
14
13
|
export { compact, jmbg as default, format, generate, parse, validate };
|
|
15
14
|
//# sourceMappingURL=jmbg.d.ts.map
|
package/dist/ba/jmbg.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
1
2
|
import { clean } from "../_util/clean.js";
|
|
3
|
+
import { isValidDate } from "../_util/date.js";
|
|
2
4
|
import { randomInt } from "../_util/generate.js";
|
|
3
5
|
import { err } from "../_util/result.js";
|
|
4
6
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
|
-
import { isValidDate } from "../_util/date.js";
|
|
7
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
8
|
const WEIGHTS = [
|
|
18
9
|
7,
|
|
19
10
|
6,
|
|
@@ -81,6 +72,7 @@ const jmbg = {
|
|
|
81
72
|
abbreviation: "JMBG",
|
|
82
73
|
aliases: ["JMBG", "matični broj"],
|
|
83
74
|
candidatePattern: "\\d{13}",
|
|
75
|
+
scope: "country",
|
|
84
76
|
country: "BA",
|
|
85
77
|
entityType: "person",
|
|
86
78
|
lengths: [13],
|
|
@@ -88,6 +80,7 @@ const jmbg = {
|
|
|
88
80
|
examples: ["0101006500006"],
|
|
89
81
|
compact,
|
|
90
82
|
format,
|
|
83
|
+
parse,
|
|
91
84
|
validate,
|
|
92
85
|
generate
|
|
93
86
|
};
|