@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/cu/ni.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/cu/ni.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;
|
|
@@ -10,12 +9,14 @@ declare const format: (value: string) => string;
|
|
|
10
9
|
* Returns null if the value is not valid.
|
|
11
10
|
*/
|
|
12
11
|
declare const parse: (value: string) => ParsedPersonId | null;
|
|
12
|
+
/** Generate a random valid Cuban NI. */
|
|
13
|
+
declare const generate: () => string;
|
|
13
14
|
/**
|
|
14
15
|
* Cuban identity card number (NI).
|
|
15
16
|
*
|
|
16
17
|
* Examples sourced from python-stdnum test suite.
|
|
17
18
|
*/
|
|
18
|
-
declare const ni:
|
|
19
|
+
declare const ni: CountryValidator<"CU", ParsedPersonId>;
|
|
19
20
|
//#endregion
|
|
20
|
-
export { compact, ni as default, format, parse, validate };
|
|
21
|
+
export { compact, ni as default, format, generate, parse, validate };
|
|
21
22
|
//# sourceMappingURL=ni.d.ts.map
|
package/dist/cu/ni.js
CHANGED
|
@@ -1,23 +1,8 @@
|
|
|
1
1
|
import { clean } from "../_util/clean.js";
|
|
2
|
-
import { err } from "../_util/result.js";
|
|
3
2
|
import { isValidDate } from "../_util/date.js";
|
|
3
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
4
|
+
import { err } from "../_util/result.js";
|
|
4
5
|
//#region src/cu/ni.ts
|
|
5
|
-
/**
|
|
6
|
-
* NI (Número de Identidad, Cuban identity card number).
|
|
7
|
-
*
|
|
8
|
-
* 11 digits encoding birth date, century, sequence, and
|
|
9
|
-
* gender. Structure: YYMMDDXNNNN where:
|
|
10
|
-
* - YYMMDD = birth date
|
|
11
|
-
* - X = century digit (9=1800s, 0-5=1900s, 6-8=2000s)
|
|
12
|
-
* - NNNN = sequence (digit at position 9 encodes gender:
|
|
13
|
-
* even=male, odd=female)
|
|
14
|
-
*
|
|
15
|
-
* No check digit; validation is by date and format only.
|
|
16
|
-
*
|
|
17
|
-
* Ported from python-stdnum cu.ni module.
|
|
18
|
-
*
|
|
19
|
-
* @see https://www.ecured.cu/Carnet_de_Identidad
|
|
20
|
-
*/
|
|
21
6
|
const compact = (value) => clean(value, " -").trim();
|
|
22
7
|
/**
|
|
23
8
|
* Derive the full birth year from the two-digit year
|
|
@@ -60,6 +45,13 @@ const parse = (value) => {
|
|
|
60
45
|
gender
|
|
61
46
|
};
|
|
62
47
|
};
|
|
48
|
+
/** Generate a random valid Cuban NI. */
|
|
49
|
+
const generate = () => {
|
|
50
|
+
const year = randomInt(1950, 2024);
|
|
51
|
+
const month = String(randomInt(1, 12)).padStart(2, "0");
|
|
52
|
+
const day = String(randomInt(1, 28)).padStart(2, "0");
|
|
53
|
+
return `${String(year % 100).padStart(2, "0")}${month}${day}${year >= 2e3 ? String(randomInt(6, 8)) : String(randomInt(0, 5))}${randomDigits(4)}`;
|
|
54
|
+
};
|
|
63
55
|
/**
|
|
64
56
|
* Cuban identity card number (NI).
|
|
65
57
|
*
|
|
@@ -75,16 +67,19 @@ const ni = {
|
|
|
75
67
|
"carnet de identidad"
|
|
76
68
|
],
|
|
77
69
|
candidatePattern: "\\d{11}",
|
|
70
|
+
scope: "country",
|
|
78
71
|
country: "CU",
|
|
79
72
|
entityType: "person",
|
|
80
73
|
lengths: [11],
|
|
81
74
|
examples: ["91021027775", "72062506561"],
|
|
82
75
|
compact,
|
|
83
76
|
format,
|
|
77
|
+
parse,
|
|
84
78
|
validate,
|
|
79
|
+
generate,
|
|
85
80
|
sourceUrl: "https://www.ecured.cu/Carnet_de_Identidad"
|
|
86
81
|
};
|
|
87
82
|
//#endregion
|
|
88
|
-
export { compact, ni as default, format, parse, validate };
|
|
83
|
+
export { compact, ni as default, format, generate, parse, validate };
|
|
89
84
|
|
|
90
85
|
//# sourceMappingURL=ni.js.map
|
package/dist/cu/ni.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ni.js","names":[],"sources":["../../src/cu/ni.ts"],"sourcesContent":["/**\n * NI (Número de Identidad, Cuban identity card number).\n *\n * 11 digits encoding birth date, century, sequence, and\n * gender. Structure: YYMMDDXNNNN where:\n * - YYMMDD = birth date\n * - X = century digit (9=1800s, 0-5=1900s, 6-8=2000s)\n * - NNNN = sequence (digit at position 9 encodes gender:\n * even=male, odd=female)\n *\n * No check digit; validation is by date and format only.\n *\n * Ported from python-stdnum cu.ni module.\n *\n * @see https://www.ecured.cu/Carnet_de_Identidad\n */\n\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport {
|
|
1
|
+
{"version":3,"file":"ni.js","names":[],"sources":["../../src/cu/ni.ts"],"sourcesContent":["/**\n * NI (Número de Identidad, Cuban identity card number).\n *\n * 11 digits encoding birth date, century, sequence, and\n * gender. Structure: YYMMDDXNNNN where:\n * - YYMMDD = birth date\n * - X = century digit (9=1800s, 0-5=1900s, 6-8=2000s)\n * - NNNN = sequence (digit at position 9 encodes gender:\n * even=male, odd=female)\n *\n * No check digit; validation is by date and format only.\n *\n * Ported from python-stdnum cu.ni module.\n *\n * @see https://www.ecured.cu/Carnet_de_Identidad\n */\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nconst compact = (value: string): string =>\n clean(value, \" -\").trim();\n\n/**\n * Derive the full birth year from the two-digit year\n * and the century indicator at position 6.\n */\nconst centuryOffset = (digit: string): number => {\n if (digit === \"9\") return 1800;\n if (digit >= \"0\" && digit <= \"5\") return 1900;\n return 2000;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Cuban NI must be 11 digits\",\n );\n }\n\n if (!/^\\d{11}$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Cuban NI must contain only digits\",\n );\n }\n\n const yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n // SAFETY: regex check above guarantees v.length === 11.\n // eslint-disable-next-line no-non-null-assertion\n const year = centuryOffset(v[6]!) + yy;\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Cuban NI contains an invalid birth date\",\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 a Cuban NI.\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 yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n // SAFETY: regex check above guarantees v.length === 11.\n // eslint-disable-next-line no-non-null-assertion\n const year = centuryOffset(v[6]!) + yy;\n\n const genderDigit = Number(v[9]);\n const gender: \"male\" | \"female\" =\n genderDigit % 2 === 0 ? \"male\" : \"female\";\n\n return {\n birthDate: new Date(year, mm - 1, dd),\n gender,\n };\n};\n\n/** Generate a random valid Cuban NI. */\nconst generate = (): string => {\n const year = randomInt(1950, 2024);\n const month = String(randomInt(1, 12)).padStart(2, \"0\");\n const day = String(randomInt(1, 28)).padStart(2, \"0\");\n const yy = String(year % 100).padStart(2, \"0\");\n const century =\n year >= 2000\n ? String(randomInt(6, 8))\n : String(randomInt(0, 5));\n return `${yy}${month}${day}${century}${randomDigits(4)}`;\n};\n\n/**\n * Cuban identity card number (NI).\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst ni: CountryValidator<\"CU\", ParsedPersonId> = {\n name: \"Cuban Identity Card Number\",\n localName: \"Número de Identidad\",\n abbreviation: \"NI\",\n aliases: [\n \"NI\",\n \"número de identidad\",\n \"carnet de identidad\",\n ] as const,\n candidatePattern: \"\\\\d{11}\",\n scope: \"country\",\n country: \"CU\",\n entityType: \"person\",\n lengths: [11] as const,\n examples: [\"91021027775\", \"72062506561\"] as const,\n compact,\n format,\n parse,\n validate,\n generate,\n sourceUrl: \"https://www.ecured.cu/Carnet_de_Identidad\",\n};\n\nexport default ni;\nexport { compact, format, generate, parse, validate };\n"],"mappings":";;;;;AA4BA,MAAM,WAAW,UACf,MAAM,OAAO,IAAI,EAAE,KAAK;;;;;AAM1B,MAAM,iBAAiB,UAA0B;CAC/C,IAAI,UAAU,KAAK,OAAO;CAC1B,IAAI,SAAS,OAAO,SAAS,KAAK,OAAO;CACzC,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,4BACF;CAGF,IAAI,CAAC,WAAW,KAAK,CAAC,GACpB,OAAO,IACL,kBACA,mCACF;CAGF,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAK/B,IAAI,CAAC,YAFQ,cAAc,EAAE,EAAG,IAAI,IAEb,IAAI,EAAE,GAC3B,OAAO,IACL,qBACA,yCACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;;;;AAMvD,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,KAAK;CAC7B,IAAI,CAAC,OAAO,OAAO,OAAO;CAE1B,MAAM,IAAI,OAAO;CACjB,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAG/B,MAAM,OAAO,cAAc,EAAE,EAAG,IAAI;CAGpC,MAAM,SADc,OAAO,EAAE,EAEjB,IAAI,MAAM,IAAI,SAAS;CAEnC,OAAO;EACL,WAAW,IAAI,KAAK,MAAM,KAAK,GAAG,EAAE;EACpC;CACF;AACF;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,OAAO,UAAU,MAAM,IAAI;CACjC,MAAM,QAAQ,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;CACtD,MAAM,MAAM,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;CAMpD,OAAO,GALI,OAAO,OAAO,GAAG,EAAE,SAAS,GAAG,GAK/B,IAAI,QAAQ,MAHrB,QAAQ,MACJ,OAAO,UAAU,GAAG,CAAC,CAAC,IACtB,OAAO,UAAU,GAAG,CAAC,CAAC,IACW,aAAa,CAAC;AACvD;;;;;;AAOA,MAAM,KAA6C;CACjD,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,eAAe,aAAa;CACvC;CACA;CACA;CACA;CACA;CACA,WAAW;AACb"}
|
package/dist/cy/mod.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import vat from "./vat.js";
|
|
3
2
|
|
|
4
3
|
//#region src/cy/mod.d.ts
|
|
5
|
-
|
|
4
|
+
declare namespace mod_d_exports {
|
|
5
|
+
export { vat };
|
|
6
|
+
}
|
|
6
7
|
//#endregion
|
|
7
8
|
export { mod_d_exports, vat };
|
|
8
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/cy/vat.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/cy/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 Cypriot VAT number. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Cypriot VAT Number. */
|
|
11
|
-
declare const vat:
|
|
10
|
+
declare const vat: CountryValidator<"CY">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, vat as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=vat.d.ts.map
|
package/dist/cy/vat.js
CHANGED
|
@@ -3,14 +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/cy/vat.ts
|
|
6
|
-
/**
|
|
7
|
-
* ΦΠΑ (Cypriot VAT number).
|
|
8
|
-
*
|
|
9
|
-
* 8 digits + 1 check letter. Cannot start with "12".
|
|
10
|
-
*
|
|
11
|
-
* @see https://www.vatify.eu/cyprus-vat-number.html
|
|
12
|
-
* @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/cyprus-tin.pdf
|
|
13
|
-
*/
|
|
14
6
|
const ODD_MAP = {
|
|
15
7
|
0: 1,
|
|
16
8
|
1: 0,
|
|
@@ -73,6 +65,7 @@ const vat = {
|
|
|
73
65
|
abbreviation: "ΦΠΑ",
|
|
74
66
|
aliases: ["ΦΠΑ", "VAT CY"],
|
|
75
67
|
candidatePattern: "CY\\d{8}[A-Z]",
|
|
68
|
+
scope: "country",
|
|
76
69
|
country: "CY",
|
|
77
70
|
entityType: "company",
|
|
78
71
|
sourceUrl: "https://www.mof.gov.cy/",
|
package/dist/cy/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":[],"sources":["../../src/cy/vat.ts"],"sourcesContent":["/**\n * ΦΠΑ (Cypriot VAT number).\n *\n * 8 digits + 1 check letter. Cannot start with \"12\".\n *\n * @see https://www.vatify.eu/cyprus-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/cyprus-tin.pdf\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"vat.js","names":[],"sources":["../../src/cy/vat.ts"],"sourcesContent":["/**\n * ΦΠΑ (Cypriot VAT number).\n *\n * 8 digits + 1 check letter. Cannot start with \"12\".\n *\n * @see https://www.vatify.eu/cyprus-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/cyprus-tin.pdf\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst ODD_MAP: Record<number, number> = {\n 0: 1,\n 1: 0,\n 2: 5,\n 3: 7,\n 4: 9,\n 5: 13,\n 6: 15,\n 7: 17,\n 8: 19,\n 9: 21,\n};\n\nconst LETTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"CY\") || v.startsWith(\"cy\")) {\n v = v.slice(2);\n }\n return v.toUpperCase();\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Cypriot VAT number must be 8 digits + 1 letter\",\n );\n }\n const digits = v.slice(0, 8);\n const checkLetter = v[8];\n if (!isdigits(digits)) {\n return err(\n \"INVALID_FORMAT\",\n \"Cypriot VAT number must start with 8 digits\",\n );\n }\n if (\n checkLetter === undefined ||\n !LETTERS.includes(checkLetter)\n ) {\n return err(\n \"INVALID_FORMAT\",\n \"Cypriot VAT number must end with a letter\",\n );\n }\n if (v.startsWith(\"12\")) {\n return err(\n \"INVALID_COMPONENT\",\n \"Cypriot VAT number cannot start with 12\",\n );\n }\n let odd = 0;\n let even = 0;\n for (let i = 0; i < 8; i++) {\n const d = Number(digits.charAt(i));\n if (i % 2 === 0) {\n // Odd position (1-indexed: 1,3,5,7)\n odd += ODD_MAP[d] ?? 0;\n } else {\n // Even position (1-indexed: 2,4,6,8)\n even += d;\n }\n }\n const expected = LETTERS.charAt((odd + even) % 26);\n if (checkLetter !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Cypriot VAT number check letter mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `CY${compact(value)}`;\n\n/** Generate a random valid Cypriot VAT number. */\nconst generate = (): string => {\n for (;;) {\n const digits = randomDigits(8);\n if (digits.startsWith(\"12\")) continue;\n let odd = 0;\n let even = 0;\n for (let i = 0; i < 8; i++) {\n const d = Number(digits.charAt(i));\n if (i % 2 === 0) odd += ODD_MAP[d] ?? 0;\n else even += d;\n }\n return digits + LETTERS.charAt((odd + even) % 26);\n }\n};\n\n/** Cypriot VAT Number. */\nconst vat: CountryValidator<\"CY\"> = {\n name: \"Cypriot VAT Number\",\n localName: \"Αριθμός Εγγραφής Φ.Π.Α.\",\n abbreviation: \"ΦΠΑ\",\n aliases: [\"ΦΠΑ\", \"VAT CY\"] as const,\n candidatePattern: \"CY\\\\d{8}[A-Z]\",\n scope: \"country\",\n country: \"CY\",\n entityType: \"company\",\n sourceUrl: \"https://www.mof.gov.cy/\",\n examples: [\"10259033P\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAmBA,MAAM,UAAkC;CACtC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;AACL;AAEA,MAAM,UAAU;AAEhB,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,EAAE,YAAY;AACvB;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,gDACF;CAEF,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC;CAC3B,MAAM,cAAc,EAAE;CACtB,IAAI,CAAC,SAAS,MAAM,GAClB,OAAO,IACL,kBACA,6CACF;CAEF,IACE,gBAAgB,KAAA,KAChB,CAAC,QAAQ,SAAS,WAAW,GAE7B,OAAO,IACL,kBACA,2CACF;CAEF,IAAI,EAAE,WAAW,IAAI,GACnB,OAAO,IACL,qBACA,yCACF;CAEF,IAAI,MAAM;CACV,IAAI,OAAO;CACX,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;EAC1B,MAAM,IAAI,OAAO,OAAO,OAAO,CAAC,CAAC;EACjC,IAAI,IAAI,MAAM,GAEZ,OAAO,QAAQ,MAAM;OAGrB,QAAQ;CAEZ;CAEA,IAAI,gBADa,QAAQ,QAAQ,MAAM,QAAQ,EACpB,GACzB,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,SAAS,aAAa,CAAC;EAC7B,IAAI,OAAO,WAAW,IAAI,GAAG;EAC7B,IAAI,MAAM;EACV,IAAI,OAAO;EACX,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;GAC1B,MAAM,IAAI,OAAO,OAAO,OAAO,CAAC,CAAC;GACjC,IAAI,IAAI,MAAM,GAAG,OAAO,QAAQ,MAAM;QACjC,QAAQ;EACf;EACA,OAAO,SAAS,QAAQ,QAAQ,MAAM,QAAQ,EAAE;CAClD;AACF;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,QAAQ;CACzB,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;AACF"}
|
package/dist/cz/dic.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/cz/dic.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 8-digit DIČ. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Czech VAT Number. */
|
|
11
|
-
declare const dic:
|
|
10
|
+
declare const dic: CountryValidator<"CZ">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, dic as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=dic.d.ts.map
|
package/dist/cz/dic.js
CHANGED
|
@@ -1,22 +1,10 @@
|
|
|
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
|
import { validate as validate$1 } from "./rc.js";
|
|
7
7
|
//#region src/cz/dic.ts
|
|
8
|
-
/**
|
|
9
|
-
* DIČ (Daňové identifikační číslo).
|
|
10
|
-
*
|
|
11
|
-
* Czech tax identification number / VAT number.
|
|
12
|
-
* Format: "CZ" prefix + 8, 9, or 10 digits.
|
|
13
|
-
* - 8 digits: company (same checksum as IČO,
|
|
14
|
-
* but first digit cannot be 9)
|
|
15
|
-
* - 9 digits starting with 6: special entity
|
|
16
|
-
* - 9-10 digits: individual (birth number)
|
|
17
|
-
*
|
|
18
|
-
* @see https://adisspr.mfcr.cz/dpr/DphReg
|
|
19
|
-
*/
|
|
20
8
|
const ICO_WEIGHTS = [
|
|
21
9
|
8,
|
|
22
10
|
7,
|
|
@@ -82,9 +70,15 @@ const dic = {
|
|
|
82
70
|
abbreviation: "DIČ",
|
|
83
71
|
aliases: ["DIČ", "daňové identifikační číslo"],
|
|
84
72
|
candidatePattern: "CZ\\d{8,10}",
|
|
73
|
+
scope: "country",
|
|
85
74
|
country: "CZ",
|
|
86
75
|
entityType: "any",
|
|
87
76
|
sourceUrl: "https://adisspr.mfcr.cz/dpr/DphReg",
|
|
77
|
+
lengths: [
|
|
78
|
+
8,
|
|
79
|
+
9,
|
|
80
|
+
10
|
|
81
|
+
],
|
|
88
82
|
examples: ["25123891", "7103192745"],
|
|
89
83
|
compact,
|
|
90
84
|
format,
|
package/dist/cz/dic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dic.js","names":["validateRc"],"sources":["../../src/cz/dic.ts"],"sourcesContent":["/**\n * DIČ (Daňové identifikační číslo).\n *\n * Czech tax identification number / VAT number.\n * Format: \"CZ\" prefix + 8, 9, or 10 digits.\n * - 8 digits: company (same checksum as IČO,\n * but first digit cannot be 9)\n * - 9 digits starting with 6: special entity\n * - 9-10 digits: individual (birth number)\n *\n * @see https://adisspr.mfcr.cz/dpr/DphReg\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"dic.js","names":["validateRc"],"sources":["../../src/cz/dic.ts"],"sourcesContent":["/**\n * DIČ (Daňové identifikační číslo).\n *\n * Czech tax identification number / VAT number.\n * Format: \"CZ\" prefix + 8, 9, or 10 digits.\n * - 8 digits: company (same checksum as IČO,\n * but first digit cannot be 9)\n * - 9 digits starting with 6: special entity\n * - 9-10 digits: individual (birth number)\n *\n * @see https://adisspr.mfcr.cz/dpr/DphReg\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\nimport { validate as validateRc } from \"./rc\";\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 ICO_WEIGHTS = [8, 7, 6, 5, 4, 3, 2] as const;\n\nconst compact = (value: string): string => {\n const v = clean(value, \" -\");\n if (v.startsWith(\"CZ\") || v.startsWith(\"cz\")) {\n return v.slice(2);\n }\n return v;\n};\n\nconst checkLegal = (value: string): boolean => {\n const sum = weightedSum(\n value.slice(0, 7),\n ICO_WEIGHTS,\n 11,\n );\n const v11 = (11 - sum) % 11;\n const check = v11 === 0 ? 1 : v11 % 10;\n return check === Number(value[7]);\n};\n\nconst checkSpecial = (value: string): boolean => {\n // Skip the leading \"6\"; check digits 1..7\n const sum = weightedSum(\n value.slice(1, 8),\n [8, 7, 6, 5, 4, 3, 2],\n 11,\n );\n const check =\n (((8 - ((((10 - sum) % 11) + 11) % 11)) % 10) + 10) %\n 10;\n return check === Number(value[8]);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length < 8 || v.length > 10) {\n return err(\n \"INVALID_LENGTH\",\n \"DIČ must be 8-10 digits (without CZ prefix)\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"DIČ must contain only digits\",\n );\n }\n\n // 8-digit: legal entity (IČO-like checksum)\n if (v.length === 8) {\n if (v[0] === \"9\") {\n return err(\n \"INVALID_COMPONENT\",\n \"8-digit DIČ cannot start with 9\",\n );\n }\n if (!checkLegal(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"DIČ check digit does not match\",\n );\n }\n return { valid: true, compact: v };\n }\n\n // 9-digit starting with 6: special entity\n if (v.length === 9 && v[0] === \"6\") {\n if (!checkSpecial(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"DIČ special entity check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n }\n\n // 9-10 digit: birth number\n return validateRc(v);\n};\n\nconst format = (value: string): string =>\n `CZ${compact(value)}`;\n\n/** Generate a random valid 8-digit DIČ. */\nconst generate = (): string => {\n const first = String(randomInt(1, 8));\n const payload = first + randomDigits(6);\n const sum = weightedSum(payload, ICO_WEIGHTS, 11);\n const v11 = (11 - sum) % 11;\n const check = v11 === 0 ? 1 : v11 % 10;\n return payload + String(check);\n};\n\n/** Czech VAT Number. */\nconst dic: CountryValidator<\"CZ\"> = {\n name: \"Czech VAT Number\",\n localName: \"Daňové identifikační číslo\",\n abbreviation: \"DIČ\",\n aliases: [\"DIČ\", \"daňové identifikační číslo\"] as const,\n candidatePattern: \"CZ\\\\d{8,10}\",\n scope: \"country\",\n country: \"CZ\",\n entityType: \"any\",\n sourceUrl: \"https://adisspr.mfcr.cz/dpr/DphReg\",\n lengths: [8, 9, 10] as const,\n examples: [\"25123891\", \"7103192745\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default dic;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;AAyBA,MAAM,cAAc;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAExC,MAAM,WAAW,UAA0B;CACzC,MAAM,IAAI,MAAM,OAAO,IAAI;CAC3B,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,GACzC,OAAO,EAAE,MAAM,CAAC;CAElB,OAAO;AACT;AAEA,MAAM,cAAc,UAA2B;CAM7C,MAAM,OAAO,KALD,YACV,MAAM,MAAM,GAAG,CAAC,GAChB,aACA,EAEkB,KAAK;CAEzB,QADc,QAAQ,IAAI,IAAI,MAAM,QACnB,OAAO,MAAM,EAAE;AAClC;AAEA,MAAM,gBAAgB,UAA2B;CAU/C,SAFK,MAAQ,KAND,YACV,MAAM,MAAM,GAAG,CAAC,GAChB;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;CAAC,GACpB,EAGkB,KAAK,KAAM,MAAM,MAAO,KAAM,MAChD,OACe,OAAO,MAAM,EAAE;AAClC;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,SAAS,KAAK,EAAE,SAAS,IAC7B,OAAO,IACL,kBACA,6CACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAIF,IAAI,EAAE,WAAW,GAAG;EAClB,IAAI,EAAE,OAAO,KACX,OAAO,IACL,qBACA,iCACF;EAEF,IAAI,CAAC,WAAW,CAAC,GACf,OAAO,IACL,oBACA,gCACF;EAEF,OAAO;GAAE,OAAO;GAAM,SAAS;EAAE;CACnC;CAGA,IAAI,EAAE,WAAW,KAAK,EAAE,OAAO,KAAK;EAClC,IAAI,CAAC,aAAa,CAAC,GACjB,OAAO,IACL,oBACA,yCACF;EAEF,OAAO;GAAE,OAAO;GAAM,SAAS;EAAE;CACnC;CAGA,OAAOA,WAAW,CAAC;AACrB;AAEA,MAAM,UAAU,UACd,KAAK,QAAQ,KAAK;;AAGpB,MAAM,iBAAyB;CAE7B,MAAM,UADQ,OAAO,UAAU,GAAG,CAAC,CACf,IAAI,aAAa,CAAC;CAEtC,MAAM,OAAO,KADD,YAAY,SAAS,aAAa,EAC1B,KAAK;CACzB,MAAM,QAAQ,QAAQ,IAAI,IAAI,MAAM;CACpC,OAAO,UAAU,OAAO,KAAK;AAC/B;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,4BAA4B;CAC7C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,SAAS;EAAC;EAAG;EAAG;CAAE;CAClB,UAAU,CAAC,YAAY,YAAY;CACnC;CACA;CACA;CACA;AACF"}
|
package/dist/cz/ico.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/cz/ico.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 ICO. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Czech Company Identification Number. */
|
|
11
|
-
declare const ico:
|
|
10
|
+
declare const ico: CountryValidator<"CZ">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, ico as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=ico.d.ts.map
|
package/dist/cz/ico.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/cz/ico.ts
|
|
7
|
-
/**
|
|
8
|
-
* IČO (Identifikační číslo osoby).
|
|
9
|
-
*
|
|
10
|
-
* Czech company identification number. 8 digits
|
|
11
|
-
* with a weighted checksum. Assigned by the Czech
|
|
12
|
-
* Statistical Office.
|
|
13
|
-
*
|
|
14
|
-
* @see https://www.czso.cz/
|
|
15
|
-
*/
|
|
16
7
|
const WEIGHTS = [
|
|
17
8
|
8,
|
|
18
9
|
7,
|
|
@@ -53,6 +44,7 @@ const ico = {
|
|
|
53
44
|
"identifikační číslo"
|
|
54
45
|
],
|
|
55
46
|
candidatePattern: "\\d{8}",
|
|
47
|
+
scope: "country",
|
|
56
48
|
country: "CZ",
|
|
57
49
|
entityType: "company",
|
|
58
50
|
description: "8-digit company ID assigned by the Czech Statistical Office",
|
package/dist/cz/ico.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ico.js","names":[],"sources":["../../src/cz/ico.ts"],"sourcesContent":["/**\n * IČO (Identifikační číslo osoby).\n *\n * Czech company identification number. 8 digits\n * with a weighted checksum. Assigned by the Czech\n * Statistical Office.\n *\n * @see https://www.czso.cz/\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":"ico.js","names":[],"sources":["../../src/cz/ico.ts"],"sourcesContent":["/**\n * IČO (Identifikační číslo osoby).\n *\n * Czech company identification number. 8 digits\n * with a weighted checksum. Assigned by the Czech\n * Statistical Office.\n *\n * @see https://www.czso.cz/\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nconst WEIGHTS = [8, 7, 6, 5, 4, 3, 2] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"IČO must be exactly 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"IČO must contain only digits\",\n );\n }\n const sum = weightedSum(v.slice(0, 7), WEIGHTS, 11);\n const v11 = (11 - sum) % 11;\n const check = v11 === 0 ? 1 : v11 % 10;\n if (check !== Number(v[7])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"IČO check digit does not match\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid ICO. */\nconst generate = (): string => {\n const payload = randomDigits(7);\n const sum = weightedSum(payload, WEIGHTS, 11);\n const v11 = (11 - sum) % 11;\n const check = v11 === 0 ? 1 : v11 % 10;\n return `${payload}${String(check)}`;\n};\n\n/** Czech Company Identification Number. */\nconst ico: CountryValidator<\"CZ\"> = {\n name: \"Czech Company ID\",\n localName: \"Identifikační číslo osoby\",\n abbreviation: \"IČO\",\n aliases: [\"IČO\", \"IČ\", \"identifikační číslo\"] as const,\n candidatePattern: \"\\\\d{8}\",\n scope: \"country\",\n country: \"CZ\",\n entityType: \"company\",\n description:\n \"8-digit company ID assigned by the Czech Statistical Office\",\n sourceUrl: \"https://www.czso.cz/\",\n lengths: [8] as const,\n examples: [\"25123891\", \"27074358\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default ico;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;;AAqBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAEpC,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,8BACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;CAGF,MAAM,OAAO,KADD,YAAY,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,EAC5B,KAAK;CAEzB,KADc,QAAQ,IAAI,IAAI,MAAM,QACtB,OAAO,EAAE,EAAE,GACvB,OAAO,IACL,oBACA,gCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,MAAM,iBAAyB;CAC7B,MAAM,UAAU,aAAa,CAAC;CAE9B,MAAM,OAAO,KADD,YAAY,SAAS,SAAS,EACtB,KAAK;CACzB,MAAM,QAAQ,QAAQ,IAAI,IAAI,MAAM;CACpC,OAAO,GAAG,UAAU,OAAO,KAAK;AAClC;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAO;EAAM;CAAqB;CAC5C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,aACE;CACF,WAAW;CACX,SAAS,CAAC,CAAC;CACX,UAAU,CAAC,YAAY,UAAU;CACjC;CACA;CACA;CACA;AACF"}
|
package/dist/cz/mod.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import dic from "./dic.js";
|
|
3
2
|
import ico from "./ico.js";
|
|
4
3
|
import rc from "./rc.js";
|
|
5
4
|
|
|
6
5
|
//#region src/cz/mod.d.ts
|
|
7
|
-
|
|
6
|
+
declare namespace mod_d_exports {
|
|
7
|
+
export { dic, ico, rc };
|
|
8
|
+
}
|
|
8
9
|
//#endregion
|
|
9
10
|
export { dic, ico, mod_d_exports, rc };
|
|
10
11
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/cz/rc.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/cz/rc.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;
|
|
@@ -16,7 +15,7 @@ declare const parse: (value: string) => ParsedPersonId | null;
|
|
|
16
15
|
*/
|
|
17
16
|
declare const generate: () => string;
|
|
18
17
|
/** Czech/Slovak Birth Number. */
|
|
19
|
-
declare const rc:
|
|
18
|
+
declare const rc: CountryValidator<"CZ", ParsedPersonId>;
|
|
20
19
|
//#endregion
|
|
21
20
|
export { compact, rc as default, format, generate, parse, validate };
|
|
22
21
|
//# sourceMappingURL=rc.d.ts.map
|
package/dist/cz/rc.js
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { isValidDate } from "../_util/date.js";
|
|
2
3
|
import { randomInt } from "../_util/generate.js";
|
|
3
4
|
import { err } from "../_util/result.js";
|
|
4
5
|
import { isdigits } from "../_util/strings.js";
|
|
5
|
-
import { isValidDate } from "../_util/date.js";
|
|
6
6
|
//#region src/cz/rc.ts
|
|
7
|
-
/**
|
|
8
|
-
* RČ (Rodné číslo).
|
|
9
|
-
*
|
|
10
|
-
* Czech and Slovak national identifier (birth
|
|
11
|
-
* number). 9 or 10 digits encoding date of birth
|
|
12
|
-
* and gender. 10-digit numbers (post-1954) must
|
|
13
|
-
* be divisible by 11.
|
|
14
|
-
*
|
|
15
|
-
* Women have 50 added to the month. Since 2004,
|
|
16
|
-
* an extra +20 offset is used when the serial
|
|
17
|
-
* range is exhausted.
|
|
18
|
-
*
|
|
19
|
-
* @see https://www.mvcr.cz/mvcren/docDetail.aspx?docid=21975362&doctype=ART
|
|
20
|
-
* @see Law 133/2000 Sb.
|
|
21
|
-
*/
|
|
22
7
|
const compact = (value) => clean(value, " /");
|
|
8
|
+
const decodeMonth = (rawMonth, year, length) => {
|
|
9
|
+
const candidates = length === 10 && year >= 2004 ? [
|
|
10
|
+
0,
|
|
11
|
+
50,
|
|
12
|
+
20,
|
|
13
|
+
70
|
|
14
|
+
] : [0, 50];
|
|
15
|
+
for (const offset of candidates) {
|
|
16
|
+
const month = rawMonth - offset;
|
|
17
|
+
if (month >= 1 && month <= 12) return month;
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
};
|
|
23
21
|
const validate = (value) => {
|
|
24
22
|
const v = compact(value);
|
|
25
23
|
if (v.length !== 9 && v.length !== 10) return err("INVALID_LENGTH", "Birth number must be 9 or 10 digits");
|
|
@@ -27,14 +25,14 @@ const validate = (value) => {
|
|
|
27
25
|
const yy = Number(v.slice(0, 2));
|
|
28
26
|
const mm = Number(v.slice(2, 4));
|
|
29
27
|
const dd = Number(v.slice(4, 6));
|
|
30
|
-
const month = mm % 50 % 20 || mm % 50;
|
|
31
|
-
if (month < 1 || month > 12) return err("INVALID_COMPONENT", "Birth number contains an invalid month");
|
|
32
|
-
if (dd < 1 || dd > 31) return err("INVALID_COMPONENT", "Birth number contains an invalid day");
|
|
33
28
|
let year = yy + 1900;
|
|
34
29
|
if (v.length === 9) {
|
|
35
30
|
if (year >= 1980) year -= 100;
|
|
36
31
|
if (year > 1953) return err("INVALID_COMPONENT", "9-digit birth numbers are pre-1954 only");
|
|
37
32
|
} else if (year < 1954) year += 100;
|
|
33
|
+
const month = decodeMonth(mm, year, v.length);
|
|
34
|
+
if (month === null) return err("INVALID_COMPONENT", "Birth number contains an invalid month");
|
|
35
|
+
if (dd < 1 || dd > 31) return err("INVALID_COMPONENT", "Birth number contains an invalid day");
|
|
38
36
|
if (!isValidDate(year, month, dd)) return err("INVALID_COMPONENT", "Birth number contains an invalid date");
|
|
39
37
|
if (v.length === 10) {
|
|
40
38
|
const check = Number(v.slice(0, 9)) % 11 % 10;
|
|
@@ -60,11 +58,12 @@ const parse = (value) => {
|
|
|
60
58
|
const yy = Number(v.slice(0, 2));
|
|
61
59
|
const mm = Number(v.slice(2, 4));
|
|
62
60
|
const dd = Number(v.slice(4, 6));
|
|
63
|
-
const gender = mm
|
|
64
|
-
const month = mm % 50 % 20 || mm % 50;
|
|
61
|
+
const gender = mm >= 50 ? "female" : "male";
|
|
65
62
|
let year = yy + 1900;
|
|
66
63
|
if (v.length === 10 && year < 1954) year += 100;
|
|
67
64
|
if (v.length === 9 && year >= 1980) year -= 100;
|
|
65
|
+
const month = decodeMonth(mm, year, v.length);
|
|
66
|
+
if (month === null) return null;
|
|
68
67
|
return {
|
|
69
68
|
birthDate: new Date(year, month - 1, dd),
|
|
70
69
|
gender
|
|
@@ -99,6 +98,7 @@ const rc = {
|
|
|
99
98
|
"birth number"
|
|
100
99
|
],
|
|
101
100
|
candidatePattern: "\\d{6}/\\d{3,4}",
|
|
101
|
+
scope: "country",
|
|
102
102
|
country: "CZ",
|
|
103
103
|
entityType: "person",
|
|
104
104
|
description: "Czech/Slovak national identifier encoding birth date and gender",
|
|
@@ -107,6 +107,7 @@ const rc = {
|
|
|
107
107
|
examples: ["7103192745"],
|
|
108
108
|
compact,
|
|
109
109
|
format,
|
|
110
|
+
parse,
|
|
110
111
|
validate,
|
|
111
112
|
generate
|
|
112
113
|
};
|
package/dist/cz/rc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rc.js","names":[],"sources":["../../src/cz/rc.ts"],"sourcesContent":["/**\n * RČ (Rodné číslo).\n *\n * Czech and Slovak national identifier (birth\n * number). 9 or 10 digits encoding date of birth\n * and gender. 10-digit numbers (post-1954) must\n * be divisible by 11.\n *\n * Women have 50 added to the month.
|
|
1
|
+
{"version":3,"file":"rc.js","names":[],"sources":["../../src/cz/rc.ts"],"sourcesContent":["/**\n * RČ (Rodné číslo).\n *\n * Czech and Slovak national identifier (birth\n * number). 9 or 10 digits encoding date of birth\n * and gender. 10-digit numbers (post-1954) must\n * be divisible by 11.\n *\n * Women have 50 added to the month. For modern\n * 10-digit numbers, an additional +20 offset may\n * be used when the daily serial range is exhausted\n * (+70 for women).\n *\n * Canonical source:\n * - Czech Ministry of the Interior guidance on rodne\n * cislo, with the modern overflow-month rules\n *\n * We use this to keep the 9-digit historical form\n * valid while rejecting modern +20/+70 month offsets\n * on 9-digit numbers. Those overflow offsets are a\n * modern rule for 10-digit values.\n *\n * @see https://www.mvcr.cz/mvcren/docDetail.aspx?docid=21975362&doctype=ART\n * @see Law 133/2000 Sb.\n */\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\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 compact = (value: string): string =>\n clean(value, \" /\");\n\nconst decodeMonth = (\n rawMonth: number,\n year: number,\n length: number,\n): number | null => {\n const candidates =\n length === 10 && year >= 2004\n ? [0, 50, 20, 70]\n : [0, 50];\n for (const offset of candidates) {\n const month = rawMonth - offset;\n if (month >= 1 && month <= 12) {\n return month;\n }\n }\n return null;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9 && v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"Birth number must be 9 or 10 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Birth number must contain only digits\",\n );\n }\n\n const yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n\n // Resolve full year\n let year = yy + 1900;\n if (v.length === 9) {\n // 9-digit: pre-1954 only\n if (year >= 1980) year -= 100;\n if (year > 1953) {\n return err(\n \"INVALID_COMPONENT\",\n \"9-digit birth numbers are pre-1954 only\",\n );\n }\n } else {\n // 10-digit: if year < 1954, it's 2000s\n if (year < 1954) year += 100;\n }\n\n const month = decodeMonth(mm, year, v.length);\n if (month === null) {\n return err(\n \"INVALID_COMPONENT\",\n \"Birth number contains an invalid month\",\n );\n }\n\n if (dd < 1 || dd > 31) {\n return err(\n \"INVALID_COMPONENT\",\n \"Birth number contains an invalid day\",\n );\n }\n\n // Validate the actual date\n if (!isValidDate(year, month, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Birth number contains an invalid date\",\n );\n }\n\n // 10-digit: check digit is first 9 digits\n // mod 11 mod 10\n if (v.length === 10) {\n const front = Number(v.slice(0, 9));\n const check = (front % 11) % 10;\n if (String(check) !== v[9]) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Birth number is not divisible by 11\",\n );\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, 6)}/${v.slice(6)}`;\n};\n\n/**\n * Extract birth date and gender from a birth number.\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 yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n\n const gender = mm >= 50 ? \"female\" : \"male\";\n let year = yy + 1900;\n if (v.length === 10 && year < 1954) year += 100;\n if (v.length === 9 && year >= 1980) year -= 100;\n\n const month = decodeMonth(mm, year, v.length);\n if (month === null) {\n return null;\n }\n\n return {\n birthDate: new Date(year, month - 1, dd),\n gender,\n };\n};\n\n/**\n * Generate a random valid 10-digit birth number.\n * Uses a random date between 1954 and 2024.\n */\nconst generate = (): string => {\n const year = randomInt(1954, 2024);\n const month = randomInt(1, 12);\n const day = randomInt(1, 28);\n const isFemale = Math.random() < 0.5;\n const mm = isFemale ? month + 50 : month;\n\n const yy = String(year % 100).padStart(2, \"0\");\n const mmStr = String(mm).padStart(2, \"0\");\n const dd = String(day).padStart(2, \"0\");\n\n const datePart = `${yy}${mmStr}${dd}`;\n for (let seq = 0; seq < 1000; seq++) {\n const seqStr = String(seq).padStart(3, \"0\");\n const front = `${datePart}${seqStr}`;\n const num = Number(front);\n const check = (num % 11) % 10;\n const result = `${front}${String(check)}`;\n if (validate(result).valid) {\n return result;\n }\n }\n\n throw new Error(\"Failed to generate valid birth number\");\n};\n\n/** Czech/Slovak Birth Number. */\nconst rc: CountryValidator<\"CZ\", ParsedPersonId> = {\n name: \"Czech Birth Number\",\n localName: \"Rodné číslo\",\n abbreviation: \"RČ\",\n aliases: [\"rodné číslo\", \"RČ\", \"birth number\"] as const,\n candidatePattern: \"\\\\d{6}/\\\\d{3,4}\",\n scope: \"country\",\n country: \"CZ\",\n entityType: \"person\",\n description:\n \"Czech/Slovak national identifier encoding birth date and gender\",\n sourceUrl:\n \"https://www.mvcr.cz/mvcren/docDetail.aspx?docid=21975362&doctype=ART\",\n lengths: [9, 10] as const,\n examples: [\"7103192745\"] as const,\n compact,\n format,\n parse,\n validate,\n generate,\n};\n\nexport default rc;\nexport { compact, format, generate, parse, validate };\n"],"mappings":";;;;;;AAsCA,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,eACJ,UACA,MACA,WACkB;CAClB,MAAM,aACJ,WAAW,MAAM,QAAQ,OACrB;EAAC;EAAG;EAAI;EAAI;CAAE,IACd,CAAC,GAAG,EAAE;CACZ,KAAK,MAAM,UAAU,YAAY;EAC/B,MAAM,QAAQ,WAAW;EACzB,IAAI,SAAS,KAAK,SAAS,IACzB,OAAO;CAEX;CACA,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,KAAK,EAAE,WAAW,IACjC,OAAO,IACL,kBACA,qCACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,uCACF;CAGF,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAG/B,IAAI,OAAO,KAAK;CAChB,IAAI,EAAE,WAAW,GAAG;EAElB,IAAI,QAAQ,MAAM,QAAQ;EAC1B,IAAI,OAAO,MACT,OAAO,IACL,qBACA,yCACF;CAEJ,OAEE,IAAI,OAAO,MAAM,QAAQ;CAG3B,MAAM,QAAQ,YAAY,IAAI,MAAM,EAAE,MAAM;CAC5C,IAAI,UAAU,MACZ,OAAO,IACL,qBACA,wCACF;CAGF,IAAI,KAAK,KAAK,KAAK,IACjB,OAAO,IACL,qBACA,sCACF;CAIF,IAAI,CAAC,YAAY,MAAM,OAAO,EAAE,GAC9B,OAAO,IACL,qBACA,uCACF;CAKF,IAAI,EAAE,WAAW,IAAI;EAEnB,MAAM,QADQ,OAAO,EAAE,MAAM,GAAG,CAAC,CACd,IAAI,KAAM;EAC7B,IAAI,OAAO,KAAK,MAAM,EAAE,IACtB,OAAO,IACL,oBACA,qCACF;CAEJ;CAEA,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;AACtC;;;;;AAMA,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,KAAK;CAC7B,IAAI,CAAC,OAAO,OAAO,OAAO;CAE1B,MAAM,IAAI,OAAO;CACjB,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAE/B,MAAM,SAAS,MAAM,KAAK,WAAW;CACrC,IAAI,OAAO,KAAK;CAChB,IAAI,EAAE,WAAW,MAAM,OAAO,MAAM,QAAQ;CAC5C,IAAI,EAAE,WAAW,KAAK,QAAQ,MAAM,QAAQ;CAE5C,MAAM,QAAQ,YAAY,IAAI,MAAM,EAAE,MAAM;CAC5C,IAAI,UAAU,MACZ,OAAO;CAGT,OAAO;EACL,WAAW,IAAI,KAAK,MAAM,QAAQ,GAAG,EAAE;EACvC;CACF;AACF;;;;;AAMA,MAAM,iBAAyB;CAC7B,MAAM,OAAO,UAAU,MAAM,IAAI;CACjC,MAAM,QAAQ,UAAU,GAAG,EAAE;CAC7B,MAAM,MAAM,UAAU,GAAG,EAAE;CAE3B,MAAM,KADW,KAAK,OAAO,IAAI,KACX,QAAQ,KAAK;CAMnC,MAAM,WAAW,GAJN,OAAO,OAAO,GAAG,EAAE,SAAS,GAAG,GAIrB,IAHP,OAAO,EAAE,EAAE,SAAS,GAAG,GAGR,IAFlB,OAAO,GAAG,EAAE,SAAS,GAAG,GAED;CAClC,KAAK,IAAI,MAAM,GAAG,MAAM,KAAM,OAAO;EAEnC,MAAM,QAAQ,GAAG,WADF,OAAO,GAAG,EAAE,SAAS,GAAG,GACN;EAEjC,MAAM,QADM,OAAO,KACF,IAAI,KAAM;EAC3B,MAAM,SAAS,GAAG,QAAQ,OAAO,KAAK;EACtC,IAAI,SAAS,MAAM,EAAE,OACnB,OAAO;CAEX;CAEA,MAAM,IAAI,MAAM,uCAAuC;AACzD;;AAGA,MAAM,KAA6C;CACjD,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAe;EAAM;CAAc;CAC7C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,aACE;CACF,WACE;CACF,SAAS,CAAC,GAAG,EAAE;CACf,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACA;AACF"}
|
package/dist/de/handelsreg.d.ts
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/de/handelsreg.d.ts
|
|
4
4
|
/** Generate a random valid Handelsregisternummer. */
|
|
5
5
|
declare const generate: () => string;
|
|
6
|
+
/**
|
|
7
|
+
* Handelsregisternummer (German Company Register Number).
|
|
8
|
+
*
|
|
9
|
+
* German commercial register number assigned by the
|
|
10
|
+
* local court (Amtsgericht). Format: register type
|
|
11
|
+
* (HRA, HRB, GnR, PR, VR) + number.
|
|
12
|
+
*
|
|
13
|
+
* HRA = Handelsregister Abteilung A (partnerships,
|
|
14
|
+
* sole proprietors). HRB = Abteilung B (corporations).
|
|
15
|
+
* GnR = Genossenschaftsregister.
|
|
16
|
+
* PR = Partnerschaftsregister.
|
|
17
|
+
* VR = Vereinsregister.
|
|
18
|
+
*
|
|
19
|
+
* No check digit; validation is structural only.
|
|
20
|
+
*
|
|
21
|
+
* @see https://de.wikipedia.org/wiki/Handelsregister_(Deutschland)
|
|
22
|
+
*/
|
|
6
23
|
/**
|
|
7
24
|
* Strip separators and normalize to canonical form.
|
|
8
25
|
* Accepts "HRB 12345", "HRB12345", "hrb 12345".
|
|
@@ -11,7 +28,7 @@ declare const compact: (value: string) => string;
|
|
|
11
28
|
declare const validate: (value: string) => ValidateResult;
|
|
12
29
|
declare const format: (value: string) => string;
|
|
13
30
|
/** German Company Register Number. */
|
|
14
|
-
declare const handelsreg:
|
|
31
|
+
declare const handelsreg: CountryValidator<"DE">;
|
|
15
32
|
//#endregion
|
|
16
33
|
export { compact, handelsreg as default, format, generate, validate };
|
|
17
34
|
//# sourceMappingURL=handelsreg.d.ts.map
|
package/dist/de/handelsreg.js
CHANGED
|
@@ -1,34 +1,17 @@
|
|
|
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
|
//#region src/de/handelsreg.ts
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* HRA = Handelsregister Abteilung A (partnerships,
|
|
13
|
-
* sole proprietors). HRB = Abteilung B (corporations).
|
|
14
|
-
* GnR = Genossenschaftsregister.
|
|
15
|
-
* PR = Partnerschaftsregister.
|
|
16
|
-
* VR = Vereinsregister.
|
|
17
|
-
*
|
|
18
|
-
* No check digit; validation is structural only.
|
|
19
|
-
*
|
|
20
|
-
* @see https://de.wikipedia.org/wiki/Handelsregister_(Deutschland)
|
|
21
|
-
*/
|
|
5
|
+
const GENERATE_TYPES = [
|
|
6
|
+
"HRA",
|
|
7
|
+
"HRB",
|
|
8
|
+
"GNR",
|
|
9
|
+
"PR",
|
|
10
|
+
"VR"
|
|
11
|
+
];
|
|
22
12
|
/** Generate a random valid Handelsregisternummer. */
|
|
23
13
|
const generate = () => {
|
|
24
|
-
|
|
25
|
-
"HRA",
|
|
26
|
-
"HRB",
|
|
27
|
-
"GNR",
|
|
28
|
-
"PR",
|
|
29
|
-
"VR"
|
|
30
|
-
];
|
|
31
|
-
return `${types[randomInt(0, types.length - 1)]} ${randomDigits(5)}`;
|
|
14
|
+
return `${randomPick(GENERATE_TYPES)} ${randomDigits(5)}`;
|
|
32
15
|
};
|
|
33
16
|
const REGISTER_TYPES = new Set([
|
|
34
17
|
"HRA",
|
|
@@ -71,6 +54,7 @@ const handelsreg = {
|
|
|
71
54
|
"HRA"
|
|
72
55
|
],
|
|
73
56
|
candidatePattern: "(?:HRA|HRB|GnR|PR|VR)\\s*\\d{1,7}",
|
|
57
|
+
scope: "country",
|
|
74
58
|
country: "DE",
|
|
75
59
|
entityType: "company",
|
|
76
60
|
sourceUrl: "https://de.wikipedia.org/wiki/Handelsregister_(Deutschland)",
|