@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/lu/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":[],"sources":["../../src/lu/vat.ts"],"sourcesContent":["/**\n * TVA (Luxembourg VAT number).\n *\n * 8 digits. First 6 digits mod 89 === last 2 digits.\n *\n * @see https://www.vatify.eu/luxembourg-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/luxembourg-tin.pdf\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/lu/vat.ts"],"sourcesContent":["/**\n * TVA (Luxembourg VAT number).\n *\n * 8 digits. First 6 digits mod 89 === last 2 digits.\n *\n * @see https://www.vatify.eu/luxembourg-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/luxembourg-tin.pdf\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 let v = clean(value, \" -/.\");\n if (v.startsWith(\"LU\") || v.startsWith(\"lu\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"Luxembourg VAT number must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Luxembourg VAT number must contain only digits\",\n );\n }\n const front = Number.parseInt(v.slice(0, 6), 10);\n const check = Number.parseInt(v.slice(6, 8), 10);\n if (front % 89 !== check) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Luxembourg VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `LU${compact(value)}`;\n\n/** Generate a random valid Luxembourg VAT number. */\nconst generate = (): string => {\n const body = randomDigits(6);\n return (\n body +\n String(Number.parseInt(body, 10) % 89).padStart(2, \"0\")\n );\n};\n\n/** Luxembourg VAT Number. */\nconst vat: CountryValidator<\"LU\"> = {\n name: \"Luxembourg VAT Number\",\n localName: \"Numéro de TVA\",\n abbreviation: \"TVA\",\n aliases: [\"TVA\", \"numéro d'identification TVA\"] as const,\n candidatePattern: \"LU\\\\d{8}\",\n scope: \"country\",\n country: \"LU\",\n entityType: \"company\",\n sourceUrl: \"https://pfi.public.lu/\",\n lengths: [8] as const,\n examples: [\"15027442\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAmBA,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,MAAM;CAC3B,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,GACzC,IAAI,EAAE,MAAM,CAAC;CAEf,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,wCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,gDACF;CAEF,MAAM,QAAQ,OAAO,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE;CAC/C,MAAM,QAAQ,OAAO,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE;CAC/C,IAAI,QAAQ,OAAO,OACjB,OAAO,IACL,oBACA,4CACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UACd,KAAK,QAAQ,KAAK;;AAGpB,MAAM,iBAAyB;CAC7B,MAAM,OAAO,aAAa,CAAC;CAC3B,OACE,OACA,OAAO,OAAO,SAAS,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG;AAE1D;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,6BAA6B;CAC9C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,SAAS,CAAC,CAAC;CACX,UAAU,CAAC,UAAU;CACrB;CACA;CACA;CACA;AACF"}
|
package/dist/luhn.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GlobalValidator, ValidateResult } from "./types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/luhn.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
@@ -10,7 +10,7 @@ declare const format: (value: string) => string;
|
|
|
10
10
|
*/
|
|
11
11
|
declare const generate: (length?: number) => string;
|
|
12
12
|
/** Generic Luhn Validator. */
|
|
13
|
-
declare const luhn:
|
|
13
|
+
declare const luhn: GlobalValidator;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { compact, luhn as default, format, generate, validate };
|
|
16
16
|
//# sourceMappingURL=luhn.d.ts.map
|
package/dist/luhn.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
|
+
import { luhnChecksum, luhnValidate } 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, luhnValidate } from "./_checksums/luhn.js";
|
|
5
5
|
import { isdigits } from "./_util/strings.js";
|
|
6
6
|
//#region src/luhn.ts
|
|
7
|
-
/**
|
|
8
|
-
* Generic Luhn checksum validation.
|
|
9
|
-
*
|
|
10
|
-
* Validates any digit string using the Luhn
|
|
11
|
-
* algorithm (ISO/IEC 7812-1). No length
|
|
12
|
-
* restriction. For credit card validation
|
|
13
|
-
* (13-19 digits), use `creditcard` instead.
|
|
14
|
-
*/
|
|
15
7
|
const compact = (value) => clean(value, " -.");
|
|
16
8
|
const validate = (value) => {
|
|
17
9
|
const v = compact(value);
|
|
@@ -35,6 +27,7 @@ const generate = (length = 16) => {
|
|
|
35
27
|
};
|
|
36
28
|
/** Generic Luhn Validator. */
|
|
37
29
|
const luhn = {
|
|
30
|
+
scope: "global",
|
|
38
31
|
name: "Luhn",
|
|
39
32
|
localName: "Luhn",
|
|
40
33
|
abbreviation: "Luhn",
|
package/dist/luhn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"luhn.js","names":[],"sources":["../src/luhn.ts"],"sourcesContent":["/**\n * Generic Luhn checksum validation.\n *\n * Validates any digit string using the Luhn\n * algorithm (ISO/IEC 7812-1). No length\n * restriction. For credit card validation\n * (13-19 digits), use `creditcard` instead.\n */\n\nimport {\n luhnChecksum,\n luhnValidate,\n} 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":"luhn.js","names":[],"sources":["../src/luhn.ts"],"sourcesContent":["/**\n * Generic Luhn checksum validation.\n *\n * Validates any digit string using the Luhn\n * algorithm (ISO/IEC 7812-1). No length\n * restriction. For credit card validation\n * (13-19 digits), use `creditcard` instead.\n */\n\nimport type {\n ValidateResult,\n GlobalValidator,\n} from \"./types\";\n\nimport {\n luhnChecksum,\n luhnValidate,\n} 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 clean(value, \" -.\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length < 1) {\n return err(\"INVALID_LENGTH\", \"Value must not be empty\");\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Value must contain only digits\",\n );\n }\n if (!luhnValidate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Luhn check digit does not match\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/**\n * Generate a random Luhn-valid number of the\n * given length (default 16).\n */\nconst generate = (length = 16): string => {\n const payload = randomDigits(length - 1);\n const partial = `${payload}0`;\n const remainder = luhnChecksum(partial);\n const check = (10 - remainder) % 10;\n return `${payload}${String(check)}`;\n};\n\n/** Generic Luhn Validator. */\nconst luhn: GlobalValidator = {\n scope: \"global\",\n name: \"Luhn\",\n localName: \"Luhn\",\n abbreviation: \"Luhn\",\n aliases: [\"Luhn\", \"Luhn algorithm\", \"mod 10\"] as const,\n candidatePattern: \"\\\\d{2,}\",\n entityType: \"any\",\n sourceUrl: \"https://en.wikipedia.org/wiki/Luhn_algorithm\",\n examples: [\"4111111111111111\", \"18\"] as const,\n compact,\n format,\n validate,\n generate: () => generate(),\n};\n\nexport default luhn;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;;AAuBA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,SAAS,GACb,OAAO,IAAI,kBAAkB,yBAAyB;CAExD,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,gCACF;CAEF,IAAI,CAAC,aAAa,CAAC,GACjB,OAAO,IACL,oBACA,iCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;;;;AAMvD,MAAM,YAAY,SAAS,OAAe;CACxC,MAAM,UAAU,aAAa,SAAS,CAAC;CAGvC,MAAM,SAAS,KADG,aAAa,GADZ,QAAQ,EAEC,KAAK;CACjC,OAAO,GAAG,UAAU,OAAO,KAAK;AAClC;;AAGA,MAAM,OAAwB;CAC5B,OAAO;CACP,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAQ;EAAkB;CAAQ;CAC5C,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,oBAAoB,IAAI;CACnC;CACA;CACA;CACA,gBAAgB,SAAS;AAC3B"}
|
package/dist/lv/vat.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/lv/vat.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 Latvian VAT number. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Latvian VAT Number. */
|
|
10
|
-
declare const vat:
|
|
10
|
+
declare const vat: CountryValidator<"LV">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, vat as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=vat.d.ts.map
|
package/dist/lv/vat.js
CHANGED
|
@@ -1,36 +1,9 @@
|
|
|
1
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
1
2
|
import { clean } from "../_util/clean.js";
|
|
2
3
|
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
3
4
|
import { err } from "../_util/result.js";
|
|
4
5
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
6
|
//#region src/lv/vat.ts
|
|
7
|
-
/**
|
|
8
|
-
* PVN (Latvian VAT number).
|
|
9
|
-
*
|
|
10
|
-
* 11 digits.
|
|
11
|
-
*
|
|
12
|
-
* Individuals:
|
|
13
|
-
* - legacy personal codes: DDMMYY + century digit 0/1/2 + 4 digits
|
|
14
|
-
* - since 1 July 2017: codes start with 3, the second digit is 2-9,
|
|
15
|
-
* and the remaining digits are random
|
|
16
|
-
*
|
|
17
|
-
* Entities:
|
|
18
|
-
* - tax administration issued: 9XXXXXXXXXX
|
|
19
|
-
* - enterprise register issued: 4XXXXXXXXXX / 5XXXXXXXXXX
|
|
20
|
-
*
|
|
21
|
-
* Canonical sources:
|
|
22
|
-
* - OECD Latvia TIN sheet for the tax-facing formats
|
|
23
|
-
* - PMLP page documenting the post-2017 personal code
|
|
24
|
-
*
|
|
25
|
-
* These are the reasons we accept the new personal
|
|
26
|
-
* code shape (`3` + second digit `2-9`) without the
|
|
27
|
-
* legacy birth-date checksum, and why we reject
|
|
28
|
-
* legacy personal codes with century digits outside
|
|
29
|
-
* 0/1/2.
|
|
30
|
-
*
|
|
31
|
-
* @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Latvia-TIN.pdf
|
|
32
|
-
* @see https://www.pmlp.gov.lv/en/change-personal-identity-number
|
|
33
|
-
*/
|
|
34
7
|
const WEIGHTS = [
|
|
35
8
|
9,
|
|
36
9
|
1,
|
|
@@ -116,6 +89,7 @@ const vat = {
|
|
|
116
89
|
abbreviation: "PVN",
|
|
117
90
|
aliases: ["PVN reģistrācijas numurs", "PVN"],
|
|
118
91
|
candidatePattern: "LV\\d{11}",
|
|
92
|
+
scope: "country",
|
|
119
93
|
country: "LV",
|
|
120
94
|
entityType: "any",
|
|
121
95
|
sourceUrl: "https://www.pmlp.gov.lv/en/change-personal-identity-number",
|
package/dist/lv/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":[],"sources":["../../src/lv/vat.ts"],"sourcesContent":["/**\n * PVN (Latvian VAT number).\n *\n * 11 digits.\n *\n * Individuals:\n * - legacy personal codes: DDMMYY + century digit 0/1/2 + 4 digits\n * - since 1 July 2017: codes start with 3, the second digit is 2-9,\n * and the remaining digits are random\n *\n * Entities:\n * - tax administration issued: 9XXXXXXXXXX\n * - enterprise register issued: 4XXXXXXXXXX / 5XXXXXXXXXX\n *\n * Canonical sources:\n * - OECD Latvia TIN sheet for the tax-facing formats\n * - PMLP page documenting the post-2017 personal code\n *\n * These are the reasons we accept the new personal\n * code shape (`3` + second digit `2-9`) without the\n * legacy birth-date checksum, and why we reject\n * legacy personal codes with century digits outside\n * 0/1/2.\n *\n * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Latvia-TIN.pdf\n * @see https://www.pmlp.gov.lv/en/change-personal-identity-number\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/lv/vat.ts"],"sourcesContent":["/**\n * PVN (Latvian VAT number).\n *\n * 11 digits.\n *\n * Individuals:\n * - legacy personal codes: DDMMYY + century digit 0/1/2 + 4 digits\n * - since 1 July 2017: codes start with 3, the second digit is 2-9,\n * and the remaining digits are random\n *\n * Entities:\n * - tax administration issued: 9XXXXXXXXXX\n * - enterprise register issued: 4XXXXXXXXXX / 5XXXXXXXXXX\n *\n * Canonical sources:\n * - OECD Latvia TIN sheet for the tax-facing formats\n * - PMLP page documenting the post-2017 personal code\n *\n * These are the reasons we accept the new personal\n * code shape (`3` + second digit `2-9`) without the\n * legacy birth-date checksum, and why we reject\n * legacy personal codes with century digits outside\n * 0/1/2.\n *\n * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Latvia-TIN.pdf\n * @see https://www.pmlp.gov.lv/en/change-personal-identity-number\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [9, 1, 4, 8, 3, 10, 2, 5, 7, 6, 1];\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"LV\") || v.startsWith(\"lv\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst PERS_WEIGHTS = [10, 5, 8, 4, 2, 1, 6, 3, 7, 9];\n\nconst checkPersonal = (v: string): boolean => {\n // Initial sum = 1 (not 0), so can't use\n // weightedSum directly\n let sum = 1;\n for (let i = 0; i < 10; i++) {\n // SAFETY: both arrays are length 10+\n // eslint-disable-next-line no-non-null-assertion\n sum += PERS_WEIGHTS[i]! * Number(v[i]);\n }\n return (sum % 11) % 10 === Number(v[10]);\n};\n\nconst validateBirthDate = (v: string): boolean => {\n const day = Number(v.slice(0, 2));\n const month = Number(v.slice(2, 4));\n const year2 = Number(v.slice(4, 6));\n const century = Number(v[6]);\n if (century < 0 || century > 2) {\n return false;\n }\n const fullYear = 1800 + century * 100 + year2;\n const date = new Date(fullYear, month - 1, day);\n return (\n date.getFullYear() === fullYear &&\n date.getMonth() === month - 1 &&\n date.getDate() === day\n );\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Latvian VAT number must be 11 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Latvian VAT number must contain only digits\",\n );\n }\n if (\n v[0] === \"3\" &&\n v[1] !== undefined &&\n v[1] >= \"2\" &&\n v[1] <= \"9\"\n ) {\n // Since 1 July 2017, new personal codes start with 3\n // and are syntactic identifiers only.\n return { valid: true, compact: v };\n }\n\n const first = v[0];\n if (first === \"4\" || first === \"5\" || first === \"9\") {\n const sum = weightedSum(v, WEIGHTS, 11);\n if (sum !== 3) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Latvian VAT number check digit mismatch\",\n );\n }\n } else {\n // Old-format personal code: first 6 digits encode\n // birth date as DDMMYY, digit 7 encodes century\n if (!validateBirthDate(v)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Latvian personal code has invalid birth date\",\n );\n }\n if (!checkPersonal(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Latvian personal code check digit mismatch\",\n );\n }\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `LV${compact(value)}`;\n\n/** Generate a random valid Latvian VAT number. */\nconst generate = (): string => {\n const entityPrefixes = [\"4\", \"5\", \"9\"] as const;\n for (;;) {\n const c =\n randomInt(0, 1) === 0\n ? `3${randomInt(2, 9)}${randomDigits(9)}`\n : `${entityPrefixes[randomInt(0, entityPrefixes.length - 1)] ?? \"4\"}${randomDigits(10)}`;\n if (validate(c).valid) return c;\n }\n};\n\n/** Latvian VAT Number. */\nconst vat: CountryValidator<\"LV\"> = {\n name: \"Latvian VAT Number\",\n localName: \"PVN reģistrācijas numurs\",\n abbreviation: \"PVN\",\n aliases: [\"PVN reģistrācijas numurs\", \"PVN\"] as const,\n candidatePattern: \"LV\\\\d{11}\",\n scope: \"country\",\n country: \"LV\",\n entityType: \"any\",\n sourceUrl:\n \"https://www.pmlp.gov.lv/en/change-personal-identity-number\",\n examples: [\"40003521600\", \"32999999999\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAuCA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;AAAC;AAEjD,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,MAAM;CAC3B,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,GACzC,IAAI,EAAE,MAAM,CAAC;CAEf,OAAO;AACT;AAEA,MAAM,eAAe;CAAC;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAEnD,MAAM,iBAAiB,MAAuB;CAG5C,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAGtB,OAAO,aAAa,KAAM,OAAO,EAAE,EAAE;CAEvC,OAAQ,MAAM,KAAM,OAAO,OAAO,EAAE,GAAG;AACzC;AAEA,MAAM,qBAAqB,MAAuB;CAChD,MAAM,MAAM,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAChC,MAAM,QAAQ,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAClC,MAAM,QAAQ,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAClC,MAAM,UAAU,OAAO,EAAE,EAAE;CAC3B,IAAI,UAAU,KAAK,UAAU,GAC3B,OAAO;CAET,MAAM,WAAW,OAAO,UAAU,MAAM;CACxC,MAAM,OAAO,IAAI,KAAK,UAAU,QAAQ,GAAG,GAAG;CAC9C,OACE,KAAK,YAAY,MAAM,YACvB,KAAK,SAAS,MAAM,QAAQ,KAC5B,KAAK,QAAQ,MAAM;AAEvB;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,sCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,6CACF;CAEF,IACE,EAAE,OAAO,OACT,EAAE,OAAO,KAAA,KACT,EAAE,MAAM,OACR,EAAE,MAAM,KAIR,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;CAGnC,MAAM,QAAQ,EAAE;CAChB,IAAI,UAAU,OAAO,UAAU,OAAO,UAAU;MAClC,YAAY,GAAG,SAAS,EAC9B,MAAM,GACV,OAAO,IACL,oBACA,yCACF;CAAA,OAEG;EAGL,IAAI,CAAC,kBAAkB,CAAC,GACtB,OAAO,IACL,qBACA,8CACF;EAEF,IAAI,CAAC,cAAc,CAAC,GAClB,OAAO,IACL,oBACA,4CACF;CAEJ;CACA,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UACd,KAAK,QAAQ,KAAK;;AAGpB,MAAM,iBAAyB;CAC7B,MAAM,iBAAiB;EAAC;EAAK;EAAK;CAAG;CACrC,SAAS;EACP,MAAM,IACJ,UAAU,GAAG,CAAC,MAAM,IAChB,IAAI,UAAU,GAAG,CAAC,IAAI,aAAa,CAAC,MACpC,GAAG,eAAe,UAAU,GAAG,eAAe,SAAS,CAAC,MAAM,MAAM,aAAa,EAAE;EACzF,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;AACF;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,4BAA4B,KAAK;CAC3C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,eAAe,aAAa;CACvC;CACA;CACA;CACA;AACF"}
|
package/dist/ma/ice.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ma/ice.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 Moroccan ICE. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Moroccan Company Identification Number. */
|
|
10
|
-
declare const ice:
|
|
10
|
+
declare const ice: CountryValidator<"MA">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, ice as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=ice.d.ts.map
|
package/dist/ma/ice.js
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
+
import { mod97 } from "../_checksums/mod97.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
5
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { mod97 } from "../_checksums/mod97.js";
|
|
6
6
|
//#region src/ma/ice.ts
|
|
7
|
-
/**
|
|
8
|
-
* ICE (Identifiant Commun de l'Entreprise).
|
|
9
|
-
*
|
|
10
|
-
* Moroccan company identification number. 15 digits:
|
|
11
|
-
* 9 enterprise digits + 4 establishment digits +
|
|
12
|
-
* 2 check digits. Uses Mod 97-10 checksum
|
|
13
|
-
* (full number mod 97 must equal 0).
|
|
14
|
-
*
|
|
15
|
-
* @see https://www.ice.gov.ma/
|
|
16
|
-
*/
|
|
17
7
|
const compact = (value) => clean(value, " ");
|
|
18
8
|
const validate = (value) => {
|
|
19
9
|
const v = compact(value);
|
|
@@ -40,6 +30,7 @@ const ice = {
|
|
|
40
30
|
abbreviation: "ICE",
|
|
41
31
|
aliases: ["ICE", "Identifiant Commun de l'Entreprise"],
|
|
42
32
|
candidatePattern: "\\d{15}",
|
|
33
|
+
scope: "country",
|
|
43
34
|
country: "MA",
|
|
44
35
|
entityType: "company",
|
|
45
36
|
compact,
|
package/dist/ma/ice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ice.js","names":[],"sources":["../../src/ma/ice.ts"],"sourcesContent":["/**\n * ICE (Identifiant Commun de l'Entreprise).\n *\n * Moroccan company identification number. 15 digits:\n * 9 enterprise digits + 4 establishment digits +\n * 2 check digits. Uses Mod 97-10 checksum\n * (full number mod 97 must equal 0).\n *\n * @see https://www.ice.gov.ma/\n */\n\nimport { mod97 } from \"#checksums/mod97\";\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":"ice.js","names":[],"sources":["../../src/ma/ice.ts"],"sourcesContent":["/**\n * ICE (Identifiant Commun de l'Entreprise).\n *\n * Moroccan company identification number. 15 digits:\n * 9 enterprise digits + 4 establishment digits +\n * 2 check digits. Uses Mod 97-10 checksum\n * (full number mod 97 must equal 0).\n *\n * @see https://www.ice.gov.ma/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { mod97 } from \"#checksums/mod97\";\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, \" \");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 15) {\n return err(\n \"INVALID_LENGTH\",\n \"Moroccan ICE must be exactly 15 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Moroccan ICE must contain only digits\",\n );\n }\n if (mod97(v) !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Moroccan ICE check digits mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Moroccan ICE. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(15);\n if (validate(c).valid) return c;\n }\n};\n\n/** Moroccan Company Identification Number. */\nconst ice: CountryValidator<\"MA\"> = {\n name: \"Moroccan Company Identification Number\",\n localName: \"Identifiant Commun de l'Entreprise\",\n abbreviation: \"ICE\",\n aliases: [\n \"ICE\",\n \"Identifiant Commun de l'Entreprise\",\n ] as const,\n candidatePattern: \"\\\\d{15}\",\n scope: \"country\",\n country: \"MA\",\n entityType: \"company\",\n compact,\n format,\n validate,\n description: \"Moroccan common enterprise identifier\",\n sourceUrl: \"https://www.ice.gov.ma/\",\n lengths: [15] as const,\n examples: [\"001561191000066\", \"002136093000040\"] as const,\n generate,\n};\n\nexport default ice;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAsBA,MAAM,WAAW,UACf,MAAM,OAAO,GAAG;AAElB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,wCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,uCACF;CAEF,IAAI,MAAM,CAAC,MAAM,GACf,OAAO,IACL,oBACA,oCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,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,CACP,OACA,oCACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ;CACA;CACA;CACA,aAAa;CACb,WAAW;CACX,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,mBAAmB,iBAAiB;CAC/C;AACF"}
|
package/dist/mc/tva.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/mc/tva.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 Monacan TVA number. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Monacan VAT Number. */
|
|
10
|
-
declare const tva:
|
|
10
|
+
declare const tva: CountryValidator<"MC">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, tva as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=tva.d.ts.map
|
package/dist/mc/tva.js
CHANGED
package/dist/mc/tva.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tva.js","names":["frCompact","frValidate"],"sources":["../../src/mc/tva.ts"],"sourcesContent":["/**\n * n° TVA (taxe sur la valeur ajoutée, Monacan VAT).\n *\n * For VAT purposes Monaco is treated as French\n * territory. The number follows the French TVA\n * format but the SIREN part starts with \"000\"\n * (not a real SIREN). The compact form is\n * prefixed with \"FR\".\n *\n * @see https://www.economie.gouv.fr/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"tva.js","names":["frCompact","frValidate"],"sources":["../../src/mc/tva.ts"],"sourcesContent":["/**\n * n° TVA (taxe sur la valeur ajoutée, Monacan VAT).\n *\n * For VAT purposes Monaco is treated as French\n * territory. The number follows the French TVA\n * format but the SIREN part starts with \"000\"\n * (not a real SIREN). The compact form is\n * prefixed with \"FR\".\n *\n * @see https://www.economie.gouv.fr/\n */\n\nimport {\n compact as frCompact,\n validate as frValidate,\n} from \"../fr/tva\";\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nconst compact = (value: string): string => {\n const v = frCompact(value);\n return `FR${v}`;\n};\n\nconst validate = (value: string): ValidateResult => {\n const frResult = frValidate(value);\n if (!frResult.valid) {\n return frResult;\n }\n\n // Monaco SIREN part must start with \"000\"\n const siren = frResult.compact.slice(2);\n if (!siren.startsWith(\"000\")) {\n return err(\n \"INVALID_COMPONENT\",\n \"Monacan TVA SIREN part must start with 000\",\n );\n }\n\n return { valid: true, compact: `FR${frResult.compact}` };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Monacan TVA number. */\nconst generate = (): string => {\n const siren = \"000\" + randomDigits(6);\n const prefix = String(\n (12 + 3 * (Number(siren) % 97)) % 97,\n ).padStart(2, \"0\");\n return \"FR\" + prefix + siren;\n};\n\n/** Monacan VAT Number. */\nconst tva: CountryValidator<\"MC\"> = {\n name: \"Monacan VAT Number\",\n localName: \"Numéro de TVA\",\n abbreviation: \"TVA\",\n aliases: [\"numéro de TVA\", \"TVA\"] as const,\n candidatePattern: \"FR\\\\d{11}\",\n scope: \"country\",\n country: \"MC\",\n entityType: \"company\",\n sourceUrl: \"https://www.economie.gouv.fr/\",\n examples: [\"FR53000004605\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default tva;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AAwBA,MAAM,WAAW,UAA0B;CAEzC,OAAO,KADGA,UAAU,KACR;AACd;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,WAAWC,WAAW,KAAK;CACjC,IAAI,CAAC,SAAS,OACZ,OAAO;CAKT,IAAI,CADU,SAAS,QAAQ,MAAM,CAC5B,EAAE,WAAW,KAAK,GACzB,OAAO,IACL,qBACA,4CACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS,KAAK,SAAS;CAAU;AACzD;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,MAAM,iBAAyB;CAC7B,MAAM,QAAQ,QAAQ,aAAa,CAAC;CAIpC,OAAO,OAHQ,QACZ,KAAK,KAAK,OAAO,KAAK,IAAI,OAAO,EACpC,EAAE,SAAS,GAAG,GACK,IAAI;AACzB;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,iBAAiB,KAAK;CAChC,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,eAAe;CAC1B;CACA;CACA;CACA;AACF"}
|
package/dist/md/idno.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/md/idno.d.ts
|
|
4
4
|
declare const compact: (value: string) => string;
|
|
5
5
|
declare const validate: (value: string) => ValidateResult;
|
|
6
6
|
declare const format: (value: string) => string;
|
|
7
7
|
/** Moldavian Company Identification Number. */
|
|
8
|
-
declare const idno:
|
|
8
|
+
declare const idno: CountryValidator<"MD">;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { compact, idno as default, format, validate };
|
|
11
11
|
//# sourceMappingURL=idno.d.ts.map
|
package/dist/md/idno.js
CHANGED
|
@@ -2,16 +2,6 @@ import { clean } from "../_util/clean.js";
|
|
|
2
2
|
import { err } from "../_util/result.js";
|
|
3
3
|
import { isdigits } from "../_util/strings.js";
|
|
4
4
|
//#region src/md/idno.ts
|
|
5
|
-
/**
|
|
6
|
-
* IDNO (Moldavian company identification number).
|
|
7
|
-
*
|
|
8
|
-
* 13 digits: first digit identifies the registry,
|
|
9
|
-
* next three are the assignment year, followed by
|
|
10
|
-
* five identifier digits and a check digit.
|
|
11
|
-
* Checksum uses weights [7, 3, 1] repeated.
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.idno.md
|
|
14
|
-
*/
|
|
15
5
|
const WEIGHTS = [
|
|
16
6
|
7,
|
|
17
7
|
3,
|
|
@@ -55,6 +45,7 @@ const idno = {
|
|
|
55
45
|
abbreviation: "IDNO",
|
|
56
46
|
aliases: ["IDNO", "cod de identificare"],
|
|
57
47
|
candidatePattern: "\\d{13}",
|
|
48
|
+
scope: "country",
|
|
58
49
|
country: "MD",
|
|
59
50
|
entityType: "company",
|
|
60
51
|
lengths: [13],
|
package/dist/md/idno.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idno.js","names":[],"sources":["../../src/md/idno.ts"],"sourcesContent":["/**\n * IDNO (Moldavian company identification number).\n *\n * 13 digits: first digit identifies the registry,\n * next three are the assignment year, followed by\n * five identifier digits and a check digit.\n * Checksum uses weights [7, 3, 1] repeated.\n *\n * @see https://www.idno.md\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"idno.js","names":[],"sources":["../../src/md/idno.ts"],"sourcesContent":["/**\n * IDNO (Moldavian company identification number).\n *\n * 13 digits: first digit identifies the registry,\n * next three are the assignment year, followed by\n * five identifier digits and a check digit.\n * Checksum uses weights [7, 3, 1] repeated.\n *\n * @see https://www.idno.md\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [\n 7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1,\n] as const;\n\nconst calcCheckDigit = (number: string): number => {\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n sum += (WEIGHTS[i] ?? 0) * Number(number[i]);\n }\n return sum % 10;\n};\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 \"Moldavian IDNO must contain only digits\",\n );\n }\n if (v.length !== 13) {\n return err(\n \"INVALID_LENGTH\",\n \"Moldavian IDNO must be 13 digits\",\n );\n }\n const expected = calcCheckDigit(v);\n if (expected !== Number(v[12])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Moldavian IDNO check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\nconst generate = (): string => {\n let digits = \"\";\n for (let i = 0; i < 12; i++) {\n digits += String(Math.floor(Math.random() * 10));\n }\n return digits + String(calcCheckDigit(digits));\n};\n\n/** Moldavian Company Identification Number. */\nconst idno: CountryValidator<\"MD\"> = {\n name: \"Moldavian Company Identification Number\",\n localName: \"IDNO\",\n abbreviation: \"IDNO\",\n aliases: [\"IDNO\", \"cod de identificare\"] as const,\n candidatePattern: \"\\\\d{13}\",\n scope: \"country\",\n country: \"MD\",\n entityType: \"company\",\n lengths: [13] as const,\n sourceUrl: \"https://www.idno.md/\",\n examples: [\"1008600038413\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default idno;\nexport { compact, format, validate };\n"],"mappings":";;;;AAoBA,MAAM,UAAU;CACd;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AACnC;AAEA,MAAM,kBAAkB,WAA2B;CACjD,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KACtB,QAAQ,QAAQ,MAAM,KAAK,OAAO,OAAO,EAAE;CAE7C,OAAO,MAAM;AACf;AAEA,MAAM,WAAW,UACf,MAAM,OAAO,GAAG;AAElB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,yCACF;CAEF,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,kCACF;CAGF,IADiB,eAAe,CACrB,MAAM,OAAO,EAAE,GAAG,GAC3B,OAAO,IACL,oBACA,qCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;AAEvD,MAAM,iBAAyB;CAC7B,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KACtB,UAAU,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,CAAC;CAEjD,OAAO,SAAS,OAAO,eAAe,MAAM,CAAC;AAC/C;;AAGA,MAAM,OAA+B;CACnC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,QAAQ,qBAAqB;CACvC,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,EAAE;CACZ,WAAW;CACX,UAAU,CAAC,eAAe;CAC1B;CACA;CACA;CACA;AACF"}
|
package/dist/me/pib.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/me/pib.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 Montenegrin PIB. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Montenegrin Tax Identification Number. */
|
|
10
|
-
declare const pib:
|
|
10
|
+
declare const pib: CountryValidator<"ME">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, pib as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=pib.d.ts.map
|
package/dist/me/pib.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
+
import { weightedSum } from "../_checksums/weighted-sum.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
5
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
6
|
//#region src/me/pib.ts
|
|
7
|
-
/**
|
|
8
|
-
* PIB (Poreski identifikacioni broj).
|
|
9
|
-
*
|
|
10
|
-
* Montenegrin tax identification number. 8 digits with
|
|
11
|
-
* a weighted mod 11 checksum.
|
|
12
|
-
*
|
|
13
|
-
* @see https://github.com/arthurdejong/python-stdnum/blob/master/stdnum/me/pib.py
|
|
14
|
-
* @see https://www.tax.gov.me/
|
|
15
|
-
*/
|
|
16
7
|
const WEIGHTS = [
|
|
17
8
|
8,
|
|
18
9
|
7,
|
|
@@ -47,6 +38,7 @@ const pib = {
|
|
|
47
38
|
abbreviation: "PIB",
|
|
48
39
|
aliases: ["PIB"],
|
|
49
40
|
candidatePattern: "\\d{8}",
|
|
41
|
+
scope: "country",
|
|
50
42
|
country: "ME",
|
|
51
43
|
entityType: "any",
|
|
52
44
|
lengths: [8],
|
package/dist/me/pib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pib.js","names":[],"sources":["../../src/me/pib.ts"],"sourcesContent":["/**\n * PIB (Poreski identifikacioni broj).\n *\n * Montenegrin tax identification number. 8 digits with\n * a weighted mod 11 checksum.\n *\n * @see https://github.com/arthurdejong/python-stdnum/blob/master/stdnum/me/pib.py\n * @see https://www.tax.gov.me/\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\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":"pib.js","names":[],"sources":["../../src/me/pib.ts"],"sourcesContent":["/**\n * PIB (Poreski identifikacioni broj).\n *\n * Montenegrin tax identification number. 8 digits with\n * a weighted mod 11 checksum.\n *\n * @see https://github.com/arthurdejong/python-stdnum/blob/master/stdnum/me/pib.py\n * @see https://www.tax.gov.me/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\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] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"PIB must be exactly 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"PIB must contain only digits\",\n );\n }\n\n const total = weightedSum(v.slice(0, 7), WEIGHTS, 11);\n const check = ((11 - total) % 11) % 10;\n if (check !== Number(v[7])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"PIB check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Montenegrin PIB. */\nconst generate = (): string => {\n const payload = randomDigits(7);\n const total = weightedSum(payload, WEIGHTS, 11);\n return payload + String(((11 - total) % 11) % 10);\n};\n\n/** Montenegrin Tax Identification Number. */\nconst pib: CountryValidator<\"ME\"> = {\n name: \"Montenegrin Tax ID\",\n localName: \"Poreski identifikacioni broj\",\n abbreviation: \"PIB\",\n aliases: [\"PIB\"] as const,\n candidatePattern: \"\\\\d{8}\",\n scope: \"country\",\n country: \"ME\",\n entityType: \"any\",\n lengths: [8] as const,\n sourceUrl: \"https://www.tax.gov.me/\",\n examples: [\"02655284\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default pib;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAqBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAEpC,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,8BACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAKF,KADgB,KADF,YAAY,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,EACzB,KAAK,KAAM,OACtB,OAAO,EAAE,EAAE,GACvB,OAAO,IACL,oBACA,0BACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,CAAC;CAC9B,MAAM,QAAQ,YAAY,SAAS,SAAS,EAAE;CAC9C,OAAO,UAAU,QAAS,KAAK,SAAS,KAAM,EAAE;AAClD;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,KAAK;CACf,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,CAAC;CACX,WAAW;CACX,UAAU,CAAC,UAAU;CACrB;CACA;CACA;CACA;AACF"}
|
package/dist/mk/edb.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/mk/edb.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 Macedonian EDB. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** North Macedonian Tax Identification Number. */
|
|
10
|
-
declare const edb:
|
|
10
|
+
declare const edb: CountryValidator<"MK">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, edb as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=edb.d.ts.map
|
package/dist/mk/edb.js
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
+
import { weightedSum } from "../_checksums/weighted-sum.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
5
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
6
|
//#region src/mk/edb.ts
|
|
7
|
-
/**
|
|
8
|
-
* EDB (Edinstven danocen broj).
|
|
9
|
-
*
|
|
10
|
-
* North Macedonian tax identification number. 13 digits
|
|
11
|
-
* with a weighted mod 11 checksum. May be prefixed with
|
|
12
|
-
* "MK" (Latin) or "МК" (Cyrillic).
|
|
13
|
-
*
|
|
14
|
-
* @see https://github.com/arthurdejong/python-stdnum/blob/master/stdnum/mk/edb.py
|
|
15
|
-
* @see https://www.ujp.gov.mk/
|
|
16
|
-
*/
|
|
17
7
|
const WEIGHTS = [
|
|
18
8
|
7,
|
|
19
9
|
6,
|
|
@@ -61,6 +51,7 @@ const edb = {
|
|
|
61
51
|
"EDB"
|
|
62
52
|
],
|
|
63
53
|
candidatePattern: "MK\\d{13}",
|
|
54
|
+
scope: "country",
|
|
64
55
|
country: "MK",
|
|
65
56
|
entityType: "any",
|
|
66
57
|
lengths: [13],
|
package/dist/mk/edb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edb.js","names":[],"sources":["../../src/mk/edb.ts"],"sourcesContent":["/**\n * EDB (Edinstven danocen broj).\n *\n * North Macedonian tax identification number. 13 digits\n * with a weighted mod 11 checksum. May be prefixed with\n * \"MK\" (Latin) or \"МК\" (Cyrillic).\n *\n * @see https://github.com/arthurdejong/python-stdnum/blob/master/stdnum/mk/edb.py\n * @see https://www.ujp.gov.mk/\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\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":"edb.js","names":[],"sources":["../../src/mk/edb.ts"],"sourcesContent":["/**\n * EDB (Edinstven danocen broj).\n *\n * North Macedonian tax identification number. 13 digits\n * with a weighted mod 11 checksum. May be prefixed with\n * \"MK\" (Latin) or \"МК\" (Cyrillic).\n *\n * @see https://github.com/arthurdejong/python-stdnum/blob/master/stdnum/mk/edb.py\n * @see https://www.ujp.gov.mk/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [\n 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2,\n] as const;\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -\");\n if (v.startsWith(\"MK\") || v.startsWith(\"\\u041C\\u041A\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 13) {\n return err(\n \"INVALID_LENGTH\",\n \"EDB must be exactly 13 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"EDB must contain only digits\",\n );\n }\n\n const total = weightedSum(v.slice(0, 12), WEIGHTS, 11);\n const check = ((11 - total) % 11) % 10;\n if (check !== Number(v[12])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"EDB check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Macedonian EDB. */\nconst generate = (): string => {\n const payload = randomDigits(12);\n const total = weightedSum(payload, WEIGHTS, 11);\n return payload + String(((11 - total) % 11) % 10);\n};\n\n/** North Macedonian Tax Identification Number. */\nconst edb: CountryValidator<\"MK\"> = {\n name: \"North Macedonian Tax ID\",\n localName: \"Edinstven danocen broj\",\n abbreviation: \"EDB\",\n aliases: [\n \"ЕДБ\",\n \"единствен даночен број\",\n \"EDB\",\n ] as const,\n candidatePattern: \"MK\\\\d{13}\",\n scope: \"country\",\n country: \"MK\",\n entityType: \"any\",\n lengths: [13] as const,\n sourceUrl: \"https://www.ujp.gov.mk/\",\n examples: [\"4002012527974\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default edb;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAsBA,MAAM,UAAU;CACd;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AACnC;AAEA,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,IAAI;CACzB,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAc,GACnD,IAAI,EAAE,MAAM,CAAC;CAEf,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,+BACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAKF,KADgB,KADF,YAAY,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,EAC1B,KAAK,KAAM,OACtB,OAAO,EAAE,GAAG,GACxB,OAAO,IACL,oBACA,0BACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,EAAE;CAC/B,MAAM,QAAQ,YAAY,SAAS,SAAS,EAAE;CAC9C,OAAO,UAAU,QAAS,KAAK,SAAS,KAAM,EAAE;AAClD;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,EAAE;CACZ,WAAW;CACX,UAAU,CAAC,eAAe;CAC1B;CACA;CACA;CACA;AACF"}
|
package/dist/mt/vat.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/mt/vat.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 Maltese VAT number. */
|
|
8
8
|
declare const generate: () => string;
|
|
9
9
|
/** Maltese VAT Number. */
|
|
10
|
-
declare const vat:
|
|
10
|
+
declare const vat: CountryValidator<"MT">;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { compact, vat as default, format, generate, validate };
|
|
13
13
|
//# sourceMappingURL=vat.d.ts.map
|
package/dist/mt/vat.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
1
2
|
import { clean } from "../_util/clean.js";
|
|
2
3
|
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
3
4
|
import { err } from "../_util/result.js";
|
|
4
5
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
6
|
//#region src/mt/vat.ts
|
|
7
|
-
/**
|
|
8
|
-
* VAT (Maltese VAT number).
|
|
9
|
-
*
|
|
10
|
-
* 8 digits, no leading 0.
|
|
11
|
-
* Weights [3,4,6,7,8,9,10,1], sum % 37 === 0.
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.vatify.eu/malta-vat-number.html
|
|
14
|
-
* @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/malta-tin.pdf
|
|
15
|
-
*/
|
|
16
7
|
const WEIGHTS = [
|
|
17
8
|
3,
|
|
18
9
|
4,
|
|
@@ -54,9 +45,11 @@ const vat = {
|
|
|
54
45
|
abbreviation: "VAT",
|
|
55
46
|
aliases: ["VAT number MT"],
|
|
56
47
|
candidatePattern: "MT\\d{8}",
|
|
48
|
+
scope: "country",
|
|
57
49
|
country: "MT",
|
|
58
50
|
entityType: "company",
|
|
59
51
|
sourceUrl: "https://cfr.gov.mt/",
|
|
52
|
+
lengths: [8],
|
|
60
53
|
examples: ["11679112"],
|
|
61
54
|
compact,
|
|
62
55
|
format,
|
package/dist/mt/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":[],"sources":["../../src/mt/vat.ts"],"sourcesContent":["/**\n * VAT (Maltese VAT number).\n *\n * 8 digits, no leading 0.\n * Weights [3,4,6,7,8,9,10,1], sum % 37 === 0.\n *\n * @see https://www.vatify.eu/malta-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/malta-tin.pdf\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/mt/vat.ts"],"sourcesContent":["/**\n * VAT (Maltese VAT number).\n *\n * 8 digits, no leading 0.\n * Weights [3,4,6,7,8,9,10,1], sum % 37 === 0.\n *\n * @see https://www.vatify.eu/malta-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/malta-tin.pdf\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [3, 4, 6, 7, 8, 9, 10, 1];\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"MT\") || v.startsWith(\"mt\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"Maltese VAT number must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Maltese VAT number must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Maltese VAT number cannot start with 0\",\n );\n }\n const sum = weightedSum(v, WEIGHTS, 37);\n if (sum !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Maltese VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `MT${compact(value)}`;\n\n/** Generate a random valid Maltese VAT number. */\nconst generate = (): string => {\n for (;;) {\n const c = String(randomInt(1, 9)) + randomDigits(7);\n if (validate(c).valid) return c;\n }\n};\n\n/** Maltese VAT Number. */\nconst vat: CountryValidator<\"MT\"> = {\n name: \"Maltese VAT Number\",\n localName: \"VAT Registration Number\",\n abbreviation: \"VAT\",\n aliases: [\"VAT number MT\"] as const,\n candidatePattern: \"MT\\\\d{8}\",\n scope: \"country\",\n country: \"MT\",\n entityType: \"company\",\n sourceUrl: \"https://cfr.gov.mt/\",\n lengths: [8] as const,\n examples: [\"11679112\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAqBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;AAAC;AAExC,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,MAAM;CAC3B,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,GACzC,IAAI,EAAE,MAAM,CAAC;CAEf,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,qCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,6CACF;CAEF,IAAI,EAAE,OAAO,KACX,OAAO,IACL,qBACA,wCACF;CAGF,IADY,YAAY,GAAG,SAAS,EAC9B,MAAM,GACV,OAAO,IACL,oBACA,yCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UACd,KAAK,QAAQ,KAAK;;AAGpB,MAAM,iBAAyB;CAC7B,SAAS;EACP,MAAM,IAAI,OAAO,UAAU,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC;EAClD,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;AACF;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,eAAe;CACzB,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,SAAS,CAAC,CAAC;CACX,UAAU,CAAC,UAAU;CACrB;CACA;CACA;CACA;AACF"}
|
package/dist/mu/brn.d.ts
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/mu/brn.d.ts
|
|
4
4
|
/** Generate a random valid Mauritius BRN (entity). */
|
|
5
5
|
declare const generate: () => string;
|
|
6
|
+
/**
|
|
7
|
+
* BRN (Business Registration Number, Mauritius).
|
|
8
|
+
*
|
|
9
|
+
* Issued by the Corporate and Business Registration
|
|
10
|
+
* Department (CBRD). Used to identify entities and
|
|
11
|
+
* individuals carrying out business activities.
|
|
12
|
+
*
|
|
13
|
+
* Entity BRN: 1 letter prefix + 8 digits (9 chars).
|
|
14
|
+
* - Letter indicates entity type (e.g. C = company,
|
|
15
|
+
* F = foreign company).
|
|
16
|
+
* - Digits 2-3 encode the registration year
|
|
17
|
+
* (e.g. 07 = 2007).
|
|
18
|
+
* - Digits 4-9 are a sequential number.
|
|
19
|
+
*
|
|
20
|
+
* Individual BRN: 8 digits, first digit 0-3.
|
|
21
|
+
*
|
|
22
|
+
* No public check digit algorithm is documented.
|
|
23
|
+
*
|
|
24
|
+
* @see https://companies.govmu.org/
|
|
25
|
+
* @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/mauritius-tin.pdf
|
|
26
|
+
*/
|
|
6
27
|
declare const compact: (value: string) => string;
|
|
7
28
|
declare const validate: (value: string) => ValidateResult;
|
|
8
29
|
declare const format: (value: string) => string;
|
|
9
30
|
/** Mauritius Business Registration Number. */
|
|
10
|
-
declare const brn:
|
|
31
|
+
declare const brn: CountryValidator<"MU">;
|
|
11
32
|
//#endregion
|
|
12
33
|
export { compact, brn as default, format, generate, validate };
|
|
13
34
|
//# sourceMappingURL=brn.d.ts.map
|