@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/dk/vat.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/dk/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 Danish VAT number. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Danish VAT Number. */
|
|
11
|
-
declare const vat:
|
|
10
|
+
declare const vat: CountryValidator<"DK">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, vat as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=vat.d.ts.map
|
package/dist/dk/vat.js
CHANGED
|
@@ -1,21 +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/dk/vat.ts
|
|
7
|
-
/**
|
|
8
|
-
* CVR (Danish VAT / business registration number).
|
|
9
|
-
*
|
|
10
|
-
* 8 digits, no leading 0.
|
|
11
|
-
* Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.vatify.eu/denmark-vat-number.html
|
|
14
|
-
* @see https://erhvervsstyrelsen.dk/det-centrale-virksomhedsregister-cvr
|
|
15
|
-
*
|
|
16
|
-
* Denmark dropped mod-11 for CPR in 2007; unconfirmed
|
|
17
|
-
* for CVR.
|
|
18
|
-
*/
|
|
19
7
|
const WEIGHTS = [
|
|
20
8
|
2,
|
|
21
9
|
7,
|
|
@@ -57,9 +45,11 @@ const vat = {
|
|
|
57
45
|
abbreviation: "CVR",
|
|
58
46
|
aliases: ["momsnummer", "SE-nummer"],
|
|
59
47
|
candidatePattern: "DK\\d{8}",
|
|
48
|
+
scope: "country",
|
|
60
49
|
country: "DK",
|
|
61
50
|
entityType: "company",
|
|
62
51
|
sourceUrl: "https://erhvervsstyrelsen.dk/",
|
|
52
|
+
lengths: [8],
|
|
63
53
|
examples: ["13585628"],
|
|
64
54
|
compact,
|
|
65
55
|
format,
|
package/dist/dk/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":[],"sources":["../../src/dk/vat.ts"],"sourcesContent":["/**\n * CVR (Danish VAT / business registration number).\n *\n * 8 digits, no leading 0.\n * Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.\n *\n * @see https://www.vatify.eu/denmark-vat-number.html\n * @see https://erhvervsstyrelsen.dk/det-centrale-virksomhedsregister-cvr\n *\n * Denmark dropped mod-11 for CPR in 2007; unconfirmed\n * for CVR.\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/dk/vat.ts"],"sourcesContent":["/**\n * CVR (Danish VAT / business registration number).\n *\n * 8 digits, no leading 0.\n * Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.\n *\n * @see https://www.vatify.eu/denmark-vat-number.html\n * @see https://erhvervsstyrelsen.dk/det-centrale-virksomhedsregister-cvr\n *\n * Denmark dropped mod-11 for CPR in 2007; unconfirmed\n * for CVR.\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 = [2, 7, 6, 5, 4, 3, 2, 1];\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"DK\") || v.startsWith(\"dk\")) {\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 \"Danish VAT number must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Danish VAT number must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Danish VAT number cannot start with 0\",\n );\n }\n const sum = weightedSum(v, WEIGHTS, 11);\n if (sum !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Danish VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `DK${compact(value)}`;\n\n/** Generate a random valid Danish 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/** Danish VAT Number. */\nconst vat: CountryValidator<\"DK\"> = {\n name: \"Danish VAT Number\",\n localName: \"Momsregistreringsnummer\",\n abbreviation: \"CVR\",\n aliases: [\"momsnummer\", \"SE-nummer\"] as const,\n candidatePattern: \"DK\\\\d{8}\",\n scope: \"country\",\n country: \"DK\",\n entityType: \"company\",\n sourceUrl: \"https://erhvervsstyrelsen.dk/\",\n lengths: [8] as const,\n examples: [\"13585628\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAwBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAEvC,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,oCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,4CACF;CAEF,IAAI,EAAE,OAAO,KACX,OAAO,IACL,qBACA,uCACF;CAGF,IADY,YAAY,GAAG,SAAS,EAC9B,MAAM,GACV,OAAO,IACL,oBACA,wCACF;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,cAAc,WAAW;CACnC,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,SAAS,CAAC,CAAC;CACX,UAAU,CAAC,UAAU;CACrB;CACA;CACA;CACA;AACF"}
|
package/dist/do/mod.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import rnc from "./rnc.js";
|
|
3
2
|
|
|
4
3
|
//#region src/do/mod.d.ts
|
|
5
|
-
|
|
4
|
+
declare namespace mod_d_exports {
|
|
5
|
+
export { rnc };
|
|
6
|
+
}
|
|
6
7
|
//#endregion
|
|
7
8
|
export { mod_d_exports, rnc };
|
|
8
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/do/rnc.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/do/rnc.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;
|
|
@@ -12,7 +11,7 @@ declare const generate: () => string;
|
|
|
12
11
|
*
|
|
13
12
|
* Examples sourced from python-stdnum test suite.
|
|
14
13
|
*/
|
|
15
|
-
declare const rnc:
|
|
14
|
+
declare const rnc: CountryValidator<"DO">;
|
|
16
15
|
//#endregion
|
|
17
16
|
export { compact, rnc as default, format, generate, validate };
|
|
18
17
|
//# sourceMappingURL=rnc.d.ts.map
|
package/dist/do/rnc.js
CHANGED
|
@@ -1,25 +1,10 @@
|
|
|
1
|
+
import { 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 { luhnValidate } from "../_checksums/luhn.js";
|
|
5
5
|
import { isdigits } from "../_util/strings.js";
|
|
6
6
|
//#region src/do/rnc.ts
|
|
7
7
|
/**
|
|
8
|
-
* RNC (Registro Nacional del Contribuyente) /
|
|
9
|
-
* Cédula de Identidad.
|
|
10
|
-
*
|
|
11
|
-
* Dominican Republic tax identification number.
|
|
12
|
-
* Companies use a 9-digit RNC with a check digit
|
|
13
|
-
* computed via weighted sum mod 11. Individuals
|
|
14
|
-
* use an 11-digit Cédula validated with the Luhn
|
|
15
|
-
* algorithm.
|
|
16
|
-
*
|
|
17
|
-
* Format: ######### (9 digits, company RNC)
|
|
18
|
-
* ########### (11 digits, individual Cédula)
|
|
19
|
-
*
|
|
20
|
-
* @see https://dgii.gov.do/
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
8
|
* Weights for the 9-digit RNC check digit.
|
|
24
9
|
* Applied to positions 0-7; check digit is at
|
|
25
10
|
* position 8.
|
|
@@ -41,7 +26,7 @@ const compact = (value) => clean(value, " -.").trim();
|
|
|
41
26
|
*/
|
|
42
27
|
const calcRncCheckDigit = (value) => {
|
|
43
28
|
let sum = 0;
|
|
44
|
-
for (
|
|
29
|
+
for (const [i, weight] of RNC_WEIGHTS.entries()) sum += Number(value[i]) * weight;
|
|
45
30
|
const remainder = sum % 11;
|
|
46
31
|
return String((10 - remainder) % 9 + 1);
|
|
47
32
|
};
|
|
@@ -79,6 +64,7 @@ const rnc = {
|
|
|
79
64
|
abbreviation: "RNC",
|
|
80
65
|
aliases: ["RNC", "Registro Nacional del Contribuyente"],
|
|
81
66
|
candidatePattern: "\\d{9}",
|
|
67
|
+
scope: "country",
|
|
82
68
|
country: "DO",
|
|
83
69
|
entityType: "any",
|
|
84
70
|
lengths: [9, 11],
|
package/dist/do/rnc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rnc.js","names":[],"sources":["../../src/do/rnc.ts"],"sourcesContent":["/**\n * RNC (Registro Nacional del Contribuyente) /\n * Cédula de Identidad.\n *\n * Dominican Republic tax identification number.\n * Companies use a 9-digit RNC with a check digit\n * computed via weighted sum mod 11. Individuals\n * use an 11-digit Cédula validated with the Luhn\n * algorithm.\n *\n * Format: ######### (9 digits, company RNC)\n * ########### (11 digits, individual Cédula)\n *\n * @see https://dgii.gov.do/\n */\n\nimport { luhnValidate } 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":"rnc.js","names":[],"sources":["../../src/do/rnc.ts"],"sourcesContent":["/**\n * RNC (Registro Nacional del Contribuyente) /\n * Cédula de Identidad.\n *\n * Dominican Republic tax identification number.\n * Companies use a 9-digit RNC with a check digit\n * computed via weighted sum mod 11. Individuals\n * use an 11-digit Cédula validated with the Luhn\n * algorithm.\n *\n * Format: ######### (9 digits, company RNC)\n * ########### (11 digits, individual Cédula)\n *\n * @see https://dgii.gov.do/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { luhnValidate } from \"#checksums/luhn\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\n/**\n * Weights for the 9-digit RNC check digit.\n * Applied to positions 0-7; check digit is at\n * position 8.\n */\nconst RNC_WEIGHTS = [7, 9, 8, 6, 5, 4, 3, 2] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -.\").trim();\n\n/**\n * RNC check digit: weighted sum mod 11, then\n * ((10 - remainder) % 9) + 1.\n */\nconst calcRncCheckDigit = (value: string): string => {\n let sum = 0;\n for (const [i, weight] of RNC_WEIGHTS.entries()) {\n sum += Number(value[i]) * weight;\n }\n const remainder = sum % 11;\n return String(((10 - remainder) % 9) + 1);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 9 && v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Must be 9 digits (RNC) or 11 digits (Cédula)\",\n );\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Must contain only digits\",\n );\n }\n\n if (v.length === 9) {\n const expected = calcRncCheckDigit(v);\n if (v.at(-1) !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"RNC check digit does not match\",\n );\n }\n } else {\n // 11-digit Cédula uses Luhn checksum\n if (!luhnValidate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Cédula Luhn checksum does not match\",\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 === 9) {\n return `${v[0]}-${v.slice(1, 3)}-${v.slice(3, 8)}-${v.slice(8)}`;\n }\n return `${v.slice(0, 3)}-${v.slice(3, 10)}-${v.slice(10)}`;\n};\n\n/** Generate a random valid 9-digit RNC. */\nconst generate = (): string => {\n const payload = randomDigits(8);\n return payload + calcRncCheckDigit(payload);\n};\n\n/**\n * Dominican Republic RNC / Cédula.\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst rnc: CountryValidator<\"DO\"> = {\n name: \"Dominican Republic Tax ID\",\n localName: \"Registro Nacional del Contribuyente\",\n abbreviation: \"RNC\",\n aliases: [\n \"RNC\",\n \"Registro Nacional del Contribuyente\",\n ] as const,\n candidatePattern: \"\\\\d{9}\",\n scope: \"country\",\n country: \"DO\",\n entityType: \"any\",\n lengths: [9, 11] as const,\n examples: [\"131098193\", \"00113918205\"] as const,\n compact,\n format,\n validate,\n sourceUrl: \"https://dgii.gov.do/\",\n generate,\n};\n\nexport default rnc;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;AAgCA,MAAM,cAAc;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAE3C,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,EAAE,KAAK;;;;;AAM3B,MAAM,qBAAqB,UAA0B;CACnD,IAAI,MAAM;CACV,KAAK,MAAM,CAAC,GAAG,WAAW,YAAY,QAAQ,GAC5C,OAAO,OAAO,MAAM,EAAE,IAAI;CAE5B,MAAM,YAAY,MAAM;CACxB,OAAO,QAAS,KAAK,aAAa,IAAK,CAAC;AAC1C;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,WAAW,KAAK,EAAE,WAAW,IACjC,OAAO,IACL,kBACA,8CACF;CAGF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,0BACF;CAGF,IAAI,EAAE,WAAW,GAAG;EAClB,MAAM,WAAW,kBAAkB,CAAC;EACpC,IAAI,EAAE,GAAG,EAAE,MAAM,UACf,OAAO,IACL,oBACA,gCACF;CAEJ,OAEE,IAAI,CAAC,aAAa,CAAC,GACjB,OAAO,IACL,oBACA,qCACF;CAIJ,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;CAE/D,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AACzD;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,CAAC;CAC9B,OAAO,UAAU,kBAAkB,OAAO;AAC5C;;;;;;AAOA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,OACA,qCACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG,EAAE;CACf,UAAU,CAAC,aAAa,aAAa;CACrC;CACA;CACA;CACA,WAAW;CACX;AACF"}
|
package/dist/ec/mod.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import ruc from "./ruc.js";
|
|
3
2
|
|
|
4
3
|
//#region src/ec/mod.d.ts
|
|
5
|
-
|
|
4
|
+
declare namespace mod_d_exports {
|
|
5
|
+
export { ruc };
|
|
6
|
+
}
|
|
6
7
|
//#endregion
|
|
7
8
|
export { mod_d_exports, ruc };
|
|
8
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/ec/ruc.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ec/ruc.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 Ecuadorian RUC. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Ecuadorian tax identification number. */
|
|
11
|
-
declare const ruc:
|
|
10
|
+
declare const ruc: CountryValidator<"EC">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, ruc as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=ruc.d.ts.map
|
package/dist/ec/ruc.js
CHANGED
|
@@ -3,24 +3,6 @@ import { randomDigits, randomInt } from "../_util/generate.js";
|
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
//#region src/ec/ruc.ts
|
|
6
|
-
/**
|
|
7
|
-
* RUC (Registro Único de Contribuyentes).
|
|
8
|
-
*
|
|
9
|
-
* Ecuadorian tax identification number. 13 digits:
|
|
10
|
-
* - Digits 1-2: province code (01-24, 30, or 50)
|
|
11
|
-
* - Digit 3: type indicator
|
|
12
|
-
* - 0-5: natural person (CI + establishment)
|
|
13
|
-
* - 6: public entity (or natural person fallback)
|
|
14
|
-
* - 9: juridical entity (public checksum first,
|
|
15
|
-
* then juridical fallback)
|
|
16
|
-
*
|
|
17
|
-
* Natural persons use a Luhn-like mod-10 checksum on
|
|
18
|
-
* the first 10 digits. Public entities use a mod-11
|
|
19
|
-
* checksum on the first 9 digits. Private companies
|
|
20
|
-
* use a mod-11 checksum on the first 10 digits.
|
|
21
|
-
*
|
|
22
|
-
* @see https://www.sri.gob.ec/
|
|
23
|
-
*/
|
|
24
6
|
const compact = (value) => clean(value, " -");
|
|
25
7
|
/** CI mod-10 checksum: weights [2,1,2,1,...], fold
|
|
26
8
|
* products > 9 by subtracting 9, sum mod 10 == 0. */
|
|
@@ -37,7 +19,7 @@ const ciChecksum = (digits) => {
|
|
|
37
19
|
/** Weighted mod-11 checksum. */
|
|
38
20
|
const mod11Checksum = (digits, weights) => {
|
|
39
21
|
let sum = 0;
|
|
40
|
-
for (
|
|
22
|
+
for (const [i, weight] of weights.entries()) sum += Number(digits[i]) * weight;
|
|
41
23
|
return sum % 11;
|
|
42
24
|
};
|
|
43
25
|
const PUBLIC_WEIGHTS = [
|
|
@@ -133,6 +115,7 @@ const ruc = {
|
|
|
133
115
|
abbreviation: "RUC",
|
|
134
116
|
aliases: ["RUC", "Registro Único de Contribuyentes"],
|
|
135
117
|
candidatePattern: "\\d{13}",
|
|
118
|
+
scope: "country",
|
|
136
119
|
country: "EC",
|
|
137
120
|
entityType: "any",
|
|
138
121
|
description: "13-digit tax identification number issued by the SRI",
|
package/dist/ec/ruc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruc.js","names":[],"sources":["../../src/ec/ruc.ts"],"sourcesContent":["/**\n * RUC (Registro Único de Contribuyentes).\n *\n * Ecuadorian tax identification number. 13 digits:\n * - Digits 1-2: province code (01-24, 30, or 50)\n * - Digit 3: type indicator\n * - 0-5: natural person (CI + establishment)\n * - 6: public entity (or natural person fallback)\n * - 9: juridical entity (public checksum first,\n * then juridical fallback)\n *\n * Natural persons use a Luhn-like mod-10 checksum on\n * the first 10 digits. Public entities use a mod-11\n * checksum on the first 9 digits. Private companies\n * use a mod-11 checksum on the first 10 digits.\n *\n * @see https://www.sri.gob.ec/\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":"ruc.js","names":[],"sources":["../../src/ec/ruc.ts"],"sourcesContent":["/**\n * RUC (Registro Único de Contribuyentes).\n *\n * Ecuadorian tax identification number. 13 digits:\n * - Digits 1-2: province code (01-24, 30, or 50)\n * - Digit 3: type indicator\n * - 0-5: natural person (CI + establishment)\n * - 6: public entity (or natural person fallback)\n * - 9: juridical entity (public checksum first,\n * then juridical fallback)\n *\n * Natural persons use a Luhn-like mod-10 checksum on\n * the first 10 digits. Public entities use a mod-11\n * checksum on the first 9 digits. Private companies\n * use a mod-11 checksum on the first 10 digits.\n *\n * @see https://www.sri.gob.ec/\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\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\n/** CI mod-10 checksum: weights [2,1,2,1,...], fold\n * products > 9 by subtracting 9, sum mod 10 == 0. */\nconst ciChecksum = (digits: string): number => {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n const weight = i % 2 === 0 ? 2 : 1;\n let product = Number(digits[i]) * weight;\n if (product > 9) product -= 9;\n sum += product;\n }\n return sum % 10;\n};\n\n/** Weighted mod-11 checksum. */\nconst mod11Checksum = (\n digits: string,\n weights: readonly number[],\n): number => {\n let sum = 0;\n for (const [i, weight] of weights.entries()) {\n sum += Number(digits[i]) * weight;\n }\n return sum % 11;\n};\n\nconst PUBLIC_WEIGHTS = [3, 2, 7, 6, 5, 4, 3, 2, 1];\nconst JURIDICAL_WEIGHTS = [4, 3, 2, 7, 6, 5, 4, 3, 2, 1];\n\nconst isValidProvince = (v: string): boolean => {\n const province = v.slice(0, 2);\n return (\n (province >= \"01\" && province <= \"24\") ||\n province === \"30\" ||\n province === \"50\"\n );\n};\n\nconst validateNatural = (\n v: string,\n): ValidateResult | null => {\n if (v.slice(-3) === \"000\") return null;\n if (ciChecksum(v.slice(0, 10)) !== 0) return null;\n return { valid: true, compact: v };\n};\n\nconst validatePublic = (\n v: string,\n): ValidateResult | null => {\n if (v.slice(-4) === \"0000\") return null;\n if (mod11Checksum(v, PUBLIC_WEIGHTS) !== 0) return null;\n return { valid: true, compact: v };\n};\n\nconst validateJuridical = (\n v: string,\n): ValidateResult | null => {\n if (v.slice(-3) === \"000\") return null;\n if (mod11Checksum(v, JURIDICAL_WEIGHTS) !== 0) {\n return null;\n }\n return { valid: true, compact: 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 \"RUC must be exactly 13 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"RUC must contain only digits\",\n );\n }\n if (!isValidProvince(v)) {\n return err(\n \"INVALID_COMPONENT\",\n \"RUC province code is invalid\",\n );\n }\n\n const typeDigit = Number(v[2]);\n\n if (typeDigit <= 5) {\n // Natural person\n const result = validateNatural(v);\n if (result) return result;\n return err(\n \"INVALID_CHECKSUM\",\n \"RUC check digit does not match\",\n );\n }\n\n if (typeDigit === 6) {\n // Public entity; fall back to natural person\n const pub = validatePublic(v);\n if (pub) return pub;\n const nat = validateNatural(v);\n if (nat) return nat;\n return err(\n \"INVALID_CHECKSUM\",\n \"RUC check digit does not match\",\n );\n }\n\n if (typeDigit === 9) {\n // Juridical RUC; try public checksum first, fall\n // back to juridical (matches python-stdnum).\n const pub = validatePublic(v);\n if (pub) return pub;\n const jur = validateJuridical(v);\n if (jur) return jur;\n return err(\n \"INVALID_CHECKSUM\",\n \"RUC check digit does not match\",\n );\n }\n\n return err(\n \"INVALID_COMPONENT\",\n \"RUC type digit is invalid\",\n );\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Ecuadorian RUC. */\nconst generate = (): string => {\n for (;;) {\n const province = String(randomInt(1, 24)).padStart(\n 2,\n \"0\",\n );\n const c = province + randomDigits(11);\n if (validate(c).valid) return c;\n }\n};\n\n/** Ecuadorian tax identification number. */\nconst ruc: CountryValidator<\"EC\"> = {\n name: \"Registro Único de Contribuyentes\",\n localName: \"Registro Único de Contribuyentes\",\n abbreviation: \"RUC\",\n aliases: [\n \"RUC\",\n \"Registro Único de Contribuyentes\",\n ] as const,\n candidatePattern: \"\\\\d{13}\",\n scope: \"country\",\n country: \"EC\",\n entityType: \"any\",\n description:\n \"13-digit tax identification number issued by the SRI\",\n sourceUrl: \"https://www.sri.gob.ec/\",\n lengths: [13] as const,\n examples: [\"1792060346001\", \"1790011674001\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default ruc;\nexport { compact, format, validate, generate };\n"],"mappings":"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"}
|
package/dist/ee/ik.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ParsedPersonId, ValidateResult
|
|
1
|
+
import { CountryValidator, ParsedPersonId, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ee/ik.d.ts
|
|
4
|
-
|
|
5
4
|
declare const compact: (value: string) => string;
|
|
6
5
|
/**
|
|
7
6
|
* Compute the two-pass check digit used by both
|
|
@@ -18,7 +17,7 @@ declare const parse: (value: string) => ParsedPersonId | null;
|
|
|
18
17
|
/** Generate a random valid Estonian IK. */
|
|
19
18
|
declare const generate: () => string;
|
|
20
19
|
/** Estonian Personal Identification Code. */
|
|
21
|
-
declare const ik:
|
|
20
|
+
declare const ik: CountryValidator<"EE", ParsedPersonId>;
|
|
22
21
|
//#endregion
|
|
23
22
|
export { compact, ik as default, format, generate, parse, twoPassCheck, validate };
|
|
24
23
|
//# sourceMappingURL=ik.d.ts.map
|
package/dist/ee/ik.js
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
1
2
|
import { clean } from "../_util/clean.js";
|
|
3
|
+
import { isValidDate } from "../_util/date.js";
|
|
2
4
|
import { randomInt } from "../_util/generate.js";
|
|
3
5
|
import { err } from "../_util/result.js";
|
|
4
6
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
|
-
import { isValidDate } from "../_util/date.js";
|
|
7
7
|
//#region src/ee/ik.ts
|
|
8
|
-
/**
|
|
9
|
-
* Isikukood (IK).
|
|
10
|
-
*
|
|
11
|
-
* Estonian personal identification code. 11 digits:
|
|
12
|
-
* gender/century digit, YYMMDD, 3-digit serial, and
|
|
13
|
-
* a check digit computed with two-pass weighted sums.
|
|
14
|
-
*
|
|
15
|
-
* @see https://www.riigiteataja.ee/en/eli/512012015003/consolide
|
|
16
|
-
*/
|
|
17
8
|
const WEIGHTS_1 = [
|
|
18
9
|
1,
|
|
19
10
|
2,
|
|
@@ -44,9 +35,7 @@ const centuryMap = {
|
|
|
44
35
|
3: 1900,
|
|
45
36
|
4: 1900,
|
|
46
37
|
5: 2e3,
|
|
47
|
-
6: 2e3
|
|
48
|
-
7: 2100,
|
|
49
|
-
8: 2100
|
|
38
|
+
6: 2e3
|
|
50
39
|
};
|
|
51
40
|
const compact = (value) => clean(value, " -");
|
|
52
41
|
/**
|
|
@@ -64,7 +53,7 @@ const validate = (value) => {
|
|
|
64
53
|
if (v.length !== 11) return err("INVALID_LENGTH", "Isikukood must be exactly 11 digits");
|
|
65
54
|
if (!isdigits(v)) return err("INVALID_FORMAT", "Isikukood must contain only digits");
|
|
66
55
|
const g = Number(v[0]);
|
|
67
|
-
if (g < 1 || g >
|
|
56
|
+
if (g < 1 || g > 6) return err("INVALID_COMPONENT", "Isikukood gender/century digit is invalid");
|
|
68
57
|
const century = centuryMap[g] ?? 1900;
|
|
69
58
|
const yy = Number(v.slice(1, 3));
|
|
70
59
|
const mm = Number(v.slice(3, 5));
|
|
@@ -116,12 +105,14 @@ const ik = {
|
|
|
116
105
|
abbreviation: "IK",
|
|
117
106
|
aliases: ["isikukood", "IK"],
|
|
118
107
|
candidatePattern: "[1-6]\\d{10}",
|
|
108
|
+
scope: "country",
|
|
119
109
|
country: "EE",
|
|
120
110
|
entityType: "person",
|
|
121
111
|
sourceUrl: "https://www.riigiteataja.ee/en/eli/512012015003/consolide",
|
|
122
112
|
examples: ["36805280109"],
|
|
123
113
|
compact,
|
|
124
114
|
format,
|
|
115
|
+
parse,
|
|
125
116
|
validate,
|
|
126
117
|
generate
|
|
127
118
|
};
|
package/dist/ee/ik.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ik.js","names":[],"sources":["../../src/ee/ik.ts"],"sourcesContent":["/**\n * Isikukood (IK).\n *\n * Estonian personal identification code. 11 digits:\n * gender/century digit, YYMMDD, 3-digit serial, and\n * a check digit computed with two-pass weighted sums.\n *\n * @see https://www.riigiteataja.ee/en/eli/512012015003/consolide\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\
|
|
1
|
+
{"version":3,"file":"ik.js","names":[],"sources":["../../src/ee/ik.ts"],"sourcesContent":["/**\n * Isikukood (IK).\n *\n * Estonian personal identification code. 11 digits:\n * gender/century digit, YYMMDD, 3-digit serial, and\n * a check digit computed with two-pass weighted sums.\n *\n * Canonical sources:\n * - Estonian legislation for the personal code format\n * - OECD Estonia TIN sheet summarising the same\n * first-digit ranges for cross-border tax use\n *\n * These sources are why we restrict the first digit\n * to 1-6 rather than accepting speculative 7/8 forms.\n *\n * @see https://www.riigiteataja.ee/en/eli/512012015003/consolide\n * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf\n */\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1] as const;\nconst WEIGHTS_2 = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3] as const;\n\nconst centuryMap: Record<number, number> = {\n 1: 1800,\n 2: 1800,\n 3: 1900,\n 4: 1900,\n 5: 2000,\n 6: 2000,\n};\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\n/**\n * Compute the two-pass check digit used by both\n * Estonian IK and Lithuanian Asmens kodas.\n */\nexport const twoPassCheck = (digits: string): number => {\n let remainder = weightedSum(digits, WEIGHTS_1, 11);\n if (remainder !== 10) return remainder;\n remainder = weightedSum(digits, WEIGHTS_2, 11);\n return remainder === 10 ? 0 : remainder;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Isikukood must be exactly 11 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Isikukood must contain only digits\",\n );\n }\n\n const g = Number(v[0]);\n // Official Estonian structure uses 1-6:\n // 1-2 = 1800s, 3-4 = 1900s, 5-6 = 2000s.\n if (g < 1 || g > 6) {\n return err(\n \"INVALID_COMPONENT\",\n \"Isikukood gender/century digit is invalid\",\n );\n }\n\n const century = centuryMap[g] ?? 1900;\n const yy = Number(v.slice(1, 3));\n const mm = Number(v.slice(3, 5));\n const dd = Number(v.slice(5, 7));\n const year = century + yy;\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Isikukood contains an invalid date\",\n );\n }\n\n const check = twoPassCheck(v.slice(0, 10));\n if (check !== Number(v[10])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Isikukood check digit does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/**\n * Extract birth date and gender from an Isikukood.\n * Returns null if the value is not valid.\n */\nconst parse = (value: string): ParsedPersonId | null => {\n const result = validate(value);\n if (!result.valid) return null;\n\n const v = result.compact;\n const g = Number(v[0]);\n const century = centuryMap[g] ?? 1900;\n const yy = Number(v.slice(1, 3));\n const mm = Number(v.slice(3, 5));\n const dd = Number(v.slice(5, 7));\n const year = century + yy;\n\n return {\n birthDate: new Date(year, mm - 1, dd),\n gender: g % 2 === 1 ? \"male\" : \"female\",\n };\n};\n\n/** Generate a random valid Estonian IK. */\nconst generate = (): string => {\n for (;;) {\n const g = String(randomInt(3, 6));\n const yy = String(randomInt(0, 99)).padStart(2, \"0\");\n const mm = String(randomInt(1, 12)).padStart(2, \"0\");\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const s = String(randomInt(0, 999)).padStart(3, \"0\");\n const payload = g + yy + mm + dd + s;\n const c = payload + String(twoPassCheck(payload));\n if (validate(c).valid) return c;\n }\n};\n\n/** Estonian Personal Identification Code. */\nconst ik: CountryValidator<\"EE\", ParsedPersonId> = {\n name: \"Estonian Personal ID\",\n localName: \"Isikukood\",\n abbreviation: \"IK\",\n aliases: [\"isikukood\", \"IK\"] as const,\n candidatePattern: \"[1-6]\\\\d{10}\",\n scope: \"country\",\n country: \"EE\",\n entityType: \"person\",\n sourceUrl:\n \"https://www.riigiteataja.ee/en/eli/512012015003/consolide\",\n examples: [\"36805280109\"] as const,\n compact,\n format,\n parse,\n validate,\n generate,\n};\n\nexport default ik;\nexport { compact, format, parse, validate, generate };\n"],"mappings":"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"}
|
package/dist/ee/mod.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import ik from "./ik.js";
|
|
3
2
|
import registrikood from "./registrikood.js";
|
|
4
3
|
import vat from "./vat.js";
|
|
5
4
|
|
|
6
5
|
//#region src/ee/mod.d.ts
|
|
7
|
-
|
|
6
|
+
declare namespace mod_d_exports {
|
|
7
|
+
export { ik, registrikood, vat };
|
|
8
|
+
}
|
|
8
9
|
//#endregion
|
|
9
10
|
export { ik, mod_d_exports, registrikood, vat };
|
|
10
11
|
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ee/registrikood.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 Estonian Registrikood. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Estonian Company Registration Code. */
|
|
11
|
-
declare const registrikood:
|
|
10
|
+
declare const registrikood: CountryValidator<"EE">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, registrikood as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=registrikood.d.ts.map
|
package/dist/ee/registrikood.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import { clean } from "../_util/clean.js";
|
|
2
|
-
import { randomDigits,
|
|
2
|
+
import { randomDigits, randomPick } from "../_util/generate.js";
|
|
3
3
|
import { err } from "../_util/result.js";
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
import { twoPassCheck } from "./ik.js";
|
|
6
6
|
//#region src/ee/registrikood.ts
|
|
7
|
-
/**
|
|
8
|
-
* Registrikood (Estonian company registration code).
|
|
9
|
-
*
|
|
10
|
-
* 8 digits. First digit must be 1, 7, 8, or 9.
|
|
11
|
-
* Two-pass checksum (same algorithm as EE IK).
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.rik.ee/
|
|
14
|
-
*/
|
|
15
7
|
const VALID_FIRST = new Set([
|
|
16
8
|
"1",
|
|
17
9
|
"7",
|
|
@@ -31,14 +23,15 @@ const validate = (value) => {
|
|
|
31
23
|
};
|
|
32
24
|
};
|
|
33
25
|
const format = (value) => compact(value);
|
|
26
|
+
const REGISTRIKOOD_FIRSTS = [
|
|
27
|
+
1,
|
|
28
|
+
7,
|
|
29
|
+
8,
|
|
30
|
+
9
|
|
31
|
+
];
|
|
34
32
|
/** Generate a random valid Estonian Registrikood. */
|
|
35
33
|
const generate = () => {
|
|
36
|
-
const payload = String(
|
|
37
|
-
1,
|
|
38
|
-
7,
|
|
39
|
-
8,
|
|
40
|
-
9
|
|
41
|
-
][randomInt(0, 3)]) + randomDigits(6);
|
|
34
|
+
const payload = String(randomPick(REGISTRIKOOD_FIRSTS)) + randomDigits(6);
|
|
42
35
|
return payload + String(twoPassCheck(payload));
|
|
43
36
|
};
|
|
44
37
|
/** Estonian Company Registration Code. */
|
|
@@ -48,6 +41,7 @@ const registrikood = {
|
|
|
48
41
|
abbreviation: "Registrikood",
|
|
49
42
|
aliases: ["registrikood"],
|
|
50
43
|
candidatePattern: "\\d{8}",
|
|
44
|
+
scope: "country",
|
|
51
45
|
country: "EE",
|
|
52
46
|
entityType: "company",
|
|
53
47
|
sourceUrl: "https://www.rik.ee/",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrikood.js","names":[],"sources":["../../src/ee/registrikood.ts"],"sourcesContent":["/**\n * Registrikood (Estonian company registration code).\n *\n * 8 digits. First digit must be 1, 7, 8, or 9.\n * Two-pass checksum (same algorithm as EE IK).\n *\n * @see https://www.rik.ee/\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"registrikood.js","names":[],"sources":["../../src/ee/registrikood.ts"],"sourcesContent":["/**\n * Registrikood (Estonian company registration code).\n *\n * 8 digits. First digit must be 1, 7, 8, or 9.\n * Two-pass checksum (same algorithm as EE IK).\n *\n * @see https://www.rik.ee/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\nimport { twoPassCheck } from \"./ik\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomPick } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst VALID_FIRST = new Set([\"1\", \"7\", \"8\", \"9\"]);\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 \"Estonian Registrikood must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Estonian Registrikood must contain only digits\",\n );\n }\n if (!VALID_FIRST.has(v.charAt(0))) {\n return err(\n \"INVALID_COMPONENT\",\n \"Estonian Registrikood must start with 1, 7, 8, or 9\",\n );\n }\n const check = twoPassCheck(v.slice(0, 7));\n if (check !== Number(v[7])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Estonian Registrikood check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\nconst REGISTRIKOOD_FIRSTS = [1, 7, 8, 9] as const;\n\n/** Generate a random valid Estonian Registrikood. */\nconst generate = (): string => {\n const first = String(randomPick(REGISTRIKOOD_FIRSTS));\n const payload = first + randomDigits(6);\n return payload + String(twoPassCheck(payload));\n};\n\n/** Estonian Company Registration Code. */\nconst registrikood: CountryValidator<\"EE\"> = {\n name: \"Estonian Company Registration Code\",\n localName: \"Registrikood\",\n abbreviation: \"Registrikood\",\n aliases: [\"registrikood\"] as const,\n candidatePattern: \"\\\\d{8}\",\n scope: \"country\",\n country: \"EE\",\n entityType: \"company\",\n sourceUrl: \"https://www.rik.ee/\",\n examples: [\"12345678\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default registrikood;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AAoBA,MAAM,cAAc,IAAI,IAAI;CAAC;CAAK;CAAK;CAAK;AAAG,CAAC;AAEhD,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,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,IAAI,CAAC,YAAY,IAAI,EAAE,OAAO,CAAC,CAAC,GAC9B,OAAO,IACL,qBACA,qDACF;CAGF,IADc,aAAa,EAAE,MAAM,GAAG,CAAC,CAC/B,MAAM,OAAO,EAAE,EAAE,GACvB,OAAO,IACL,oBACA,4CACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;AAEvD,MAAM,sBAAsB;CAAC;CAAG;CAAG;CAAG;AAAC;;AAGvC,MAAM,iBAAyB;CAE7B,MAAM,UADQ,OAAO,WAAW,mBAAmB,CAC/B,IAAI,aAAa,CAAC;CACtC,OAAO,UAAU,OAAO,aAAa,OAAO,CAAC;AAC/C;;AAGA,MAAM,eAAuC;CAC3C,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,cAAc;CACxB,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,UAAU;CACrB;CACA;CACA;CACA;AACF"}
|
package/dist/ee/vat.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/ee/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 Estonian VAT number. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Estonian VAT Number. */
|
|
11
|
-
declare const vat:
|
|
10
|
+
declare const vat: CountryValidator<"EE">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, vat as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=vat.d.ts.map
|
package/dist/ee/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 } 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/ee/vat.ts
|
|
7
|
-
/**
|
|
8
|
-
* KMKR (Estonian VAT number).
|
|
9
|
-
*
|
|
10
|
-
* 9 digits. Weights [3,7,1,3,7,1,3,7,1],
|
|
11
|
-
* sum % 10 === 0.
|
|
12
|
-
*
|
|
13
|
-
* @see https://www.vatify.eu/estonia-vat-number.html
|
|
14
|
-
* @see https://www.emta.ee/en
|
|
15
|
-
*/
|
|
16
7
|
const WEIGHTS = [
|
|
17
8
|
3,
|
|
18
9
|
7,
|
|
@@ -54,6 +45,7 @@ const vat = {
|
|
|
54
45
|
abbreviation: "KMKR",
|
|
55
46
|
aliases: ["käibemaksukohustuslase number", "KMKR"],
|
|
56
47
|
candidatePattern: "EE\\d{9}",
|
|
48
|
+
scope: "country",
|
|
57
49
|
country: "EE",
|
|
58
50
|
entityType: "company",
|
|
59
51
|
sourceUrl: "https://www.emta.ee/en",
|
package/dist/ee/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":[],"sources":["../../src/ee/vat.ts"],"sourcesContent":["/**\n * KMKR (Estonian VAT number).\n *\n * 9 digits. Weights [3,7,1,3,7,1,3,7,1],\n * sum % 10 === 0.\n *\n * @see https://www.vatify.eu/estonia-vat-number.html\n * @see https://www.emta.ee/en\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":"vat.js","names":[],"sources":["../../src/ee/vat.ts"],"sourcesContent":["/**\n * KMKR (Estonian VAT number).\n *\n * 9 digits. Weights [3,7,1,3,7,1,3,7,1],\n * sum % 10 === 0.\n *\n * @see https://www.vatify.eu/estonia-vat-number.html\n * @see https://www.emta.ee/en\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 = [3, 7, 1, 3, 7, 1, 3, 7, 1];\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"EE\") || v.startsWith(\"ee\")) {\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 !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Estonian VAT number must be 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Estonian VAT number must contain only digits\",\n );\n }\n const sum = weightedSum(v, WEIGHTS, 10);\n if (sum !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Estonian VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `EE${compact(value)}`;\n\n/** Generate a random valid Estonian VAT number. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(9);\n if (validate(c).valid) return c;\n }\n};\n\n/** Estonian VAT Number. */\nconst vat: CountryValidator<\"EE\"> = {\n name: \"Estonian VAT Number\",\n localName: \"Käibemaksukohustuslase number\",\n abbreviation: \"KMKR\",\n aliases: [\n \"käibemaksukohustuslase number\",\n \"KMKR\",\n ] as const,\n candidatePattern: \"EE\\\\d{9}\",\n scope: \"country\",\n country: \"EE\",\n entityType: \"company\",\n sourceUrl: \"https://www.emta.ee/en\",\n examples: [\"100931558\"] 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;CAAG;CAAG;AAAC;AAE1C,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,sCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8CACF;CAGF,IADY,YAAY,GAAG,SAAS,EAC9B,MAAM,GACV,OAAO,IACL,oBACA,0CACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UACd,KAAK,QAAQ,KAAK;;AAGpB,MAAM,iBAAyB;CAC7B,SAAS;EACP,MAAM,IAAI,aAAa,CAAC;EACxB,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;AACF;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,iCACA,MACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;AACF"}
|
package/dist/eg/mod.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import tn from "./tn.js";
|
|
3
2
|
|
|
4
3
|
//#region src/eg/mod.d.ts
|
|
5
|
-
|
|
4
|
+
declare namespace mod_d_exports {
|
|
5
|
+
export { tn };
|
|
6
|
+
}
|
|
6
7
|
//#endregion
|
|
7
8
|
export { mod_d_exports, tn };
|
|
8
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/eg/tn.d.ts
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/eg/tn.d.ts
|
|
4
4
|
/** Generate a random valid Egyptian TN. */
|
|
5
5
|
declare const generate: () => string;
|
|
6
|
+
/**
|
|
7
|
+
* TN (Tax Registration Number, الرقم الضريبي).
|
|
8
|
+
*
|
|
9
|
+
* Egyptian tax number. 9 digits, no checksum.
|
|
10
|
+
* Displayed as XXX-XXX-XXX. Accepts both
|
|
11
|
+
* Arabic-Indic and Extended Arabic-Indic digits.
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.eta.gov.eg/
|
|
14
|
+
*/
|
|
6
15
|
declare const compact: (value: string) => string;
|
|
7
16
|
declare const validate: (value: string) => ValidateResult;
|
|
8
17
|
declare const format: (value: string) => string;
|
|
9
18
|
/** Egyptian Tax Registration Number. */
|
|
10
|
-
declare const tn:
|
|
19
|
+
declare const tn: CountryValidator<"EG">;
|
|
11
20
|
//#endregion
|
|
12
21
|
export { compact, tn as default, format, generate, validate };
|
|
13
22
|
//# sourceMappingURL=tn.d.ts.map
|