@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handelsreg.js","names":[],"sources":["../../src/de/handelsreg.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"handelsreg.js","names":[],"sources":["../../src/de/handelsreg.ts"],"sourcesContent":["const GENERATE_TYPES = [\n \"HRA\",\n \"HRB\",\n \"GNR\",\n \"PR\",\n \"VR\",\n] as const;\n\n/** Generate a random valid Handelsregisternummer. */\nconst generate = (): string => {\n const type = randomPick(GENERATE_TYPES);\n const number = randomDigits(5);\n return `${type} ${number}`;\n};\n\n/**\n * Handelsregisternummer (German Company Register Number).\n *\n * German commercial register number assigned by the\n * local court (Amtsgericht). Format: register type\n * (HRA, HRB, GnR, PR, VR) + number.\n *\n * HRA = Handelsregister Abteilung A (partnerships,\n * sole proprietors). HRB = Abteilung B (corporations).\n * GnR = Genossenschaftsregister.\n * PR = Partnerschaftsregister.\n * VR = Vereinsregister.\n *\n * No check digit; validation is structural only.\n *\n * @see https://de.wikipedia.org/wiki/Handelsregister_(Deutschland)\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomPick } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nconst REGISTER_TYPES = new Set([\n \"HRA\",\n \"HRB\",\n \"GNR\",\n \"PR\",\n \"VR\",\n]);\n\n/**\n * Strip separators and normalize to canonical form.\n * Accepts \"HRB 12345\", \"HRB12345\", \"hrb 12345\".\n */\nconst compact = (value: string): string => {\n const v = clean(value, \" -.\").trim().toUpperCase();\n const match = v.match(/^(HRA|HRB|GNR|PR|VR)(\\d{1,7})$/);\n if (!match) return v;\n return `${match[1]} ${match[2]}`;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = clean(value, \" -.\").trim().toUpperCase();\n\n const match = v.match(/^([A-Z]{2,3})(\\d{1,7})$/);\n if (!match) {\n return err(\n \"INVALID_FORMAT\",\n \"Handelsregisternummer must be a register type \" +\n \"(HRA, HRB, GnR, PR, VR) followed by \" +\n \"1-7 digits\",\n );\n }\n\n // SAFETY: both capture groups are required, so a\n // successful match always populates [1] and [2].\n // eslint-disable-next-line no-non-null-assertion\n const type = match[1]!;\n // eslint-disable-next-line no-non-null-assertion\n const number = match[2]!;\n\n if (!REGISTER_TYPES.has(type)) {\n return err(\n \"INVALID_COMPONENT\",\n `Unrecognised register type \"${type}\"`,\n );\n }\n\n return {\n valid: true,\n compact: `${type} ${number}`,\n };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** German Company Register Number. */\nconst handelsreg: CountryValidator<\"DE\"> = {\n name: \"German Company Register Number\",\n localName: \"Handelsregisternummer\",\n abbreviation: \"HReg\",\n aliases: [\n \"Handelsregisternummer\",\n \"Handelsregister\",\n \"HRB\",\n \"HRA\",\n ] as const,\n candidatePattern: \"(?:HRA|HRB|GnR|PR|VR)\\\\s*\\\\d{1,7}\",\n scope: \"country\",\n country: \"DE\",\n entityType: \"company\",\n sourceUrl:\n \"https://de.wikipedia.org/wiki/Handelsregister_(Deutschland)\",\n examples: [\"HRB 12345\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default handelsreg;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;AAAA,MAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;AACF;;AAGA,MAAM,iBAAyB;CAG7B,OAAO,GAFM,WAAW,cAEX,EAAE,GADA,aAAa,CACL;AACzB;AA6BA,MAAM,iBAAiB,IAAI,IAAI;CAC7B;CACA;CACA;CACA;CACA;AACF,CAAC;;;;;AAMD,MAAM,WAAW,UAA0B;CACzC,MAAM,IAAI,MAAM,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY;CACjD,MAAM,QAAQ,EAAE,MAAM,gCAAgC;CACtD,IAAI,CAAC,OAAO,OAAO;CACnB,OAAO,GAAG,MAAM,GAAG,GAAG,MAAM;AAC9B;AAEA,MAAM,YAAY,UAAkC;CAGlD,MAAM,QAFI,MAAM,OAAO,KAAK,EAAE,KAAK,EAAE,YAEvB,EAAE,MAAM,yBAAyB;CAC/C,IAAI,CAAC,OACH,OAAO,IACL,kBACA,8FAGF;CAMF,MAAM,OAAO,MAAM;CAEnB,MAAM,SAAS,MAAM;CAErB,IAAI,CAAC,eAAe,IAAI,IAAI,GAC1B,OAAO,IACL,qBACA,+BAA+B,KAAK,EACtC;CAGF,OAAO;EACL,OAAO;EACP,SAAS,GAAG,KAAK,GAAG;CACtB;AACF;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,MAAM,aAAqC;CACzC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;AACF"}
|
package/dist/de/idnr.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/de/idnr.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 German IdNr. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** German Personal Tax ID. */
|
|
11
|
-
declare const idnr:
|
|
10
|
+
declare const idnr: CountryValidator<"DE">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, idnr as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=idnr.d.ts.map
|
package/dist/de/idnr.js
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
+
import { mod1110checkDigit, mod1110validate } from "../_checksums/mod1110.js";
|
|
1
2
|
import { clean } from "../_util/clean.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 { mod1110checkDigit, mod1110validate } from "../_checksums/mod1110.js";
|
|
6
6
|
//#region src/de/idnr.ts
|
|
7
|
-
/**
|
|
8
|
-
* IdNr (Steuerliche Identifikationsnummer).
|
|
9
|
-
*
|
|
10
|
-
* German personal tax identification number.
|
|
11
|
-
* 11 digits; the last digit is a check digit
|
|
12
|
-
* (ISO 7064 Mod 11,10). Exactly one digit
|
|
13
|
-
* appears twice or three times; the rest are
|
|
14
|
-
* unique. The first digit cannot be 0.
|
|
15
|
-
*
|
|
16
|
-
* @see https://www.bzst.de/DE/Privatpersonen/SteuerlicheIdentifikationsnummer/steuerlicheidentifikationsnummer_node.html
|
|
17
|
-
*/
|
|
18
7
|
const compact = (value) => clean(value, " -/");
|
|
19
8
|
/**
|
|
20
9
|
* Validate digit distribution: in the first 10
|
|
@@ -87,6 +76,7 @@ const idnr = {
|
|
|
87
76
|
"Steuer-ID"
|
|
88
77
|
],
|
|
89
78
|
candidatePattern: "\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{3}",
|
|
79
|
+
scope: "country",
|
|
90
80
|
country: "DE",
|
|
91
81
|
entityType: "person",
|
|
92
82
|
sourceUrl: "https://www.bzst.de/DE/Privatpersonen/SteuerlicheIdentifikationsnummer/steuerlicheidentifikationsnummer_node.html",
|
package/dist/de/idnr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idnr.js","names":[],"sources":["../../src/de/idnr.ts"],"sourcesContent":["/**\n * IdNr (Steuerliche Identifikationsnummer).\n *\n * German personal tax identification number.\n * 11 digits; the last digit is a check digit\n * (ISO 7064 Mod 11,10). Exactly one digit\n * appears twice or three times; the rest are\n * unique. The first digit cannot be 0.\n *\n * @see https://www.bzst.de/DE/Privatpersonen/SteuerlicheIdentifikationsnummer/steuerlicheidentifikationsnummer_node.html\n */\n\nimport {\n mod1110validate,\n mod1110checkDigit,\n} from \"#checksums/mod1110\";\nimport { clean } from \"#util/clean\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\
|
|
1
|
+
{"version":3,"file":"idnr.js","names":[],"sources":["../../src/de/idnr.ts"],"sourcesContent":["/**\n * IdNr (Steuerliche Identifikationsnummer).\n *\n * German personal tax identification number.\n * 11 digits; the last digit is a check digit\n * (ISO 7064 Mod 11,10). Exactly one digit\n * appears twice or three times; the rest are\n * unique. The first digit cannot be 0.\n *\n * @see https://www.bzst.de/DE/Privatpersonen/SteuerlicheIdentifikationsnummer/steuerlicheidentifikationsnummer_node.html\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport {\n mod1110validate,\n mod1110checkDigit,\n} from \"#checksums/mod1110\";\nimport { clean } from \"#util/clean\";\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\n/**\n * Validate digit distribution: in the first 10\n * digits, exactly one digit appears 2 or 3\n * times; all others appear exactly once.\n */\nconst validDistribution = (value: string): boolean => {\n const counts = Array.from<number>({ length: 10 }).fill(0);\n for (let i = 0; i < 10; i++) {\n const idx = Number(value.charAt(i));\n const prev = counts[idx];\n if (prev !== undefined) counts[idx] = prev + 1;\n }\n let doubles = 0;\n let triples = 0;\n for (const c of counts) {\n if (c === 2) doubles++;\n if (c === 3) triples++;\n if (c > 3) return false;\n }\n // Exactly one digit repeated (2 or 3 times)\n return (\n (doubles === 1 && triples === 0) ||\n (doubles === 0 && triples === 1)\n );\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"German IdNr must be 11 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"German IdNr must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"German IdNr cannot start with 0\",\n );\n }\n if (!validDistribution(v)) {\n return err(\n \"INVALID_COMPONENT\",\n \"German IdNr digit distribution invalid\",\n );\n }\n if (!mod1110validate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"German IdNr check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v.slice(0, 2)} ${v.slice(2, 5)} ${v.slice(5, 8)} ${v.slice(8)}`;\n};\n\n/** Generate a random valid German IdNr. */\nconst generate = (): string => {\n for (;;) {\n const repeated = randomInt(0, 9);\n const times = Math.random() < 0.8 ? 2 : 3;\n const pool: number[] = [];\n for (let d = 0; d < 10; d++) {\n const count = d === repeated ? times : 1;\n for (let t = 0; t < count; t++) pool.push(d);\n }\n while (pool.length < 10) pool.push(randomInt(0, 9));\n for (let i = pool.length - 1; i > 0; i--) {\n const j = randomInt(0, i);\n // SAFETY: i and j are valid indices of `pool`\n // (i > 0, j ∈ [0, i]).\n // eslint-disable-next-line no-non-null-assertion\n [pool[i], pool[j]] = [pool[j]!, pool[i]!];\n }\n if (pool[0] === 0) continue;\n const payload = pool.slice(0, 10).join(\"\");\n if (!validDistribution(payload)) continue;\n const check = mod1110checkDigit(payload);\n const c = payload + String(check);\n if (validate(c).valid) return c;\n }\n};\n\n/** German Personal Tax ID. */\nconst idnr: CountryValidator<\"DE\"> = {\n name: \"German Tax ID\",\n localName: \"Steuerliche Identifikationsnummer\",\n abbreviation: \"IdNr\",\n aliases: [\n \"Steuerliche Identifikationsnummer\",\n \"IdNr\",\n \"Steuer-ID\",\n ] as const,\n candidatePattern: \"\\\\d{2}\\\\s?\\\\d{3}\\\\s?\\\\d{3}\\\\s?\\\\d{3}\",\n scope: \"country\",\n country: \"DE\",\n entityType: \"person\",\n sourceUrl:\n \"https://www.bzst.de/DE/Privatpersonen/SteuerlicheIdentifikationsnummer/steuerlicheidentifikationsnummer_node.html\",\n examples: [\"36574261809\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default idnr;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AA0BA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;;;;;;AAOpB,MAAM,qBAAqB,UAA2B;CACpD,MAAM,SAAS,MAAM,KAAa,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC;CACxD,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EAC3B,MAAM,MAAM,OAAO,MAAM,OAAO,CAAC,CAAC;EAClC,MAAM,OAAO,OAAO;EACpB,IAAI,SAAS,KAAA,GAAW,OAAO,OAAO,OAAO;CAC/C;CACA,IAAI,UAAU;CACd,IAAI,UAAU;CACd,KAAK,MAAM,KAAK,QAAQ;EACtB,IAAI,MAAM,GAAG;EACb,IAAI,MAAM,GAAG;EACb,IAAI,IAAI,GAAG,OAAO;CACpB;CAEA,OACG,YAAY,KAAK,YAAY,KAC7B,YAAY,KAAK,YAAY;AAElC;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,+BACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,sCACF;CAEF,IAAI,EAAE,OAAO,KACX,OAAO,IACL,qBACA,iCACF;CAEF,IAAI,CAAC,kBAAkB,CAAC,GACtB,OAAO,IACL,qBACA,wCACF;CAEF,IAAI,CAAC,gBAAgB,CAAC,GACpB,OAAO,IACL,oBACA,kCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;AACxE;;AAGA,MAAM,iBAAyB;CAC7B,SAAS;EACP,MAAM,WAAW,UAAU,GAAG,CAAC;EAC/B,MAAM,QAAQ,KAAK,OAAO,IAAI,KAAM,IAAI;EACxC,MAAM,OAAiB,CAAC;EACxB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;GAC3B,MAAM,QAAQ,MAAM,WAAW,QAAQ;GACvC,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,KAAK,KAAK,KAAK,CAAC;EAC7C;EACA,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,GAAG,CAAC,CAAC;EAClD,KAAK,IAAI,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK;GACxC,MAAM,IAAI,UAAU,GAAG,CAAC;GAIxB,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,KAAK,IAAK,KAAK,EAAG;EAC1C;EACA,IAAI,KAAK,OAAO,GAAG;EACnB,MAAM,UAAU,KAAK,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE;EACzC,IAAI,CAAC,kBAAkB,OAAO,GAAG;EACjC,MAAM,QAAQ,kBAAkB,OAAO;EACvC,MAAM,IAAI,UAAU,OAAO,KAAK;EAChC,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;AACF;;AAGA,MAAM,OAA+B;CACnC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WACE;CACF,UAAU,CAAC,aAAa;CACxB;CACA;CACA;CACA;AACF"}
|
package/dist/de/mod.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import handelsreg from "./handelsreg.js";
|
|
3
2
|
import idnr from "./idnr.js";
|
|
4
3
|
import stnr from "./stnr.js";
|
|
@@ -6,7 +5,9 @@ import svnr from "./svnr.js";
|
|
|
6
5
|
import vat from "./vat.js";
|
|
7
6
|
|
|
8
7
|
//#region src/de/mod.d.ts
|
|
9
|
-
|
|
8
|
+
declare namespace mod_d_exports {
|
|
9
|
+
export { handelsreg, idnr, stnr, svnr, vat };
|
|
10
|
+
}
|
|
10
11
|
//#endregion
|
|
11
12
|
export { handelsreg, idnr, mod_d_exports, stnr, svnr, vat };
|
|
12
13
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/de/stnr.d.ts
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/de/stnr.d.ts
|
|
4
|
-
|
|
5
4
|
/**
|
|
6
5
|
* Generate a random valid Steuernummer.
|
|
7
6
|
* Uses Berlin regional format (FFBBBUUUUP, 10 digits).
|
|
8
7
|
*/
|
|
9
8
|
declare const generate: () => string;
|
|
9
|
+
/**
|
|
10
|
+
* StNr (Steuernummer).
|
|
11
|
+
*
|
|
12
|
+
* German tax number assigned by the local tax office.
|
|
13
|
+
* Regional format: 10 or 11 digits. Unified federal
|
|
14
|
+
* format: 13 digits (prefixed with a 2–4 digit BUFA
|
|
15
|
+
* code). Structure varies by federal state.
|
|
16
|
+
*
|
|
17
|
+
* The number encodes: BUFA (Bundesfinanzamtsnummer),
|
|
18
|
+
* district code, serial number, and check digit. No
|
|
19
|
+
* algorithmic check digit validation is standardised
|
|
20
|
+
* across all states; validation is format-only.
|
|
21
|
+
*
|
|
22
|
+
* @see https://de.wikipedia.org/wiki/Steuernummer
|
|
23
|
+
*/
|
|
10
24
|
declare const compact: (value: string) => string;
|
|
11
25
|
declare const validate: (value: string) => ValidateResult;
|
|
12
26
|
/**
|
|
@@ -16,7 +30,7 @@ declare const validate: (value: string) => ValidateResult;
|
|
|
16
30
|
*/
|
|
17
31
|
declare const format: (value: string) => string;
|
|
18
32
|
/** German Tax Number (Steuernummer). */
|
|
19
|
-
declare const stnr:
|
|
33
|
+
declare const stnr: CountryValidator<"DE">;
|
|
20
34
|
//#endregion
|
|
21
35
|
export { compact, stnr as default, format, generate, validate };
|
|
22
36
|
//# sourceMappingURL=stnr.d.ts.map
|
package/dist/de/stnr.js
CHANGED
|
@@ -4,21 +4,6 @@ import { err } from "../_util/result.js";
|
|
|
4
4
|
import { isdigits } from "../_util/strings.js";
|
|
5
5
|
//#region src/de/stnr.ts
|
|
6
6
|
/**
|
|
7
|
-
* StNr (Steuernummer).
|
|
8
|
-
*
|
|
9
|
-
* German tax number assigned by the local tax office.
|
|
10
|
-
* Regional format: 10 or 11 digits. Unified federal
|
|
11
|
-
* format: 13 digits (prefixed with a 2–4 digit BUFA
|
|
12
|
-
* code). Structure varies by federal state.
|
|
13
|
-
*
|
|
14
|
-
* The number encodes: BUFA (Bundesfinanzamtsnummer),
|
|
15
|
-
* district code, serial number, and check digit. No
|
|
16
|
-
* algorithmic check digit validation is standardised
|
|
17
|
-
* across all states; validation is format-only.
|
|
18
|
-
*
|
|
19
|
-
* @see https://de.wikipedia.org/wiki/Steuernummer
|
|
20
|
-
*/
|
|
21
|
-
/**
|
|
22
7
|
* Generate a random valid Steuernummer.
|
|
23
8
|
* Uses Berlin regional format (FFBBBUUUUP, 10 digits).
|
|
24
9
|
*/
|
|
@@ -123,6 +108,7 @@ const stnr = {
|
|
|
123
108
|
abbreviation: "StNr",
|
|
124
109
|
aliases: ["Steuernummer", "St.Nr."],
|
|
125
110
|
candidatePattern: "\\d{2,4}/\\d{3,4}/\\d{4,5}",
|
|
111
|
+
scope: "country",
|
|
126
112
|
country: "DE",
|
|
127
113
|
entityType: "any",
|
|
128
114
|
description: "German tax number assigned by the local tax office, varies by federal state",
|
package/dist/de/stnr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stnr.js","names":[],"sources":["../../src/de/stnr.ts"],"sourcesContent":["/**\n * Generate a random valid Steuernummer.\n * Uses Berlin regional format (FFBBBUUUUP, 10 digits).\n */\nconst generate = (): string => {\n const ff = randomDigits(2);\n const bbb = randomDigits(3);\n const uuuu = randomDigits(4);\n const p = randomDigits(1);\n return `${ff}${bbb}${uuuu}${p}`;\n};\n\n/**\n * StNr (Steuernummer).\n *\n * German tax number assigned by the local tax office.\n * Regional format: 10 or 11 digits. Unified federal\n * format: 13 digits (prefixed with a 2–4 digit BUFA\n * code). Structure varies by federal state.\n *\n * The number encodes: BUFA (Bundesfinanzamtsnummer),\n * district code, serial number, and check digit. No\n * algorithmic check digit validation is standardised\n * across all states; validation is format-only.\n *\n * @see https://de.wikipedia.org/wiki/Steuernummer\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"stnr.js","names":[],"sources":["../../src/de/stnr.ts"],"sourcesContent":["/**\n * Generate a random valid Steuernummer.\n * Uses Berlin regional format (FFBBBUUUUP, 10 digits).\n */\nconst generate = (): string => {\n const ff = randomDigits(2);\n const bbb = randomDigits(3);\n const uuuu = randomDigits(4);\n const p = randomDigits(1);\n return `${ff}${bbb}${uuuu}${p}`;\n};\n\n/**\n * StNr (Steuernummer).\n *\n * German tax number assigned by the local tax office.\n * Regional format: 10 or 11 digits. Unified federal\n * format: 13 digits (prefixed with a 2–4 digit BUFA\n * code). Structure varies by federal state.\n *\n * The number encodes: BUFA (Bundesfinanzamtsnummer),\n * district code, serial number, and check digit. No\n * algorithmic check digit validation is standardised\n * across all states; validation is format-only.\n *\n * @see https://de.wikipedia.org/wiki/Steuernummer\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\n/**\n * Format patterns per federal state.\n * [0] = regional format, [1] = unified (federal) format.\n *\n * Legend: F = finance office, B = district,\n * U = serial, P = check digit,\n * leading digits are literal.\n */\nconst STATES = {\n \"Baden-Württemberg\": [\"FFBBBUUUUP\", \"28FF0BBBUUUUP\"],\n Bayern: [\"FFFBBBUUUUP\", \"9FFF0BBBUUUUP\"],\n Berlin: [\"FFBBBUUUUP\", \"11FF0BBBUUUUP\"],\n Brandenburg: [\"0FFBBBUUUUP\", \"30FF0BBBUUUUP\"],\n Bremen: [\"FFBBBUUUUP\", \"24FF0BBBUUUUP\"],\n Hamburg: [\"FFBBBUUUUP\", \"22FF0BBBUUUUP\"],\n Hessen: [\"0FFBBBUUUUP\", \"26FF0BBBUUUUP\"],\n \"Mecklenburg-Vorpommern\": [\n \"0FFBBBUUUUP\",\n \"40FF0BBBUUUUP\",\n ],\n Niedersachsen: [\"FFBBBUUUUP\", \"23FF0BBBUUUUP\"],\n \"Nordrhein-Westfalen\": [\"FFFBBBBUUUP\", \"5FFF0BBBBUUUP\"],\n \"Rheinland-Pfalz\": [\"FFBBBUUUUP\", \"27FF0BBBUUUUP\"],\n Saarland: [\"0FFBBBUUUUP\", \"10FF0BBBUUUUP\"],\n Sachsen: [\"2FFBBBUUUUP\", \"32FF0BBBUUUUP\"],\n \"Sachsen-Anhalt\": [\"1FFBBBUUUUP\", \"31FF0BBBUUUUP\"],\n \"Schleswig-Holstein\": [\"FFBBBUUUUP\", \"21FF0BBBUUUUP\"],\n Thüringen: [\"1FFBBBUUUUP\", \"41FF0BBBUUUUP\"],\n} as const;\n\ntype StateName = keyof typeof STATES;\n\n/**\n * Convert a format pattern to a regex.\n * Literal digits match themselves; F/B/U match any\n * digit; P (check digit) matches any digit.\n */\nconst patternToRegex = (pattern: string): RegExp => {\n let re = \"^\";\n for (const ch of pattern) {\n if (ch >= \"0\" && ch <= \"9\") {\n re += ch;\n } else {\n re += \"\\\\d\";\n }\n }\n re += \"$\";\n return new RegExp(re);\n};\n\n/** Pre-compiled regexes for each state + format. */\nconst COMPILED: Array<{\n state: StateName;\n regional: RegExp;\n regionalFmt: string;\n federal: RegExp;\n federalFmt: string;\n}> = (\n Object.entries(STATES) as Array<\n [StateName, readonly [string, string]]\n >\n).map(([state, [regionalFmt, federalFmt]]) => ({\n state,\n regional: patternToRegex(regionalFmt),\n regionalFmt,\n federal: patternToRegex(federalFmt),\n federalFmt,\n}));\n\nconst compact = (value: string): string =>\n clean(value, \" -/.\");\n\nconst matchesAnyPattern = (v: string): boolean => {\n for (const { regional, federal } of COMPILED) {\n if (regional.test(v) || federal.test(v)) return true;\n }\n return false;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"German Steuernummer must contain only digits\",\n );\n }\n\n if (\n v.length !== 10 &&\n v.length !== 11 &&\n v.length !== 13\n ) {\n return err(\n \"INVALID_LENGTH\",\n \"German Steuernummer must be 10, 11, or 13 digits\",\n );\n }\n\n if (!matchesAnyPattern(v)) {\n return err(\n \"INVALID_COMPONENT\",\n \"German Steuernummer does not match any \" +\n \"known state format\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\n/**\n * Format with slashes at segment boundaries.\n * Uses the first matching state pattern to determine\n * segment positions.\n */\nconst format = (value: string): string => {\n const v = compact(value);\n\n for (const entry of COMPILED) {\n const pattern =\n v.length === 13 ? entry.federal : entry.regional;\n if (!pattern.test(v)) continue;\n\n const fmt =\n v.length === 13\n ? entry.federalFmt\n : entry.regionalFmt;\n\n // Group by consecutive runs of the same letter\n // category: literal digits, F, B, U, P\n const segments: string[] = [];\n let segStart = 0;\n // SAFETY: fmt is a non-empty literal from COMPILED.\n // eslint-disable-next-line no-non-null-assertion\n let prevCat = charCat(fmt[0]!);\n\n for (let i = 1; i < fmt.length; i++) {\n // SAFETY: i < fmt.length.\n // eslint-disable-next-line no-non-null-assertion\n const cat = charCat(fmt[i]!);\n if (cat !== prevCat) {\n segments.push(v.slice(segStart, i));\n segStart = i;\n prevCat = cat;\n }\n }\n segments.push(v.slice(segStart));\n\n return segments.join(\"/\");\n }\n\n return v;\n};\n\nconst charCat = (ch: string): string => {\n if (ch >= \"0\" && ch <= \"9\") return \"L\"; // literal\n return ch; // F, B, U, P\n};\n\n/** German Tax Number (Steuernummer). */\nconst stnr: CountryValidator<\"DE\"> = {\n name: \"German Tax Number\",\n localName: \"Steuernummer\",\n abbreviation: \"StNr\",\n aliases: [\"Steuernummer\", \"St.Nr.\"] as const,\n candidatePattern: \"\\\\d{2,4}/\\\\d{3,4}/\\\\d{4,5}\",\n scope: \"country\",\n country: \"DE\",\n entityType: \"any\",\n description:\n \"German tax number assigned by the local \" +\n \"tax office, varies by federal state\",\n sourceUrl: \"https://de.wikipedia.org/wiki/Steuernummer\",\n lengths: [10, 11, 13] as const,\n examples: [\"2181508150\", \"18181508155\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default stnr;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;AAIA,MAAM,iBAAyB;CAK7B,OAAO,GAJI,aAAa,CAIb,IAHC,aAAa,CAGR,IAFJ,aAAa,CAEF,IADd,aAAa,CACK;AAC9B;;;;;;;;;AAoCA,MAAM,SAAS;CACb,qBAAqB,CAAC,cAAc,eAAe;CACnD,QAAQ,CAAC,eAAe,eAAe;CACvC,QAAQ,CAAC,cAAc,eAAe;CACtC,aAAa,CAAC,eAAe,eAAe;CAC5C,QAAQ,CAAC,cAAc,eAAe;CACtC,SAAS,CAAC,cAAc,eAAe;CACvC,QAAQ,CAAC,eAAe,eAAe;CACvC,0BAA0B,CACxB,eACA,eACF;CACA,eAAe,CAAC,cAAc,eAAe;CAC7C,uBAAuB,CAAC,eAAe,eAAe;CACtD,mBAAmB,CAAC,cAAc,eAAe;CACjD,UAAU,CAAC,eAAe,eAAe;CACzC,SAAS,CAAC,eAAe,eAAe;CACxC,kBAAkB,CAAC,eAAe,eAAe;CACjD,sBAAsB,CAAC,cAAc,eAAe;CACpD,WAAW,CAAC,eAAe,eAAe;AAC5C;;;;;;AASA,MAAM,kBAAkB,YAA4B;CAClD,IAAI,KAAK;CACT,KAAK,MAAM,MAAM,SACf,IAAI,MAAM,OAAO,MAAM,KACrB,MAAM;MAEN,MAAM;CAGV,MAAM;CACN,OAAO,IAAI,OAAO,EAAE;AACtB;;AAGA,MAAM,WAOJ,OAAO,QAAQ,MAAM,EAGrB,KAAK,CAAC,OAAO,CAAC,aAAa,kBAAkB;CAC7C;CACA,UAAU,eAAe,WAAW;CACpC;CACA,SAAS,eAAe,UAAU;CAClC;AACF,EAAE;AAEF,MAAM,WAAW,UACf,MAAM,OAAO,MAAM;AAErB,MAAM,qBAAqB,MAAuB;CAChD,KAAK,MAAM,EAAE,UAAU,aAAa,UAClC,IAAI,SAAS,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,GAAG,OAAO;CAElD,OAAO;AACT;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CAEvB,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8CACF;CAGF,IACE,EAAE,WAAW,MACb,EAAE,WAAW,MACb,EAAE,WAAW,IAEb,OAAO,IACL,kBACA,kDACF;CAGF,IAAI,CAAC,kBAAkB,CAAC,GACtB,OAAO,IACL,qBACA,2DAEF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;;;;;;AAOA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CAEvB,KAAK,MAAM,SAAS,UAAU;EAG5B,IAAI,EADF,EAAE,WAAW,KAAK,MAAM,UAAU,MAAM,UAC7B,KAAK,CAAC,GAAG;EAEtB,MAAM,MACJ,EAAE,WAAW,KACT,MAAM,aACN,MAAM;EAIZ,MAAM,WAAqB,CAAC;EAC5B,IAAI,WAAW;EAGf,IAAI,UAAU,QAAQ,IAAI,EAAG;EAE7B,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GAGnC,MAAM,MAAM,QAAQ,IAAI,EAAG;GAC3B,IAAI,QAAQ,SAAS;IACnB,SAAS,KAAK,EAAE,MAAM,UAAU,CAAC,CAAC;IAClC,WAAW;IACX,UAAU;GACZ;EACF;EACA,SAAS,KAAK,EAAE,MAAM,QAAQ,CAAC;EAE/B,OAAO,SAAS,KAAK,GAAG;CAC1B;CAEA,OAAO;AACT;AAEA,MAAM,WAAW,OAAuB;CACtC,IAAI,MAAM,OAAO,MAAM,KAAK,OAAO;CACnC,OAAO;AACT;;AAGA,MAAM,OAA+B;CACnC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,gBAAgB,QAAQ;CAClC,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,aACE;CAEF,WAAW;CACX,SAAS;EAAC;EAAI;EAAI;CAAE;CACpB,UAAU,CAAC,cAAc,aAAa;CACtC;CACA;CACA;CACA;AACF"}
|
package/dist/de/svnr.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/de/svnr.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 German SVNR. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** German Social Insurance Number. */
|
|
11
|
-
declare const svnr:
|
|
10
|
+
declare const svnr: CountryValidator<"DE">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, svnr as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=svnr.d.ts.map
|
package/dist/de/svnr.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { isValidDate, resolveTwoDigitYear } from "../_util/date.js";
|
|
2
3
|
import { randomInt } from "../_util/generate.js";
|
|
3
4
|
import { err } from "../_util/result.js";
|
|
4
|
-
import { isValidDate, resolveTwoDigitYear } from "../_util/date.js";
|
|
5
5
|
//#region src/de/svnr.ts
|
|
6
|
-
/**
|
|
7
|
-
* SVNR (Sozialversicherungsnummer).
|
|
8
|
-
*
|
|
9
|
-
* German social insurance number. 12 characters:
|
|
10
|
-
* area number (2 digits) + date of birth (DDMMYY)
|
|
11
|
-
* + initial letter of birth name (1 letter) +
|
|
12
|
-
* serial number (2 digits) + check digit (1 digit).
|
|
13
|
-
*
|
|
14
|
-
* @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer
|
|
15
|
-
*/
|
|
16
6
|
const letterValue = (ch) => {
|
|
17
7
|
const code = ch.charCodeAt(0);
|
|
18
8
|
if (code >= 65 && code <= 90) return code - 64;
|
|
@@ -42,8 +32,8 @@ const computeCheck = (v) => {
|
|
|
42
32
|
digits.push(Number(v[9]));
|
|
43
33
|
digits.push(Number(v[10]));
|
|
44
34
|
let sum = 0;
|
|
45
|
-
for (
|
|
46
|
-
const product = digits[i] *
|
|
35
|
+
for (const [i, weight] of WEIGHTS.entries()) {
|
|
36
|
+
const product = digits[i] * weight;
|
|
47
37
|
if (product >= 10) sum += Math.floor(product / 10) + product % 10;
|
|
48
38
|
else sum += product;
|
|
49
39
|
}
|
|
@@ -91,6 +81,7 @@ const svnr = {
|
|
|
91
81
|
"Versicherungsnummer"
|
|
92
82
|
],
|
|
93
83
|
candidatePattern: "\\d{2}\\s?\\d{6}\\s?[A-Z]\\s?\\d{3}",
|
|
84
|
+
scope: "country",
|
|
94
85
|
country: "DE",
|
|
95
86
|
entityType: "person",
|
|
96
87
|
description: "German social insurance number encoding birth date and name initial",
|
package/dist/de/svnr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svnr.js","names":[],"sources":["../../src/de/svnr.ts"],"sourcesContent":["/**\n * SVNR (Sozialversicherungsnummer).\n *\n * German social insurance number. 12 characters:\n * area number (2 digits) + date of birth (DDMMYY)\n * + initial letter of birth name (1 letter) +\n * serial number (2 digits) + check digit (1 digit).\n *\n * @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer\n */\n\nimport { clean } from \"#util/clean\";\nimport {\n isValidDate,\n resolveTwoDigitYear,\n} from \"#util/date\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\
|
|
1
|
+
{"version":3,"file":"svnr.js","names":[],"sources":["../../src/de/svnr.ts"],"sourcesContent":["/**\n * SVNR (Sozialversicherungsnummer).\n *\n * German social insurance number. 12 characters:\n * area number (2 digits) + date of birth (DDMMYY)\n * + initial letter of birth name (1 letter) +\n * serial number (2 digits) + check digit (1 digit).\n *\n * @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport { clean } from \"#util/clean\";\nimport {\n isValidDate,\n resolveTwoDigitYear,\n} from \"#util/date\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nconst letterValue = (ch: string): number => {\n const code = ch.charCodeAt(0);\n if (code >= 65 && code <= 90) return code - 64;\n return -1;\n};\n\nconst WEIGHTS = [\n 2, 1, 2, 5, 7, 1, 2, 1, 2, 1, 2, 1,\n] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -/\").toUpperCase();\n\nconst computeCheck = (v: string): number => {\n const digits: number[] = [];\n\n for (let i = 0; i < 8; i++) {\n digits.push(Number(v[i]));\n }\n\n // SAFETY: caller guarantees v.length === 12.\n // eslint-disable-next-line no-non-null-assertion\n const lv = letterValue(v[8]!);\n digits.push(Math.floor(lv / 10));\n digits.push(lv % 10);\n\n digits.push(Number(v[9]));\n digits.push(Number(v[10]));\n\n let sum = 0;\n for (const [i, weight] of WEIGHTS.entries()) {\n // SAFETY: WEIGHTS.length === 12 and we just pushed\n // 12 entries onto `digits`.\n // eslint-disable-next-line no-non-null-assertion\n const product = digits[i]! * weight;\n if (product >= 10) {\n sum += Math.floor(product / 10) + (product % 10);\n } else {\n sum += product;\n }\n }\n\n return sum % 10;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 12) {\n return err(\n \"INVALID_LENGTH\",\n \"German SVNR must be 12 characters\",\n );\n }\n\n if (!/^\\d{8}[A-Z]\\d{3}$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"German SVNR must be 8 digits, 1 letter, \" +\n \"3 digits\",\n );\n }\n\n const dd = Number(v.slice(2, 4));\n const mm = Number(v.slice(4, 6));\n const yy = Number(v.slice(6, 8));\n\n const year = resolveTwoDigitYear(yy);\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"German SVNR contains an invalid birth date\",\n );\n }\n\n const expected = computeCheck(v);\n const actual = Number(v[11]);\n\n if (expected !== actual) {\n return err(\n \"INVALID_CHECKSUM\",\n \"German SVNR check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return (\n `${v.slice(0, 2)} ${v.slice(2, 8)}` +\n ` ${v.slice(8, 9)} ${v.slice(9, 11)}` +\n ` ${v.slice(11)}`\n );\n};\n\n/** Generate a random valid German SVNR. */\nconst generate = (): string => {\n for (;;) {\n const area = String(randomInt(1, 99)).padStart(2, \"0\");\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const mm = String(randomInt(1, 12)).padStart(2, \"0\");\n const yy = String(randomInt(40, 99)).padStart(2, \"0\");\n const letter = String.fromCharCode(\n 65 + randomInt(0, 25),\n );\n const serial = String(randomInt(0, 49)).padStart(\n 2,\n \"0\",\n );\n const partial = area + dd + mm + yy + letter + serial;\n const c = partial + String(computeCheck(partial));\n if (validate(c).valid) return c;\n }\n};\n\n/** German Social Insurance Number. */\nconst svnr: CountryValidator<\"DE\"> = {\n name: \"German Social Insurance Number\",\n localName: \"Sozialversicherungsnummer\",\n abbreviation: \"SVNR\",\n aliases: [\n \"Sozialversicherungsnummer\",\n \"SVNR\",\n \"Versicherungsnummer\",\n ] as const,\n candidatePattern: \"\\\\d{2}\\\\s?\\\\d{6}\\\\s?[A-Z]\\\\s?\\\\d{3}\",\n scope: \"country\",\n country: \"DE\",\n entityType: \"person\",\n description:\n \"German social insurance number encoding \" +\n \"birth date and name initial\",\n sourceUrl:\n \"https://de.wikipedia.org/wiki/\" +\n \"Sozialversicherungsnummer\",\n lengths: [12] as const,\n examples: [\"12010188M011\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default svnr;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;AAwBA,MAAM,eAAe,OAAuB;CAC1C,MAAM,OAAO,GAAG,WAAW,CAAC;CAC5B,IAAI,QAAQ,MAAM,QAAQ,IAAI,OAAO,OAAO;CAC5C,OAAO;AACT;AAEA,MAAM,UAAU;CACd;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AACnC;AAEA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,EAAE,YAAY;AAElC,MAAM,gBAAgB,MAAsB;CAC1C,MAAM,SAAmB,CAAC;CAE1B,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KACrB,OAAO,KAAK,OAAO,EAAE,EAAE,CAAC;CAK1B,MAAM,KAAK,YAAY,EAAE,EAAG;CAC5B,OAAO,KAAK,KAAK,MAAM,KAAK,EAAE,CAAC;CAC/B,OAAO,KAAK,KAAK,EAAE;CAEnB,OAAO,KAAK,OAAO,EAAE,EAAE,CAAC;CACxB,OAAO,KAAK,OAAO,EAAE,GAAG,CAAC;CAEzB,IAAI,MAAM;CACV,KAAK,MAAM,CAAC,GAAG,WAAW,QAAQ,QAAQ,GAAG;EAI3C,MAAM,UAAU,OAAO,KAAM;EAC7B,IAAI,WAAW,IACb,OAAO,KAAK,MAAM,UAAU,EAAE,IAAK,UAAU;OAE7C,OAAO;CAEX;CAEA,OAAO,MAAM;AACf;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,mCACF;CAGF,IAAI,CAAC,oBAAoB,KAAK,CAAC,GAC7B,OAAO,IACL,kBACA,kDAEF;CAGF,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;CAK/B,IAAI,CAAC,YAFQ,oBAFF,OAAO,EAAE,MAAM,GAAG,CAAC,CAEI,CAEd,GAAG,IAAI,EAAE,GAC3B,OAAO,IACL,qBACA,4CACF;CAMF,IAHiB,aAAa,CAGnB,MAFI,OAAO,EAAE,GAEF,GACpB,OAAO,IACL,oBACA,kCACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OACE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAA,GAC5B,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAA,GAC9B,EAAE,MAAM,EAAE;AAElB;;AAGA,MAAM,iBAAyB;CAC7B,SAAS;EACP,MAAM,OAAO,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;EACrD,MAAM,KAAK,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;EACnD,MAAM,KAAK,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;EACnD,MAAM,KAAK,OAAO,UAAU,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;EACpD,MAAM,SAAS,OAAO,aACpB,KAAK,UAAU,GAAG,EAAE,CACtB;EACA,MAAM,SAAS,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SACtC,GACA,GACF;EACA,MAAM,UAAU,OAAO,KAAK,KAAK,KAAK,SAAS;EAC/C,MAAM,IAAI,UAAU,OAAO,aAAa,OAAO,CAAC;EAChD,IAAI,SAAS,CAAC,EAAE,OAAO,OAAO;CAChC;AACF;;AAGA,MAAM,OAA+B;CACnC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,aACE;CAEF,WACE;CAEF,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,cAAc;CACzB;CACA;CACA;CACA;AACF"}
|
package/dist/de/vat.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/de/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 German VAT number. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** German VAT Identification Number. */
|
|
11
|
-
declare const vat:
|
|
10
|
+
declare const vat: CountryValidator<"DE">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, vat as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=vat.d.ts.map
|
package/dist/de/vat.js
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
+
import { mod1110checkDigit, mod1110validate } from "../_checksums/mod1110.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 { mod1110checkDigit, mod1110validate } from "../_checksums/mod1110.js";
|
|
6
6
|
//#region src/de/vat.ts
|
|
7
|
-
/**
|
|
8
|
-
* USt-IdNr. (Umsatzsteuer-Identifikationsnummer).
|
|
9
|
-
*
|
|
10
|
-
* German VAT identification number. Format:
|
|
11
|
-
* "DE" + 9 digits. The last digit is a check
|
|
12
|
-
* digit computed using ISO 7064 Mod 11,10.
|
|
13
|
-
*
|
|
14
|
-
* @see https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html
|
|
15
|
-
* @see https://www.bzst.de/SharedDocs/Downloads/DE/Merkblaetter/ust_idnr_aufbau.pdf
|
|
16
|
-
*/
|
|
17
7
|
const compact = (value) => {
|
|
18
8
|
const v = clean(value, " -/");
|
|
19
9
|
if (v.startsWith("DE") || v.startsWith("de")) return v.slice(2);
|
|
@@ -48,6 +38,7 @@ const vat = {
|
|
|
48
38
|
"VAT DE"
|
|
49
39
|
],
|
|
50
40
|
candidatePattern: "DE\\d{9}",
|
|
41
|
+
scope: "country",
|
|
51
42
|
country: "DE",
|
|
52
43
|
entityType: "company",
|
|
53
44
|
description: "German VAT ID issued by the Federal Tax Office (BZSt)",
|
package/dist/de/vat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat.js","names":[],"sources":["../../src/de/vat.ts"],"sourcesContent":["/**\n * USt-IdNr. (Umsatzsteuer-Identifikationsnummer).\n *\n * German VAT identification number. Format:\n * \"DE\" + 9 digits. The last digit is a check\n * digit computed using ISO 7064 Mod 11,10.\n *\n * @see https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html\n * @see https://www.bzst.de/SharedDocs/Downloads/DE/Merkblaetter/ust_idnr_aufbau.pdf\n */\n\nimport {\n mod1110checkDigit,\n mod1110validate,\n} from \"#checksums/mod1110\";\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/de/vat.ts"],"sourcesContent":["/**\n * USt-IdNr. (Umsatzsteuer-Identifikationsnummer).\n *\n * German VAT identification number. Format:\n * \"DE\" + 9 digits. The last digit is a check\n * digit computed using ISO 7064 Mod 11,10.\n *\n * @see https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html\n * @see https://www.bzst.de/SharedDocs/Downloads/DE/Merkblaetter/ust_idnr_aufbau.pdf\n */\n\nimport type {\n ValidateResult,\n CountryValidator,\n} from \"../types\";\n\nimport {\n mod1110checkDigit,\n mod1110validate,\n} from \"#checksums/mod1110\";\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 const v = clean(value, \" -/\");\n if (v.startsWith(\"DE\") || v.startsWith(\"de\")) {\n return 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 \"German VAT number must be 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"German VAT number must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"German VAT number cannot start with 0\",\n );\n }\n if (!mod1110validate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"German VAT number check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `DE${compact(value)}`;\n\n/** Generate a random valid German VAT number. */\nconst generate = (): string => {\n const first = String(randomInt(1, 9));\n const rest = randomDigits(7);\n const payload = `${first}${rest}`;\n const check = mod1110checkDigit(payload);\n return `${payload}${String(check)}`;\n};\n\n/** German VAT Identification Number. */\nconst vat: CountryValidator<\"DE\"> = {\n name: \"German VAT Number\",\n localName: \"Umsatzsteuer-Identifikationsnummer\",\n abbreviation: \"USt-IdNr.\",\n aliases: [\n \"USt-IdNr\",\n \"Umsatzsteuer-Identifikationsnummer\",\n \"VAT DE\",\n ] as const,\n candidatePattern: \"DE\\\\d{9}\",\n scope: \"country\",\n country: \"DE\",\n entityType: \"company\",\n description:\n \"German VAT ID issued by the Federal Tax Office (BZSt)\",\n sourceUrl:\n \"https://www.bzst.de/DE/Unternehmen/Identifikationsnummern/Umsatzsteuer-Identifikationsnummer/umsatzsteuer-identifikationsnummer_node.html\",\n lengths: [9] as const,\n examples: [\"136695976\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;;AAyBA,MAAM,WAAW,UAA0B;CACzC,MAAM,IAAI,MAAM,OAAO,KAAK;CAC5B,IAAI,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,GACzC,OAAO,EAAE,MAAM,CAAC;CAElB,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;CAEF,IAAI,CAAC,gBAAgB,CAAC,GACpB,OAAO,IACL,oBACA,wCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UACd,KAAK,QAAQ,KAAK;;AAGpB,MAAM,iBAAyB;CAG7B,MAAM,UAAU,GAFF,OAAO,UAAU,GAAG,CAAC,CAEZ,IADV,aAAa,CACI;CAC9B,MAAM,QAAQ,kBAAkB,OAAO;CACvC,OAAO,GAAG,UAAU,OAAO,KAAK;AAClC;;AAGA,MAAM,MAA8B;CAClC,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;CACF;CACA,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,aACE;CACF,WACE;CACF,SAAS,CAAC,CAAC;CACX,UAAU,CAAC,WAAW;CACtB;CACA;CACA;CACA;AACF"}
|
package/dist/dk/cpr.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/dk/cpr.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,8 +9,10 @@ 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 Danish CPR. */
|
|
13
|
+
declare const generate: () => string;
|
|
13
14
|
/** Danish Personal Identification Number. */
|
|
14
|
-
declare const cpr:
|
|
15
|
+
declare const cpr: CountryValidator<"DK", ParsedPersonId>;
|
|
15
16
|
//#endregion
|
|
16
|
-
export { compact, cpr as default, format, parse, validate };
|
|
17
|
+
export { compact, cpr as default, format, generate, parse, validate };
|
|
17
18
|
//# sourceMappingURL=cpr.d.ts.map
|
package/dist/dk/cpr.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { isValidDate } from "../_util/date.js";
|
|
3
|
+
import { randomDigits, randomInt } from "../_util/generate.js";
|
|
2
4
|
import { err } from "../_util/result.js";
|
|
3
5
|
import { isdigits } from "../_util/strings.js";
|
|
4
|
-
import { isValidDate } from "../_util/date.js";
|
|
5
6
|
//#region src/dk/cpr.ts
|
|
6
|
-
/**
|
|
7
|
-
* CPR (Det Centrale Personregister).
|
|
8
|
-
*
|
|
9
|
-
* Danish personal identification number. 10 digits
|
|
10
|
-
* in format DDMMYY-SSSS. Checksum enforcement was
|
|
11
|
-
* dropped in 2007; only date validation is performed.
|
|
12
|
-
*
|
|
13
|
-
* @see https://cpr.dk/
|
|
14
|
-
*/
|
|
15
7
|
const compact = (value) => clean(value, " -");
|
|
16
8
|
const getCentury = (yy, s7) => {
|
|
17
9
|
if (s7 >= 0 && s7 <= 3) return 1900;
|
|
@@ -56,6 +48,12 @@ const parse = (value) => {
|
|
|
56
48
|
gender: lastDigit % 2 === 0 ? "female" : "male"
|
|
57
49
|
};
|
|
58
50
|
};
|
|
51
|
+
/** Generate a random valid Danish CPR. */
|
|
52
|
+
const generate = () => {
|
|
53
|
+
const year = randomInt(1900, 2024);
|
|
54
|
+
const month = String(randomInt(1, 12)).padStart(2, "0");
|
|
55
|
+
return `${String(randomInt(1, 28)).padStart(2, "0")}${month}${String(year % 100).padStart(2, "0")}${String(randomInt(0, 3))}${randomDigits(3)}`;
|
|
56
|
+
};
|
|
59
57
|
/** Danish Personal Identification Number. */
|
|
60
58
|
const cpr = {
|
|
61
59
|
name: "Danish Personal ID",
|
|
@@ -67,15 +65,19 @@ const cpr = {
|
|
|
67
65
|
"CPR"
|
|
68
66
|
],
|
|
69
67
|
candidatePattern: "\\d{6}-?\\d{4}",
|
|
68
|
+
scope: "country",
|
|
70
69
|
country: "DK",
|
|
71
70
|
entityType: "person",
|
|
72
71
|
sourceUrl: "https://cpr.dk/",
|
|
72
|
+
lengths: [10],
|
|
73
73
|
examples: ["2110625629"],
|
|
74
74
|
compact,
|
|
75
75
|
format,
|
|
76
|
-
|
|
76
|
+
parse,
|
|
77
|
+
validate,
|
|
78
|
+
generate
|
|
77
79
|
};
|
|
78
80
|
//#endregion
|
|
79
|
-
export { compact, cpr as default, format, parse, validate };
|
|
81
|
+
export { compact, cpr as default, format, generate, parse, validate };
|
|
80
82
|
|
|
81
83
|
//# sourceMappingURL=cpr.js.map
|
package/dist/dk/cpr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpr.js","names":[],"sources":["../../src/dk/cpr.ts"],"sourcesContent":["/**\n * CPR (Det Centrale Personregister).\n *\n * Danish personal identification number. 10 digits\n * in format DDMMYY-SSSS. Checksum enforcement was\n * dropped in 2007; only date validation is performed.\n *\n * @see https://cpr.dk/\n */\n\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport {
|
|
1
|
+
{"version":3,"file":"cpr.js","names":[],"sources":["../../src/dk/cpr.ts"],"sourcesContent":["/**\n * CPR (Det Centrale Personregister).\n *\n * Danish personal identification number. 10 digits\n * in format DDMMYY-SSSS. Checksum enforcement was\n * dropped in 2007; only date validation is performed.\n *\n * @see https://cpr.dk/\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\";\nimport { isdigits } from \"#util/strings\";\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst getCentury = (yy: number, s7: number): number => {\n // 7th digit (first of serial) determines century\n if (s7 >= 0 && s7 <= 3) return 1900;\n if (s7 === 4 || s7 === 9) {\n return yy <= 36 ? 2000 : 1900;\n }\n // s7 5..8\n return yy <= 57 ? 2000 : 1800;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"CPR must be exactly 10 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"CPR must contain only digits\",\n );\n }\n\n const dd = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const yy = Number(v.slice(4, 6));\n const s7 = Number(v[6]);\n\n const century = getCentury(yy, s7);\n const year = century + yy;\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"CPR contains an invalid date\",\n );\n }\n\n // Reject future birth dates\n if (new Date(year, mm - 1, dd) > new Date()) {\n return err(\n \"INVALID_COMPONENT\",\n \"CPR birth date is in the future\",\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 CPR 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 dd = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const yy = Number(v.slice(4, 6));\n const s7 = Number(v[6]);\n const lastDigit = Number(v[9]);\n\n const century = getCentury(yy, s7);\n const year = century + yy;\n\n return {\n birthDate: new Date(year, mm - 1, dd),\n gender: lastDigit % 2 === 0 ? \"female\" : \"male\",\n };\n};\n\n/** Generate a random valid Danish CPR. */\nconst generate = (): string => {\n const year = randomInt(1900, 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 serialPrefix = String(randomInt(0, 3));\n return `${day}${month}${yy}${serialPrefix}${randomDigits(3)}`;\n};\n\n/** Danish Personal Identification Number. */\nconst cpr: CountryValidator<\"DK\", ParsedPersonId> = {\n name: \"Danish Personal ID\",\n localName: \"Det Centrale Personregister\",\n abbreviation: \"CPR\",\n aliases: [\"CPR-nummer\", \"personnummer\", \"CPR\"] as const,\n candidatePattern: \"\\\\d{6}-?\\\\d{4}\",\n scope: \"country\",\n country: \"DK\",\n entityType: \"person\",\n sourceUrl: \"https://cpr.dk/\",\n lengths: [10] as const,\n examples: [\"2110625629\"] as const,\n compact,\n format,\n parse,\n validate,\n generate,\n};\n\nexport default cpr;\nexport { compact, format, generate, parse, validate };\n"],"mappings":";;;;;;AAsBA,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;AAEnB,MAAM,cAAc,IAAY,OAAuB;CAErD,IAAI,MAAM,KAAK,MAAM,GAAG,OAAO;CAC/B,IAAI,OAAO,KAAK,OAAO,GACrB,OAAO,MAAM,KAAK,MAAO;CAG3B,OAAO,MAAM,KAAK,MAAO;AAC3B;AAEA,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,IACf,OAAO,IACL,kBACA,+BACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,8BACF;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;CAI/B,MAAM,OADU,WAAW,IAFhB,OAAO,EAAE,EAEY,CACb,IAAI;CAEvB,IAAI,CAAC,YAAY,MAAM,IAAI,EAAE,GAC3B,OAAO,IACL,qBACA,8BACF;CAIF,IAAI,IAAI,KAAK,MAAM,KAAK,GAAG,EAAE,oBAAI,IAAI,KAAK,GACxC,OAAO,IACL,qBACA,iCACF;CAGF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,KAAK;CACvB,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC;AACtC;;;;;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;CAC/B,MAAM,KAAK,OAAO,EAAE,EAAE;CACtB,MAAM,YAAY,OAAO,EAAE,EAAE;CAG7B,MAAM,OADU,WAAW,IAAI,EACZ,IAAI;CAEvB,OAAO;EACL,WAAW,IAAI,KAAK,MAAM,KAAK,GAAG,EAAE;EACpC,QAAQ,YAAY,MAAM,IAAI,WAAW;CAC3C;AACF;;AAGA,MAAM,iBAAyB;CAC7B,MAAM,OAAO,UAAU,MAAM,IAAI;CACjC,MAAM,QAAQ,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG;CAItD,OAAO,GAHK,OAAO,UAAU,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,GAGrC,IAAI,QAFL,OAAO,OAAO,GAAG,EAAE,SAAS,GAAG,GAEjB,IADJ,OAAO,UAAU,GAAG,CAAC,CACF,IAAI,aAAa,CAAC;AAC5D;;AAGA,MAAM,MAA8C;CAClD,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAc;EAAgB;CAAK;CAC7C,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,SAAS,CAAC,EAAE;CACZ,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACA;AACF"}
|
package/dist/dk/cvr.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CountryValidator, ValidateResult } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/dk/cvr.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 CVR. */
|
|
9
8
|
declare const generate: () => string;
|
|
10
9
|
/** Danish Central Business Register Number. */
|
|
11
|
-
declare const cvr:
|
|
10
|
+
declare const cvr: CountryValidator<"DK">;
|
|
12
11
|
//#endregion
|
|
13
12
|
export { compact, cvr as default, format, generate, validate };
|
|
14
13
|
//# sourceMappingURL=cvr.d.ts.map
|
package/dist/dk/cvr.js
CHANGED
|
@@ -1,23 +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/cvr.ts
|
|
7
|
-
/**
|
|
8
|
-
* CVR (Central Business Register number).
|
|
9
|
-
*
|
|
10
|
-
* 8 digits, no leading 0.
|
|
11
|
-
* Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.
|
|
12
|
-
*
|
|
13
|
-
* Same algorithm as the Danish VAT number, but this
|
|
14
|
-
* is the company register identifier.
|
|
15
|
-
*
|
|
16
|
-
* @see https://erhvervsstyrelsen.dk/
|
|
17
|
-
*
|
|
18
|
-
* Denmark dropped mod-11 for CPR in 2007; unconfirmed
|
|
19
|
-
* for CVR.
|
|
20
|
-
*/
|
|
21
7
|
const WEIGHTS = [
|
|
22
8
|
2,
|
|
23
9
|
7,
|
|
@@ -55,6 +41,7 @@ const cvr = {
|
|
|
55
41
|
abbreviation: "CVR",
|
|
56
42
|
aliases: ["CVR-nummer", "CVR"],
|
|
57
43
|
candidatePattern: "\\d{8}",
|
|
44
|
+
scope: "country",
|
|
58
45
|
country: "DK",
|
|
59
46
|
entityType: "company",
|
|
60
47
|
sourceUrl: "https://erhvervsstyrelsen.dk/",
|
package/dist/dk/cvr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cvr.js","names":[],"sources":["../../src/dk/cvr.ts"],"sourcesContent":["/**\n * CVR (Central Business Register number).\n *\n * 8 digits, no leading 0.\n * Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.\n *\n * Same algorithm as the Danish VAT number, but this\n * is the company register identifier.\n *\n * @see https://erhvervsstyrelsen.dk/\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":"cvr.js","names":[],"sources":["../../src/dk/cvr.ts"],"sourcesContent":["/**\n * CVR (Central Business Register number).\n *\n * 8 digits, no leading 0.\n * Weights [2,7,6,5,4,3,2,1], sum % 11 === 0.\n *\n * Same algorithm as the Danish VAT number, but this\n * is the company register identifier.\n *\n * @see https://erhvervsstyrelsen.dk/\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 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 \"Danish CVR must be 8 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Danish CVR must contain only digits\",\n );\n }\n if (v[0] === \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Danish CVR 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 CVR check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Danish CVR. */\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 Central Business Register Number. */\nconst cvr: CountryValidator<\"DK\"> = {\n name: \"Danish Business Register Number\",\n localName: \"CVR-nummer\",\n abbreviation: \"CVR\",\n aliases: [\"CVR-nummer\", \"CVR\"] as const,\n candidatePattern: \"\\\\d{8}\",\n scope: \"country\",\n country: \"DK\",\n entityType: \"company\",\n sourceUrl: \"https://erhvervsstyrelsen.dk/\",\n examples: [\"13585628\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default cvr;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;AA0BA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;AAAC;AAEvC,MAAM,WAAW,UACf,MAAM,OAAO,MAAM;AAErB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,KAAK;CACvB,IAAI,EAAE,WAAW,GACf,OAAO,IACL,kBACA,6BACF;CAEF,IAAI,CAAC,SAAS,CAAC,GACb,OAAO,IACL,kBACA,qCACF;CAEF,IAAI,EAAE,OAAO,KACX,OAAO,IACL,qBACA,gCACF;CAGF,IADY,YAAY,GAAG,SAAS,EAC9B,MAAM,GACV,OAAO,IACL,oBACA,iCACF;CAEF,OAAO;EAAE,OAAO;EAAM,SAAS;CAAE;AACnC;AAEA,MAAM,UAAU,UAA0B,QAAQ,KAAK;;AAGvD,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,KAAK;CAC7B,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,UAAU;CACrB;CACA;CACA;CACA;AACF"}
|
package/dist/dk/mod.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
1
|
import cpr from "./cpr.js";
|
|
3
2
|
import cvr from "./cvr.js";
|
|
4
3
|
import vat from "./vat.js";
|
|
5
4
|
|
|
6
5
|
//#region src/dk/mod.d.ts
|
|
7
|
-
|
|
6
|
+
declare namespace mod_d_exports {
|
|
7
|
+
export { cpr, cvr, vat };
|
|
8
|
+
}
|
|
8
9
|
//#endregion
|
|
9
10
|
export { cpr, cvr, mod_d_exports, vat };
|
|
10
11
|
//# sourceMappingURL=mod.d.ts.map
|