@stll/stdnum 0.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -5
- package/README.md +28 -4
- package/dist/_checksums/luhn.js.map +1 -1
- package/dist/_checksums/mod1110.js +1 -1
- package/dist/_checksums/mod1110.js.map +1 -1
- package/dist/_checksums/mod112.js +5 -5
- package/dist/_checksums/mod112.js.map +1 -1
- package/dist/_checksums/mod97.js.map +1 -1
- package/dist/_checksums/verhoeff.js.map +1 -1
- package/dist/_checksums/weighted-sum.js.map +1 -1
- package/dist/_util/arabic.js.map +1 -1
- package/dist/_util/clean.js.map +1 -1
- package/dist/_util/date.js.map +1 -1
- package/dist/_util/generate.d.ts +13 -1
- package/dist/_util/generate.js +23 -1
- package/dist/_util/generate.js.map +1 -1
- package/dist/_util/result.js.map +1 -1
- package/dist/_util/strings.js.map +1 -1
- package/dist/ad/mod.d.ts +3 -2
- package/dist/ad/nrt.d.ts +16 -2
- package/dist/ad/nrt.js +4 -16
- package/dist/ad/nrt.js.map +1 -1
- package/dist/ae/eid.d.ts +2 -3
- package/dist/ae/eid.js +2 -12
- package/dist/ae/eid.js.map +1 -1
- package/dist/ae/mod.d.ts +3 -2
- package/dist/ai/mod.d.ts +3 -2
- package/dist/ai/tin.d.ts +20 -2
- package/dist/ai/tin.js +1 -18
- package/dist/ai/tin.js.map +1 -1
- package/dist/al/mod.d.ts +3 -2
- package/dist/al/nipt.d.ts +13 -2
- package/dist/al/nipt.js +1 -11
- package/dist/al/nipt.js.map +1 -1
- package/dist/am/mod.d.ts +3 -2
- package/dist/am/tin.d.ts +16 -2
- package/dist/am/tin.js +1 -14
- package/dist/am/tin.js.map +1 -1
- package/dist/ar/cbu.d.ts +2 -3
- package/dist/ar/cbu.js +2 -10
- package/dist/ar/cbu.js.map +1 -1
- package/dist/ar/cuit.d.ts +2 -3
- package/dist/ar/cuit.js +13 -29
- package/dist/ar/cuit.js.map +1 -1
- package/dist/ar/dni.d.ts +11 -2
- package/dist/ar/dni.js +1 -9
- package/dist/ar/dni.js.map +1 -1
- package/dist/ar/mod.d.ts +3 -2
- package/dist/at/businessid.d.ts +10 -2
- package/dist/at/businessid.js +1 -8
- package/dist/at/businessid.js.map +1 -1
- package/dist/at/mod.d.ts +3 -2
- package/dist/at/tin.d.ts +2 -3
- package/dist/at/tin.js +1 -11
- package/dist/at/tin.js.map +1 -1
- package/dist/at/uid.d.ts +2 -3
- package/dist/at/uid.js +2 -10
- package/dist/at/uid.js.map +1 -1
- package/dist/at/vnr.d.ts +5 -4
- package/dist/at/vnr.js +23 -16
- package/dist/at/vnr.js.map +1 -1
- package/dist/au/abn.d.ts +2 -3
- package/dist/au/abn.js +1 -10
- package/dist/au/abn.js.map +1 -1
- package/dist/au/acn.d.ts +2 -3
- package/dist/au/acn.js +1 -10
- package/dist/au/acn.js.map +1 -1
- package/dist/au/mod.d.ts +3 -2
- package/dist/au/tfn.d.ts +2 -3
- package/dist/au/tfn.js +1 -10
- package/dist/au/tfn.js.map +1 -1
- package/dist/az/mod.d.ts +3 -2
- package/dist/az/voen.d.ts +2 -3
- package/dist/az/voen.js +1 -14
- package/dist/az/voen.js.map +1 -1
- package/dist/ba/jmbg.d.ts +2 -3
- package/dist/ba/jmbg.js +4 -11
- package/dist/ba/jmbg.js.map +1 -1
- package/dist/ba/mod.d.ts +3 -2
- package/dist/bd/mod.d.ts +3 -2
- package/dist/bd/nid.d.ts +23 -2
- package/dist/bd/nid.js +11 -32
- package/dist/bd/nid.js.map +1 -1
- package/dist/be/bis.d.ts +2 -3
- package/dist/be/bis.js +1 -11
- package/dist/be/bis.js.map +1 -1
- package/dist/be/mod.d.ts +3 -2
- package/dist/be/nn.d.ts +2 -3
- package/dist/be/nn.js +1 -11
- package/dist/be/nn.js.map +1 -1
- package/dist/be/vat.d.ts +2 -3
- package/dist/be/vat.js +1 -9
- package/dist/be/vat.js.map +1 -1
- package/dist/bg/egn.d.ts +2 -3
- package/dist/bg/egn.js +5 -13
- package/dist/bg/egn.js.map +1 -1
- package/dist/bg/mod.d.ts +3 -2
- package/dist/bg/pnf.d.ts +2 -3
- package/dist/bg/pnf.js +1 -8
- package/dist/bg/pnf.js.map +1 -1
- package/dist/bg/vat.d.ts +2 -3
- package/dist/bg/vat.js +3 -9
- package/dist/bg/vat.js.map +1 -1
- package/dist/bh/cpr.d.ts +5 -4
- package/dist/bh/cpr.js +9 -19
- package/dist/bh/cpr.js.map +1 -1
- package/dist/bh/mod.d.ts +3 -2
- package/dist/bic.d.ts +13 -2
- package/dist/bic.js +14 -26
- package/dist/bic.js.map +1 -1
- package/dist/br/cnpj.d.ts +2 -3
- package/dist/br/cnpj.js +1 -20
- package/dist/br/cnpj.js.map +1 -1
- package/dist/br/cpf.d.ts +2 -3
- package/dist/br/cpf.js +1 -14
- package/dist/br/cpf.js.map +1 -1
- package/dist/br/mod.d.ts +3 -2
- package/dist/by/mod.d.ts +3 -2
- package/dist/by/unp.d.ts +2 -3
- package/dist/by/unp.js +9 -17
- package/dist/by/unp.js.map +1 -1
- package/dist/bz/mod.d.ts +3 -2
- package/dist/bz/tin.d.ts +5 -4
- package/dist/bz/tin.js +10 -27
- package/dist/bz/tin.js.map +1 -1
- package/dist/ca/bn.d.ts +2 -3
- package/dist/ca/bn.js +2 -10
- package/dist/ca/bn.js.map +1 -1
- package/dist/ca/mod.d.ts +3 -2
- package/dist/ca/sin.d.ts +2 -3
- package/dist/ca/sin.js +2 -10
- package/dist/ca/sin.js.map +1 -1
- package/dist/ch/mod.d.ts +3 -2
- package/dist/ch/ssn.d.ts +2 -3
- package/dist/ch/ssn.js +1 -9
- package/dist/ch/ssn.js.map +1 -1
- package/dist/ch/uid.d.ts +2 -3
- package/dist/ch/uid.js +1 -9
- package/dist/ch/uid.js.map +1 -1
- package/dist/ch/vat.d.ts +2 -3
- package/dist/ch/vat.js +1 -9
- package/dist/ch/vat.js.map +1 -1
- package/dist/cl/mod.d.ts +3 -2
- package/dist/cl/rut.d.ts +2 -3
- package/dist/cl/rut.js +2 -15
- package/dist/cl/rut.js.map +1 -1
- package/dist/cn/mod.d.ts +3 -2
- package/dist/cn/ric.d.ts +2 -3
- package/dist/cn/ric.js +4 -14
- package/dist/cn/ric.js.map +1 -1
- package/dist/cn/uscc.d.ts +2 -3
- package/dist/cn/uscc.js +8 -16
- package/dist/cn/uscc.js.map +1 -1
- package/dist/co/mod.d.ts +3 -2
- package/dist/co/nit.d.ts +2 -3
- package/dist/co/nit.js +6 -13
- package/dist/co/nit.js.map +1 -1
- package/dist/cr/cpf.d.ts +18 -2
- package/dist/cr/cpf.js +5 -19
- package/dist/cr/cpf.js.map +1 -1
- package/dist/cr/mod.d.ts +3 -2
- package/dist/creditcard.d.ts +2 -3
- package/dist/creditcard.js +5 -14
- package/dist/creditcard.js.map +1 -1
- package/dist/cu/mod.d.ts +3 -2
- package/dist/cu/ni.d.ts +5 -4
- package/dist/cu/ni.js +13 -18
- package/dist/cu/ni.js.map +1 -1
- package/dist/cy/mod.d.ts +3 -2
- package/dist/cy/vat.d.ts +2 -3
- package/dist/cy/vat.js +1 -8
- package/dist/cy/vat.js.map +1 -1
- package/dist/cz/dic.d.ts +2 -3
- package/dist/cz/dic.js +7 -13
- package/dist/cz/dic.js.map +1 -1
- package/dist/cz/ico.d.ts +2 -3
- package/dist/cz/ico.js +2 -10
- package/dist/cz/ico.js.map +1 -1
- package/dist/cz/mod.d.ts +3 -2
- package/dist/cz/rc.d.ts +2 -3
- package/dist/cz/rc.js +22 -21
- package/dist/cz/rc.js.map +1 -1
- package/dist/de/handelsreg.d.ts +19 -2
- package/dist/de/handelsreg.js +10 -26
- package/dist/de/handelsreg.js.map +1 -1
- package/dist/de/idnr.d.ts +2 -3
- package/dist/de/idnr.js +2 -12
- package/dist/de/idnr.js.map +1 -1
- package/dist/de/mod.d.ts +3 -2
- package/dist/de/stnr.d.ts +17 -3
- package/dist/de/stnr.js +1 -15
- package/dist/de/stnr.js.map +1 -1
- package/dist/de/svnr.d.ts +2 -3
- package/dist/de/svnr.js +4 -13
- package/dist/de/svnr.js.map +1 -1
- package/dist/de/vat.d.ts +2 -3
- package/dist/de/vat.js +2 -11
- package/dist/de/vat.js.map +1 -1
- package/dist/dk/cpr.d.ts +5 -4
- package/dist/dk/cpr.js +14 -12
- package/dist/dk/cpr.js.map +1 -1
- package/dist/dk/cvr.d.ts +2 -3
- package/dist/dk/cvr.js +2 -15
- package/dist/dk/cvr.js.map +1 -1
- package/dist/dk/mod.d.ts +3 -2
- package/dist/dk/vat.d.ts +2 -3
- package/dist/dk/vat.js +3 -13
- package/dist/dk/vat.js.map +1 -1
- package/dist/do/mod.d.ts +3 -2
- package/dist/do/rnc.d.ts +2 -3
- package/dist/do/rnc.js +3 -17
- package/dist/do/rnc.js.map +1 -1
- package/dist/ec/mod.d.ts +3 -2
- package/dist/ec/ruc.d.ts +2 -3
- package/dist/ec/ruc.js +2 -19
- package/dist/ec/ruc.js.map +1 -1
- package/dist/ee/ik.d.ts +2 -3
- package/dist/ee/ik.js +6 -15
- package/dist/ee/ik.js.map +1 -1
- package/dist/ee/mod.d.ts +3 -2
- package/dist/ee/registrikood.d.ts +2 -3
- package/dist/ee/registrikood.js +9 -15
- package/dist/ee/registrikood.js.map +1 -1
- package/dist/ee/vat.d.ts +2 -3
- package/dist/ee/vat.js +2 -10
- package/dist/ee/vat.js.map +1 -1
- package/dist/eg/mod.d.ts +3 -2
- package/dist/eg/tn.d.ts +11 -2
- package/dist/eg/tn.js +1 -9
- package/dist/eg/tn.js.map +1 -1
- package/dist/es/cif.d.ts +2 -3
- package/dist/es/cif.js +3 -12
- package/dist/es/cif.js.map +1 -1
- package/dist/es/dni.d.ts +2 -3
- package/dist/es/dni.js +1 -9
- package/dist/es/dni.js.map +1 -1
- package/dist/es/mod.d.ts +3 -2
- package/dist/es/nie.d.ts +2 -3
- package/dist/es/nie.js +14 -22
- package/dist/es/nie.js.map +1 -1
- package/dist/es/nss.d.ts +2 -3
- package/dist/es/nss.js +1 -16
- package/dist/es/nss.js.map +1 -1
- package/dist/es/vat.d.ts +2 -3
- package/dist/es/vat.js +5 -10
- package/dist/es/vat.js.map +1 -1
- package/dist/eu/mod.d.ts +3 -2
- package/dist/eu/vat.d.ts +5 -4
- package/dist/eu/vat.js +44 -2
- package/dist/eu/vat.js.map +1 -1
- package/dist/fi/hetu.d.ts +5 -4
- package/dist/fi/hetu.js +19 -12
- package/dist/fi/hetu.js.map +1 -1
- package/dist/fi/mod.d.ts +3 -2
- package/dist/fi/vat.d.ts +2 -3
- package/dist/fi/vat.js +3 -10
- package/dist/fi/vat.js.map +1 -1
- package/dist/fi/ytunnus.d.ts +2 -3
- package/dist/fi/ytunnus.js +2 -10
- package/dist/fi/ytunnus.js.map +1 -1
- package/dist/fr/mod.d.ts +3 -2
- package/dist/fr/nif.d.ts +2 -3
- package/dist/fr/nif.js +1 -9
- package/dist/fr/nif.js.map +1 -1
- package/dist/fr/nir.d.ts +2 -3
- package/dist/fr/nir.js +3 -14
- package/dist/fr/nir.js.map +1 -1
- package/dist/fr/siren.d.ts +2 -3
- package/dist/fr/siren.js +2 -10
- package/dist/fr/siren.js.map +1 -1
- package/dist/fr/siret.d.ts +2 -3
- package/dist/fr/siret.js +2 -11
- package/dist/fr/siret.js.map +1 -1
- package/dist/fr/tva.d.ts +2 -3
- package/dist/fr/tva.js +2 -12
- package/dist/fr/tva.js.map +1 -1
- package/dist/gb/mod.d.ts +3 -2
- package/dist/gb/nino.d.ts +12 -2
- package/dist/gb/nino.js +8 -17
- package/dist/gb/nino.js.map +1 -1
- package/dist/gb/sedol.d.ts +2 -3
- package/dist/gb/sedol.js +9 -18
- package/dist/gb/sedol.js.map +1 -1
- package/dist/gb/utr.d.ts +2 -3
- package/dist/gb/utr.js +2 -10
- package/dist/gb/utr.js.map +1 -1
- package/dist/gb/vat.d.ts +2 -3
- package/dist/gb/vat.js +2 -11
- package/dist/gb/vat.js.map +1 -1
- package/dist/ge/mod.d.ts +3 -2
- package/dist/ge/pin.d.ts +14 -2
- package/dist/ge/pin.js +1 -12
- package/dist/ge/pin.js.map +1 -1
- package/dist/gh/mod.d.ts +3 -2
- package/dist/gh/tin.d.ts +2 -3
- package/dist/gh/tin.js +10 -24
- package/dist/gh/tin.js.map +1 -1
- package/dist/gr/amka.d.ts +2 -3
- package/dist/gr/amka.js +3 -11
- package/dist/gr/amka.js.map +1 -1
- package/dist/gr/mod.d.ts +3 -2
- package/dist/gr/vat.d.ts +2 -3
- package/dist/gr/vat.js +1 -10
- package/dist/gr/vat.js.map +1 -1
- package/dist/gt/mod.d.ts +3 -2
- package/dist/gt/nit.d.ts +2 -3
- package/dist/gt/nit.js +6 -14
- package/dist/gt/nit.js.map +1 -1
- package/dist/hk/hkid.d.ts +2 -3
- package/dist/hk/hkid.js +2 -10
- package/dist/hk/hkid.js.map +1 -1
- package/dist/hk/mod.d.ts +3 -2
- package/dist/hr/mod.d.ts +3 -2
- package/dist/hr/vat.d.ts +2 -3
- package/dist/hr/vat.js +2 -9
- package/dist/hr/vat.js.map +1 -1
- package/dist/hu/mod.d.ts +3 -2
- package/dist/hu/vat.d.ts +2 -3
- package/dist/hu/vat.js +3 -10
- package/dist/hu/vat.js.map +1 -1
- package/dist/iban.d.ts +2 -3
- package/dist/iban.js +2 -8
- package/dist/iban.js.map +1 -1
- package/dist/id/mod.d.ts +3 -2
- package/dist/id/npwp.d.ts +2 -3
- package/dist/id/npwp.js +3 -13
- package/dist/id/npwp.js.map +1 -1
- package/dist/ie/mod.d.ts +3 -2
- package/dist/ie/pps.d.ts +2 -3
- package/dist/ie/pps.js +1 -10
- package/dist/ie/pps.js.map +1 -1
- package/dist/ie/vat.d.ts +2 -3
- package/dist/ie/vat.js +1 -9
- package/dist/ie/vat.js.map +1 -1
- package/dist/il/idnr.d.ts +2 -3
- package/dist/il/idnr.js +2 -9
- package/dist/il/idnr.js.map +1 -1
- package/dist/il/mod.d.ts +3 -2
- package/dist/in/aadhaar.d.ts +2 -3
- package/dist/in/aadhaar.js +2 -12
- package/dist/in/aadhaar.js.map +1 -1
- package/dist/in/gstin.d.ts +2 -3
- package/dist/in/gstin.js +4 -11
- package/dist/in/gstin.js.map +1 -1
- package/dist/in/mod.d.ts +3 -2
- package/dist/in/pan.d.ts +15 -2
- package/dist/in/pan.js +3 -15
- package/dist/in/pan.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -6
- package/dist/iq/mod.d.ts +3 -2
- package/dist/iq/nid.d.ts +16 -2
- package/dist/iq/nid.js +2 -15
- package/dist/iq/nid.js.map +1 -1
- package/dist/ir/mod.d.ts +3 -2
- package/dist/ir/nid.d.ts +2 -3
- package/dist/ir/nid.js +2 -24
- package/dist/ir/nid.js.map +1 -1
- package/dist/is/kennitala.d.ts +2 -3
- package/dist/is/kennitala.js +2 -13
- package/dist/is/kennitala.js.map +1 -1
- package/dist/is/mod.d.ts +3 -2
- package/dist/is/vsk.d.ts +9 -2
- package/dist/is/vsk.js +1 -7
- package/dist/is/vsk.js.map +1 -1
- package/dist/isin.d.ts +2 -3
- package/dist/isin.js +11 -21
- package/dist/isin.js.map +1 -1
- package/dist/it/codicefiscale.d.ts +5 -4
- package/dist/it/codicefiscale.js +27 -23
- package/dist/it/codicefiscale.js.map +1 -1
- package/dist/it/iva.d.ts +2 -3
- package/dist/it/iva.js +2 -9
- package/dist/it/iva.js.map +1 -1
- package/dist/it/mod.d.ts +3 -2
- package/dist/jp/cn.d.ts +2 -3
- package/dist/jp/cn.js +1 -9
- package/dist/jp/cn.js.map +1 -1
- package/dist/jp/mod.d.ts +3 -2
- package/dist/jp/mynumber.d.ts +2 -3
- package/dist/jp/mynumber.js +1 -10
- package/dist/jp/mynumber.js.map +1 -1
- package/dist/kr/brn.d.ts +11 -2
- package/dist/kr/brn.js +1 -9
- package/dist/kr/brn.js.map +1 -1
- package/dist/kr/mod.d.ts +3 -2
- package/dist/kr/rrn.d.ts +5 -4
- package/dist/kr/rrn.js +15 -13
- package/dist/kr/rrn.js.map +1 -1
- package/dist/kw/civil.d.ts +6 -5
- package/dist/kw/civil.js +20 -17
- package/dist/kw/civil.js.map +1 -1
- package/dist/kw/mod.d.ts +3 -2
- package/dist/kz/iin.d.ts +2 -3
- package/dist/kz/iin.js +4 -18
- package/dist/kz/iin.js.map +1 -1
- package/dist/kz/mod.d.ts +3 -2
- package/dist/lei.d.ts +2 -3
- package/dist/lei.js +2 -11
- package/dist/lei.js.map +1 -1
- package/dist/li/mod.d.ts +3 -2
- package/dist/li/peid.d.ts +11 -2
- package/dist/li/peid.js +1 -9
- package/dist/li/peid.js.map +1 -1
- package/dist/lk/mod.d.ts +3 -2
- package/dist/lk/nic.d.ts +5 -4
- package/dist/lk/nic.js +16 -16
- package/dist/lk/nic.js.map +1 -1
- package/dist/lt/asmens.d.ts +2 -3
- package/dist/lt/asmens.js +2 -1
- package/dist/lt/asmens.js.map +1 -1
- package/dist/lt/mod.d.ts +3 -2
- package/dist/lt/vat.d.ts +2 -3
- package/dist/lt/vat.js +2 -10
- package/dist/lt/vat.js.map +1 -1
- package/dist/lu/mod.d.ts +3 -2
- package/dist/lu/vat.d.ts +2 -3
- package/dist/lu/vat.js +2 -8
- package/dist/lu/vat.js.map +1 -1
- package/dist/luhn.d.ts +2 -3
- package/dist/luhn.js +9 -9
- package/dist/luhn.js.map +1 -1
- package/dist/lv/mod.d.ts +3 -2
- package/dist/lv/vat.d.ts +2 -3
- package/dist/lv/vat.js +19 -18
- package/dist/lv/vat.js.map +1 -1
- package/dist/ma/ice.d.ts +2 -3
- package/dist/ma/ice.js +2 -11
- package/dist/ma/ice.js.map +1 -1
- package/dist/ma/mod.d.ts +3 -2
- package/dist/mc/mod.d.ts +3 -2
- package/dist/mc/tva.d.ts +2 -3
- package/dist/mc/tva.js +1 -0
- package/dist/mc/tva.js.map +1 -1
- package/dist/md/idno.d.ts +2 -3
- package/dist/md/idno.js +1 -10
- package/dist/md/idno.js.map +1 -1
- package/dist/md/mod.d.ts +3 -2
- package/dist/me/mod.d.ts +3 -2
- package/dist/me/pib.d.ts +2 -3
- package/dist/me/pib.js +2 -10
- package/dist/me/pib.js.map +1 -1
- package/dist/mk/edb.d.ts +2 -3
- package/dist/mk/edb.js +2 -11
- package/dist/mk/edb.js.map +1 -1
- package/dist/mk/mod.d.ts +3 -2
- package/dist/mt/mod.d.ts +3 -2
- package/dist/mt/vat.d.ts +2 -3
- package/dist/mt/vat.js +3 -10
- package/dist/mt/vat.js.map +1 -1
- package/dist/mu/brn.d.ts +23 -2
- package/dist/mu/brn.js +1 -21
- package/dist/mu/brn.js.map +1 -1
- package/dist/mu/mod.d.ts +3 -2
- package/dist/mx/clabe.d.ts +2 -3
- package/dist/mx/clabe.js +1 -14
- package/dist/mx/clabe.js.map +1 -1
- package/dist/mx/curp.d.ts +5 -4
- package/dist/mx/curp.js +27 -19
- package/dist/mx/curp.js.map +1 -1
- package/dist/mx/mod.d.ts +3 -2
- package/dist/mx/rfc.d.ts +5 -4
- package/dist/mx/rfc.js +23 -20
- package/dist/mx/rfc.js.map +1 -1
- package/dist/my/mod.d.ts +3 -2
- package/dist/my/nric.d.ts +5 -4
- package/dist/my/nric.js +18 -16
- package/dist/my/nric.js.map +1 -1
- package/dist/ng/mod.d.ts +3 -2
- package/dist/ng/nin.d.ts +13 -2
- package/dist/ng/nin.js +1 -11
- package/dist/ng/nin.js.map +1 -1
- package/dist/ni/mod.d.ts +3 -2
- package/dist/ni/ruc.d.ts +2 -3
- package/dist/ni/ruc.js +1 -23
- package/dist/ni/ruc.js.map +1 -1
- package/dist/nl/bsn.d.ts +2 -3
- package/dist/nl/bsn.js +2 -10
- package/dist/nl/bsn.js.map +1 -1
- package/dist/nl/kvk.d.ts +9 -2
- package/dist/nl/kvk.js +1 -7
- package/dist/nl/kvk.js.map +1 -1
- package/dist/nl/mod.d.ts +3 -2
- package/dist/nl/vat.d.ts +2 -3
- package/dist/nl/vat.js +4 -50
- package/dist/nl/vat.js.map +1 -1
- package/dist/no/fodselsnummer.d.ts +2 -3
- package/dist/no/fodselsnummer.js +3 -10
- package/dist/no/fodselsnummer.js.map +1 -1
- package/dist/no/mod.d.ts +3 -2
- package/dist/no/mva.d.ts +2 -3
- package/dist/no/mva.js +1 -8
- package/dist/no/mva.js.map +1 -1
- package/dist/no/orgnr.d.ts +2 -3
- package/dist/no/orgnr.js +2 -8
- package/dist/no/orgnr.js.map +1 -1
- package/dist/nz/ird.d.ts +2 -3
- package/dist/nz/ird.js +4 -13
- package/dist/nz/ird.js.map +1 -1
- package/dist/nz/mod.d.ts +3 -2
- package/dist/pa/mod.d.ts +3 -2
- package/dist/pa/ruc.d.ts +2 -3
- package/dist/pa/ruc.js +4 -19
- package/dist/pa/ruc.js.map +1 -1
- package/dist/patterns.d.ts +8 -10
- package/dist/patterns.js +83 -28
- package/dist/patterns.js.map +1 -1
- package/dist/pe/mod.d.ts +3 -2
- package/dist/pe/ruc.d.ts +2 -3
- package/dist/pe/ruc.js +10 -24
- package/dist/pe/ruc.js.map +1 -1
- package/dist/ph/mod.d.ts +3 -2
- package/dist/ph/philid.d.ts +14 -2
- package/dist/ph/philid.js +1 -12
- package/dist/ph/philid.js.map +1 -1
- package/dist/pk/cnic.d.ts +14 -2
- package/dist/pk/cnic.js +1 -12
- package/dist/pk/cnic.js.map +1 -1
- package/dist/pk/mod.d.ts +3 -2
- package/dist/pl/mod.d.ts +3 -2
- package/dist/pl/nip.d.ts +2 -3
- package/dist/pl/nip.js +2 -10
- package/dist/pl/nip.js.map +1 -1
- package/dist/pl/pesel.d.ts +2 -3
- package/dist/pl/pesel.js +4 -13
- package/dist/pl/pesel.js.map +1 -1
- package/dist/pl/regon.d.ts +2 -3
- package/dist/pl/regon.js +2 -11
- package/dist/pl/regon.js.map +1 -1
- package/dist/pt/cc.d.ts +2 -3
- package/dist/pt/cc.js +7 -13
- package/dist/pt/cc.js.map +1 -1
- package/dist/pt/mod.d.ts +3 -2
- package/dist/pt/vat.d.ts +2 -3
- package/dist/pt/vat.js +3 -11
- package/dist/pt/vat.js.map +1 -1
- package/dist/ro/cnp.d.ts +2 -3
- package/dist/ro/cnp.js +5 -14
- package/dist/ro/cnp.js.map +1 -1
- package/dist/ro/mod.d.ts +3 -2
- package/dist/ro/vat.d.ts +2 -3
- package/dist/ro/vat.js +13 -11
- package/dist/ro/vat.js.map +1 -1
- package/dist/rs/mod.d.ts +3 -2
- package/dist/rs/pib.d.ts +2 -3
- package/dist/rs/pib.js +1 -9
- package/dist/rs/pib.js.map +1 -1
- package/dist/ru/inn.d.ts +2 -3
- package/dist/ru/inn.js +2 -12
- package/dist/ru/inn.js.map +1 -1
- package/dist/ru/mod.d.ts +3 -2
- package/dist/se/mod.d.ts +3 -2
- package/dist/se/orgnr.d.ts +2 -3
- package/dist/se/orgnr.js +2 -9
- package/dist/se/orgnr.js.map +1 -1
- package/dist/se/personnummer.d.ts +2 -3
- package/dist/se/personnummer.js +8 -15
- package/dist/se/personnummer.js.map +1 -1
- package/dist/se/vat.d.ts +2 -3
- package/dist/se/vat.js +3 -10
- package/dist/se/vat.js.map +1 -1
- package/dist/sg/mod.d.ts +3 -2
- package/dist/sg/uen.d.ts +2 -3
- package/dist/sg/uen.js +47 -70
- package/dist/sg/uen.js.map +1 -1
- package/dist/si/emso.d.ts +2 -3
- package/dist/si/emso.js +12 -14
- package/dist/si/emso.js.map +1 -1
- package/dist/si/mod.d.ts +3 -2
- package/dist/si/vat.d.ts +2 -3
- package/dist/si/vat.js +3 -12
- package/dist/si/vat.js.map +1 -1
- package/dist/sk/dic.d.ts +2 -3
- package/dist/sk/dic.js +1 -0
- package/dist/sk/dic.js.map +1 -1
- package/dist/sk/ico.d.ts +2 -3
- package/dist/sk/ico.js +1 -0
- package/dist/sk/ico.js.map +1 -1
- package/dist/sk/mod.d.ts +3 -2
- package/dist/sk/rc.d.ts +4 -5
- package/dist/sk/rc.js +6 -2
- package/dist/sk/rc.js.map +1 -1
- package/dist/th/mod.d.ts +3 -2
- package/dist/th/tin.d.ts +2 -3
- package/dist/th/tin.js +1 -11
- package/dist/th/tin.js.map +1 -1
- package/dist/tr/mod.d.ts +3 -2
- package/dist/tr/tckimlik.d.ts +2 -3
- package/dist/tr/tckimlik.js +1 -20
- package/dist/tr/tckimlik.js.map +1 -1
- package/dist/tr/vkn.d.ts +2 -3
- package/dist/tr/vkn.js +1 -20
- package/dist/tr/vkn.js.map +1 -1
- package/dist/tw/mod.d.ts +3 -2
- package/dist/tw/ubn.d.ts +2 -3
- package/dist/tw/ubn.js +2 -12
- package/dist/tw/ubn.js.map +1 -1
- package/dist/types.d.ts +56 -21
- package/dist/ua/edrpou.d.ts +2 -3
- package/dist/ua/edrpou.js +5 -12
- package/dist/ua/edrpou.js.map +1 -1
- package/dist/ua/mod.d.ts +3 -2
- package/dist/us/ein.d.ts +12 -2
- package/dist/us/ein.js +88 -97
- package/dist/us/ein.js.map +1 -1
- package/dist/us/itin.d.ts +13 -2
- package/dist/us/itin.js +4 -15
- package/dist/us/itin.js.map +1 -1
- package/dist/us/mod.d.ts +3 -2
- package/dist/us/rtn.d.ts +2 -3
- package/dist/us/rtn.js +11 -23
- package/dist/us/rtn.js.map +1 -1
- package/dist/us/ssn.d.ts +13 -2
- package/dist/us/ssn.js +1 -11
- package/dist/us/ssn.js.map +1 -1
- package/dist/uy/mod.d.ts +3 -2
- package/dist/uy/rut.d.ts +2 -3
- package/dist/uy/rut.js +2 -15
- package/dist/uy/rut.js.map +1 -1
- package/dist/ve/mod.d.ts +3 -2
- package/dist/ve/rif.d.ts +2 -3
- package/dist/ve/rif.js +13 -26
- package/dist/ve/rif.js.map +1 -1
- package/dist/vn/mod.d.ts +3 -2
- package/dist/vn/mst.d.ts +2 -3
- package/dist/vn/mst.js +1 -12
- package/dist/vn/mst.js.map +1 -1
- package/dist/za/idnr.d.ts +2 -3
- package/dist/za/idnr.js +4 -16
- package/dist/za/idnr.js.map +1 -1
- package/dist/za/mod.d.ts +3 -2
- package/package.json +34 -21
- package/src/_checksums/mod1110.ts +1 -1
- package/src/_checksums/mod112.ts +7 -6
- package/src/_util/generate.ts +38 -0
- package/src/ad/nrt.ts +19 -7
- package/src/ae/eid.ts +7 -3
- package/src/ai/tin.ts +7 -3
- package/src/al/nipt.ts +7 -3
- package/src/am/tin.ts +7 -3
- package/src/ar/cbu.ts +9 -5
- package/src/ar/cuit.ts +22 -10
- package/src/ar/dni.ts +7 -3
- package/src/at/businessid.ts +7 -3
- package/src/at/tin.ts +7 -3
- package/src/at/uid.ts +7 -3
- package/src/at/vnr.ts +62 -12
- package/src/au/abn.ts +7 -3
- package/src/au/acn.ts +7 -3
- package/src/au/tfn.ts +7 -3
- package/src/az/voen.ts +9 -3
- package/src/ba/jmbg.ts +9 -7
- package/src/bd/nid.ts +11 -7
- package/src/be/bis.ts +8 -4
- package/src/be/nn.ts +7 -3
- package/src/be/vat.ts +7 -3
- package/src/bg/egn.ts +19 -10
- package/src/bg/pnf.ts +7 -3
- package/src/bg/vat.ts +8 -3
- package/src/bh/cpr.ts +17 -4
- package/src/bic.ts +26 -20
- package/src/br/cnpj.ts +7 -3
- package/src/br/cpf.ts +7 -3
- package/src/by/unp.ts +19 -9
- package/src/bz/tin.ts +19 -4
- package/src/ca/bn.ts +7 -3
- package/src/ca/sin.ts +7 -3
- package/src/ch/ssn.ts +7 -3
- package/src/ch/uid.ts +7 -3
- package/src/ch/vat.ts +9 -5
- package/src/cl/rut.ts +11 -5
- package/src/cn/ric.ts +11 -7
- package/src/cn/uscc.ts +27 -11
- package/src/co/nit.ts +14 -6
- package/src/cr/cpf.ts +11 -6
- package/src/creditcard.ts +10 -6
- package/src/cu/ni.ts +28 -7
- package/src/cy/vat.ts +7 -3
- package/src/cz/dic.ts +9 -4
- package/src/cz/ico.ts +7 -3
- package/src/cz/rc.ts +61 -29
- package/src/de/handelsreg.ts +21 -6
- package/src/de/idnr.ts +10 -3
- package/src/de/stnr.ts +11 -3
- package/src/de/svnr.ts +14 -5
- package/src/de/vat.ts +7 -3
- package/src/dk/cpr.ts +23 -8
- package/src/dk/cvr.ts +7 -3
- package/src/dk/vat.ts +8 -3
- package/src/do/rnc.ts +9 -5
- package/src/ec/ruc.ts +9 -5
- package/src/ee/ik.ts +21 -10
- package/src/ee/registrikood.ts +12 -7
- package/src/ee/vat.ts +7 -3
- package/src/eg/tn.ts +7 -3
- package/src/es/cif.ts +10 -7
- package/src/es/dni.ts +7 -3
- package/src/es/nie.ts +18 -9
- package/src/es/nss.ts +7 -3
- package/src/es/vat.ts +13 -5
- package/src/eu/vat.ts +55 -6
- package/src/fi/hetu.ts +26 -8
- package/src/fi/vat.ts +8 -3
- package/src/fi/ytunnus.ts +7 -3
- package/src/fr/nif.ts +7 -3
- package/src/fr/nir.ts +9 -7
- package/src/fr/siren.ts +7 -3
- package/src/fr/siret.ts +7 -3
- package/src/fr/tva.ts +7 -3
- package/src/gb/nino.ts +18 -13
- package/src/gb/sedol.ts +21 -15
- package/src/gb/utr.ts +7 -3
- package/src/gb/vat.ts +7 -3
- package/src/ge/pin.ts +7 -3
- package/src/gh/tin.ts +11 -6
- package/src/gr/amka.ts +7 -3
- package/src/gr/vat.ts +7 -3
- package/src/gt/nit.ts +13 -6
- package/src/hk/hkid.ts +9 -4
- package/src/hr/vat.ts +7 -3
- package/src/hu/vat.ts +8 -3
- package/src/iban.ts +7 -3
- package/src/id/npwp.ts +7 -3
- package/src/ie/pps.ts +7 -3
- package/src/ie/vat.ts +7 -3
- package/src/il/idnr.ts +7 -3
- package/src/in/aadhaar.ts +7 -3
- package/src/in/gstin.ts +10 -4
- package/src/in/pan.ts +15 -6
- package/src/index.ts +6 -0
- package/src/iq/nid.ts +7 -3
- package/src/ir/nid.ts +7 -3
- package/src/is/kennitala.ts +7 -3
- package/src/is/vsk.ts +7 -3
- package/src/isin.ts +17 -7
- package/src/it/codicefiscale.ts +49 -7
- package/src/it/iva.ts +7 -3
- package/src/jp/cn.ts +7 -3
- package/src/jp/mynumber.ts +7 -3
- package/src/kr/brn.ts +7 -3
- package/src/kr/rrn.ts +27 -8
- package/src/kw/civil.ts +31 -14
- package/src/kz/iin.ts +9 -8
- package/src/lei.ts +7 -3
- package/src/li/peid.ts +7 -3
- package/src/lk/nic.ts +31 -8
- package/src/lt/asmens.ts +8 -4
- package/src/lt/vat.ts +8 -3
- package/src/lu/vat.ts +8 -3
- package/src/luhn.ts +10 -3
- package/src/lv/vat.ts +53 -23
- package/src/ma/ice.ts +7 -3
- package/src/mc/tva.ts +9 -5
- package/src/md/idno.ts +7 -3
- package/src/me/pib.ts +7 -3
- package/src/mk/edb.ts +7 -3
- package/src/mt/vat.ts +8 -3
- package/src/mu/brn.ts +7 -3
- package/src/mx/clabe.ts +7 -3
- package/src/mx/curp.ts +47 -10
- package/src/mx/rfc.ts +42 -7
- package/src/my/nric.ts +33 -8
- package/src/ng/nin.ts +7 -3
- package/src/ni/ruc.ts +7 -3
- package/src/nl/bsn.ts +7 -3
- package/src/nl/kvk.ts +7 -3
- package/src/nl/vat.ts +18 -69
- package/src/no/fodselsnummer.ts +12 -7
- package/src/no/mva.ts +9 -5
- package/src/no/orgnr.ts +7 -3
- package/src/nz/ird.ts +12 -8
- package/src/pa/ruc.ts +39 -11
- package/src/patterns.ts +184 -46
- package/src/pe/ruc.ts +13 -10
- package/src/ph/philid.ts +7 -3
- package/src/pk/cnic.ts +9 -3
- package/src/pl/nip.ts +7 -3
- package/src/pl/pesel.ts +9 -7
- package/src/pl/regon.ts +7 -3
- package/src/pt/cc.ts +13 -7
- package/src/pt/vat.ts +8 -3
- package/src/ro/cnp.ts +16 -8
- package/src/ro/vat.ts +8 -3
- package/src/rs/pib.ts +7 -3
- package/src/ru/inn.ts +9 -5
- package/src/se/orgnr.ts +7 -3
- package/src/se/personnummer.ts +35 -32
- package/src/se/vat.ts +8 -3
- package/src/sg/uen.ts +44 -23
- package/src/si/emso.ts +37 -11
- package/src/si/vat.ts +8 -3
- package/src/sk/dic.ts +8 -4
- package/src/sk/ico.ts +3 -2
- package/src/sk/rc.ts +17 -4
- package/src/th/tin.ts +7 -3
- package/src/tr/tckimlik.ts +7 -3
- package/src/tr/vkn.ts +7 -3
- package/src/tw/ubn.ts +9 -5
- package/src/types.ts +69 -7
- package/src/ua/edrpou.ts +10 -5
- package/src/us/ein.ts +95 -91
- package/src/us/itin.ts +14 -11
- package/src/us/rtn.ts +32 -19
- package/src/us/ssn.ts +7 -3
- package/src/uy/rut.ts +9 -5
- package/src/ve/rif.ts +19 -12
- package/src/vn/mst.ts +7 -3
- package/src/za/idnr.ts +9 -7
package/dist/by/unp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unp.js","names":[],"sources":["../../src/by/unp.ts"],"sourcesContent":["/**\n * UNP (Учётный номер плательщика, Belarus tax number).\n *\n * 9 characters: the first two identify the region (numeric\n * for organisations, letters from ABCEHKMOPT for\n * individuals), followed by 7 digits. The last digit is a\n * weighted check digit (mod 11; if remainder > 9 the\n * number is invalid).\n *\n * @see https://be.wikipedia.org/wiki/Уліковы_нумар_плацельшчыка\n * @see https://www.nalog.gov.by/\n */\n\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":"unp.js","names":[],"sources":["../../src/by/unp.ts"],"sourcesContent":["/**\n * UNP (Учётный номер плательщика, Belarus tax number).\n *\n * 9 characters: the first two identify the region (numeric\n * for organisations, letters from ABCEHKMOPT for\n * individuals), followed by 7 digits. The last digit is a\n * weighted check digit (mod 11; if remainder > 9 the\n * number is invalid).\n *\n * @see https://be.wikipedia.org/wiki/Уліковы_нумар_плацельшчыка\n * @see https://www.nalog.gov.by/\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/** Cyrillic to Latin mapping for the letter positions. */\nconst CYRILLIC_TO_LATIN: Record<string, string> = {\n А: \"A\",\n В: \"B\",\n Е: \"E\",\n К: \"K\",\n М: \"M\",\n Н: \"H\",\n О: \"O\",\n Р: \"P\",\n С: \"C\",\n Т: \"T\",\n};\n\nconst WEIGHTS = [29, 23, 19, 17, 13, 7, 5, 3] as const;\nconst ALPHA_SET = \"ABCEHKMOPT\";\nconst VALID_FIRST = \"1234567ABCEHKM\";\nconst ALPHABET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" \").toUpperCase().trim();\n if (v.startsWith(\"УНП\")) {\n v = v.slice(3);\n } else if (v.startsWith(\"UNP\")) {\n v = v.slice(3);\n }\n return v\n .split(\"\")\n .map((ch) => CYRILLIC_TO_LATIN[ch] ?? ch)\n .join(\"\");\n};\n\nconst calcCheckDigit = (number: string): number | null => {\n let work = number;\n if (!isdigits(number)) {\n const second = number[1];\n if (second === undefined) return null;\n const idx = ALPHA_SET.indexOf(second);\n if (idx === -1) return null;\n work = number[0] + String(idx) + number.slice(2);\n }\n let sum = 0;\n for (const [i, weight] of WEIGHTS.entries()) {\n const ch = work[i];\n if (ch === undefined) return null;\n const val = ALPHABET.indexOf(ch);\n if (val === -1) return null;\n sum += weight * val;\n }\n const remainder = sum % 11;\n if (remainder > 9) return null;\n return remainder;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Belarus UNP must be 9 characters\",\n );\n }\n if (!isdigits(v.slice(2))) {\n return err(\n \"INVALID_FORMAT\",\n \"Belarus UNP positions 3-9 must be digits\",\n );\n }\n const first2 = v.slice(0, 2);\n if (\n !isdigits(first2) &&\n !first2.split(\"\").every((ch) => ALPHA_SET.includes(ch))\n ) {\n return err(\n \"INVALID_FORMAT\",\n \"Belarus UNP first two characters must be\" +\n \" digits or letters from ABCEHKMOPT\",\n );\n }\n // SAFETY: v.length === 9 guarantees v[0] exists.\n // eslint-disable-next-line no-non-null-assertion\n if (!VALID_FIRST.includes(v[0]!)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Belarus UNP has an invalid region prefix\",\n );\n }\n const expected = calcCheckDigit(v);\n if (expected === null) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Belarus UNP check digit is invalid\" +\n \" (mod 11 remainder > 9)\",\n );\n }\n if (v[8] !== String(expected)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Belarus UNP check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Belarus UNP. */\nconst generate = (): string => {\n for (let i = 0; i < 100; i++) {\n const prefix = String(randomInt(1, 7));\n const rest = randomDigits(7);\n const payload = prefix + rest;\n const check = calcCheckDigit(payload);\n if (check === null) continue;\n const c = payload.slice(0, 8) + String(check);\n if (validate(c).valid) return c;\n }\n throw new Error(\"Failed to generate valid UNP\");\n};\n\n/** Belarus UNP (Учётный номер плательщика). */\nconst unp: CountryValidator<\"BY\"> = {\n name: \"Belarus Tax Number\",\n localName: \"Учётный номер плательщика\",\n abbreviation: \"УНП\",\n aliases: [\"УНП\", \"UNP\"] as const,\n candidatePattern: \"\\\\d{9}\",\n scope: \"country\",\n country: \"BY\",\n entityType: \"any\",\n sourceUrl: \"https://www.nalog.gov.by/\",\n examples: [\"200988541\", \"MA1953684\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default unp;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAwBA,MAAM,oBAA4C;CAChD,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL;AAEA,MAAM,UAAU;CAAC;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;AAAC;AAC5C,MAAM,YAAY;AAClB,MAAM,cAAc;AACpB,MAAM,WAAW;AAEjB,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,KAAK;CAC7C,IAAI,EAAE,WAAW,KAAK,GACpB,IAAI,EAAE,MAAM,CAAC;MACR,IAAI,EAAE,WAAW,KAAK,GAC3B,IAAI,EAAE,MAAM,CAAC;CAEf,OAAO,EACJ,MAAM,EAAE,EACR,KAAK,OAAO,kBAAkB,OAAO,EAAE,EACvC,KAAK,EAAE;AACZ;AAEA,MAAM,kBAAkB,WAAkC;CACxD,IAAI,OAAO;CACX,IAAI,CAAC,SAAS,MAAM,GAAG;EACrB,MAAM,SAAS,OAAO;EACtB,IAAI,WAAW,KAAA,GAAW,OAAO;EACjC,MAAM,MAAM,UAAU,QAAQ,MAAM;EACpC,IAAI,QAAQ,IAAI,OAAO;EACvB,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI,OAAO,MAAM,CAAC;CACjD;CACA,IAAI,MAAM;CACV,KAAK,MAAM,CAAC,GAAG,WAAW,QAAQ,QAAQ,GAAG;EAC3C,MAAM,KAAK,KAAK;EAChB,IAAI,OAAO,KAAA,GAAW,OAAO;EAC7B,MAAM,MAAM,SAAS,QAAQ,EAAE;EAC/B,IAAI,QAAQ,IAAI,OAAO;EACvB,OAAO,SAAS;CAClB;CACA,MAAM,YAAY,MAAM;CACxB,IAAI,YAAY,GAAG,OAAO;CAC1B,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,kCACF;CAEF,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GACtB,OAAO,IACL,kBACA,0CACF;CAEF,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC;CAC3B,IACE,CAAC,SAAS,MAAM,KAChB,CAAC,OAAO,MAAM,EAAE,EAAE,OAAO,OAAO,UAAU,SAAS,EAAE,CAAC,GAEtD,OAAO,IACL,kBACA,4EAEF;CAIF,IAAI,CAAC,YAAY,SAAS,EAAE,EAAG,GAC7B,OAAO,IACL,qBACA,0CACF;CAEF,MAAM,WAAW,eAAe,CAAC;CACjC,IAAI,aAAa,MACf,OAAO,IACL,oBACA,2DAEF;CAEF,IAAI,EAAE,OAAO,OAAO,QAAQ,GAC1B,OAAO,IACL,oBACA,kCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,MAAM,iBAAyB;CAC7B,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;EAG5B,MAAM,UAFS,OAAO,UAAU,GAAG,CAAC,CAEf,IADR,aAAa,CACE;EAC5B,MAAM,QAAQ,eAAe,OAAO;EACpC,IAAI,UAAU,MAAM;EACpB,MAAM,IAAI,QAAQ,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK;EAC5C,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;CACA,MAAM,IAAI,MAAM,8BAA8B;AAChD;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,KAAK;CACtB,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa,WAAW;CACnC;CACA;CACA;CACA;AACF"}
|
package/dist/bz/mod.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import tin from "./tin.js";
|
|
3
2
|
|
|
4
3
|
//#region src/bz/mod.d.ts
|
|
5
|
-
|
|
4
|
+
declare namespace mod_d_exports {
|
|
5
|
+
export { tin };
|
|
6
|
+
}
|
|
6
7
|
//#endregion
|
|
7
8
|
export { mod_d_exports, tin };
|
|
8
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/bz/tin.d.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/bz/tin.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
7
|
+
/** Generate a random valid Belize TIN. */
|
|
8
|
+
declare const generate: () => string;
|
|
8
9
|
/**
|
|
9
10
|
* Belize Tax Identification Number.
|
|
10
11
|
*
|
|
11
12
|
* Examples derived from stdnum-js test suite.
|
|
12
13
|
*/
|
|
13
|
-
declare const tin:
|
|
14
|
+
declare const tin: CountryValidator<"BZ">;
|
|
14
15
|
//#endregion
|
|
15
|
-
export { compact, tin as default, format, validate };
|
|
16
|
+
export { compact, tin as default, format, generate, validate };
|
|
16
17
|
//# sourceMappingURL=tin.d.ts.map
|
package/dist/bz/tin.js
CHANGED
|
@@ -1,32 +1,7 @@
|
|
|
1
1
|
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
2
3
|
import { err } from "../_util/result.js";
|
|
3
4
|
//#region src/bz/tin.ts
|
|
4
|
-
/**
|
|
5
|
-
* TIN (Belize Tax Identification Number).
|
|
6
|
-
*
|
|
7
|
-
* Issued by the Belize Tax Service Department to
|
|
8
|
-
* individuals, sole proprietors, partnerships, and
|
|
9
|
-
* companies. The base number is 6 digits generated
|
|
10
|
-
* by the Revenue Management System. A 2-digit
|
|
11
|
-
* suffix code may be appended to indicate entity
|
|
12
|
-
* type:
|
|
13
|
-
* - 10: individual
|
|
14
|
-
* - 13: company
|
|
15
|
-
* - 66: company (alternate)
|
|
16
|
-
*
|
|
17
|
-
* The OECD spec mentions a 7th check digit that is
|
|
18
|
-
* not visible to the taxpayer; in practice the
|
|
19
|
-
* number circulates as 6 or 8 digits (6 + suffix).
|
|
20
|
-
*
|
|
21
|
-
* Formatted as NNNNNN-SS (when suffix is present).
|
|
22
|
-
*
|
|
23
|
-
* Source: OECD CRS TIN information sheet; Belize
|
|
24
|
-
* Tax Service (https://bts.gov.bz/).
|
|
25
|
-
*
|
|
26
|
-
* PERSON/ENTITY
|
|
27
|
-
*
|
|
28
|
-
* @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf
|
|
29
|
-
*/
|
|
30
5
|
/** Valid 2-digit suffix codes. */
|
|
31
6
|
const SUFFIX_CODES = [
|
|
32
7
|
"10",
|
|
@@ -54,6 +29,12 @@ const format = (value) => {
|
|
|
54
29
|
if (v.length <= 6) return v;
|
|
55
30
|
return `${v.slice(0, 6)}-${v.slice(6)}`;
|
|
56
31
|
};
|
|
32
|
+
/** Generate a random valid Belize TIN. */
|
|
33
|
+
const generate = () => {
|
|
34
|
+
const base = randomDigits(6);
|
|
35
|
+
const suffixes = ["", ...SUFFIX_CODES];
|
|
36
|
+
return `${base}${suffixes[randomInt(0, suffixes.length - 1)] ?? ""}`;
|
|
37
|
+
};
|
|
57
38
|
/**
|
|
58
39
|
* Belize Tax Identification Number.
|
|
59
40
|
*
|
|
@@ -65,6 +46,7 @@ const tin = {
|
|
|
65
46
|
abbreviation: "TIN",
|
|
66
47
|
aliases: ["TIN"],
|
|
67
48
|
candidatePattern: "\\d{6}",
|
|
49
|
+
scope: "country",
|
|
68
50
|
country: "BZ",
|
|
69
51
|
entityType: "any",
|
|
70
52
|
lengths: [6, 8],
|
|
@@ -76,10 +58,11 @@ const tin = {
|
|
|
76
58
|
compact,
|
|
77
59
|
format,
|
|
78
60
|
validate,
|
|
61
|
+
generate,
|
|
79
62
|
description: "Belize tax number issued by the Belize Tax Service Department",
|
|
80
63
|
sourceUrl: "https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf"
|
|
81
64
|
};
|
|
82
65
|
//#endregion
|
|
83
|
-
export { compact, tin as default, format, validate };
|
|
66
|
+
export { compact, tin as default, format, generate, validate };
|
|
84
67
|
|
|
85
68
|
//# sourceMappingURL=tin.js.map
|
package/dist/bz/tin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tin.js","names":[],"sources":["../../src/bz/tin.ts"],"sourcesContent":["/**\n * TIN (Belize Tax Identification Number).\n *\n * Issued by the Belize Tax Service Department to\n * individuals, sole proprietors, partnerships, and\n * companies. The base number is 6 digits generated\n * by the Revenue Management System. A 2-digit\n * suffix code may be appended to indicate entity\n * type:\n * - 10: individual\n * - 13: company\n * - 66: company (alternate)\n *\n * The OECD spec mentions a 7th check digit that is\n * not visible to the taxpayer; in practice the\n * number circulates as 6 or 8 digits (6 + suffix).\n *\n * Formatted as NNNNNN-SS (when suffix is present).\n *\n * Source: OECD CRS TIN information sheet; Belize\n * Tax Service (https://bts.gov.bz/).\n *\n * PERSON/ENTITY\n *\n * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf\n */\n\nimport { clean } from \"#util/clean\";\nimport {
|
|
1
|
+
{"version":3,"file":"tin.js","names":[],"sources":["../../src/bz/tin.ts"],"sourcesContent":["/**\n * TIN (Belize Tax Identification Number).\n *\n * Issued by the Belize Tax Service Department to\n * individuals, sole proprietors, partnerships, and\n * companies. The base number is 6 digits generated\n * by the Revenue Management System. A 2-digit\n * suffix code may be appended to indicate entity\n * type:\n * - 10: individual\n * - 13: company\n * - 66: company (alternate)\n *\n * The OECD spec mentions a 7th check digit that is\n * not visible to the taxpayer; in practice the\n * number circulates as 6 or 8 digits (6 + suffix).\n *\n * Formatted as NNNNNN-SS (when suffix is present).\n *\n * Source: OECD CRS TIN information sheet; Belize\n * Tax Service (https://bts.gov.bz/).\n *\n * PERSON/ENTITY\n *\n * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf\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\n/** Valid 2-digit suffix codes. */\nconst SUFFIX_CODES = [\"10\", \"13\", \"66\"] as const;\n\nconst compact = (value: string): string => {\n return clean(value, \" -\").trim();\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 6 && v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"Belize TIN must be 6 or 8 digits\",\n );\n }\n\n if (!/^\\d+$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Belize TIN must contain only digits\",\n );\n }\n\n if (v.length === 8) {\n const suffix = v.slice(6);\n if (\n !SUFFIX_CODES.includes(\n suffix as (typeof SUFFIX_CODES)[number],\n )\n ) {\n return err(\n \"INVALID_COMPONENT\",\n \"Belize TIN suffix must be 10, 13, or 66\",\n );\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 <= 6) {\n return v;\n }\n return `${v.slice(0, 6)}-${v.slice(6)}`;\n};\n\n/** Generate a random valid Belize TIN. */\nconst generate = (): string => {\n const base = randomDigits(6);\n const suffixes = [\"\", ...SUFFIX_CODES] as const;\n const suffix =\n suffixes[randomInt(0, suffixes.length - 1)] ?? \"\";\n return `${base}${suffix}`;\n};\n\n/**\n * Belize Tax Identification Number.\n *\n * Examples derived from stdnum-js test suite.\n */\nconst tin: CountryValidator<\"BZ\"> = {\n name: \"Belize Tax Identification Number\",\n localName: \"Tax Identification Number\",\n abbreviation: \"TIN\",\n aliases: [\"TIN\"] as const,\n candidatePattern: \"\\\\d{6}\",\n scope: \"country\",\n country: \"BZ\",\n entityType: \"any\",\n lengths: [6, 8] as const,\n examples: [\"000005\", \"00000510\", \"00000513\"] as const,\n compact,\n format,\n validate,\n generate,\n description:\n \"Belize tax number issued by the Belize Tax Service Department\",\n sourceUrl:\n \"https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf\",\n};\n\nexport default tin;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;AAqCA,MAAM,eAAe;CAAC;CAAM;CAAM;AAAI;AAEtC,MAAM,WAAW,UAA0B;CACzC,OAAO,MAAM,OAAO,IAAI,EAAE,KAAK;AACjC;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,WAAW,KAAK,EAAE,WAAW,GACjC,OAAO,IACL,kBACA,kCACF;CAGF,IAAI,CAAC,QAAQ,KAAK,CAAC,GACjB,OAAO,IACL,kBACA,qCACF;CAGF,IAAI,EAAE,WAAW,GAAG;EAClB,MAAM,SAAS,EAAE,MAAM,CAAC;EACxB,IACE,CAAC,aAAa,SACZ,MACF,GAEA,OAAO,IACL,qBACA,yCACF;CAEJ;CAEA,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,UAAU,GACd,OAAO;CAET,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;AACtC;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,OAAO,aAAa,CAAC;CAC3B,MAAM,WAAW,CAAC,IAAI,GAAG,YAAY;CAGrC,OAAO,GAAG,OADR,SAAS,UAAU,GAAG,SAAS,SAAS,CAAC,MAAM;AAEnD;;;;;;AAOA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,KAAK;CACf,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG,CAAC;CACd,UAAU;EAAC;EAAU;EAAY;CAAU;CAC3C;CACA;CACA;CACA;CACA,aACE;CACF,WACE;AACJ"}
|
package/dist/ca/bn.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ca/bn.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid Canadian BN. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Canadian Business Number. */
|
|
11
|
-
declare const bn:
|
|
10
|
+
declare const bn: CountryValidator<"CA">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, bn as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=bn.d.ts.map
|
package/dist/ca/bn.js
CHANGED
|
@@ -1,18 +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/ca/bn.ts
|
|
7
|
-
/**
|
|
8
|
-
* BN (Canadian Business Number).
|
|
9
|
-
*
|
|
10
|
-
* 9-digit BN root (Luhn checksum) optionally
|
|
11
|
-
* followed by a 2-letter program type (RC, RM,
|
|
12
|
-
* RP, RT) and a 4-digit reference number (BN15).
|
|
13
|
-
*
|
|
14
|
-
* @see https://www.canada.ca/en/services/taxes/business-number.html
|
|
15
|
-
*/
|
|
16
7
|
const VALID_PROGRAMS = new Set([
|
|
17
8
|
"RC",
|
|
18
9
|
"RM",
|
|
@@ -58,6 +49,7 @@ const bn = {
|
|
|
58
49
|
"numéro d'entreprise"
|
|
59
50
|
],
|
|
60
51
|
candidatePattern: "\\d{9}\\s?[A-Z]{2}\\s?\\d{4}",
|
|
52
|
+
scope: "country",
|
|
61
53
|
country: "CA",
|
|
62
54
|
entityType: "company",
|
|
63
55
|
sourceUrl: "https://www.canada.ca/en/services/taxes/business-number.html",
|
package/dist/ca/bn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bn.js","names":[],"sources":["../../src/ca/bn.ts"],"sourcesContent":["/**\n * BN (Canadian Business Number).\n *\n * 9-digit BN root (Luhn checksum) optionally\n * followed by a 2-letter program type (RC, RM,\n * RP, RT) and a 4-digit reference number (BN15).\n *\n * @see https://www.canada.ca/en/services/taxes/business-number.html\n */\n\nimport {\n luhnValidate,\n luhnChecksum,\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":"bn.js","names":[],"sources":["../../src/ca/bn.ts"],"sourcesContent":["/**\n * BN (Canadian Business Number).\n *\n * 9-digit BN root (Luhn checksum) optionally\n * followed by a 2-letter program type (RC, RM,\n * RP, RT) and a 4-digit reference number (BN15).\n *\n * @see https://www.canada.ca/en/services/taxes/business-number.html\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport {\n luhnValidate,\n luhnChecksum,\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 VALID_PROGRAMS = new Set([\"RC\", \"RM\", \"RP\", \"RT\"]);\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9 && v.length !== 15) {\n return err(\n \"INVALID_LENGTH\",\n \"BN must be 9 or 15 characters\",\n );\n }\n if (!isdigits(v.slice(0, 9))) {\n return err(\n \"INVALID_FORMAT\",\n \"BN root must contain only digits\",\n );\n }\n if (!luhnValidate(v.slice(0, 9))) {\n return err(\n \"INVALID_CHECKSUM\",\n \"BN Luhn check digit mismatch\",\n );\n }\n if (v.length === 15) {\n const program = v.slice(9, 11);\n if (!VALID_PROGRAMS.has(program)) {\n return err(\n \"INVALID_COMPONENT\",\n \"BN program type must be RC, RM, RP, or RT\",\n );\n }\n if (!isdigits(v.slice(11))) {\n return err(\n \"INVALID_FORMAT\",\n \"BN reference number must be digits\",\n );\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 === 15) {\n return `${v.slice(0, 3)} ${v.slice(3, 6)} ${v.slice(6, 9)} ${v.slice(9, 11)} ${v.slice(11)}`;\n }\n if (v.length === 9) {\n return `${v.slice(0, 3)} ${v.slice(3, 6)} ${v.slice(6)}`;\n }\n return v;\n};\n\n/** Generate a random valid Canadian BN. */\nconst generate = (): string => {\n const payload = randomDigits(8);\n const cs = luhnChecksum(payload + \"0\");\n return payload + String((10 - cs) % 10);\n};\n\n/** Canadian Business Number. */\nconst bn: CountryValidator<\"CA\"> = {\n name: \"Business Number\",\n localName: \"Business Number\",\n abbreviation: \"BN\",\n aliases: [\n \"BN\",\n \"Business Number\",\n \"numéro d'entreprise\",\n ] as const,\n candidatePattern: \"\\\\d{9}\\\\s?[A-Z]{2}\\\\s?\\\\d{4}\",\n scope: \"country\",\n country: \"CA\",\n entityType: \"company\",\n sourceUrl:\n \"https://www.canada.ca/en/services/taxes/business-number.html\",\n examples: [\"123026635\", \"123026635RC0001\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default bn;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAwBA,MAAM,iBAAiB,IAAI,IAAI;CAAC;CAAM;CAAM;CAAM;AAAI,CAAC;AAEvD,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,KAAK,EAAE,WAAW,IACjC,OAAO,IACL,kBACA,+BACF;CAEF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,GACzB,OAAO,IACL,kBACA,kCACF;CAEF,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,GAC7B,OAAO,IACL,oBACA,8BACF;CAEF,IAAI,EAAE,WAAW,IAAI;EACnB,MAAM,UAAU,EAAE,MAAM,GAAG,EAAE;EAC7B,IAAI,CAAC,eAAe,IAAI,OAAO,GAC7B,OAAO,IACL,qBACA,2CACF;EAEF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GACvB,OAAO,IACL,kBACA,oCACF;CAEJ;CAEA,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,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;CAE3F,IAAI,EAAE,WAAW,GACf,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;CAEvD,OAAO;AACT;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,CAAC;CAC9B,MAAM,KAAK,aAAa,UAAU,GAAG;CACrC,OAAO,UAAU,QAAQ,KAAK,MAAM,EAAE;AACxC;;AAGA,MAAM,KAA6B;CACjC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,aAAa,iBAAiB;CACzC;CACA;CACA;CACA;AACF"}
|
package/dist/ca/mod.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import bn from "./bn.js";
|
|
3
2
|
import sin from "./sin.js";
|
|
4
3
|
|
|
5
4
|
//#region src/ca/mod.d.ts
|
|
6
|
-
|
|
5
|
+
declare namespace mod_d_exports {
|
|
6
|
+
export { bn, sin };
|
|
7
|
+
}
|
|
7
8
|
//#endregion
|
|
8
9
|
export { bn, mod_d_exports, sin };
|
|
9
10
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/ca/sin.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ca/sin.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid Canadian SIN. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Canadian Social Insurance Number. */
|
|
11
|
-
declare const sin:
|
|
10
|
+
declare const sin: CountryValidator<"CA">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, sin as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=sin.d.ts.map
|
package/dist/ca/sin.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
+
import { luhnChecksum, luhnValidate } from "../_checksums/luhn.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
|
-
import { luhnChecksum, luhnValidate } from "../_checksums/luhn.js";
|
|
5
5
|
import { isdigits } from "../_util/strings.js";
|
|
6
6
|
//#region src/ca/sin.ts
|
|
7
|
-
/**
|
|
8
|
-
* SIN (Canadian Social Insurance Number).
|
|
9
|
-
*
|
|
10
|
-
* 9-digit identifier with Luhn checksum. First
|
|
11
|
-
* digit cannot be 0 or 8.
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.canada.ca/en/employment-social-development/services/sin.html
|
|
14
|
-
* @see https://en.wikipedia.org/wiki/Social_Insurance_Number
|
|
15
|
-
*/
|
|
16
7
|
const compact = (value) => clean(value, " -");
|
|
17
8
|
const validate = (value) => {
|
|
18
9
|
const v = compact(value);
|
|
@@ -47,6 +38,7 @@ const sin = {
|
|
|
47
38
|
"NAS"
|
|
48
39
|
],
|
|
49
40
|
candidatePattern: "\\d{3}-?\\d{3}-?\\d{3}",
|
|
41
|
+
scope: "country",
|
|
50
42
|
country: "CA",
|
|
51
43
|
entityType: "person",
|
|
52
44
|
sourceUrl: "https://www.canada.ca/en/employment-social-development/services/sin.html",
|
package/dist/ca/sin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sin.js","names":[],"sources":["../../src/ca/sin.ts"],"sourcesContent":["/**\n * SIN (Canadian Social Insurance Number).\n *\n * 9-digit identifier with Luhn checksum. First\n * digit cannot be 0 or 8.\n *\n * @see https://www.canada.ca/en/employment-social-development/services/sin.html\n * @see https://en.wikipedia.org/wiki/Social_Insurance_Number\n */\n\nimport {\n luhnValidate,\n luhnChecksum,\n} from \"#checksums/luhn\";\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":"sin.js","names":[],"sources":["../../src/ca/sin.ts"],"sourcesContent":["/**\n * SIN (Canadian Social Insurance Number).\n *\n * 9-digit identifier with Luhn checksum. First\n * digit cannot be 0 or 8.\n *\n * @see https://www.canada.ca/en/employment-social-development/services/sin.html\n * @see https://en.wikipedia.org/wiki/Social_Insurance_Number\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport {\n luhnValidate,\n luhnChecksum,\n} from \"#checksums/luhn\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } 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 (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"SIN must contain only digits\",\n );\n }\n if (v.length !== 9) {\n return err(\"INVALID_LENGTH\", \"SIN must be 9 digits\");\n }\n if (v[0] === \"0\" || v[0] === \"8\") {\n return err(\n \"INVALID_COMPONENT\",\n \"SIN cannot start with 0 or 8\",\n );\n }\n if (!luhnValidate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"SIN Luhn check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 9) {\n return `${v.slice(0, 3)}-${v.slice(3, 6)}-${v.slice(6)}`;\n }\n return v;\n};\n\n/** Generate a random valid Canadian SIN. */\nconst generate = (): string => {\n const first = String(randomInt(1, 7));\n const payload = first + randomDigits(7);\n const cs = luhnChecksum(payload + \"0\");\n return payload + String((10 - cs) % 10);\n};\n\n/** Canadian Social Insurance Number. */\nconst sin: CountryValidator<\"CA\"> = {\n name: \"Social Insurance Number\",\n localName: \"Social Insurance Number\",\n abbreviation: \"SIN\",\n aliases: [\n \"SIN\",\n \"Social Insurance Number\",\n \"NAS\",\n ] as const,\n candidatePattern: \"\\\\d{3}-?\\\\d{3}-?\\\\d{3}\",\n scope: \"country\",\n country: \"CA\",\n entityType: \"person\",\n sourceUrl:\n \"https://www.canada.ca/en/employment-social-development/services/sin.html\",\n examples: [\"123456782\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default sin;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAwBA,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAEF,IAAI,EAAE,WAAW,GACf,OAAO,IAAI,kBAAkB,sBAAsB;CAErD,IAAI,EAAE,OAAO,OAAO,EAAE,OAAO,KAC3B,OAAO,IACL,qBACA,8BACF;CAEF,IAAI,CAAC,aAAa,CAAC,GACjB,OAAO,IACL,oBACA,+BACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;CAEvD,OAAO;AACT;;AAGA,MAAM,iBAAyB;CAE7B,MAAM,UADQ,OAAO,UAAU,GAAG,CAAC,CACf,IAAI,aAAa,CAAC;CACtC,MAAM,KAAK,aAAa,UAAU,GAAG;CACrC,OAAO,UAAU,QAAQ,KAAK,MAAM,EAAE;AACxC;;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,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;AACF"}
|
package/dist/ch/mod.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import uid from "./uid.js";
|
|
3
2
|
import vat from "./vat.js";
|
|
4
3
|
import ssn from "./ssn.js";
|
|
5
4
|
|
|
6
5
|
//#region src/ch/mod.d.ts
|
|
7
|
-
|
|
6
|
+
declare namespace mod_d_exports {
|
|
7
|
+
export { ssn, uid, vat };
|
|
8
|
+
}
|
|
8
9
|
//#endregion
|
|
9
10
|
export { mod_d_exports, ssn, uid, vat };
|
|
10
11
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/ch/ssn.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ch/ssn.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid Swiss SSN. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Swiss Social Security Number. */
|
|
11
|
-
declare const ssn:
|
|
10
|
+
declare const ssn: CountryValidator<"CH">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, ssn as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=ssn.d.ts.map
|
package/dist/ch/ssn.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/ch/ssn.ts
|
|
6
|
-
/**
|
|
7
|
-
* Swiss Social Security Number (AHV/AVS).
|
|
8
|
-
*
|
|
9
|
-
* 13 digits starting with 756. Uses EAN-13 checksum:
|
|
10
|
-
* alternating weights (1, 3) from left, check digit
|
|
11
|
-
* is (10 - sum % 10) % 10.
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.bsv.admin.ch/
|
|
14
|
-
*/
|
|
15
6
|
const compact = (value) => clean(value, " -.");
|
|
16
7
|
const validate = (value) => {
|
|
17
8
|
const v = compact(value);
|
|
@@ -52,6 +43,7 @@ const ssn = {
|
|
|
52
43
|
"AHV"
|
|
53
44
|
],
|
|
54
45
|
candidatePattern: "756\\.?\\d{4}\\.?\\d{4}\\.?\\d{2}",
|
|
46
|
+
scope: "country",
|
|
55
47
|
country: "CH",
|
|
56
48
|
entityType: "person",
|
|
57
49
|
sourceUrl: "https://www.bsv.admin.ch/",
|
package/dist/ch/ssn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssn.js","names":[],"sources":["../../src/ch/ssn.ts"],"sourcesContent":["/**\n * Swiss Social Security Number (AHV/AVS).\n *\n * 13 digits starting with 756. Uses EAN-13 checksum:\n * alternating weights (1, 3) from left, check digit\n * is (10 - sum % 10) % 10.\n *\n * @see https://www.bsv.admin.ch/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"ssn.js","names":[],"sources":["../../src/ch/ssn.ts"],"sourcesContent":["/**\n * Swiss Social Security Number (AHV/AVS).\n *\n * 13 digits starting with 756. Uses EAN-13 checksum:\n * alternating weights (1, 3) from left, check digit\n * is (10 - sum % 10) % 10.\n *\n * @see https://www.bsv.admin.ch/\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, \" -.\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 13) {\n return err(\n \"INVALID_LENGTH\",\n \"Swiss SSN must be 13 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Swiss SSN must contain only digits\",\n );\n }\n if (!v.startsWith(\"756\")) {\n return err(\n \"INVALID_COMPONENT\",\n \"Swiss SSN must start with 756\",\n );\n }\n\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n const weight = i % 2 === 0 ? 1 : 3;\n sum += Number(v[i]) * weight;\n }\n const check = (10 - (sum % 10)) % 10;\n if (check !== Number(v[12])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Swiss SSN 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, 3)}.${v.slice(3, 7)}.${v.slice(7, 11)}.${v.slice(11)}`;\n};\n\n/** Generate a random valid Swiss SSN. */\nconst generate = (): string => {\n const payload = \"756\" + randomDigits(9);\n let sum = 0;\n for (let i = 0; i < 12; i++)\n sum += Number(payload[i]) * (i % 2 === 0 ? 1 : 3);\n return payload + String((10 - (sum % 10)) % 10);\n};\n\n/** Swiss Social Security Number. */\nconst ssn: CountryValidator<\"CH\"> = {\n name: \"Swiss Social Security Number\",\n localName: \"AHV-Versichertennummer\",\n abbreviation: \"AHV\",\n aliases: [\n \"AHV-Nummer\",\n \"numéro AVS\",\n \"AVS\",\n \"AHV\",\n ] as const,\n candidatePattern: \"756\\\\.?\\\\d{4}\\\\.?\\\\d{4}\\\\.?\\\\d{2}\",\n scope: \"country\",\n country: \"CH\",\n entityType: \"person\",\n sourceUrl: \"https://www.bsv.admin.ch/\",\n examples: [\"7561234567897\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default ssn;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAoBA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,6BACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,oCACF;CAEF,IAAI,CAAC,EAAE,WAAW,KAAK,GACrB,OAAO,IACL,qBACA,+BACF;CAGF,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EAC3B,MAAM,SAAS,IAAI,MAAM,IAAI,IAAI;EACjC,OAAO,OAAO,EAAE,EAAE,IAAI;CACxB;CAEA,KADe,KAAM,MAAM,MAAO,OACpB,OAAO,EAAE,GAAG,GACxB,OAAO,IACL,oBACA,gCACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AAC1E;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,UAAU,QAAQ,aAAa,CAAC;CACtC,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KACtB,OAAO,OAAO,QAAQ,EAAE,KAAK,IAAI,MAAM,IAAI,IAAI;CACjD,OAAO,UAAU,QAAQ,KAAM,MAAM,MAAO,EAAE;AAChD;;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,WAAW;CACX,UAAU,CAAC,eAAe;CAC1B;CACA;CACA;CACA;AACF"}
|
package/dist/ch/uid.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ch/uid.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid Swiss UID. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Swiss Business Identification Number. */
|
|
11
|
-
declare const uid:
|
|
10
|
+
declare const uid: CountryValidator<"CH">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, uid as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=uid.d.ts.map
|
package/dist/ch/uid.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/ch/uid.ts
|
|
6
|
-
/**
|
|
7
|
-
* UID (Unternehmens-Identifikationsnummer).
|
|
8
|
-
*
|
|
9
|
-
* Swiss business identification number. 12 characters:
|
|
10
|
-
* "CHE" prefix + 9 digits. Check digit uses weights
|
|
11
|
-
* [5,4,3,2,7,6,5,4] on the first 8 digits.
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.uid.admin.ch/
|
|
14
|
-
*/
|
|
15
6
|
const WEIGHTS = [
|
|
16
7
|
5,
|
|
17
8
|
4,
|
|
@@ -66,6 +57,7 @@ const uid = {
|
|
|
66
57
|
"IDE"
|
|
67
58
|
],
|
|
68
59
|
candidatePattern: "CHE-?\\d{3}\\.?\\d{3}\\.?\\d{3}",
|
|
60
|
+
scope: "country",
|
|
69
61
|
country: "CH",
|
|
70
62
|
entityType: "company",
|
|
71
63
|
sourceUrl: "https://www.uid.admin.ch/",
|
package/dist/ch/uid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uid.js","names":[],"sources":["../../src/ch/uid.ts"],"sourcesContent":["/**\n * UID (Unternehmens-Identifikationsnummer).\n *\n * Swiss business identification number. 12 characters:\n * \"CHE\" prefix + 9 digits. Check digit uses weights\n * [5,4,3,2,7,6,5,4] on the first 8 digits.\n *\n * @see https://www.uid.admin.ch/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"uid.js","names":[],"sources":["../../src/ch/uid.ts"],"sourcesContent":["/**\n * UID (Unternehmens-Identifikationsnummer).\n *\n * Swiss business identification number. 12 characters:\n * \"CHE\" prefix + 9 digits. Check digit uses weights\n * [5,4,3,2,7,6,5,4] on the first 8 digits.\n *\n * @see https://www.uid.admin.ch/\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 = [5, 4, 3, 2, 7, 6, 5, 4] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -./\").toUpperCase();\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 12) {\n return err(\n \"INVALID_LENGTH\",\n \"Swiss UID must be CHE + 9 digits\",\n );\n }\n if (!v.startsWith(\"CHE\")) {\n return err(\n \"INVALID_COMPONENT\",\n \"Swiss UID must start with CHE\",\n );\n }\n const digits = v.slice(3);\n if (!isdigits(digits)) {\n return err(\n \"INVALID_FORMAT\",\n \"Swiss UID must be CHE + 9 digits\",\n );\n }\n\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += Number(digits.charAt(i)) * (WEIGHTS[i] ?? 0);\n }\n const check = (11 - (sum % 11)) % 11;\n if (check === 10) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Swiss UID check digit is invalid\",\n );\n }\n if (check !== Number(digits[8])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Swiss UID 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 const d = v.slice(3);\n return `CHE-${d.slice(0, 3)}.${d.slice(3, 6)}.${d.slice(6)}`;\n};\n\n/** Generate a random valid Swiss UID. */\nconst generate = (): string => {\n for (let i = 0; i < 100; i++) {\n const payload = randomDigits(8);\n let sum = 0;\n for (let j = 0; j < 8; j++)\n sum += Number(payload.charAt(j)) * (WEIGHTS[j] ?? 0);\n const check = (11 - (sum % 11)) % 11;\n if (check === 10) continue;\n return \"CHE\" + payload + String(check);\n }\n throw new Error(\"Failed to generate valid Swiss UID\");\n};\n\n/** Swiss Business Identification Number. */\nconst uid: CountryValidator<\"CH\"> = {\n name: \"Swiss Business ID\",\n localName: \"Unternehmens-Identifikationsnummer\",\n abbreviation: \"UID\",\n aliases: [\n \"Unternehmens-Identifikationsnummer\",\n \"UID\",\n \"IDE\",\n ] as const,\n candidatePattern: \"CHE-?\\\\d{3}\\\\.?\\\\d{3}\\\\.?\\\\d{3}\",\n scope: \"country\",\n country: \"CH\",\n entityType: \"company\",\n sourceUrl: \"https://www.uid.admin.ch/\",\n examples: [\"CHE100155212\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default uid;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAoBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAEvC,MAAM,WAAW,UACf,MAAM,OAAO,MAAM,EAAE,YAAY;AAEnC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,kCACF;CAEF,IAAI,CAAC,EAAE,WAAW,KAAK,GACrB,OAAO,IACL,qBACA,+BACF;CAEF,MAAM,SAAS,EAAE,MAAM,CAAC;CACxB,IAAI,CAAC,SAAS,MAAM,GAClB,OAAO,IACL,kBACA,kCACF;CAGF,IAAI,MAAM;CACV,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,OAAO,OAAO,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ,MAAM;CAEnD,MAAM,SAAS,KAAM,MAAM,MAAO;CAClC,IAAI,UAAU,IACZ,OAAO,IACL,oBACA,kCACF;CAEF,IAAI,UAAU,OAAO,OAAO,EAAE,GAC5B,OAAO,IACL,oBACA,gCACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CAExC,MAAM,IADI,QAAQ,KACR,EAAE,MAAM,CAAC;CACnB,OAAO,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;AAC3D;;AAGA,MAAM,iBAAyB;CAC7B,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;EAC5B,MAAM,UAAU,aAAa,CAAC;EAC9B,IAAI,MAAM;EACV,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,OAAO,OAAO,QAAQ,OAAO,CAAC,CAAC,KAAK,QAAQ,MAAM;EACpD,MAAM,SAAS,KAAM,MAAM,MAAO;EAClC,IAAI,UAAU,IAAI;EAClB,OAAO,QAAQ,UAAU,OAAO,KAAK;CACvC;CACA,MAAM,IAAI,MAAM,oCAAoC;AACtD;;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,cAAc;CACzB;CACA;CACA;CACA;AACF"}
|
package/dist/ch/vat.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ch/vat.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
8
7
|
/** Generate a random valid Swiss VAT number. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Swiss VAT Number. */
|
|
11
|
-
declare const vat:
|
|
10
|
+
declare const vat: CountryValidator<"CH">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, vat as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=vat.d.ts.map
|
package/dist/ch/vat.js
CHANGED
|
@@ -2,15 +2,6 @@ import { clean } from "../_util/clean.js";
|
|
|
2
2
|
import { err } from "../_util/result.js";
|
|
3
3
|
import { generate as generate$1, validate as validate$1 } from "./uid.js";
|
|
4
4
|
//#region src/ch/vat.ts
|
|
5
|
-
/**
|
|
6
|
-
* Swiss VAT number.
|
|
7
|
-
*
|
|
8
|
-
* Format: CHE + 9 digits + suffix (MWST|TVA|IVA|TPV).
|
|
9
|
-
* The numeric part is validated as a UID.
|
|
10
|
-
*
|
|
11
|
-
* @see https://www.ch.ch/en/value-added-tax-number-und-business-identification-number/
|
|
12
|
-
* @see https://www.estv.admin.ch/
|
|
13
|
-
*/
|
|
14
5
|
const SUFFIXES = [
|
|
15
6
|
"MWST",
|
|
16
7
|
"TVA",
|
|
@@ -55,6 +46,7 @@ const vat = {
|
|
|
55
46
|
"IVA"
|
|
56
47
|
],
|
|
57
48
|
candidatePattern: "CHE-?\\d{3}\\.?\\d{3}\\.?\\d{3}\\s?(?:MWST|TVA|IVA)",
|
|
49
|
+
scope: "country",
|
|
58
50
|
country: "CH",
|
|
59
51
|
entityType: "company",
|
|
60
52
|
sourceUrl: "https://www.estv.admin.ch/",
|
package/dist/ch/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":["validateUid","generateUid"],"sources":["../../src/ch/vat.ts"],"sourcesContent":["/**\n * Swiss VAT number.\n *\n * Format: CHE + 9 digits + suffix (MWST|TVA|IVA|TPV).\n * The numeric part is validated as a UID.\n *\n * @see https://www.ch.ch/en/value-added-tax-number-und-business-identification-number/\n * @see https://www.estv.admin.ch/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"vat.js","names":["validateUid","generateUid"],"sources":["../../src/ch/vat.ts"],"sourcesContent":["/**\n * Swiss VAT number.\n *\n * Format: CHE + 9 digits + suffix (MWST|TVA|IVA|TPV).\n * The numeric part is validated as a UID.\n *\n * @see https://www.ch.ch/en/value-added-tax-number-und-business-identification-number/\n * @see https://www.estv.admin.ch/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\nimport {\n validate as validateUid,\n generate as generateUid,\n} from \"./uid\";\n\nimport { clean } from \"#util/clean\";\nimport { err } from \"#util/result\";\n\nconst SUFFIXES = [\"MWST\", \"TVA\", \"IVA\", \"TPV\"] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -./\").toUpperCase();\n\nconst extractParts = (\n v: string,\n): { uid: string; suffix: string } | undefined => {\n for (const s of SUFFIXES) {\n if (v.endsWith(s)) {\n return { uid: v.slice(0, -s.length), suffix: s };\n }\n }\n return undefined;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n const parts = extractParts(v);\n if (!parts) {\n return err(\n \"INVALID_FORMAT\",\n \"Swiss VAT must end with MWST, TVA, IVA, or TPV\",\n );\n }\n\n const uidResult = validateUid(parts.uid);\n if (!uidResult.valid) {\n return uidResult;\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n const parts = extractParts(v);\n if (!parts) return v;\n const d = parts.uid.slice(3);\n return `CHE-${d.slice(0, 3)}.${d.slice(3, 6)}.${d.slice(6)} ${parts.suffix}`;\n};\n\n/** Generate a random valid Swiss VAT number. */\nconst generate = (): string => generateUid() + \"MWST\";\n\n/** Swiss VAT Number. */\nconst vat: CountryValidator<\"CH\"> = {\n name: \"Swiss VAT Number\",\n localName: \"Mehrwertsteuernummer\",\n abbreviation: \"MWST\",\n aliases: [\"MWST\", \"TVA\", \"IVA\"] as const,\n candidatePattern:\n \"CHE-?\\\\d{3}\\\\.?\\\\d{3}\\\\.?\\\\d{3}\\\\s?(?:MWST|TVA|IVA)\",\n scope: \"country\",\n country: \"CH\",\n entityType: \"company\",\n sourceUrl: \"https://www.estv.admin.ch/\",\n examples: [\"CHE107787577IVA\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;AAsBA,MAAM,WAAW;CAAC;CAAQ;CAAO;CAAO;AAAK;AAE7C,MAAM,WAAW,UACf,MAAM,OAAO,MAAM,EAAE,YAAY;AAEnC,MAAM,gBACJ,MACgD;CAChD,KAAK,MAAM,KAAK,UACd,IAAI,EAAE,SAAS,CAAC,GACd,OAAO;EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM;EAAG,QAAQ;CAAE;AAIrD;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,MAAM,QAAQ,aAAa,CAAC;CAC5B,IAAI,CAAC,OACH,OAAO,IACL,kBACA,gDACF;CAGF,MAAM,YAAYA,WAAY,MAAM,GAAG;CACvC,IAAI,CAAC,UAAU,OACb,OAAO;CAGT,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,MAAM,QAAQ,aAAa,CAAC;CAC5B,IAAI,CAAC,OAAO,OAAO;CACnB,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC;CAC3B,OAAO,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM;AACtE;;AAGA,MAAM,iBAAyBC,WAAY,IAAI;;AAG/C,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAQ;EAAO;CAAK;CAC9B,kBACE;CACF,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,iBAAiB;CAC5B;CACA;CACA;CACA;AACF"}
|
package/dist/cl/mod.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import rut from "./rut.js";
|
|
3
2
|
|
|
4
3
|
//#region src/cl/mod.d.ts
|
|
5
|
-
|
|
4
|
+
declare namespace mod_d_exports {
|
|
5
|
+
export { rut };
|
|
6
|
+
}
|
|
6
7
|
//#endregion
|
|
7
8
|
export { mod_d_exports, rut };
|
|
8
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/cl/rut.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/cl/rut.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
declare const validate: (value: string) => ValidateResult;
|
|
7
6
|
declare const format: (value: string) => string;
|
|
@@ -13,7 +12,7 @@ declare const generate: () => string;
|
|
|
13
12
|
* Examples sourced from python-stdnum test suite
|
|
14
13
|
* (cl.rut module).
|
|
15
14
|
*/
|
|
16
|
-
declare const rut:
|
|
15
|
+
declare const rut: CountryValidator<"CL">;
|
|
17
16
|
//#endregion
|
|
18
17
|
export { compact, rut as default, format, generate, validate };
|
|
19
18
|
//# sourceMappingURL=rut.d.ts.map
|
package/dist/cl/rut.js
CHANGED
|
@@ -2,20 +2,6 @@ import { clean } from "../_util/clean.js";
|
|
|
2
2
|
import { randomDigits } from "../_util/generate.js";
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
//#region src/cl/rut.ts
|
|
5
|
-
/**
|
|
6
|
-
* RUT (Rol Único Tributario).
|
|
7
|
-
*
|
|
8
|
-
* Chilean tax identification number assigned by the SII
|
|
9
|
-
* (Servicio de Impuestos Internos). The number consists
|
|
10
|
-
* of 7 or 8 digits followed by a check digit (0-9 or K),
|
|
11
|
-
* computed using a modulo 11 algorithm with weights
|
|
12
|
-
* [2, 3, 4, 5, 6, 7] cycling right-to-left.
|
|
13
|
-
*
|
|
14
|
-
* Format: XX.XXX.XXX-C (7-8 digits + check digit).
|
|
15
|
-
*
|
|
16
|
-
* @see https://www.sii.cl/
|
|
17
|
-
* @see https://en.wikipedia.org/wiki/Rol_%C3%9Anico_Tributario
|
|
18
|
-
*/
|
|
19
5
|
const RUT_RE = /^\d{7,8}[\dK]$/;
|
|
20
6
|
const compact = (value) => {
|
|
21
7
|
let v = clean(value, " -.").trim().toUpperCase();
|
|
@@ -39,7 +25,7 @@ const calcCheckDigit = (body) => {
|
|
|
39
25
|
7
|
|
40
26
|
];
|
|
41
27
|
let sum = 0;
|
|
42
|
-
for (let i = body.length - 1, w = 0; i >= 0; i--, w++) sum += Number(body[i]) * weights[w %
|
|
28
|
+
for (let i = body.length - 1, w = 0; i >= 0; i--, w++) sum += Number(body[i]) * weights[w % weights.length];
|
|
43
29
|
const remainder = 11 - sum % 11;
|
|
44
30
|
if (remainder === 11) return "0";
|
|
45
31
|
if (remainder === 10) return "K";
|
|
@@ -79,6 +65,7 @@ const rut = {
|
|
|
79
65
|
abbreviation: "RUT",
|
|
80
66
|
aliases: ["RUT", "Rol Único Tributario"],
|
|
81
67
|
candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[\\dkK]",
|
|
68
|
+
scope: "country",
|
|
82
69
|
country: "CL",
|
|
83
70
|
entityType: "any",
|
|
84
71
|
compact,
|