@stll/stdnum 1.0.0 → 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/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.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.js.map +1 -1
- package/dist/_util/result.js.map +1 -1
- package/dist/_util/strings.js.map +1 -1
- package/dist/ad/nrt.d.ts +16 -2
- package/dist/ad/nrt.js +1 -14
- package/dist/ad/nrt.js.map +1 -1
- package/dist/ae/eid.d.ts +2 -2
- package/dist/ae/eid.js +2 -12
- package/dist/ae/eid.js.map +1 -1
- 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/nipt.d.ts +13 -2
- package/dist/al/nipt.js +1 -11
- package/dist/al/nipt.js.map +1 -1
- 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 -2
- package/dist/ar/cbu.js +1 -9
- package/dist/ar/cbu.js.map +1 -1
- package/dist/ar/cuit.d.ts +2 -2
- package/dist/ar/cuit.js +1 -17
- 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/at/businessid.d.ts +10 -2
- package/dist/at/businessid.js +1 -8
- package/dist/at/businessid.js.map +1 -1
- package/dist/at/tin.d.ts +2 -2
- package/dist/at/tin.js +1 -11
- package/dist/at/tin.js.map +1 -1
- package/dist/at/uid.d.ts +2 -2
- package/dist/at/uid.js +2 -10
- package/dist/at/uid.js.map +1 -1
- package/dist/at/vnr.d.ts +2 -2
- package/dist/at/vnr.js +4 -14
- package/dist/at/vnr.js.map +1 -1
- package/dist/au/abn.d.ts +2 -2
- package/dist/au/abn.js +1 -10
- package/dist/au/abn.js.map +1 -1
- package/dist/au/acn.d.ts +2 -2
- package/dist/au/acn.js +1 -10
- package/dist/au/acn.js.map +1 -1
- package/dist/au/tfn.d.ts +2 -2
- package/dist/au/tfn.js +1 -10
- package/dist/au/tfn.js.map +1 -1
- package/dist/az/voen.d.ts +2 -2
- package/dist/az/voen.js +1 -14
- package/dist/az/voen.js.map +1 -1
- package/dist/ba/jmbg.d.ts +2 -2
- package/dist/ba/jmbg.js +3 -11
- package/dist/ba/jmbg.js.map +1 -1
- package/dist/bd/nid.d.ts +23 -2
- package/dist/bd/nid.js +1 -21
- package/dist/bd/nid.js.map +1 -1
- package/dist/be/bis.d.ts +2 -2
- package/dist/be/bis.js +1 -11
- package/dist/be/bis.js.map +1 -1
- package/dist/be/nn.d.ts +2 -2
- package/dist/be/nn.js +1 -11
- package/dist/be/nn.js.map +1 -1
- package/dist/be/vat.d.ts +2 -2
- package/dist/be/vat.js +1 -9
- package/dist/be/vat.js.map +1 -1
- package/dist/bg/egn.d.ts +2 -2
- package/dist/bg/egn.js +3 -18
- package/dist/bg/egn.js.map +1 -1
- package/dist/bg/pnf.d.ts +2 -2
- package/dist/bg/pnf.js +1 -8
- package/dist/bg/pnf.js.map +1 -1
- package/dist/bg/vat.d.ts +2 -2
- package/dist/bg/vat.js +3 -9
- package/dist/bg/vat.js.map +1 -1
- package/dist/bh/cpr.d.ts +2 -2
- package/dist/bh/cpr.js +1 -17
- package/dist/bh/cpr.js.map +1 -1
- package/dist/bic.d.ts +13 -2
- package/dist/bic.js +1 -11
- package/dist/bic.js.map +1 -1
- package/dist/br/cnpj.d.ts +2 -2
- package/dist/br/cnpj.js +1 -20
- package/dist/br/cnpj.js.map +1 -1
- package/dist/br/cpf.d.ts +2 -2
- package/dist/br/cpf.js +1 -14
- package/dist/br/cpf.js.map +1 -1
- package/dist/by/unp.d.ts +2 -2
- package/dist/by/unp.js +3 -14
- package/dist/by/unp.js.map +1 -1
- package/dist/bz/tin.d.ts +2 -2
- package/dist/bz/tin.js +1 -26
- package/dist/bz/tin.js.map +1 -1
- package/dist/ca/bn.d.ts +2 -2
- package/dist/ca/bn.js +2 -10
- package/dist/ca/bn.js.map +1 -1
- package/dist/ca/sin.d.ts +2 -2
- package/dist/ca/sin.js +2 -10
- package/dist/ca/sin.js.map +1 -1
- package/dist/ch/ssn.d.ts +2 -2
- package/dist/ch/ssn.js +1 -9
- package/dist/ch/ssn.js.map +1 -1
- package/dist/ch/uid.d.ts +2 -2
- package/dist/ch/uid.js +1 -9
- package/dist/ch/uid.js.map +1 -1
- package/dist/ch/vat.d.ts +2 -2
- package/dist/ch/vat.js +1 -9
- package/dist/ch/vat.js.map +1 -1
- package/dist/cl/rut.d.ts +2 -2
- package/dist/cl/rut.js +1 -14
- package/dist/cl/rut.js.map +1 -1
- package/dist/cn/ric.d.ts +2 -2
- package/dist/cn/ric.js +3 -14
- package/dist/cn/ric.js.map +1 -1
- package/dist/cn/uscc.d.ts +2 -2
- package/dist/cn/uscc.js +1 -10
- package/dist/cn/uscc.js.map +1 -1
- package/dist/co/nit.d.ts +2 -2
- package/dist/co/nit.js +2 -12
- package/dist/co/nit.js.map +1 -1
- package/dist/cr/cpf.d.ts +18 -2
- package/dist/cr/cpf.js +1 -16
- package/dist/cr/cpf.js.map +1 -1
- package/dist/creditcard.d.ts +2 -2
- package/dist/creditcard.js +5 -14
- package/dist/creditcard.js.map +1 -1
- package/dist/cu/ni.d.ts +2 -2
- package/dist/cu/ni.js +2 -17
- package/dist/cu/ni.js.map +1 -1
- package/dist/cy/vat.d.ts +2 -2
- package/dist/cy/vat.js +1 -8
- package/dist/cy/vat.js.map +1 -1
- package/dist/cz/dic.d.ts +2 -2
- package/dist/cz/dic.js +7 -13
- package/dist/cz/dic.js.map +1 -1
- package/dist/cz/ico.d.ts +2 -2
- package/dist/cz/ico.js +2 -10
- package/dist/cz/ico.js.map +1 -1
- package/dist/cz/rc.d.ts +2 -2
- package/dist/cz/rc.js +2 -26
- package/dist/cz/rc.js.map +1 -1
- package/dist/de/handelsreg.d.ts +19 -2
- package/dist/de/handelsreg.js +1 -17
- package/dist/de/handelsreg.js.map +1 -1
- package/dist/de/idnr.d.ts +2 -2
- package/dist/de/idnr.js +2 -12
- package/dist/de/idnr.js.map +1 -1
- package/dist/de/stnr.d.ts +17 -2
- package/dist/de/stnr.js +1 -15
- package/dist/de/stnr.js.map +1 -1
- package/dist/de/svnr.d.ts +2 -2
- package/dist/de/svnr.js +2 -11
- package/dist/de/svnr.js.map +1 -1
- package/dist/de/vat.d.ts +2 -2
- package/dist/de/vat.js +2 -11
- package/dist/de/vat.js.map +1 -1
- package/dist/dk/cpr.d.ts +2 -2
- package/dist/dk/cpr.js +2 -10
- package/dist/dk/cpr.js.map +1 -1
- package/dist/dk/cvr.d.ts +2 -2
- package/dist/dk/cvr.js +2 -15
- package/dist/dk/cvr.js.map +1 -1
- package/dist/dk/vat.d.ts +2 -2
- package/dist/dk/vat.js +3 -13
- package/dist/dk/vat.js.map +1 -1
- package/dist/do/rnc.d.ts +2 -2
- package/dist/do/rnc.js +2 -16
- package/dist/do/rnc.js.map +1 -1
- package/dist/ec/ruc.d.ts +2 -2
- package/dist/ec/ruc.js +1 -18
- package/dist/ec/ruc.js.map +1 -1
- package/dist/ee/ik.d.ts +2 -2
- package/dist/ee/ik.js +3 -20
- package/dist/ee/ik.js.map +1 -1
- package/dist/ee/registrikood.d.ts +2 -2
- package/dist/ee/registrikood.js +1 -8
- package/dist/ee/registrikood.js.map +1 -1
- package/dist/ee/vat.d.ts +2 -2
- package/dist/ee/vat.js +2 -10
- package/dist/ee/vat.js.map +1 -1
- 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 -2
- package/dist/es/cif.js +1 -10
- package/dist/es/cif.js.map +1 -1
- package/dist/es/dni.d.ts +2 -2
- package/dist/es/dni.js +1 -9
- package/dist/es/dni.js.map +1 -1
- package/dist/es/nie.d.ts +2 -2
- package/dist/es/nie.js +1 -9
- package/dist/es/nie.js.map +1 -1
- package/dist/es/nss.d.ts +2 -2
- package/dist/es/nss.js +1 -16
- package/dist/es/nss.js.map +1 -1
- package/dist/es/vat.d.ts +2 -2
- package/dist/es/vat.js +5 -10
- package/dist/es/vat.js.map +1 -1
- package/dist/eu/vat.d.ts +2 -2
- package/dist/eu/vat.js +1 -0
- package/dist/eu/vat.js.map +1 -1
- package/dist/fi/hetu.d.ts +2 -2
- package/dist/fi/hetu.js +2 -10
- package/dist/fi/hetu.js.map +1 -1
- package/dist/fi/vat.d.ts +2 -2
- package/dist/fi/vat.js +3 -10
- package/dist/fi/vat.js.map +1 -1
- package/dist/fi/ytunnus.d.ts +2 -2
- package/dist/fi/ytunnus.js +2 -10
- package/dist/fi/ytunnus.js.map +1 -1
- package/dist/fr/nif.d.ts +2 -2
- package/dist/fr/nif.js +1 -9
- package/dist/fr/nif.js.map +1 -1
- package/dist/fr/nir.d.ts +2 -2
- package/dist/fr/nir.js +2 -14
- package/dist/fr/nir.js.map +1 -1
- package/dist/fr/siren.d.ts +2 -2
- package/dist/fr/siren.js +2 -10
- package/dist/fr/siren.js.map +1 -1
- package/dist/fr/siret.d.ts +2 -2
- package/dist/fr/siret.js +2 -11
- package/dist/fr/siret.js.map +1 -1
- package/dist/fr/tva.d.ts +2 -2
- package/dist/fr/tva.js +2 -12
- package/dist/fr/tva.js.map +1 -1
- package/dist/gb/nino.d.ts +12 -2
- package/dist/gb/nino.js +1 -10
- package/dist/gb/nino.js.map +1 -1
- package/dist/gb/sedol.d.ts +2 -2
- package/dist/gb/sedol.js +1 -11
- package/dist/gb/sedol.js.map +1 -1
- package/dist/gb/utr.d.ts +2 -2
- package/dist/gb/utr.js +2 -10
- package/dist/gb/utr.js.map +1 -1
- package/dist/gb/vat.d.ts +2 -2
- package/dist/gb/vat.js +2 -11
- package/dist/gb/vat.js.map +1 -1
- 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/tin.d.ts +2 -2
- package/dist/gh/tin.js +1 -15
- package/dist/gh/tin.js.map +1 -1
- package/dist/gr/amka.d.ts +2 -2
- package/dist/gr/amka.js +3 -11
- package/dist/gr/amka.js.map +1 -1
- package/dist/gr/vat.d.ts +2 -2
- package/dist/gr/vat.js +1 -10
- package/dist/gr/vat.js.map +1 -1
- package/dist/gt/nit.d.ts +2 -2
- package/dist/gt/nit.js +1 -12
- package/dist/gt/nit.js.map +1 -1
- package/dist/hk/hkid.d.ts +2 -2
- package/dist/hk/hkid.js +1 -10
- package/dist/hk/hkid.js.map +1 -1
- package/dist/hr/vat.d.ts +2 -2
- package/dist/hr/vat.js +2 -9
- package/dist/hr/vat.js.map +1 -1
- package/dist/hu/vat.d.ts +2 -2
- package/dist/hu/vat.js +3 -10
- package/dist/hu/vat.js.map +1 -1
- package/dist/iban.d.ts +2 -2
- package/dist/iban.js +2 -8
- package/dist/iban.js.map +1 -1
- package/dist/id/npwp.d.ts +2 -2
- package/dist/id/npwp.js +3 -13
- package/dist/id/npwp.js.map +1 -1
- package/dist/ie/pps.d.ts +2 -2
- package/dist/ie/pps.js +1 -10
- package/dist/ie/pps.js.map +1 -1
- package/dist/ie/vat.d.ts +2 -2
- package/dist/ie/vat.js +1 -9
- package/dist/ie/vat.js.map +1 -1
- package/dist/il/idnr.d.ts +2 -2
- package/dist/il/idnr.js +2 -9
- package/dist/il/idnr.js.map +1 -1
- package/dist/in/aadhaar.d.ts +2 -2
- package/dist/in/aadhaar.js +2 -12
- package/dist/in/aadhaar.js.map +1 -1
- package/dist/in/gstin.d.ts +2 -2
- package/dist/in/gstin.js +1 -10
- package/dist/in/gstin.js.map +1 -1
- package/dist/in/pan.d.ts +15 -2
- package/dist/in/pan.js +1 -13
- package/dist/in/pan.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -6
- 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/nid.d.ts +2 -2
- package/dist/ir/nid.js +2 -24
- package/dist/ir/nid.js.map +1 -1
- package/dist/is/kennitala.d.ts +2 -2
- package/dist/is/kennitala.js +2 -13
- package/dist/is/kennitala.js.map +1 -1
- 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 -2
- package/dist/isin.js +2 -12
- package/dist/isin.js.map +1 -1
- package/dist/it/codicefiscale.d.ts +2 -2
- package/dist/it/codicefiscale.js +1 -21
- package/dist/it/codicefiscale.js.map +1 -1
- package/dist/it/iva.d.ts +2 -2
- package/dist/it/iva.js +2 -9
- package/dist/it/iva.js.map +1 -1
- package/dist/jp/cn.d.ts +2 -2
- package/dist/jp/cn.js +1 -9
- package/dist/jp/cn.js.map +1 -1
- package/dist/jp/mynumber.d.ts +2 -2
- 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/rrn.d.ts +2 -2
- package/dist/kr/rrn.js +2 -11
- package/dist/kr/rrn.js.map +1 -1
- package/dist/kw/civil.d.ts +2 -2
- package/dist/kw/civil.js +2 -14
- package/dist/kw/civil.js.map +1 -1
- package/dist/kz/iin.d.ts +2 -2
- package/dist/kz/iin.js +3 -18
- package/dist/kz/iin.js.map +1 -1
- package/dist/lei.d.ts +2 -2
- package/dist/lei.js +2 -11
- package/dist/lei.js.map +1 -1
- 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/nic.d.ts +2 -2
- package/dist/lk/nic.js +2 -14
- package/dist/lk/nic.js.map +1 -1
- package/dist/lt/asmens.d.ts +2 -2
- package/dist/lt/asmens.js +2 -1
- package/dist/lt/asmens.js.map +1 -1
- package/dist/lt/vat.d.ts +2 -2
- package/dist/lt/vat.js +2 -10
- package/dist/lt/vat.js.map +1 -1
- package/dist/lu/vat.d.ts +2 -2
- package/dist/lu/vat.js +2 -8
- package/dist/lu/vat.js.map +1 -1
- package/dist/luhn.d.ts +2 -2
- package/dist/luhn.js +2 -9
- package/dist/luhn.js.map +1 -1
- package/dist/lv/vat.d.ts +2 -2
- package/dist/lv/vat.js +2 -28
- package/dist/lv/vat.js.map +1 -1
- package/dist/ma/ice.d.ts +2 -2
- package/dist/ma/ice.js +2 -11
- package/dist/ma/ice.js.map +1 -1
- package/dist/mc/tva.d.ts +2 -2
- package/dist/mc/tva.js +1 -0
- package/dist/mc/tva.js.map +1 -1
- package/dist/md/idno.d.ts +2 -2
- package/dist/md/idno.js +1 -10
- package/dist/md/idno.js.map +1 -1
- package/dist/me/pib.d.ts +2 -2
- package/dist/me/pib.js +2 -10
- package/dist/me/pib.js.map +1 -1
- package/dist/mk/edb.d.ts +2 -2
- package/dist/mk/edb.js +2 -11
- package/dist/mk/edb.js.map +1 -1
- package/dist/mt/vat.d.ts +2 -2
- 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/mx/clabe.d.ts +2 -2
- package/dist/mx/clabe.js +1 -14
- package/dist/mx/clabe.js.map +1 -1
- package/dist/mx/curp.d.ts +2 -2
- package/dist/mx/curp.js +3 -17
- package/dist/mx/curp.js.map +1 -1
- package/dist/mx/rfc.d.ts +2 -2
- package/dist/mx/rfc.js +3 -19
- package/dist/mx/rfc.js.map +1 -1
- package/dist/my/nric.d.ts +2 -2
- package/dist/my/nric.js +2 -14
- package/dist/my/nric.js.map +1 -1
- 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/ruc.d.ts +2 -2
- package/dist/ni/ruc.js +1 -23
- package/dist/ni/ruc.js.map +1 -1
- package/dist/nl/bsn.d.ts +2 -2
- 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/vat.d.ts +2 -2
- package/dist/nl/vat.js +1 -13
- package/dist/nl/vat.js.map +1 -1
- package/dist/no/fodselsnummer.d.ts +2 -2
- package/dist/no/fodselsnummer.js +2 -10
- package/dist/no/fodselsnummer.js.map +1 -1
- package/dist/no/mva.d.ts +2 -2
- package/dist/no/mva.js +1 -8
- package/dist/no/mva.js.map +1 -1
- package/dist/no/orgnr.d.ts +2 -2
- package/dist/no/orgnr.js +2 -8
- package/dist/no/orgnr.js.map +1 -1
- package/dist/nz/ird.d.ts +2 -2
- package/dist/nz/ird.js +2 -11
- package/dist/nz/ird.js.map +1 -1
- package/dist/pa/ruc.d.ts +2 -2
- package/dist/pa/ruc.js +1 -18
- package/dist/pa/ruc.js.map +1 -1
- package/dist/patterns.d.ts +8 -7
- package/dist/patterns.js +3 -5
- package/dist/patterns.js.map +1 -1
- package/dist/pe/ruc.d.ts +2 -2
- package/dist/pe/ruc.js +1 -15
- package/dist/pe/ruc.js.map +1 -1
- 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/pl/nip.d.ts +2 -2
- package/dist/pl/nip.js +2 -10
- package/dist/pl/nip.js.map +1 -1
- package/dist/pl/pesel.d.ts +2 -2
- package/dist/pl/pesel.js +3 -13
- package/dist/pl/pesel.js.map +1 -1
- package/dist/pl/regon.d.ts +2 -2
- package/dist/pl/regon.js +2 -11
- package/dist/pl/regon.js.map +1 -1
- package/dist/pt/cc.d.ts +2 -2
- package/dist/pt/cc.js +1 -9
- package/dist/pt/cc.js.map +1 -1
- package/dist/pt/vat.d.ts +2 -2
- package/dist/pt/vat.js +3 -11
- package/dist/pt/vat.js.map +1 -1
- package/dist/ro/cnp.d.ts +2 -2
- package/dist/ro/cnp.js +4 -14
- package/dist/ro/cnp.js.map +1 -1
- package/dist/ro/vat.d.ts +2 -2
- package/dist/ro/vat.js +13 -11
- package/dist/ro/vat.js.map +1 -1
- package/dist/rs/pib.d.ts +2 -2
- package/dist/rs/pib.js +1 -9
- package/dist/rs/pib.js.map +1 -1
- package/dist/ru/inn.d.ts +2 -2
- package/dist/ru/inn.js +1 -11
- package/dist/ru/inn.js.map +1 -1
- package/dist/se/orgnr.d.ts +2 -2
- package/dist/se/orgnr.js +2 -9
- package/dist/se/orgnr.js.map +1 -1
- package/dist/se/personnummer.d.ts +2 -2
- package/dist/se/personnummer.js +7 -15
- package/dist/se/personnummer.js.map +1 -1
- package/dist/se/vat.d.ts +2 -2
- package/dist/se/vat.js +3 -10
- package/dist/se/vat.js.map +1 -1
- package/dist/sg/uen.d.ts +2 -2
- package/dist/sg/uen.js +1 -15
- package/dist/sg/uen.js.map +1 -1
- package/dist/si/emso.d.ts +2 -2
- package/dist/si/emso.js +3 -18
- package/dist/si/emso.js.map +1 -1
- package/dist/si/vat.d.ts +2 -2
- package/dist/si/vat.js +3 -12
- package/dist/si/vat.js.map +1 -1
- package/dist/sk/dic.d.ts +2 -2
- package/dist/sk/dic.js +1 -0
- package/dist/sk/dic.js.map +1 -1
- package/dist/sk/ico.d.ts +2 -2
- package/dist/sk/ico.js +1 -0
- package/dist/sk/ico.js.map +1 -1
- package/dist/sk/rc.d.ts +2 -2
- package/dist/sk/rc.js +1 -0
- package/dist/sk/rc.js.map +1 -1
- package/dist/th/tin.d.ts +2 -2
- package/dist/th/tin.js +1 -11
- package/dist/th/tin.js.map +1 -1
- package/dist/tr/tckimlik.d.ts +2 -2
- package/dist/tr/tckimlik.js +1 -20
- package/dist/tr/tckimlik.js.map +1 -1
- package/dist/tr/vkn.d.ts +2 -2
- package/dist/tr/vkn.js +1 -20
- package/dist/tr/vkn.js.map +1 -1
- package/dist/tw/ubn.d.ts +2 -2
- package/dist/tw/ubn.js +1 -11
- package/dist/tw/ubn.js.map +1 -1
- package/dist/types.d.ts +26 -4
- package/dist/ua/edrpou.d.ts +2 -2
- package/dist/ua/edrpou.js +1 -11
- package/dist/ua/edrpou.js.map +1 -1
- package/dist/us/ein.d.ts +12 -2
- package/dist/us/ein.js +1 -10
- package/dist/us/ein.js.map +1 -1
- package/dist/us/itin.d.ts +13 -2
- package/dist/us/itin.js +1 -11
- package/dist/us/itin.js.map +1 -1
- package/dist/us/rtn.d.ts +2 -2
- package/dist/us/rtn.js +3 -18
- 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/rut.d.ts +2 -2
- package/dist/uy/rut.js +1 -14
- package/dist/uy/rut.js.map +1 -1
- package/dist/ve/rif.d.ts +2 -2
- package/dist/ve/rif.js +2 -15
- package/dist/ve/rif.js.map +1 -1
- package/dist/vn/mst.d.ts +2 -2
- package/dist/vn/mst.js +1 -12
- package/dist/vn/mst.js.map +1 -1
- package/dist/za/idnr.d.ts +2 -2
- package/dist/za/idnr.js +3 -16
- package/dist/za/idnr.js.map +1 -1
- package/package.json +22 -12
- package/src/_checksums/mod1110.ts +1 -1
- package/src/ad/nrt.ts +7 -3
- 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 +7 -3
- package/src/ar/cuit.ts +7 -3
- 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 +37 -9
- 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 +7 -3
- package/src/ba/jmbg.ts +8 -7
- package/src/bd/nid.ts +7 -3
- 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 +8 -7
- package/src/bg/pnf.ts +7 -3
- package/src/bg/vat.ts +8 -3
- package/src/bh/cpr.ts +7 -3
- package/src/bic.ts +7 -3
- package/src/br/cnpj.ts +7 -3
- package/src/br/cpf.ts +7 -3
- package/src/by/unp.ts +10 -5
- package/src/bz/tin.ts +7 -3
- 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 +7 -3
- package/src/cn/ric.ts +8 -7
- package/src/cn/uscc.ts +7 -3
- package/src/co/nit.ts +8 -4
- package/src/cr/cpf.ts +7 -3
- package/src/creditcard.ts +10 -6
- package/src/cu/ni.ts +8 -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 +8 -7
- package/src/de/handelsreg.ts +7 -3
- package/src/de/idnr.ts +7 -3
- package/src/de/stnr.ts +7 -3
- package/src/de/svnr.ts +7 -3
- package/src/de/vat.ts +7 -3
- package/src/dk/cpr.ts +8 -7
- package/src/dk/cvr.ts +7 -3
- package/src/dk/vat.ts +8 -3
- package/src/do/rnc.ts +7 -3
- package/src/ec/ruc.ts +7 -3
- package/src/ee/ik.ts +8 -7
- package/src/ee/registrikood.ts +8 -4
- package/src/ee/vat.ts +7 -3
- package/src/eg/tn.ts +7 -3
- package/src/es/cif.ts +8 -4
- package/src/es/dni.ts +7 -3
- package/src/es/nie.ts +8 -4
- package/src/es/nss.ts +7 -3
- package/src/es/vat.ts +13 -5
- package/src/eu/vat.ts +10 -6
- package/src/fi/hetu.ts +8 -7
- 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 +8 -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 +7 -3
- package/src/gb/sedol.ts +7 -3
- 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 +7 -3
- package/src/gr/amka.ts +7 -3
- package/src/gr/vat.ts +7 -3
- package/src/gt/nit.ts +7 -3
- package/src/hk/hkid.ts +7 -3
- 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 +7 -3
- package/src/in/pan.ts +7 -3
- package/src/index.ts +3 -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 +7 -3
- package/src/it/codicefiscale.ts +11 -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 +8 -7
- package/src/kw/civil.ts +8 -7
- package/src/kz/iin.ts +8 -8
- package/src/lei.ts +7 -3
- package/src/li/peid.ts +7 -3
- package/src/lk/nic.ts +8 -7
- 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 +7 -3
- package/src/lv/vat.ts +7 -3
- 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 +9 -8
- package/src/mx/rfc.ts +8 -4
- package/src/my/nric.ts +8 -7
- 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 +7 -3
- package/src/no/fodselsnummer.ts +11 -7
- package/src/no/mva.ts +9 -5
- package/src/no/orgnr.ts +7 -3
- package/src/nz/ird.ts +8 -4
- package/src/pa/ruc.ts +7 -3
- package/src/patterns.ts +49 -18
- package/src/pe/ruc.ts +7 -3
- package/src/ph/philid.ts +7 -3
- package/src/pk/cnic.ts +7 -3
- package/src/pl/nip.ts +7 -3
- package/src/pl/pesel.ts +8 -7
- package/src/pl/regon.ts +7 -3
- package/src/pt/cc.ts +7 -3
- package/src/pt/vat.ts +8 -3
- package/src/ro/cnp.ts +15 -8
- package/src/ro/vat.ts +8 -3
- package/src/rs/pib.ts +7 -3
- package/src/ru/inn.ts +7 -3
- package/src/se/orgnr.ts +7 -3
- package/src/se/personnummer.ts +35 -33
- package/src/se/vat.ts +8 -3
- package/src/sg/uen.ts +7 -3
- package/src/si/emso.ts +8 -7
- 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 +6 -2
- 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 +7 -3
- package/src/types.ts +34 -3
- package/src/ua/edrpou.ts +7 -3
- package/src/us/ein.ts +7 -3
- package/src/us/itin.ts +7 -3
- package/src/us/rtn.ts +16 -8
- package/src/us/ssn.ts +7 -3
- package/src/uy/rut.ts +7 -3
- package/src/ve/rif.ts +8 -6
- package/src/vn/mst.ts +7 -3
- package/src/za/idnr.ts +8 -7
package/dist/ar/cbu.js
CHANGED
|
@@ -3,15 +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/ar/cbu.ts
|
|
6
|
-
/**
|
|
7
|
-
* CBU (Clave Bancaria Uniforme).
|
|
8
|
-
*
|
|
9
|
-
* Argentine bank account number used for electronic
|
|
10
|
-
* transfers. 22 digits: 3-digit bank + 4-digit branch
|
|
11
|
-
* + 1 check digit + 13-digit account + 1 check digit.
|
|
12
|
-
*
|
|
13
|
-
* @see https://es.wikipedia.org/wiki/Clave_bancaria_uniforme
|
|
14
|
-
*/
|
|
15
6
|
const WEIGHTS_BLOCK1 = [
|
|
16
7
|
7,
|
|
17
8
|
1,
|
|
@@ -72,6 +63,7 @@ const cbu = {
|
|
|
72
63
|
abbreviation: "CBU",
|
|
73
64
|
aliases: ["CBU", "Clave Bancaria Uniforme"],
|
|
74
65
|
candidatePattern: "\\d{22}",
|
|
66
|
+
scope: "country",
|
|
75
67
|
country: "AR",
|
|
76
68
|
entityType: "any",
|
|
77
69
|
sourceUrl: "https://es.wikipedia.org/wiki/Clave_bancaria_uniforme",
|
package/dist/ar/cbu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cbu.js","names":[],"sources":["../../src/ar/cbu.ts"],"sourcesContent":["/**\n * CBU (Clave Bancaria Uniforme).\n *\n * Argentine bank account number used for electronic\n * transfers. 22 digits: 3-digit bank + 4-digit branch\n * + 1 check digit + 13-digit account + 1 check digit.\n *\n * @see https://es.wikipedia.org/wiki/Clave_bancaria_uniforme\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"cbu.js","names":[],"sources":["../../src/ar/cbu.ts"],"sourcesContent":["/**\n * CBU (Clave Bancaria Uniforme).\n *\n * Argentine bank account number used for electronic\n * transfers. 22 digits: 3-digit bank + 4-digit branch\n * + 1 check digit + 13-digit account + 1 check digit.\n *\n * @see https://es.wikipedia.org/wiki/Clave_bancaria_uniforme\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_BLOCK1 = [7, 1, 3, 9, 7, 1, 3];\nconst WEIGHTS_BLOCK2 = [\n 3, 9, 7, 1, 3, 9, 7, 1, 3, 9, 7, 1, 3,\n];\n\nconst compact = (value: string): string =>\n clean(value, \" -\").trim();\n\nconst calcCheck = (\n digits: string,\n weights: readonly number[],\n): number => {\n let sum = 0;\n for (const [i, weight] of weights.entries()) {\n sum += Number(digits[i]) * weight;\n }\n return (10 - (sum % 10)) % 10;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 22) {\n return err(\"INVALID_LENGTH\", \"CBU must be 22 digits\");\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"CBU must contain only digits\",\n );\n }\n\n // First block: digits 0-6, check digit at 7\n const check1 = calcCheck(v.slice(0, 7), WEIGHTS_BLOCK1);\n if (check1 !== Number(v[7])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"CBU first check digit mismatch\",\n );\n }\n\n // Second block: digits 8-20, check digit at 21\n const check2 = calcCheck(v.slice(8, 21), WEIGHTS_BLOCK2);\n if (check2 !== Number(v[21])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"CBU second 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, 8)} ${v.slice(8)}`;\n};\n\n/** Generate a random valid CBU. */\nconst generate = (): string => {\n const block1 = randomDigits(7);\n const check1 = calcCheck(block1, WEIGHTS_BLOCK1);\n const block2 = randomDigits(13);\n const check2 = calcCheck(block2, WEIGHTS_BLOCK2);\n return block1 + String(check1) + block2 + String(check2);\n};\n\n/** Argentine Uniform Bank Key. */\nconst cbu: CountryValidator<\"AR\"> = {\n name: \"Argentine Bank Account Number\",\n localName: \"Clave Bancaria Uniforme\",\n abbreviation: \"CBU\",\n aliases: [\"CBU\", \"Clave Bancaria Uniforme\"] as const,\n candidatePattern: \"\\\\d{22}\",\n scope: \"country\",\n country: \"AR\",\n entityType: \"any\",\n sourceUrl:\n \"https://es.wikipedia.org/wiki/Clave_bancaria_uniforme\",\n lengths: [22] as const,\n examples: [\"2850590940090418135201\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default cbu;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAoBA,MAAM,iBAAiB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAC3C,MAAM,iBAAiB;CACrB;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AACtC;AAEA,MAAM,WAAW,UACf,MAAM,OAAO,IAAI,EAAE,KAAK;AAE1B,MAAM,aACJ,QACA,YACW;CACX,IAAI,MAAM;CACV,KAAK,MAAM,CAAC,GAAG,WAAW,QAAQ,QAAQ,GACxC,OAAO,OAAO,OAAO,EAAE,IAAI;CAE7B,QAAQ,KAAM,MAAM,MAAO;AAC7B;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,WAAW,IACf,OAAO,IAAI,kBAAkB,uBAAuB;CAGtD,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAKF,IADe,UAAU,EAAE,MAAM,GAAG,CAAC,GAAG,cAC/B,MAAM,OAAO,EAAE,EAAE,GACxB,OAAO,IACL,oBACA,gCACF;CAKF,IADe,UAAU,EAAE,MAAM,GAAG,EAAE,GAAG,cAChC,MAAM,OAAO,EAAE,GAAG,GACzB,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,CAAC;AACtC;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,SAAS,aAAa,CAAC;CAC7B,MAAM,SAAS,UAAU,QAAQ,cAAc;CAC/C,MAAM,SAAS,aAAa,EAAE;CAC9B,MAAM,SAAS,UAAU,QAAQ,cAAc;CAC/C,OAAO,SAAS,OAAO,MAAM,IAAI,SAAS,OAAO,MAAM;AACzD;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,yBAAyB;CAC1C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,wBAAwB;CACnC;CACA;CACA;CACA;AACF"}
|
package/dist/ar/cuit.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ar/cuit.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
@@ -12,7 +12,7 @@ declare const generate: () => string;
|
|
|
12
12
|
* Examples sourced from python-stdnum test suite
|
|
13
13
|
* (ar.cuit module).
|
|
14
14
|
*/
|
|
15
|
-
declare const cuit:
|
|
15
|
+
declare const cuit: CountryValidator<"AR">;
|
|
16
16
|
//#endregion
|
|
17
17
|
export { compact, cuit as default, format, generate, validate };
|
|
18
18
|
//# sourceMappingURL=cuit.d.ts.map
|
package/dist/ar/cuit.js
CHANGED
|
@@ -3,23 +3,6 @@ import { randomDigits, randomPick } from "../_util/generate.js";
|
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
//#region src/ar/cuit.ts
|
|
6
|
-
/**
|
|
7
|
-
* CUIT (Clave Única de Identificación Tributaria).
|
|
8
|
-
*
|
|
9
|
-
* Argentine tax identification number assigned by AFIP
|
|
10
|
-
* (Administración Federal de Ingresos Públicos). The
|
|
11
|
-
* number consists of 11 digits: a 2-digit type code,
|
|
12
|
-
* an 8-digit DNI number, and a single check digit
|
|
13
|
-
* computed using a weighted modulo 11 algorithm.
|
|
14
|
-
*
|
|
15
|
-
* Type codes: 20/23/24/27 = person, 30/33/34 = company,
|
|
16
|
-
* 50/51/55 = international.
|
|
17
|
-
*
|
|
18
|
-
* Format: XX-XXXXXXXX-X (11 digits).
|
|
19
|
-
*
|
|
20
|
-
* @see https://www.afip.gob.ar/
|
|
21
|
-
* @see https://en.wikipedia.org/wiki/CUIT_(Argentina)
|
|
22
|
-
*/
|
|
23
6
|
const VALID_TYPES = new Set([
|
|
24
7
|
"20",
|
|
25
8
|
"23",
|
|
@@ -107,6 +90,7 @@ const cuit = {
|
|
|
107
90
|
"Clave Única de Identificación Tributaria"
|
|
108
91
|
],
|
|
109
92
|
candidatePattern: "\\d{2}-?\\d{8}-?\\d",
|
|
93
|
+
scope: "country",
|
|
110
94
|
country: "AR",
|
|
111
95
|
entityType: "any",
|
|
112
96
|
compact,
|
package/dist/ar/cuit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cuit.js","names":[],"sources":["../../src/ar/cuit.ts"],"sourcesContent":["/**\n * CUIT (Clave Única de Identificación Tributaria).\n *\n * Argentine tax identification number assigned by AFIP\n * (Administración Federal de Ingresos Públicos). The\n * number consists of 11 digits: a 2-digit type code,\n * an 8-digit DNI number, and a single check digit\n * computed using a weighted modulo 11 algorithm.\n *\n * Type codes: 20/23/24/27 = person, 30/33/34 = company,\n * 50/51/55 = international.\n *\n * Format: XX-XXXXXXXX-X (11 digits).\n *\n * @see https://www.afip.gob.ar/\n * @see https://en.wikipedia.org/wiki/CUIT_(Argentina)\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomPick } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\
|
|
1
|
+
{"version":3,"file":"cuit.js","names":[],"sources":["../../src/ar/cuit.ts"],"sourcesContent":["/**\n * CUIT (Clave Única de Identificación Tributaria).\n *\n * Argentine tax identification number assigned by AFIP\n * (Administración Federal de Ingresos Públicos). The\n * number consists of 11 digits: a 2-digit type code,\n * an 8-digit DNI number, and a single check digit\n * computed using a weighted modulo 11 algorithm.\n *\n * Type codes: 20/23/24/27 = person, 30/33/34 = company,\n * 50/51/55 = international.\n *\n * Format: XX-XXXXXXXX-X (11 digits).\n *\n * @see https://www.afip.gob.ar/\n * @see https://en.wikipedia.org/wiki/CUIT_(Argentina)\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomPick } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst VALID_TYPES = new Set([\n \"20\",\n \"23\",\n \"24\",\n \"27\",\n \"30\",\n \"33\",\n \"34\",\n \"50\",\n \"51\",\n \"55\",\n]);\n\nconst WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2] as const;\n\nconst GENERATE_TYPES = [\n \"20\",\n \"23\",\n \"24\",\n \"27\",\n \"30\",\n \"33\",\n \"34\",\n] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -.\").trim();\n\n/**\n * Compute the CUIT check digit using weighted sum\n * mod 11. Weights: [5, 4, 3, 2, 7, 6, 5, 4, 3, 2].\n *\n * check = 11 - (sum % 11); if 11 -> 0, if 10 -> 9.\n */\nconst calcCheckDigit = (body: string): number => {\n let sum = 0;\n for (const [i, weight] of WEIGHTS.entries()) {\n sum += Number(body[i]) * weight;\n }\n const remainder = 11 - (sum % 11);\n if (remainder === 11) return 0;\n if (remainder === 10) return 9;\n return remainder;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 11) {\n return err(\"INVALID_LENGTH\", \"CUIT must be 11 digits\");\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"CUIT must contain only digits\",\n );\n }\n\n const typeCode = v.slice(0, 2);\n if (!VALID_TYPES.has(typeCode)) {\n return err(\n \"INVALID_COMPONENT\",\n \"CUIT has an invalid type code\",\n );\n }\n\n const expected = calcCheckDigit(v.slice(0, 10));\n if (Number(v[10]) !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"CUIT 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, 2)}-${v.slice(2, 10)}-${v.slice(10)}`;\n};\n\n/** Generate a random valid CUIT. */\nconst generate = (): string => {\n const type = randomPick(GENERATE_TYPES);\n const body = type + randomDigits(8);\n const check = calcCheckDigit(body);\n return body + String(check);\n};\n\n/**\n * Argentine CUIT (tax identification number).\n *\n * Examples sourced from python-stdnum test suite\n * (ar.cuit module).\n */\nconst cuit: CountryValidator<\"AR\"> = {\n name: \"Argentine Tax ID\",\n localName: \"Clave Única de Identificación Tributaria\",\n abbreviation: \"CUIT\",\n aliases: [\n \"CUIT\",\n \"CUIL\",\n \"Clave Única de Identificación Tributaria\",\n ] as const,\n candidatePattern: \"\\\\d{2}-?\\\\d{8}-?\\\\d\",\n scope: \"country\",\n country: \"AR\",\n entityType: \"any\",\n compact,\n format,\n validate,\n sourceUrl: \"https://www.afip.gob.ar/\",\n lengths: [11] as const,\n examples: [\"20267565393\", \"20055361682\"] as const,\n generate,\n};\n\nexport default cuit;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AA4BA,MAAM,cAAc,IAAI,IAAI;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAE7C,MAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,EAAE,KAAK;;;;;;;AAQ3B,MAAM,kBAAkB,SAAyB;CAC/C,IAAI,MAAM;CACV,KAAK,MAAM,CAAC,GAAG,WAAW,QAAQ,QAAQ,GACxC,OAAO,OAAO,KAAK,EAAE,IAAI;CAE3B,MAAM,YAAY,KAAM,MAAM;CAC9B,IAAI,cAAc,IAAI,OAAO;CAC7B,IAAI,cAAc,IAAI,OAAO;CAC7B,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,WAAW,IACf,OAAO,IAAI,kBAAkB,wBAAwB;CAGvD,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,+BACF;CAGF,MAAM,WAAW,EAAE,MAAM,GAAG,CAAC;CAC7B,IAAI,CAAC,YAAY,IAAI,QAAQ,GAC3B,OAAO,IACL,qBACA,+BACF;CAGF,MAAM,WAAW,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC;CAC9C,IAAI,OAAO,EAAE,GAAG,MAAM,UACpB,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,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AACzD;;AAGA,MAAM,iBAAyB;CAE7B,MAAM,OADO,WAAW,cACR,IAAI,aAAa,CAAC;CAClC,MAAM,QAAQ,eAAe,IAAI;CACjC,OAAO,OAAO,OAAO,KAAK;AAC5B;;;;;;;AAQA,MAAM,OAA+B;CACnC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ;CACA;CACA;CACA,WAAW;CACX,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,eAAe,aAAa;CACvC;AACF"}
|
package/dist/ar/dni.d.ts
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ar/dni.d.ts
|
|
4
4
|
/** Generate a random valid Argentine DNI. */
|
|
5
5
|
declare const generate: () => string;
|
|
6
|
+
/**
|
|
7
|
+
* DNI (Documento Nacional de Identidad).
|
|
8
|
+
*
|
|
9
|
+
* Argentine national identity card number. The DNI is
|
|
10
|
+
* a 7 or 8-digit number assigned to all Argentine
|
|
11
|
+
* citizens and permanent residents. No check digit.
|
|
12
|
+
*
|
|
13
|
+
* @see https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)
|
|
14
|
+
*/
|
|
6
15
|
declare const compact: (value: string) => string;
|
|
7
16
|
declare const validate: (value: string) => ValidateResult;
|
|
8
17
|
declare const format: (value: string) => string;
|
|
9
18
|
/** Argentine National Identity Document. */
|
|
10
|
-
declare const dni:
|
|
19
|
+
declare const dni: CountryValidator<"AR">;
|
|
11
20
|
//#endregion
|
|
12
21
|
export { compact, dni as default, format, generate, validate };
|
|
13
22
|
//# sourceMappingURL=dni.d.ts.map
|
package/dist/ar/dni.js
CHANGED
|
@@ -3,15 +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/ar/dni.ts
|
|
6
|
-
/**
|
|
7
|
-
* DNI (Documento Nacional de Identidad).
|
|
8
|
-
*
|
|
9
|
-
* Argentine national identity card number. The DNI is
|
|
10
|
-
* a 7 or 8-digit number assigned to all Argentine
|
|
11
|
-
* citizens and permanent residents. No check digit.
|
|
12
|
-
*
|
|
13
|
-
* @see https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)
|
|
14
|
-
*/
|
|
15
6
|
/** Generate a random valid Argentine DNI. */
|
|
16
7
|
const generate = () => randomDigits(8);
|
|
17
8
|
const compact = (value) => clean(value, " -.").trim();
|
|
@@ -41,6 +32,7 @@ const dni = {
|
|
|
41
32
|
"Documento de Identidad"
|
|
42
33
|
],
|
|
43
34
|
candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}",
|
|
35
|
+
scope: "country",
|
|
44
36
|
country: "AR",
|
|
45
37
|
entityType: "person",
|
|
46
38
|
sourceUrl: "https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)",
|
package/dist/ar/dni.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dni.js","names":[],"sources":["../../src/ar/dni.ts"],"sourcesContent":["/** Generate a random valid Argentine DNI. */\nconst generate = (): string => randomDigits(8);\n\n/**\n * DNI (Documento Nacional de Identidad).\n *\n * Argentine national identity card number. The DNI is\n * a 7 or 8-digit number assigned to all Argentine\n * citizens and permanent residents. No check digit.\n *\n * @see https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"dni.js","names":[],"sources":["../../src/ar/dni.ts"],"sourcesContent":["/** Generate a random valid Argentine DNI. */\nconst generate = (): string => randomDigits(8);\n\n/**\n * DNI (Documento Nacional de Identidad).\n *\n * Argentine national identity card number. The DNI is\n * a 7 or 8-digit number assigned to all Argentine\n * citizens and permanent residents. No check digit.\n *\n * @see https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)\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 compact = (value: string): string =>\n clean(value, \" -.\").trim();\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length < 7 || v.length > 8) {\n return err(\n \"INVALID_LENGTH\",\n \"DNI must be 7 or 8 digits\",\n );\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"DNI must contain only digits\",\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 === 8) {\n return `${v.slice(0, 2)}.${v.slice(2, 5)}.${v.slice(5)}`;\n }\n if (v.length === 7) {\n return `${v.slice(0, 1)}.${v.slice(1, 4)}.${v.slice(4)}`;\n }\n return v;\n};\n\n/** Argentine National Identity Document. */\nconst dni: CountryValidator<\"AR\"> = {\n name: \"Argentine Identity Card\",\n localName: \"Documento Nacional de Identidad\",\n abbreviation: \"DNI\",\n aliases: [\n \"DNI\",\n \"Documento Nacional de Identidad\",\n \"Documento de Identidad\",\n ] as const,\n candidatePattern: \"\\\\d{1,2}\\\\.?\\\\d{3}\\\\.?\\\\d{3}\",\n scope: \"country\",\n country: \"AR\",\n entityType: \"person\",\n sourceUrl:\n \"https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)\",\n lengths: [7, 8] as const,\n examples: [\"20123456\", \"12345678\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default dni;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AACA,MAAM,iBAAyB,aAAa,CAAC;AAsB7C,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,EAAE,KAAK;AAE3B,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,SAAS,KAAK,EAAE,SAAS,GAC7B,OAAO,IACL,kBACA,2BACF;CAGF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;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,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,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,SAAS,CAAC,GAAG,CAAC;CACd,UAAU,CAAC,YAAY,UAAU;CACjC;CACA;CACA;CACA;AACF"}
|
package/dist/at/businessid.d.ts
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/at/businessid.d.ts
|
|
4
4
|
/** Generate a random valid Austrian Firmenbuchnummer. */
|
|
5
5
|
declare const generate: () => string;
|
|
6
|
+
/**
|
|
7
|
+
* Firmenbuchnummer (Austrian company register number).
|
|
8
|
+
*
|
|
9
|
+
* Digits followed by a single trailing letter.
|
|
10
|
+
* Optional "FN" prefix. No checksum.
|
|
11
|
+
*
|
|
12
|
+
* @see https://www.justiz.gv.at/
|
|
13
|
+
*/
|
|
6
14
|
declare const compact: (value: string) => string;
|
|
7
15
|
declare const validate: (value: string) => ValidateResult;
|
|
8
16
|
declare const format: (value: string) => string;
|
|
9
17
|
/** Austrian Company Register Number. */
|
|
10
|
-
declare const businessid:
|
|
18
|
+
declare const businessid: CountryValidator<"AT">;
|
|
11
19
|
//#endregion
|
|
12
20
|
export { compact, businessid as default, format, generate, validate };
|
|
13
21
|
//# sourceMappingURL=businessid.d.ts.map
|
package/dist/at/businessid.js
CHANGED
|
@@ -2,14 +2,6 @@ import { clean } from "../_util/clean.js";
|
|
|
2
2
|
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
//#region src/at/businessid.ts
|
|
5
|
-
/**
|
|
6
|
-
* Firmenbuchnummer (Austrian company register number).
|
|
7
|
-
*
|
|
8
|
-
* Digits followed by a single trailing letter.
|
|
9
|
-
* Optional "FN" prefix. No checksum.
|
|
10
|
-
*
|
|
11
|
-
* @see https://www.justiz.gv.at/
|
|
12
|
-
*/
|
|
13
5
|
/** Generate a random valid Austrian Firmenbuchnummer. */
|
|
14
6
|
const generate = () => {
|
|
15
7
|
return `${randomDigits(randomInt(5, 6))}${String.fromCodePoint(97 + randomInt(0, 25))}`;
|
|
@@ -41,6 +33,7 @@ const businessid = {
|
|
|
41
33
|
"FBN"
|
|
42
34
|
],
|
|
43
35
|
candidatePattern: "FN\\s?\\d{5,6}[a-z]?",
|
|
36
|
+
scope: "country",
|
|
44
37
|
country: "AT",
|
|
45
38
|
entityType: "company",
|
|
46
39
|
sourceUrl: "https://www.justiz.gv.at/",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"businessid.js","names":[],"sources":["../../src/at/businessid.ts"],"sourcesContent":["/** Generate a random valid Austrian Firmenbuchnummer. */\nconst generate = (): string => {\n const digits = randomDigits(randomInt(5, 6));\n const letter = String.fromCodePoint(\n 97 + randomInt(0, 25),\n ); // a-z (compact lowercases)\n return `${digits}${letter}`;\n};\n\n/**\n * Firmenbuchnummer (Austrian company register number).\n *\n * Digits followed by a single trailing letter.\n * Optional \"FN\" prefix. No checksum.\n *\n * @see https://www.justiz.gv.at/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\
|
|
1
|
+
{"version":3,"file":"businessid.js","names":[],"sources":["../../src/at/businessid.ts"],"sourcesContent":["/** Generate a random valid Austrian Firmenbuchnummer. */\nconst generate = (): string => {\n const digits = randomDigits(randomInt(5, 6));\n const letter = String.fromCodePoint(\n 97 + randomInt(0, 25),\n ); // a-z (compact lowercases)\n return `${digits}${letter}`;\n};\n\n/**\n * Firmenbuchnummer (Austrian company register number).\n *\n * Digits followed by a single trailing letter.\n * Optional \"FN\" prefix. No checksum.\n *\n * @see https://www.justiz.gv.at/\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\";\n\nconst FN_RE = /^\\d+[a-z]$/i;\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.slice(0, 2).toUpperCase() === \"FN\") {\n v = v.slice(2);\n }\n return v.toLowerCase();\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length < 2) {\n return err(\n \"INVALID_LENGTH\",\n \"Austrian Firmenbuchnummer is too short\",\n );\n }\n if (!FN_RE.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Austrian Firmenbuchnummer must be digits\" +\n \" followed by a letter\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `FN ${compact(value)}`;\n\n/** Austrian Company Register Number. */\nconst businessid: CountryValidator<\"AT\"> = {\n name: \"Austrian Company Register Number\",\n localName: \"Firmenbuchnummer\",\n abbreviation: \"FN\",\n aliases: [\"Firmenbuchnummer\", \"FN\", \"FBN\"] as const,\n candidatePattern: \"FN\\\\s?\\\\d{5,6}[a-z]?\",\n scope: \"country\",\n country: \"AT\",\n entityType: \"company\",\n sourceUrl: \"https://www.justiz.gv.at/\",\n examples: [\"122119m\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default businessid;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AACA,MAAM,iBAAyB;CAK7B,OAAO,GAJQ,aAAa,UAAU,GAAG,CAAC,CAI3B,IAHA,OAAO,cACpB,KAAK,UAAU,GAAG,EAAE,CAEE;AAC1B;AAoBA,MAAM,QAAQ;AAEd,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,MAAM;CAC3B,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY,MAAM,MAClC,IAAI,EAAE,MAAM,CAAC;CAEf,OAAO,EAAE,YAAY;AACvB;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,SAAS,GACb,OAAO,IACL,kBACA,wCACF;CAEF,IAAI,CAAC,MAAM,KAAK,CAAC,GACf,OAAO,IACL,kBACA,+DAEF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UACd,MAAM,QAAQ,KAAK;;AAGrB,MAAM,aAAqC;CACzC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAoB;EAAM;CAAK;CACzC,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,SAAS;CACpB;CACA;CACA;CACA;AACF"}
|
package/dist/at/tin.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/at/tin.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
@@ -7,7 +7,7 @@ declare const format: (value: string) => string;
|
|
|
7
7
|
/** Generate a random valid Austrian TIN. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Austrian Tax Identification Number. */
|
|
10
|
-
declare const tin:
|
|
10
|
+
declare const tin: CountryValidator<"AT">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, tin as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=tin.d.ts.map
|
package/dist/at/tin.js
CHANGED
|
@@ -3,17 +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/at/tin.ts
|
|
6
|
-
/**
|
|
7
|
-
* TIN (Abgabenkontonummer).
|
|
8
|
-
*
|
|
9
|
-
* Austrian tax identification number. 9 digits:
|
|
10
|
-
* 2-digit tax office code (Finanzamtsnummer) +
|
|
11
|
-
* 6-digit subject number + 1 check digit.
|
|
12
|
-
* Uses a variant of the Luhn algorithm.
|
|
13
|
-
*
|
|
14
|
-
* @see https://de.wikipedia.org/wiki/Abgabenkontonummer
|
|
15
|
-
* @see https://service.bmf.gv.at/Service/Anwend/Behoerden/show_mast.asp
|
|
16
|
-
*/
|
|
17
6
|
/** Luhn-variant doubling table: position-dependent. */
|
|
18
7
|
const DOUBLE = "0246813579";
|
|
19
8
|
const compact = (value) => clean(value, " -./,");
|
|
@@ -55,6 +44,7 @@ const tin = {
|
|
|
55
44
|
"TIN"
|
|
56
45
|
],
|
|
57
46
|
candidatePattern: "\\d{2}-?\\d{3}/\\d{4}",
|
|
47
|
+
scope: "country",
|
|
58
48
|
country: "AT",
|
|
59
49
|
entityType: "any",
|
|
60
50
|
sourceUrl: "https://de.wikipedia.org/wiki/Abgabenkontonummer",
|
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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/at/uid.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
@@ -7,7 +7,7 @@ declare const format: (value: string) => string;
|
|
|
7
7
|
/** Generate a random valid Austrian UID. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Austrian VAT Identification Number. */
|
|
10
|
-
declare const uid:
|
|
10
|
+
declare const uid: CountryValidator<"AT">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, uid as default, format, generate, validate };
|
|
13
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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/at/vnr.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
@@ -7,7 +7,7 @@ declare const format: (value: string) => string;
|
|
|
7
7
|
/** Generate a random valid Austrian VNR. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Austrian Social Insurance Number. */
|
|
10
|
-
declare const vnr:
|
|
10
|
+
declare const vnr: CountryValidator<"AT">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, vnr as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=vnr.d.ts.map
|
package/dist/at/vnr.js
CHANGED
|
@@ -4,17 +4,6 @@ import { err } from "../_util/result.js";
|
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
//#region src/at/vnr.ts
|
|
6
6
|
/**
|
|
7
|
-
* VNR (Versicherungsnummer).
|
|
8
|
-
*
|
|
9
|
-
* Austrian social insurance number. 10 digits: 3-digit
|
|
10
|
-
* serial + 1 check digit + 6-digit birth date (DDMMYY).
|
|
11
|
-
* The check digit is computed using a weighted sum
|
|
12
|
-
* mod 11 over the 9 non-check digits.
|
|
13
|
-
*
|
|
14
|
-
* @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer#%C3%96sterreich
|
|
15
|
-
* @see https://www.sozialversicherung.at/
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
7
|
* Weights for the 9 non-check digits (positions
|
|
19
8
|
* 0,1,2, then 4,5,6,7,8,9). Check digit is at
|
|
20
9
|
* position 3 and equals the weighted sum mod 11.
|
|
@@ -35,9 +24,9 @@ const validate = (value) => {
|
|
|
35
24
|
const v = compact(value);
|
|
36
25
|
if (v.length !== 10) return err("INVALID_LENGTH", "Austrian VNR must be 10 digits");
|
|
37
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");
|
|
38
28
|
const day = Number(v.slice(4, 6));
|
|
39
|
-
|
|
40
|
-
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");
|
|
41
30
|
const digits = v.slice(0, 3) + v.slice(4);
|
|
42
31
|
let sum = 0;
|
|
43
32
|
for (const [i, weight] of WEIGHTS.entries()) sum += Number(digits[i]) * weight;
|
|
@@ -56,7 +45,7 @@ const format = (value) => {
|
|
|
56
45
|
/** Generate a random valid Austrian VNR. */
|
|
57
46
|
const generate = () => {
|
|
58
47
|
for (;;) {
|
|
59
|
-
const serial = randomDigits(
|
|
48
|
+
const serial = String(randomInt(1, 9)) + randomDigits(2);
|
|
60
49
|
const day = String(randomInt(1, 28)).padStart(2, "0");
|
|
61
50
|
const month = String(randomInt(1, 12)).padStart(2, "0");
|
|
62
51
|
const year = String(randomInt(0, 99)).padStart(2, "0");
|
|
@@ -80,6 +69,7 @@ const vnr = {
|
|
|
80
69
|
"Sozialversicherungsnummer"
|
|
81
70
|
],
|
|
82
71
|
candidatePattern: "\\d{4}\\s?\\d{6}",
|
|
72
|
+
scope: "country",
|
|
83
73
|
country: "AT",
|
|
84
74
|
entityType: "person",
|
|
85
75
|
sourceUrl: "https://de.wikipedia.org/wiki/Sozialversicherungsnummer",
|
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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/au/abn.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
@@ -7,7 +7,7 @@ declare const format: (value: string) => string;
|
|
|
7
7
|
/** Generate a random valid ABN. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Australian Business Number. */
|
|
10
|
-
declare const abn:
|
|
10
|
+
declare const abn: CountryValidator<"AU">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, abn as default, format, generate, validate };
|
|
13
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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/au/acn.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
@@ -7,7 +7,7 @@ declare const format: (value: string) => string;
|
|
|
7
7
|
/** Generate a random valid ACN. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Australian Company Number. */
|
|
10
|
-
declare const acn:
|
|
10
|
+
declare const acn: CountryValidator<"AU">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, acn as default, format, generate, validate };
|
|
13
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/",
|