@stll/stdnum 0.0.1
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 +25 -0
- package/README.md +323 -0
- package/dist/_checksums/luhn.d.ts +12 -0
- package/dist/_checksums/luhn.js +26 -0
- package/dist/_checksums/luhn.js.map +1 -0
- package/dist/_checksums/mod1110.d.ts +12 -0
- package/dist/_checksums/mod1110.js +25 -0
- package/dist/_checksums/mod1110.js.map +1 -0
- package/dist/_checksums/mod112.d.ts +24 -0
- package/dist/_checksums/mod112.js +53 -0
- package/dist/_checksums/mod112.js.map +1 -0
- package/dist/_checksums/mod97.d.ts +23 -0
- package/dist/_checksums/mod97.js +28 -0
- package/dist/_checksums/mod97.js.map +1 -0
- package/dist/_checksums/verhoeff.d.ts +22 -0
- package/dist/_checksums/verhoeff.js +271 -0
- package/dist/_checksums/verhoeff.js.map +1 -0
- package/dist/_checksums/weighted-sum.d.ts +13 -0
- package/dist/_checksums/weighted-sum.js +22 -0
- package/dist/_checksums/weighted-sum.js.map +1 -0
- package/dist/_util/arabic.d.ts +19 -0
- package/dist/_util/arabic.js +41 -0
- package/dist/_util/arabic.js.map +1 -0
- package/dist/_util/clean.d.ts +13 -0
- package/dist/_util/clean.js +71 -0
- package/dist/_util/clean.js.map +1 -0
- package/dist/_util/date.d.ts +12 -0
- package/dist/_util/date.js +19 -0
- package/dist/_util/date.js.map +1 -0
- package/dist/_util/generate.d.ts +16 -0
- package/dist/_util/generate.js +21 -0
- package/dist/_util/generate.js.map +1 -0
- package/dist/_util/result.d.ts +8 -0
- package/dist/_util/result.js +13 -0
- package/dist/_util/result.js.map +1 -0
- package/dist/_util/strings.d.ts +21 -0
- package/dist/_util/strings.js +28 -0
- package/dist/_util/strings.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/ad/mod.d.ts +8 -0
- package/dist/ad/mod.js +8 -0
- package/dist/ad/mod.js.map +1 -0
- package/dist/ad/nrt.d.ts +13 -0
- package/dist/ad/nrt.js +69 -0
- package/dist/ad/nrt.js.map +1 -0
- package/dist/ae/eid.d.ts +17 -0
- package/dist/ae/eid.js +79 -0
- package/dist/ae/eid.js.map +1 -0
- package/dist/ae/mod.d.ts +8 -0
- package/dist/ae/mod.js +8 -0
- package/dist/ae/mod.js.map +1 -0
- package/dist/ai/mod.d.ts +8 -0
- package/dist/ai/mod.js +8 -0
- package/dist/ai/mod.js.map +1 -0
- package/dist/ai/tin.d.ts +19 -0
- package/dist/ai/tin.js +72 -0
- package/dist/ai/tin.js.map +1 -0
- package/dist/al/mod.d.ts +8 -0
- package/dist/al/mod.js +8 -0
- package/dist/al/mod.js.map +1 -0
- package/dist/al/nipt.d.ts +13 -0
- package/dist/al/nipt.js +56 -0
- package/dist/al/nipt.js.map +1 -0
- package/dist/am/mod.d.ts +8 -0
- package/dist/am/mod.js +8 -0
- package/dist/am/mod.js.map +1 -0
- package/dist/am/tin.d.ts +13 -0
- package/dist/am/tin.js +53 -0
- package/dist/am/tin.js.map +1 -0
- package/dist/ar/cbu.d.ts +14 -0
- package/dist/ar/cbu.js +88 -0
- package/dist/ar/cbu.js.map +1 -0
- package/dist/ar/cuit.d.ts +19 -0
- package/dist/ar/cuit.js +123 -0
- package/dist/ar/cuit.js.map +1 -0
- package/dist/ar/dni.d.ts +13 -0
- package/dist/ar/dni.js +57 -0
- package/dist/ar/dni.js.map +1 -0
- package/dist/ar/mod.d.ts +10 -0
- package/dist/ar/mod.js +14 -0
- package/dist/ar/mod.js.map +1 -0
- package/dist/at/businessid.d.ts +13 -0
- package/dist/at/businessid.js +56 -0
- package/dist/at/businessid.js.map +1 -0
- package/dist/at/mod.d.ts +11 -0
- package/dist/at/mod.js +16 -0
- package/dist/at/mod.js.map +1 -0
- package/dist/at/tin.d.ts +14 -0
- package/dist/at/tin.js +70 -0
- package/dist/at/tin.js.map +1 -0
- package/dist/at/uid.d.ts +14 -0
- package/dist/at/uid.js +64 -0
- package/dist/at/uid.js.map +1 -0
- package/dist/at/vnr.d.ts +12 -0
- package/dist/at/vnr.js +79 -0
- package/dist/at/vnr.js.map +1 -0
- package/dist/au/abn.d.ts +14 -0
- package/dist/au/abn.js +77 -0
- package/dist/au/abn.js.map +1 -0
- package/dist/au/acn.d.ts +14 -0
- package/dist/au/acn.js +70 -0
- package/dist/au/acn.js.map +1 -0
- package/dist/au/mod.d.ts +10 -0
- package/dist/au/mod.js +14 -0
- package/dist/au/mod.js.map +1 -0
- package/dist/au/tfn.d.ts +14 -0
- package/dist/au/tfn.js +71 -0
- package/dist/au/tfn.js.map +1 -0
- package/dist/az/mod.d.ts +8 -0
- package/dist/az/mod.js +8 -0
- package/dist/az/mod.js.map +1 -0
- package/dist/az/voen.d.ts +21 -0
- package/dist/az/voen.js +100 -0
- package/dist/az/voen.js.map +1 -0
- package/dist/ba/jmbg.d.ts +15 -0
- package/dist/ba/jmbg.js +97 -0
- package/dist/ba/jmbg.js.map +1 -0
- package/dist/ba/mod.d.ts +8 -0
- package/dist/ba/mod.js +8 -0
- package/dist/ba/mod.js.map +1 -0
- package/dist/bd/mod.d.ts +8 -0
- package/dist/bd/mod.js +8 -0
- package/dist/bd/mod.js.map +1 -0
- package/dist/bd/nid.d.ts +13 -0
- package/dist/bd/nid.js +116 -0
- package/dist/bd/nid.js.map +1 -0
- package/dist/be/bis.d.ts +14 -0
- package/dist/be/bis.js +65 -0
- package/dist/be/bis.js.map +1 -0
- package/dist/be/mod.d.ts +10 -0
- package/dist/be/mod.js +14 -0
- package/dist/be/mod.js.map +1 -0
- package/dist/be/nn.d.ts +21 -0
- package/dist/be/nn.js +84 -0
- package/dist/be/nn.js.map +1 -0
- package/dist/be/vat.d.ts +14 -0
- package/dist/be/vat.js +70 -0
- package/dist/be/vat.js.map +1 -0
- package/dist/bg/egn.d.ts +19 -0
- package/dist/bg/egn.js +122 -0
- package/dist/bg/egn.js.map +1 -0
- package/dist/bg/mod.d.ts +10 -0
- package/dist/bg/mod.js +14 -0
- package/dist/bg/mod.js.map +1 -0
- package/dist/bg/pnf.d.ts +14 -0
- package/dist/bg/pnf.js +70 -0
- package/dist/bg/pnf.js.map +1 -0
- package/dist/bg/vat.d.ts +14 -0
- package/dist/bg/vat.js +153 -0
- package/dist/bg/vat.js.map +1 -0
- package/dist/bh/cpr.d.ts +12 -0
- package/dist/bh/cpr.js +58 -0
- package/dist/bh/cpr.js.map +1 -0
- package/dist/bh/mod.d.ts +8 -0
- package/dist/bh/mod.js +8 -0
- package/dist/bh/mod.js.map +1 -0
- package/dist/bic.d.ts +13 -0
- package/dist/bic.js +72 -0
- package/dist/bic.js.map +1 -0
- package/dist/br/cnpj.d.ts +21 -0
- package/dist/br/cnpj.js +132 -0
- package/dist/br/cnpj.js.map +1 -0
- package/dist/br/cpf.d.ts +14 -0
- package/dist/br/cpf.js +83 -0
- package/dist/br/cpf.js.map +1 -0
- package/dist/br/mod.d.ts +9 -0
- package/dist/br/mod.js +12 -0
- package/dist/br/mod.js.map +1 -0
- package/dist/by/mod.d.ts +8 -0
- package/dist/by/mod.js +8 -0
- package/dist/by/mod.js.map +1 -0
- package/dist/by/unp.d.ts +14 -0
- package/dist/by/unp.js +114 -0
- package/dist/by/unp.js.map +1 -0
- package/dist/bz/mod.d.ts +8 -0
- package/dist/bz/mod.js +8 -0
- package/dist/bz/mod.js.map +1 -0
- package/dist/bz/tin.d.ts +16 -0
- package/dist/bz/tin.js +85 -0
- package/dist/bz/tin.js.map +1 -0
- package/dist/ca/bn.d.ts +14 -0
- package/dist/ca/bn.js +73 -0
- package/dist/ca/bn.js.map +1 -0
- package/dist/ca/mod.d.ts +9 -0
- package/dist/ca/mod.js +12 -0
- package/dist/ca/mod.js.map +1 -0
- package/dist/ca/sin.d.ts +14 -0
- package/dist/ca/sin.js +62 -0
- package/dist/ca/sin.js.map +1 -0
- package/dist/ch/mod.d.ts +10 -0
- package/dist/ch/mod.js +14 -0
- package/dist/ch/mod.js.map +1 -0
- package/dist/ch/ssn.d.ts +14 -0
- package/dist/ch/ssn.js +67 -0
- package/dist/ch/ssn.js.map +1 -0
- package/dist/ch/uid.d.ts +14 -0
- package/dist/ch/uid.js +81 -0
- package/dist/ch/uid.js.map +1 -0
- package/dist/ch/vat.d.ts +14 -0
- package/dist/ch/vat.js +70 -0
- package/dist/ch/vat.js.map +1 -0
- package/dist/cl/mod.d.ts +8 -0
- package/dist/cl/mod.js +8 -0
- package/dist/cl/mod.js.map +1 -0
- package/dist/cl/rut.d.ts +19 -0
- package/dist/cl/rut.js +95 -0
- package/dist/cl/rut.js.map +1 -0
- package/dist/cn/mod.d.ts +9 -0
- package/dist/cn/mod.js +12 -0
- package/dist/cn/mod.js.map +1 -0
- package/dist/cn/ric.d.ts +19 -0
- package/dist/cn/ric.js +108 -0
- package/dist/cn/ric.js.map +1 -0
- package/dist/cn/uscc.d.ts +14 -0
- package/dist/cn/uscc.js +88 -0
- package/dist/cn/uscc.js.map +1 -0
- package/dist/co/mod.d.ts +8 -0
- package/dist/co/mod.js +8 -0
- package/dist/co/mod.js.map +1 -0
- package/dist/co/nit.d.ts +14 -0
- package/dist/co/nit.js +109 -0
- package/dist/co/nit.js.map +1 -0
- package/dist/cr/cpf.d.ts +21 -0
- package/dist/cr/cpf.js +79 -0
- package/dist/cr/cpf.js.map +1 -0
- package/dist/cr/mod.d.ts +8 -0
- package/dist/cr/mod.js +8 -0
- package/dist/cr/mod.js.map +1 -0
- package/dist/creditcard.d.ts +25 -0
- package/dist/creditcard.js +121 -0
- package/dist/creditcard.js.map +1 -0
- package/dist/cu/mod.d.ts +8 -0
- package/dist/cu/mod.js +8 -0
- package/dist/cu/mod.js.map +1 -0
- package/dist/cu/ni.d.ts +21 -0
- package/dist/cu/ni.js +90 -0
- package/dist/cu/ni.js.map +1 -0
- package/dist/cy/mod.d.ts +8 -0
- package/dist/cy/mod.js +8 -0
- package/dist/cy/mod.js.map +1 -0
- package/dist/cy/vat.d.ts +14 -0
- package/dist/cy/vat.js +88 -0
- package/dist/cy/vat.js.map +1 -0
- package/dist/cz/dic.d.ts +14 -0
- package/dist/cz/dic.js +97 -0
- package/dist/cz/dic.js.map +1 -0
- package/dist/cz/ico.d.ts +14 -0
- package/dist/cz/ico.js +70 -0
- package/dist/cz/ico.js.map +1 -0
- package/dist/cz/mod.d.ts +10 -0
- package/dist/cz/mod.js +14 -0
- package/dist/cz/mod.js.map +1 -0
- package/dist/cz/rc.d.ts +22 -0
- package/dist/cz/rc.js +116 -0
- package/dist/cz/rc.js.map +1 -0
- package/dist/de/handelsreg.d.ts +17 -0
- package/dist/de/handelsreg.js +86 -0
- package/dist/de/handelsreg.js.map +1 -0
- package/dist/de/idnr.d.ts +14 -0
- package/dist/de/idnr.js +102 -0
- package/dist/de/idnr.js.map +1 -0
- package/dist/de/mod.d.ts +12 -0
- package/dist/de/mod.js +18 -0
- package/dist/de/mod.js.map +1 -0
- package/dist/de/stnr.d.ts +22 -0
- package/dist/de/stnr.js +144 -0
- package/dist/de/stnr.js.map +1 -0
- package/dist/de/svnr.d.ts +14 -0
- package/dist/de/svnr.js +108 -0
- package/dist/de/svnr.js.map +1 -0
- package/dist/de/vat.d.ts +14 -0
- package/dist/de/vat.js +65 -0
- package/dist/de/vat.js.map +1 -0
- package/dist/dk/cpr.d.ts +17 -0
- package/dist/dk/cpr.js +81 -0
- package/dist/dk/cpr.js.map +1 -0
- package/dist/dk/cvr.d.ts +14 -0
- package/dist/dk/cvr.js +70 -0
- package/dist/dk/cvr.js.map +1 -0
- package/dist/dk/mod.d.ts +10 -0
- package/dist/dk/mod.js +14 -0
- package/dist/dk/mod.js.map +1 -0
- package/dist/dk/vat.d.ts +14 -0
- package/dist/dk/vat.js +72 -0
- package/dist/dk/vat.js.map +1 -0
- package/dist/do/mod.d.ts +8 -0
- package/dist/do/mod.js +8 -0
- package/dist/do/mod.js.map +1 -0
- package/dist/do/rnc.d.ts +18 -0
- package/dist/do/rnc.js +95 -0
- package/dist/do/rnc.js.map +1 -0
- package/dist/ec/mod.d.ts +8 -0
- package/dist/ec/mod.js +8 -0
- package/dist/ec/mod.js.map +1 -0
- package/dist/ec/ruc.d.ts +14 -0
- package/dist/ec/ruc.js +150 -0
- package/dist/ec/ruc.js.map +1 -0
- package/dist/ee/ik.d.ts +24 -0
- package/dist/ee/ik.js +131 -0
- package/dist/ee/ik.js.map +1 -0
- package/dist/ee/mod.d.ts +10 -0
- package/dist/ee/mod.js +14 -0
- package/dist/ee/mod.js.map +1 -0
- package/dist/ee/registrikood.d.ts +14 -0
- package/dist/ee/registrikood.js +63 -0
- package/dist/ee/registrikood.js.map +1 -0
- package/dist/ee/vat.d.ts +14 -0
- package/dist/ee/vat.js +69 -0
- package/dist/ee/vat.js.map +1 -0
- package/dist/eg/mod.d.ts +8 -0
- package/dist/eg/mod.js +8 -0
- package/dist/eg/mod.js.map +1 -0
- package/dist/eg/tn.d.ts +13 -0
- package/dist/eg/tn.js +81 -0
- package/dist/eg/tn.js.map +1 -0
- package/dist/es/cif.d.ts +14 -0
- package/dist/es/cif.js +66 -0
- package/dist/es/cif.js.map +1 -0
- package/dist/es/dni.d.ts +15 -0
- package/dist/es/dni.js +58 -0
- package/dist/es/dni.js.map +1 -0
- package/dist/es/mod.d.ts +12 -0
- package/dist/es/mod.js +18 -0
- package/dist/es/mod.js.map +1 -0
- package/dist/es/nie.d.ts +14 -0
- package/dist/es/nie.js +78 -0
- package/dist/es/nie.js.map +1 -0
- package/dist/es/nss.d.ts +14 -0
- package/dist/es/nss.js +72 -0
- package/dist/es/nss.js.map +1 -0
- package/dist/es/vat.d.ts +15 -0
- package/dist/es/vat.js +104 -0
- package/dist/es/vat.js.map +1 -0
- package/dist/eu/mod.d.ts +8 -0
- package/dist/eu/mod.js +8 -0
- package/dist/eu/mod.js.map +1 -0
- package/dist/eu/vat.d.ts +20 -0
- package/dist/eu/vat.js +145 -0
- package/dist/eu/vat.js.map +1 -0
- package/dist/fi/hetu.d.ts +17 -0
- package/dist/fi/hetu.js +107 -0
- package/dist/fi/hetu.js.map +1 -0
- package/dist/fi/mod.d.ts +10 -0
- package/dist/fi/mod.js +14 -0
- package/dist/fi/mod.js.map +1 -0
- package/dist/fi/vat.d.ts +14 -0
- package/dist/fi/vat.js +68 -0
- package/dist/fi/vat.js.map +1 -0
- package/dist/fi/ytunnus.d.ts +14 -0
- package/dist/fi/ytunnus.js +71 -0
- package/dist/fi/ytunnus.js.map +1 -0
- package/dist/fr/mod.d.ts +12 -0
- package/dist/fr/mod.js +18 -0
- package/dist/fr/mod.js.map +1 -0
- package/dist/fr/nif.d.ts +14 -0
- package/dist/fr/nif.js +64 -0
- package/dist/fr/nif.js.map +1 -0
- package/dist/fr/nir.d.ts +15 -0
- package/dist/fr/nir.js +106 -0
- package/dist/fr/nir.js.map +1 -0
- package/dist/fr/siren.d.ts +14 -0
- package/dist/fr/siren.js +56 -0
- package/dist/fr/siren.js.map +1 -0
- package/dist/fr/siret.d.ts +14 -0
- package/dist/fr/siret.js +73 -0
- package/dist/fr/siret.js.map +1 -0
- package/dist/fr/tva.d.ts +14 -0
- package/dist/fr/tva.js +80 -0
- package/dist/fr/tva.js.map +1 -0
- package/dist/gb/mod.d.ts +11 -0
- package/dist/gb/mod.js +16 -0
- package/dist/gb/mod.js.map +1 -0
- package/dist/gb/nino.d.ts +13 -0
- package/dist/gb/nino.js +103 -0
- package/dist/gb/nino.js.map +1 -0
- package/dist/gb/sedol.d.ts +15 -0
- package/dist/gb/sedol.js +85 -0
- package/dist/gb/sedol.js.map +1 -0
- package/dist/gb/utr.d.ts +14 -0
- package/dist/gb/utr.js +69 -0
- package/dist/gb/utr.js.map +1 -0
- package/dist/gb/vat.d.ts +14 -0
- package/dist/gb/vat.js +102 -0
- package/dist/gb/vat.js.map +1 -0
- package/dist/ge/mod.d.ts +8 -0
- package/dist/ge/mod.js +8 -0
- package/dist/ge/mod.js.map +1 -0
- package/dist/ge/pin.d.ts +13 -0
- package/dist/ge/pin.js +51 -0
- package/dist/ge/pin.js.map +1 -0
- package/dist/gh/mod.d.ts +8 -0
- package/dist/gh/mod.js +8 -0
- package/dist/gh/mod.js.map +1 -0
- package/dist/gh/tin.d.ts +14 -0
- package/dist/gh/tin.js +80 -0
- package/dist/gh/tin.js.map +1 -0
- package/dist/gr/amka.d.ts +14 -0
- package/dist/gr/amka.js +71 -0
- package/dist/gr/amka.js.map +1 -0
- package/dist/gr/mod.d.ts +9 -0
- package/dist/gr/mod.js +12 -0
- package/dist/gr/mod.js.map +1 -0
- package/dist/gr/vat.d.ts +14 -0
- package/dist/gr/vat.js +66 -0
- package/dist/gr/vat.js.map +1 -0
- package/dist/gt/mod.d.ts +8 -0
- package/dist/gt/mod.js +8 -0
- package/dist/gt/mod.js.map +1 -0
- package/dist/gt/nit.d.ts +21 -0
- package/dist/gt/nit.js +98 -0
- package/dist/gt/nit.js.map +1 -0
- package/dist/hk/hkid.d.ts +15 -0
- package/dist/hk/hkid.js +92 -0
- package/dist/hk/hkid.js.map +1 -0
- package/dist/hk/mod.d.ts +8 -0
- package/dist/hk/mod.js +8 -0
- package/dist/hk/mod.js.map +1 -0
- package/dist/hr/mod.d.ts +8 -0
- package/dist/hr/mod.js +8 -0
- package/dist/hr/mod.js.map +1 -0
- package/dist/hr/vat.d.ts +14 -0
- package/dist/hr/vat.js +55 -0
- package/dist/hr/vat.js.map +1 -0
- package/dist/hu/mod.d.ts +8 -0
- package/dist/hu/mod.js +8 -0
- package/dist/hu/mod.js.map +1 -0
- package/dist/hu/vat.d.ts +14 -0
- package/dist/hu/vat.js +68 -0
- package/dist/hu/vat.js.map +1 -0
- package/dist/iban.d.ts +16 -0
- package/dist/iban.js +282 -0
- package/dist/iban.js.map +1 -0
- package/dist/id/mod.d.ts +8 -0
- package/dist/id/mod.js +8 -0
- package/dist/id/mod.js.map +1 -0
- package/dist/id/npwp.d.ts +14 -0
- package/dist/id/npwp.js +133 -0
- package/dist/id/npwp.js.map +1 -0
- package/dist/ie/mod.d.ts +9 -0
- package/dist/ie/mod.js +12 -0
- package/dist/ie/mod.js.map +1 -0
- package/dist/ie/pps.d.ts +14 -0
- package/dist/ie/pps.js +69 -0
- package/dist/ie/pps.js.map +1 -0
- package/dist/ie/vat.d.ts +14 -0
- package/dist/ie/vat.js +83 -0
- package/dist/ie/vat.js.map +1 -0
- package/dist/il/idnr.d.ts +14 -0
- package/dist/il/idnr.js +61 -0
- package/dist/il/idnr.js.map +1 -0
- package/dist/il/mod.d.ts +8 -0
- package/dist/il/mod.js +8 -0
- package/dist/il/mod.js.map +1 -0
- package/dist/in/aadhaar.d.ts +14 -0
- package/dist/in/aadhaar.js +61 -0
- package/dist/in/aadhaar.js.map +1 -0
- package/dist/in/gstin.d.ts +14 -0
- package/dist/in/gstin.js +130 -0
- package/dist/in/gstin.js.map +1 -0
- package/dist/in/mod.d.ts +10 -0
- package/dist/in/mod.js +14 -0
- package/dist/in/mod.js.map +1 -0
- package/dist/in/pan.d.ts +13 -0
- package/dist/in/pan.js +58 -0
- package/dist/in/pan.js.map +1 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.js +104 -0
- package/dist/iq/mod.d.ts +8 -0
- package/dist/iq/mod.js +8 -0
- package/dist/iq/mod.js.map +1 -0
- package/dist/iq/nid.d.ts +14 -0
- package/dist/iq/nid.js +56 -0
- package/dist/iq/nid.js.map +1 -0
- package/dist/ir/mod.d.ts +8 -0
- package/dist/ir/mod.js +8 -0
- package/dist/ir/mod.js.map +1 -0
- package/dist/ir/nid.d.ts +18 -0
- package/dist/ir/nid.js +90 -0
- package/dist/ir/nid.js.map +1 -0
- package/dist/is/kennitala.d.ts +14 -0
- package/dist/is/kennitala.js +92 -0
- package/dist/is/kennitala.js.map +1 -0
- package/dist/is/mod.d.ts +9 -0
- package/dist/is/mod.js +12 -0
- package/dist/is/mod.js.map +1 -0
- package/dist/is/vsk.d.ts +13 -0
- package/dist/is/vsk.js +47 -0
- package/dist/is/vsk.js.map +1 -0
- package/dist/isin.d.ts +14 -0
- package/dist/isin.js +85 -0
- package/dist/isin.js.map +1 -0
- package/dist/it/codicefiscale.d.ts +18 -0
- package/dist/it/codicefiscale.js +214 -0
- package/dist/it/codicefiscale.js.map +1 -0
- package/dist/it/iva.d.ts +14 -0
- package/dist/it/iva.js +71 -0
- package/dist/it/iva.js.map +1 -0
- package/dist/it/mod.d.ts +9 -0
- package/dist/it/mod.js +12 -0
- package/dist/it/mod.js.map +1 -0
- package/dist/jp/cn.d.ts +14 -0
- package/dist/jp/cn.js +68 -0
- package/dist/jp/cn.js.map +1 -0
- package/dist/jp/mod.d.ts +9 -0
- package/dist/jp/mod.js +12 -0
- package/dist/jp/mod.js.map +1 -0
- package/dist/jp/mynumber.d.ts +14 -0
- package/dist/jp/mynumber.js +86 -0
- package/dist/jp/mynumber.js.map +1 -0
- package/dist/kr/brn.d.ts +13 -0
- package/dist/kr/brn.js +67 -0
- package/dist/kr/brn.js.map +1 -0
- package/dist/kr/mod.d.ts +9 -0
- package/dist/kr/mod.js +12 -0
- package/dist/kr/mod.js.map +1 -0
- package/dist/kr/rrn.d.ts +22 -0
- package/dist/kr/rrn.js +133 -0
- package/dist/kr/rrn.js.map +1 -0
- package/dist/kw/civil.d.ts +18 -0
- package/dist/kw/civil.js +99 -0
- package/dist/kw/civil.js.map +1 -0
- package/dist/kw/mod.d.ts +8 -0
- package/dist/kw/mod.js +8 -0
- package/dist/kw/mod.js.map +1 -0
- package/dist/kz/iin.d.ts +23 -0
- package/dist/kz/iin.js +150 -0
- package/dist/kz/iin.js.map +1 -0
- package/dist/kz/mod.d.ts +8 -0
- package/dist/kz/mod.js +8 -0
- package/dist/kz/mod.js.map +1 -0
- package/dist/lei.d.ts +14 -0
- package/dist/lei.js +68 -0
- package/dist/lei.js.map +1 -0
- package/dist/li/mod.d.ts +8 -0
- package/dist/li/mod.js +8 -0
- package/dist/li/mod.js.map +1 -0
- package/dist/li/peid.d.ts +13 -0
- package/dist/li/peid.js +61 -0
- package/dist/li/peid.js.map +1 -0
- package/dist/lk/mod.d.ts +8 -0
- package/dist/lk/mod.js +8 -0
- package/dist/lk/mod.js.map +1 -0
- package/dist/lk/nic.d.ts +17 -0
- package/dist/lk/nic.js +139 -0
- package/dist/lk/nic.js.map +1 -0
- package/dist/lt/asmens.d.ts +14 -0
- package/dist/lt/asmens.js +81 -0
- package/dist/lt/asmens.js.map +1 -0
- package/dist/lt/mod.d.ts +9 -0
- package/dist/lt/mod.js +12 -0
- package/dist/lt/mod.js.map +1 -0
- package/dist/lt/vat.d.ts +14 -0
- package/dist/lt/vat.js +72 -0
- package/dist/lt/vat.js.map +1 -0
- package/dist/lu/mod.d.ts +8 -0
- package/dist/lu/mod.js +8 -0
- package/dist/lu/mod.js.map +1 -0
- package/dist/lu/vat.d.ts +14 -0
- package/dist/lu/vat.js +56 -0
- package/dist/lu/vat.js.map +1 -0
- package/dist/luhn.d.ts +17 -0
- package/dist/luhn.js +51 -0
- package/dist/luhn.js.map +1 -0
- package/dist/lv/mod.d.ts +8 -0
- package/dist/lv/mod.js +8 -0
- package/dist/lv/mod.js.map +1 -0
- package/dist/lv/vat.d.ts +14 -0
- package/dist/lv/vat.js +104 -0
- package/dist/lv/vat.js.map +1 -0
- package/dist/ma/ice.d.ts +14 -0
- package/dist/ma/ice.js +57 -0
- package/dist/ma/ice.js.map +1 -0
- package/dist/ma/mod.d.ts +8 -0
- package/dist/ma/mod.js +8 -0
- package/dist/ma/mod.js.map +1 -0
- package/dist/mc/mod.d.ts +8 -0
- package/dist/mc/mod.js +8 -0
- package/dist/mc/mod.js.map +1 -0
- package/dist/mc/tva.d.ts +14 -0
- package/dist/mc/tva.js +53 -0
- package/dist/mc/tva.js.map +1 -0
- package/dist/md/idno.d.ts +12 -0
- package/dist/md/idno.js +71 -0
- package/dist/md/idno.js.map +1 -0
- package/dist/md/mod.d.ts +8 -0
- package/dist/md/mod.js +8 -0
- package/dist/md/mod.js.map +1 -0
- package/dist/me/mod.d.ts +8 -0
- package/dist/me/mod.js +8 -0
- package/dist/me/mod.js.map +1 -0
- package/dist/me/pib.d.ts +14 -0
- package/dist/me/pib.js +63 -0
- package/dist/me/pib.js.map +1 -0
- package/dist/mk/edb.d.ts +14 -0
- package/dist/mk/edb.js +77 -0
- package/dist/mk/edb.js.map +1 -0
- package/dist/mk/mod.d.ts +8 -0
- package/dist/mk/mod.js +8 -0
- package/dist/mk/mod.js.map +1 -0
- package/dist/mt/mod.d.ts +8 -0
- package/dist/mt/mod.js +8 -0
- package/dist/mt/mod.js.map +1 -0
- package/dist/mt/vat.d.ts +14 -0
- package/dist/mt/vat.js +69 -0
- package/dist/mt/vat.js.map +1 -0
- package/dist/mu/brn.d.ts +13 -0
- package/dist/mu/brn.js +68 -0
- package/dist/mu/brn.js.map +1 -0
- package/dist/mu/mod.d.ts +8 -0
- package/dist/mu/mod.js +8 -0
- package/dist/mu/mod.js.map +1 -0
- package/dist/mx/clabe.d.ts +18 -0
- package/dist/mx/clabe.js +87 -0
- package/dist/mx/clabe.js.map +1 -0
- package/dist/mx/curp.d.ts +21 -0
- package/dist/mx/curp.js +140 -0
- package/dist/mx/curp.js.map +1 -0
- package/dist/mx/mod.d.ts +10 -0
- package/dist/mx/mod.js +14 -0
- package/dist/mx/mod.js.map +1 -0
- package/dist/mx/rfc.d.ts +16 -0
- package/dist/mx/rfc.js +92 -0
- package/dist/mx/rfc.js.map +1 -0
- package/dist/my/mod.d.ts +8 -0
- package/dist/my/mod.js +8 -0
- package/dist/my/mod.js.map +1 -0
- package/dist/my/nric.d.ts +17 -0
- package/dist/my/nric.js +186 -0
- package/dist/my/nric.js.map +1 -0
- package/dist/ng/mod.d.ts +8 -0
- package/dist/ng/mod.js +8 -0
- package/dist/ng/mod.js.map +1 -0
- package/dist/ng/nin.d.ts +13 -0
- package/dist/ng/nin.js +54 -0
- package/dist/ng/nin.js.map +1 -0
- package/dist/ni/mod.d.ts +8 -0
- package/dist/ni/mod.js +8 -0
- package/dist/ni/mod.js.map +1 -0
- package/dist/ni/ruc.d.ts +23 -0
- package/dist/ni/ruc.js +113 -0
- package/dist/ni/ruc.js.map +1 -0
- package/dist/nl/bsn.d.ts +14 -0
- package/dist/nl/bsn.js +70 -0
- package/dist/nl/bsn.js.map +1 -0
- package/dist/nl/kvk.d.ts +13 -0
- package/dist/nl/kvk.js +45 -0
- package/dist/nl/kvk.js.map +1 -0
- package/dist/nl/mod.d.ts +10 -0
- package/dist/nl/mod.js +14 -0
- package/dist/nl/mod.js.map +1 -0
- package/dist/nl/vat.d.ts +14 -0
- package/dist/nl/vat.js +94 -0
- package/dist/nl/vat.js.map +1 -0
- package/dist/no/fodselsnummer.d.ts +20 -0
- package/dist/no/fodselsnummer.js +134 -0
- package/dist/no/fodselsnummer.js.map +1 -0
- package/dist/no/mod.d.ts +10 -0
- package/dist/no/mod.js +14 -0
- package/dist/no/mod.js.map +1 -0
- package/dist/no/mva.d.ts +14 -0
- package/dist/no/mva.js +54 -0
- package/dist/no/mva.js.map +1 -0
- package/dist/no/orgnr.d.ts +14 -0
- package/dist/no/orgnr.js +66 -0
- package/dist/no/orgnr.js.map +1 -0
- package/dist/nz/ird.d.ts +14 -0
- package/dist/nz/ird.js +105 -0
- package/dist/nz/ird.js.map +1 -0
- package/dist/nz/mod.d.ts +8 -0
- package/dist/nz/mod.js +8 -0
- package/dist/nz/mod.js.map +1 -0
- package/dist/pa/mod.d.ts +8 -0
- package/dist/pa/mod.js +8 -0
- package/dist/pa/mod.js.map +1 -0
- package/dist/pa/ruc.d.ts +23 -0
- package/dist/pa/ruc.js +200 -0
- package/dist/pa/ruc.js.map +1 -0
- package/dist/patterns.d.ts +45 -0
- package/dist/patterns.js +123 -0
- package/dist/patterns.js.map +1 -0
- package/dist/pe/mod.d.ts +8 -0
- package/dist/pe/mod.js +8 -0
- package/dist/pe/mod.js.map +1 -0
- package/dist/pe/ruc.d.ts +19 -0
- package/dist/pe/ruc.js +109 -0
- package/dist/pe/ruc.js.map +1 -0
- package/dist/ph/mod.d.ts +8 -0
- package/dist/ph/mod.js +8 -0
- package/dist/ph/mod.js.map +1 -0
- package/dist/ph/philid.d.ts +13 -0
- package/dist/ph/philid.js +60 -0
- package/dist/ph/philid.js.map +1 -0
- package/dist/pk/cnic.d.ts +13 -0
- package/dist/pk/cnic.js +69 -0
- package/dist/pk/cnic.js.map +1 -0
- package/dist/pk/mod.d.ts +8 -0
- package/dist/pk/mod.js +8 -0
- package/dist/pk/mod.js.map +1 -0
- package/dist/pl/mod.d.ts +10 -0
- package/dist/pl/mod.js +14 -0
- package/dist/pl/mod.js.map +1 -0
- package/dist/pl/nip.d.ts +18 -0
- package/dist/pl/nip.js +77 -0
- package/dist/pl/nip.js.map +1 -0
- package/dist/pl/pesel.d.ts +19 -0
- package/dist/pl/pesel.js +109 -0
- package/dist/pl/pesel.js.map +1 -0
- package/dist/pl/regon.d.ts +14 -0
- package/dist/pl/regon.js +85 -0
- package/dist/pl/regon.js.map +1 -0
- package/dist/pt/cc.d.ts +14 -0
- package/dist/pt/cc.js +77 -0
- package/dist/pt/cc.js.map +1 -0
- package/dist/pt/mod.d.ts +9 -0
- package/dist/pt/mod.js +12 -0
- package/dist/pt/mod.js.map +1 -0
- package/dist/pt/vat.d.ts +14 -0
- package/dist/pt/vat.js +73 -0
- package/dist/pt/vat.js.map +1 -0
- package/dist/ro/cnp.d.ts +19 -0
- package/dist/ro/cnp.js +176 -0
- package/dist/ro/cnp.js.map +1 -0
- package/dist/ro/mod.d.ts +9 -0
- package/dist/ro/mod.js +12 -0
- package/dist/ro/mod.js.map +1 -0
- package/dist/ro/vat.d.ts +14 -0
- package/dist/ro/vat.js +76 -0
- package/dist/ro/vat.js.map +1 -0
- package/dist/rs/mod.d.ts +8 -0
- package/dist/rs/mod.js +8 -0
- package/dist/rs/mod.js.map +1 -0
- package/dist/rs/pib.d.ts +14 -0
- package/dist/rs/pib.js +60 -0
- package/dist/rs/pib.js.map +1 -0
- package/dist/ru/inn.d.ts +14 -0
- package/dist/ru/inn.js +103 -0
- package/dist/ru/inn.js.map +1 -0
- package/dist/ru/mod.d.ts +8 -0
- package/dist/ru/mod.js +8 -0
- package/dist/ru/mod.js.map +1 -0
- package/dist/se/mod.d.ts +10 -0
- package/dist/se/mod.js +14 -0
- package/dist/se/mod.js.map +1 -0
- package/dist/se/orgnr.d.ts +14 -0
- package/dist/se/orgnr.js +59 -0
- package/dist/se/orgnr.js.map +1 -0
- package/dist/se/personnummer.d.ts +23 -0
- package/dist/se/personnummer.js +122 -0
- package/dist/se/personnummer.js.map +1 -0
- package/dist/se/vat.d.ts +14 -0
- package/dist/se/vat.js +63 -0
- package/dist/se/vat.js.map +1 -0
- package/dist/sg/mod.d.ts +8 -0
- package/dist/sg/mod.js +8 -0
- package/dist/sg/mod.js.map +1 -0
- package/dist/sg/uen.d.ts +14 -0
- package/dist/sg/uen.js +207 -0
- package/dist/sg/uen.js.map +1 -0
- package/dist/si/emso.d.ts +19 -0
- package/dist/si/emso.js +108 -0
- package/dist/si/emso.js.map +1 -0
- package/dist/si/mod.d.ts +9 -0
- package/dist/si/mod.js +12 -0
- package/dist/si/mod.js.map +1 -0
- package/dist/si/vat.d.ts +14 -0
- package/dist/si/vat.js +74 -0
- package/dist/si/vat.js.map +1 -0
- package/dist/sk/dic.d.ts +14 -0
- package/dist/sk/dic.js +66 -0
- package/dist/sk/dic.js.map +1 -0
- package/dist/sk/ico.d.ts +10 -0
- package/dist/sk/ico.js +30 -0
- package/dist/sk/ico.js.map +1 -0
- package/dist/sk/mod.d.ts +10 -0
- package/dist/sk/mod.js +14 -0
- package/dist/sk/mod.js.map +1 -0
- package/dist/sk/rc.d.ts +10 -0
- package/dist/sk/rc.js +30 -0
- package/dist/sk/rc.js.map +1 -0
- package/dist/th/mod.d.ts +8 -0
- package/dist/th/mod.js +8 -0
- package/dist/th/mod.js.map +1 -0
- package/dist/th/tin.d.ts +14 -0
- package/dist/th/tin.js +63 -0
- package/dist/th/tin.js.map +1 -0
- package/dist/tr/mod.d.ts +9 -0
- package/dist/tr/mod.js +12 -0
- package/dist/tr/mod.js.map +1 -0
- package/dist/tr/tckimlik.d.ts +15 -0
- package/dist/tr/tckimlik.js +79 -0
- package/dist/tr/tckimlik.js.map +1 -0
- package/dist/tr/vkn.d.ts +15 -0
- package/dist/tr/vkn.js +79 -0
- package/dist/tr/vkn.js.map +1 -0
- package/dist/tw/mod.d.ts +8 -0
- package/dist/tw/mod.js +8 -0
- package/dist/tw/mod.js.map +1 -0
- package/dist/tw/ubn.d.ts +14 -0
- package/dist/tw/ubn.js +86 -0
- package/dist/tw/ubn.js.map +1 -0
- package/dist/types.d.ts +95 -0
- package/dist/types.js +1 -0
- package/dist/ua/edrpou.d.ts +14 -0
- package/dist/ua/edrpou.js +103 -0
- package/dist/ua/edrpou.js.map +1 -0
- package/dist/ua/mod.d.ts +8 -0
- package/dist/ua/mod.js +8 -0
- package/dist/ua/mod.js.map +1 -0
- package/dist/us/ein.d.ts +13 -0
- package/dist/us/ein.js +234 -0
- package/dist/us/ein.js.map +1 -0
- package/dist/us/itin.d.ts +15 -0
- package/dist/us/itin.js +69 -0
- package/dist/us/itin.js.map +1 -0
- package/dist/us/mod.d.ts +11 -0
- package/dist/us/mod.js +16 -0
- package/dist/us/mod.js.map +1 -0
- package/dist/us/rtn.d.ts +14 -0
- package/dist/us/rtn.js +91 -0
- package/dist/us/rtn.js.map +1 -0
- package/dist/us/ssn.d.ts +13 -0
- package/dist/us/ssn.js +77 -0
- package/dist/us/ssn.js.map +1 -0
- package/dist/uy/mod.d.ts +8 -0
- package/dist/uy/mod.js +8 -0
- package/dist/uy/mod.js.map +1 -0
- package/dist/uy/rut.d.ts +18 -0
- package/dist/uy/rut.js +105 -0
- package/dist/uy/rut.js.map +1 -0
- package/dist/ve/mod.d.ts +8 -0
- package/dist/ve/mod.js +8 -0
- package/dist/ve/mod.js.map +1 -0
- package/dist/ve/rif.d.ts +18 -0
- package/dist/ve/rif.js +109 -0
- package/dist/ve/rif.js.map +1 -0
- package/dist/vn/mod.d.ts +8 -0
- package/dist/vn/mod.js +8 -0
- package/dist/vn/mod.js.map +1 -0
- package/dist/vn/mst.d.ts +14 -0
- package/dist/vn/mst.js +82 -0
- package/dist/vn/mst.js.map +1 -0
- package/dist/za/idnr.d.ts +19 -0
- package/dist/za/idnr.js +110 -0
- package/dist/za/idnr.js.map +1 -0
- package/dist/za/mod.d.ts +8 -0
- package/dist/za/mod.js +8 -0
- package/dist/za/mod.js.map +1 -0
- package/package.json +936 -0
- package/src/_checksums/luhn.ts +24 -0
- package/src/_checksums/mod1110.ts +24 -0
- package/src/_checksums/mod112.ts +40 -0
- package/src/_checksums/mod97.ts +28 -0
- package/src/_checksums/verhoeff.ts +71 -0
- package/src/_checksums/weighted-sum.ts +23 -0
- package/src/_util/arabic.ts +48 -0
- package/src/_util/clean.ts +86 -0
- package/src/_util/date.ts +23 -0
- package/src/_util/generate.ts +24 -0
- package/src/_util/result.ts +10 -0
- package/src/_util/strings.ts +32 -0
- package/src/ad/mod.ts +1 -0
- package/src/ad/nrt.ts +111 -0
- package/src/ae/eid.ts +106 -0
- package/src/ae/mod.ts +1 -0
- package/src/ai/mod.ts +1 -0
- package/src/ai/tin.ts +98 -0
- package/src/al/mod.ts +1 -0
- package/src/al/nipt.ts +78 -0
- package/src/am/mod.ts +1 -0
- package/src/am/tin.ts +73 -0
- package/src/ar/cbu.ts +106 -0
- package/src/ar/cuit.ts +137 -0
- package/src/ar/dni.ts +79 -0
- package/src/ar/mod.ts +3 -0
- package/src/at/businessid.ts +74 -0
- package/src/at/mod.ts +4 -0
- package/src/at/tin.ts +90 -0
- package/src/at/uid.ts +92 -0
- package/src/at/vnr.ts +111 -0
- package/src/au/abn.ts +85 -0
- package/src/au/acn.ts +86 -0
- package/src/au/mod.ts +3 -0
- package/src/au/tfn.ts +85 -0
- package/src/az/mod.ts +1 -0
- package/src/az/voen.ts +125 -0
- package/src/ba/jmbg.ts +128 -0
- package/src/ba/mod.ts +1 -0
- package/src/bd/mod.ts +1 -0
- package/src/bd/nid.ts +139 -0
- package/src/be/bis.ts +105 -0
- package/src/be/mod.ts +3 -0
- package/src/be/nn.ts +125 -0
- package/src/be/vat.ts +107 -0
- package/src/bg/egn.ts +155 -0
- package/src/bg/mod.ts +3 -0
- package/src/bg/pnf.ts +86 -0
- package/src/bg/vat.ts +155 -0
- package/src/bh/cpr.ts +81 -0
- package/src/bh/mod.ts +1 -0
- package/src/bic.ts +99 -0
- package/src/br/cnpj.ts +152 -0
- package/src/br/cpf.ts +114 -0
- package/src/br/mod.ts +2 -0
- package/src/by/mod.ts +1 -0
- package/src/by/unp.ts +153 -0
- package/src/bz/mod.ts +1 -0
- package/src/bz/tin.ts +107 -0
- package/src/ca/bn.ts +107 -0
- package/src/ca/mod.ts +2 -0
- package/src/ca/sin.ts +91 -0
- package/src/ch/mod.ts +3 -0
- package/src/ch/ssn.ts +95 -0
- package/src/ch/uid.ts +108 -0
- package/src/ch/vat.ts +85 -0
- package/src/cl/mod.ts +1 -0
- package/src/cl/rut.ts +118 -0
- package/src/cn/mod.ts +2 -0
- package/src/cn/ric.ts +180 -0
- package/src/cn/uscc.ts +111 -0
- package/src/co/mod.ts +1 -0
- package/src/co/nit.ts +108 -0
- package/src/cr/cpf.ts +111 -0
- package/src/cr/mod.ts +1 -0
- package/src/creditcard.ts +190 -0
- package/src/cu/mod.ts +1 -0
- package/src/cu/ni.ts +125 -0
- package/src/cy/mod.ts +1 -0
- package/src/cy/vat.ts +130 -0
- package/src/cz/dic.ts +135 -0
- package/src/cz/ico.ts +82 -0
- package/src/cz/mod.ts +3 -0
- package/src/cz/rc.ts +190 -0
- package/src/de/handelsreg.ts +107 -0
- package/src/de/idnr.ts +140 -0
- package/src/de/mod.ts +5 -0
- package/src/de/stnr.ts +214 -0
- package/src/de/svnr.ts +162 -0
- package/src/de/vat.ts +98 -0
- package/src/dk/cpr.ts +122 -0
- package/src/dk/cvr.ts +87 -0
- package/src/dk/mod.ts +3 -0
- package/src/dk/vat.ts +91 -0
- package/src/do/mod.ts +1 -0
- package/src/do/rnc.ts +126 -0
- package/src/ec/mod.ts +1 -0
- package/src/ec/ruc.ts +195 -0
- package/src/ee/ik.ts +156 -0
- package/src/ee/mod.ts +3 -0
- package/src/ee/registrikood.ts +81 -0
- package/src/ee/vat.ts +85 -0
- package/src/eg/mod.ts +1 -0
- package/src/eg/tn.ts +103 -0
- package/src/es/cif.ts +105 -0
- package/src/es/dni.ts +90 -0
- package/src/es/mod.ts +5 -0
- package/src/es/nie.ts +102 -0
- package/src/es/nss.ts +109 -0
- package/src/es/vat.ts +178 -0
- package/src/eu/mod.ts +1 -0
- package/src/eu/vat.ts +171 -0
- package/src/fi/hetu.ts +182 -0
- package/src/fi/mod.ts +3 -0
- package/src/fi/vat.ts +82 -0
- package/src/fi/ytunnus.ts +83 -0
- package/src/fr/mod.ts +5 -0
- package/src/fr/nif.ts +93 -0
- package/src/fr/nir.ts +195 -0
- package/src/fr/siren.ts +79 -0
- package/src/fr/siret.ts +122 -0
- package/src/fr/tva.ts +146 -0
- package/src/gb/mod.ts +4 -0
- package/src/gb/nino.ts +153 -0
- package/src/gb/sedol.ts +137 -0
- package/src/gb/utr.ts +81 -0
- package/src/gb/vat.ts +158 -0
- package/src/ge/mod.ts +1 -0
- package/src/ge/pin.ts +71 -0
- package/src/gh/mod.ts +1 -0
- package/src/gh/tin.ts +100 -0
- package/src/gr/amka.ts +104 -0
- package/src/gr/mod.ts +2 -0
- package/src/gr/vat.ts +96 -0
- package/src/gt/mod.ts +1 -0
- package/src/gt/nit.ts +116 -0
- package/src/hk/hkid.ts +131 -0
- package/src/hk/mod.ts +1 -0
- package/src/hr/mod.ts +1 -0
- package/src/hr/vat.ts +79 -0
- package/src/hu/mod.ts +1 -0
- package/src/hu/vat.ts +82 -0
- package/src/iban.ts +340 -0
- package/src/id/mod.ts +1 -0
- package/src/id/npwp.ts +187 -0
- package/src/ie/mod.ts +2 -0
- package/src/ie/pps.ts +105 -0
- package/src/ie/vat.ts +138 -0
- package/src/il/idnr.ts +87 -0
- package/src/il/mod.ts +1 -0
- package/src/in/aadhaar.ts +96 -0
- package/src/in/gstin.ts +169 -0
- package/src/in/mod.ts +3 -0
- package/src/in/pan.ts +88 -0
- package/src/index.ts +116 -0
- package/src/iq/mod.ts +1 -0
- package/src/iq/nid.ts +71 -0
- package/src/ir/mod.ts +1 -0
- package/src/ir/nid.ts +120 -0
- package/src/is/kennitala.ts +125 -0
- package/src/is/mod.ts +2 -0
- package/src/is/vsk.ts +63 -0
- package/src/isin.ts +114 -0
- package/src/it/codicefiscale.ts +290 -0
- package/src/it/iva.ts +115 -0
- package/src/it/mod.ts +2 -0
- package/src/jp/cn.ts +91 -0
- package/src/jp/mod.ts +2 -0
- package/src/jp/mynumber.ts +103 -0
- package/src/kr/brn.ts +101 -0
- package/src/kr/mod.ts +2 -0
- package/src/kr/rrn.ts +170 -0
- package/src/kw/civil.ts +144 -0
- package/src/kw/mod.ts +1 -0
- package/src/kz/iin.ts +183 -0
- package/src/kz/mod.ts +1 -0
- package/src/lei.ts +98 -0
- package/src/li/mod.ts +1 -0
- package/src/li/peid.ts +66 -0
- package/src/lk/mod.ts +1 -0
- package/src/lk/nic.ts +210 -0
- package/src/lt/asmens.ts +120 -0
- package/src/lt/mod.ts +2 -0
- package/src/lt/vat.ts +109 -0
- package/src/lu/mod.ts +1 -0
- package/src/lu/vat.ts +80 -0
- package/src/luhn.ts +72 -0
- package/src/lv/mod.ts +1 -0
- package/src/lv/vat.ts +139 -0
- package/src/ma/ice.ts +79 -0
- package/src/ma/mod.ts +1 -0
- package/src/mc/mod.ts +1 -0
- package/src/mc/tva.ts +74 -0
- package/src/md/idno.ts +86 -0
- package/src/md/mod.ts +1 -0
- package/src/me/mod.ts +1 -0
- package/src/me/pib.ts +79 -0
- package/src/mk/edb.ts +91 -0
- package/src/mk/mod.ts +1 -0
- package/src/mt/mod.ts +1 -0
- package/src/mt/vat.ts +88 -0
- package/src/mu/brn.ts +102 -0
- package/src/mu/mod.ts +1 -0
- package/src/mx/clabe.ts +111 -0
- package/src/mx/curp.ts +210 -0
- package/src/mx/mod.ts +3 -0
- package/src/mx/rfc.ts +144 -0
- package/src/my/mod.ts +1 -0
- package/src/my/nric.ts +235 -0
- package/src/ng/mod.ts +1 -0
- package/src/ng/nin.ts +72 -0
- package/src/ni/mod.ts +1 -0
- package/src/ni/ruc.ts +176 -0
- package/src/nl/bsn.ts +87 -0
- package/src/nl/kvk.ts +59 -0
- package/src/nl/mod.ts +3 -0
- package/src/nl/vat.ts +146 -0
- package/src/no/fodselsnummer.ts +192 -0
- package/src/no/mod.ts +3 -0
- package/src/no/mva.ts +73 -0
- package/src/no/orgnr.ts +79 -0
- package/src/nz/ird.ts +128 -0
- package/src/nz/mod.ts +1 -0
- package/src/pa/mod.ts +1 -0
- package/src/pa/ruc.ts +359 -0
- package/src/patterns.ts +252 -0
- package/src/pe/mod.ts +1 -0
- package/src/pe/ruc.ts +121 -0
- package/src/ph/mod.ts +1 -0
- package/src/ph/philid.ts +76 -0
- package/src/pk/cnic.ts +103 -0
- package/src/pk/mod.ts +1 -0
- package/src/pl/mod.ts +3 -0
- package/src/pl/nip.ts +96 -0
- package/src/pl/pesel.ts +153 -0
- package/src/pl/regon.ts +98 -0
- package/src/pt/cc.ts +106 -0
- package/src/pt/mod.ts +2 -0
- package/src/pt/vat.ts +93 -0
- package/src/ro/cnp.ts +171 -0
- package/src/ro/mod.ts +2 -0
- package/src/ro/vat.ts +94 -0
- package/src/rs/mod.ts +1 -0
- package/src/rs/pib.ts +83 -0
- package/src/ru/inn.ts +109 -0
- package/src/ru/mod.ts +1 -0
- package/src/se/mod.ts +3 -0
- package/src/se/orgnr.ts +81 -0
- package/src/se/personnummer.ts +180 -0
- package/src/se/vat.ts +92 -0
- package/src/sg/mod.ts +1 -0
- package/src/sg/uen.ts +267 -0
- package/src/si/emso.ts +152 -0
- package/src/si/mod.ts +2 -0
- package/src/si/vat.ts +108 -0
- package/src/sk/dic.ts +106 -0
- package/src/sk/ico.ts +39 -0
- package/src/sk/mod.ts +3 -0
- package/src/sk/rc.ts +31 -0
- package/src/th/mod.ts +1 -0
- package/src/th/tin.ts +102 -0
- package/src/tr/mod.ts +2 -0
- package/src/tr/tckimlik.ts +111 -0
- package/src/tr/vkn.ts +97 -0
- package/src/tw/mod.ts +1 -0
- package/src/tw/ubn.ts +108 -0
- package/src/types.ts +200 -0
- package/src/ua/edrpou.ts +103 -0
- package/src/ua/mod.ts +1 -0
- package/src/us/ein.ts +257 -0
- package/src/us/itin.ts +126 -0
- package/src/us/mod.ts +4 -0
- package/src/us/rtn.ts +126 -0
- package/src/us/ssn.ts +117 -0
- package/src/uy/mod.ts +1 -0
- package/src/uy/rut.ts +146 -0
- package/src/ve/mod.ts +1 -0
- package/src/ve/rif.ts +140 -0
- package/src/vn/mod.ts +1 -0
- package/src/vn/mst.ts +128 -0
- package/src/za/idnr.ts +157 -0
- package/src/za/mod.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fodselsnummer.js","names":[],"sources":["../../src/no/fodselsnummer.ts"],"sourcesContent":["/**\n * Fødselsnummer (Norwegian birth number).\n *\n * 11 digits: DDMMYY + 3-digit individual number + 2\n * check digits. Supports D-numbers (day + 40) and\n * H-numbers (month + 40).\n *\n * @see https://www.skatteetaten.no/\n */\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\nimport type {\n ParsedPersonId,\n ValidateResult,\n Validator,\n} from \"../types\";\n\nconst WEIGHTS_D1 = [3, 7, 6, 1, 8, 9, 4, 5, 2] as const;\nconst WEIGHTS_D2 = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\");\n\nconst getCentury = (\n yy: number,\n individual: number,\n): number | undefined => {\n if (individual >= 0 && individual <= 499) return 1900;\n if (individual >= 500 && individual <= 749 && yy >= 54) {\n return 1800;\n }\n if (individual >= 500 && individual <= 999 && yy < 40) {\n return 2000;\n }\n if (individual >= 900 && individual <= 999 && yy >= 40) {\n return 1900;\n }\n return undefined;\n};\n\nconst checkDigit = (\n v: string,\n weights: readonly number[],\n): number | undefined => {\n let sum = 0;\n for (let i = 0; i < weights.length; i++) {\n sum += Number(v.charAt(i)) * (weights[i] ?? 0);\n }\n const remainder = (11 - (sum % 11)) % 11;\n if (remainder === 10) return undefined;\n return remainder;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Norwegian birth number must be 11 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Norwegian birth number must contain only digits\",\n );\n }\n\n // Check digits\n const d1 = checkDigit(v, WEIGHTS_D1);\n if (d1 === undefined || d1 !== Number(v[9])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Norwegian birth number check digit 1 mismatch\",\n );\n }\n const d2 = checkDigit(v, WEIGHTS_D2);\n if (d2 === undefined || d2 !== Number(v[10])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Norwegian birth number check digit 2 mismatch\",\n );\n }\n\n // Parse date components\n let dd = Number(v.slice(0, 2));\n let mm = Number(v.slice(2, 4));\n const yy = Number(v.slice(4, 6));\n const individual = Number(v.slice(6, 9));\n\n // D-number: day > 40\n if (dd > 40) dd -= 40;\n // H-number: month > 40\n if (mm > 40) mm -= 40;\n\n const century = getCentury(yy, individual);\n if (century === undefined) {\n return err(\n \"INVALID_COMPONENT\",\n \"Norwegian birth number has invalid individual/century combination\",\n );\n }\n\n const year = century + yy;\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Norwegian birth number 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 \"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 Norwegian\n * birth number. Returns null if the value is not\n * 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 let dd = Number(v.slice(0, 2));\n let mm = Number(v.slice(2, 4));\n const yy = Number(v.slice(4, 6));\n const individual = Number(v.slice(6, 9));\n\n if (dd > 40) dd -= 40;\n if (mm > 40) mm -= 40;\n\n const century = getCentury(yy, individual);\n if (century === undefined) return null;\n\n const year = century + yy;\n\n return {\n birthDate: new Date(year, mm - 1, dd),\n gender: individual % 2 === 0 ? \"female\" : \"male\",\n };\n};\n\n/** Generate a random valid Norwegian birth number. */\nconst generate = (): string => {\n for (;;) {\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(50, 99)).padStart(2, \"0\");\n const ind = String(randomInt(0, 499)).padStart(3, \"0\");\n const c = dd + mm + yy + ind + randomDigits(2);\n if (validate(c).valid) return c;\n }\n};\n\n/** Norwegian Birth Number. */\nconst fodselsnummer: Validator = {\n name: \"Norwegian Birth Number\",\n localName: \"Fødselsnummer\",\n abbreviation: \"Fødselsnr\",\n aliases: [\"fødselsnummer\", \"personnummer\"] as const,\n candidatePattern: \"\\\\d{11}\",\n country: \"NO\",\n entityType: \"person\",\n sourceUrl: \"https://www.skatteetaten.no/\",\n examples: [\"15108695088\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default fodselsnummer;\nexport { compact, format, parse, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAM,aAAa;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAC9C,MAAM,aAAa;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAEjD,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,cACJ,IACA,eACuB;AACvB,KAAI,cAAc,KAAK,cAAc,IAAK,QAAO;AACjD,KAAI,cAAc,OAAO,cAAc,OAAO,MAAM,GAClD,QAAO;AAET,KAAI,cAAc,OAAO,cAAc,OAAO,KAAK,GACjD,QAAO;AAET,KAAI,cAAc,OAAO,cAAc,OAAO,MAAM,GAClD,QAAO;;AAKX,MAAM,cACJ,GACA,YACuB;CACvB,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAClC,QAAO,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,MAAM;CAE9C,MAAM,aAAa,KAAM,MAAM,MAAO;AACtC,KAAI,cAAc,GAAI,QAAO,KAAA;AAC7B,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,2CACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,kDACD;CAIH,MAAM,KAAK,WAAW,GAAG,WAAW;AACpC,KAAI,OAAO,KAAA,KAAa,OAAO,OAAO,EAAE,GAAG,CACzC,QAAO,IACL,oBACA,gDACD;CAEH,MAAM,KAAK,WAAW,GAAG,WAAW;AACpC,KAAI,OAAO,KAAA,KAAa,OAAO,OAAO,EAAE,IAAI,CAC1C,QAAO,IACL,oBACA,gDACD;CAIH,IAAI,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAC9B,IAAI,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAC9B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,aAAa,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAGxC,KAAI,KAAK,GAAI,OAAM;AAEnB,KAAI,KAAK,GAAI,OAAM;CAEnB,MAAM,UAAU,WAAW,IAAI,WAAW;AAC1C,KAAI,YAAY,KAAA,EACd,QAAO,IACL,qBACA,oEACD;CAGH,MAAM,OAAO,UAAU;AACvB,KAAI,CAAC,YAAY,MAAM,IAAI,GAAG,CAC5B,QAAO,IACL,qBACA,kDACD;AAIH,KAAI,IAAI,KAAK,MAAM,KAAK,GAAG,GAAG,mBAAG,IAAI,MAAM,CACzC,QAAO,IACL,qBACA,8BACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;;;;;AAQvC,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,MAAM;AAC9B,KAAI,CAAC,OAAO,MAAO,QAAO;CAE1B,MAAM,IAAI,OAAO;CACjB,IAAI,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAC9B,IAAI,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAC9B,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,aAAa,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAExC,KAAI,KAAK,GAAI,OAAM;AACnB,KAAI,KAAK,GAAI,OAAM;CAEnB,MAAM,UAAU,WAAW,IAAI,WAAW;AAC1C,KAAI,YAAY,KAAA,EAAW,QAAO;CAElC,MAAM,OAAO,UAAU;AAEvB,QAAO;EACL,WAAW,IAAI,KAAK,MAAM,KAAK,GAAG,GAAG;EACrC,QAAQ,aAAa,MAAM,IAAI,WAAW;EAC3C;;;AAIH,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,IAAI,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACrD,MAAM,MAAM,OAAO,UAAU,GAAG,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI;EACtD,MAAM,IAAI,KAAK,KAAK,KAAK,MAAM,aAAa,EAAE;AAC9C,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,gBAA2B;CAC/B,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,iBAAiB,eAAe;CAC1C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,cAAc;CACzB;CACA;CACA;CACA;CACD"}
|
package/dist/no/mod.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import orgnr from "./orgnr.js";
|
|
3
|
+
import mva from "./mva.js";
|
|
4
|
+
import fodselsnummer from "./fodselsnummer.js";
|
|
5
|
+
|
|
6
|
+
//#region src/no/mod.d.ts
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { fodselsnummer, mod_d_exports, mva, orgnr };
|
|
10
|
+
//# sourceMappingURL=mod.d.ts.map
|
package/dist/no/mod.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import orgnr from "./orgnr.js";
|
|
3
|
+
import mva from "./mva.js";
|
|
4
|
+
import fodselsnummer from "./fodselsnummer.js";
|
|
5
|
+
//#region src/no/mod.ts
|
|
6
|
+
var no_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
fodselsnummer: () => fodselsnummer,
|
|
8
|
+
mva: () => mva,
|
|
9
|
+
orgnr: () => orgnr
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { fodselsnummer, mva, no_exports, orgnr };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/no/mod.ts"],"sourcesContent":["export { default as orgnr } from \"./orgnr\";\nexport { default as mva } from \"./mva\";\nexport { default as fodselsnummer } from \"./fodselsnummer\";\n"],"mappings":""}
|
package/dist/no/mva.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/no/mva.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Norwegian VAT number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Norwegian VAT Number. */
|
|
11
|
+
declare const mva: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, mva as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=mva.d.ts.map
|
package/dist/no/mva.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { err } from "../_util/result.js";
|
|
3
|
+
import { generate as generate$1, validate as validate$1 } from "./orgnr.js";
|
|
4
|
+
//#region src/no/mva.ts
|
|
5
|
+
/**
|
|
6
|
+
* MVA (Merverdiavgift, Norwegian VAT number).
|
|
7
|
+
*
|
|
8
|
+
* Format: optional "NO" prefix + 9 digits + "MVA" suffix.
|
|
9
|
+
* The 9-digit part is validated as an Organisasjonsnummer.
|
|
10
|
+
*
|
|
11
|
+
* @see https://www.skatteetaten.no/
|
|
12
|
+
*/
|
|
13
|
+
const compact = (value) => {
|
|
14
|
+
let v = clean(value, " -").toUpperCase();
|
|
15
|
+
if (v.startsWith("NO")) v = v.slice(2);
|
|
16
|
+
return v;
|
|
17
|
+
};
|
|
18
|
+
const validate = (value) => {
|
|
19
|
+
const v = compact(value);
|
|
20
|
+
if (!v.endsWith("MVA")) return err("INVALID_FORMAT", "Norwegian VAT must end with MVA");
|
|
21
|
+
const orgnrResult = validate$1(v.slice(0, -3));
|
|
22
|
+
if (!orgnrResult.valid) return orgnrResult;
|
|
23
|
+
return {
|
|
24
|
+
valid: true,
|
|
25
|
+
compact: v
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
const format = (value) => {
|
|
29
|
+
const v = compact(value);
|
|
30
|
+
const digits = v.endsWith("MVA") ? v.slice(0, -3) : v;
|
|
31
|
+
return `NO ${digits.slice(0, 3)} ${digits.slice(3, 6)} ${digits.slice(6)} MVA`;
|
|
32
|
+
};
|
|
33
|
+
/** Generate a random valid Norwegian VAT number. */
|
|
34
|
+
const generate = () => generate$1() + "MVA";
|
|
35
|
+
/** Norwegian VAT Number. */
|
|
36
|
+
const mva = {
|
|
37
|
+
name: "Norwegian VAT Number",
|
|
38
|
+
localName: "Merverdiavgift",
|
|
39
|
+
abbreviation: "MVA",
|
|
40
|
+
aliases: ["MVA-nummer", "organisasjonsnummer"],
|
|
41
|
+
candidatePattern: "NO\\d{9}MVA",
|
|
42
|
+
country: "NO",
|
|
43
|
+
entityType: "company",
|
|
44
|
+
sourceUrl: "https://www.skatteetaten.no/",
|
|
45
|
+
examples: ["995525828MVA"],
|
|
46
|
+
compact,
|
|
47
|
+
format,
|
|
48
|
+
validate,
|
|
49
|
+
generate
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { compact, mva as default, format, generate, validate };
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=mva.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mva.js","names":["validateOrgnr","generateOrgnr"],"sources":["../../src/no/mva.ts"],"sourcesContent":["/**\n * MVA (Merverdiavgift, Norwegian VAT number).\n *\n * Format: optional \"NO\" prefix + 9 digits + \"MVA\" suffix.\n * The 9-digit part is validated as an Organisasjonsnummer.\n *\n * @see https://www.skatteetaten.no/\n */\n\nimport { clean } from \"#util/clean\";\nimport { err } from \"#util/result\";\n\nimport type { ValidateResult, Validator } from \"../types\";\nimport {\n validate as validateOrgnr,\n generate as generateOrgnr,\n} from \"./orgnr\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -\").toUpperCase();\n if (v.startsWith(\"NO\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (!v.endsWith(\"MVA\")) {\n return err(\n \"INVALID_FORMAT\",\n \"Norwegian VAT must end with MVA\",\n );\n }\n\n const digits = v.slice(0, -3);\n const orgnrResult = validateOrgnr(digits);\n if (!orgnrResult.valid) {\n return orgnrResult;\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n const digits = v.endsWith(\"MVA\") ? v.slice(0, -3) : v;\n return `NO ${digits.slice(0, 3)} ${digits.slice(3, 6)} ${digits.slice(6)} MVA`;\n};\n\n/** Generate a random valid Norwegian VAT number. */\nconst generate = (): string => generateOrgnr() + \"MVA\";\n\n/** Norwegian VAT Number. */\nconst mva: Validator = {\n name: \"Norwegian VAT Number\",\n localName: \"Merverdiavgift\",\n abbreviation: \"MVA\",\n aliases: [\"MVA-nummer\", \"organisasjonsnummer\"] as const,\n candidatePattern: \"NO\\\\d{9}MVA\",\n country: \"NO\",\n entityType: \"company\",\n sourceUrl: \"https://www.skatteetaten.no/\",\n examples: [\"995525828MVA\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default mva;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;AAkBA,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,KAAK,CAAC,aAAa;AACxC,KAAI,EAAE,WAAW,KAAK,CACpB,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,CAAC,EAAE,SAAS,MAAM,CACpB,QAAO,IACL,kBACA,kCACD;CAIH,MAAM,cAAcA,WADL,EAAE,MAAM,GAAG,GAAG,CACY;AACzC,KAAI,CAAC,YAAY,MACf,QAAO;AAGT,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;CACxB,MAAM,SAAS,EAAE,SAAS,MAAM,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG;AACpD,QAAO,MAAM,OAAO,MAAM,GAAG,EAAE,CAAC,GAAG,OAAO,MAAM,GAAG,EAAE,CAAC,GAAG,OAAO,MAAM,EAAE,CAAC;;;AAI3E,MAAM,iBAAyBC,YAAe,GAAG;;AAGjD,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,cAAc,sBAAsB;CAC9C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,eAAe;CAC1B;CACA;CACA;CACA;CACD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/no/orgnr.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid Norwegian org number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** Norwegian Organization Number. */
|
|
11
|
+
declare const orgnr: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, orgnr as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=orgnr.d.ts.map
|
package/dist/no/orgnr.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
import { weightedSum } from "../_checksums/weighted-sum.js";
|
|
6
|
+
//#region src/no/orgnr.ts
|
|
7
|
+
/**
|
|
8
|
+
* Organisasjonsnummer (Norwegian organization number).
|
|
9
|
+
*
|
|
10
|
+
* 9 digits. Weights [3,2,7,6,5,4,3,2,1], sum % 11 === 0.
|
|
11
|
+
*
|
|
12
|
+
* @see https://www.brreg.no/
|
|
13
|
+
*/
|
|
14
|
+
const WEIGHTS = [
|
|
15
|
+
3,
|
|
16
|
+
2,
|
|
17
|
+
7,
|
|
18
|
+
6,
|
|
19
|
+
5,
|
|
20
|
+
4,
|
|
21
|
+
3,
|
|
22
|
+
2,
|
|
23
|
+
1
|
|
24
|
+
];
|
|
25
|
+
const compact = (value) => clean(value, " -");
|
|
26
|
+
const validate = (value) => {
|
|
27
|
+
const v = compact(value);
|
|
28
|
+
if (v.length !== 9) return err("INVALID_LENGTH", "Norwegian org number must be 9 digits");
|
|
29
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "Norwegian org number must contain only digits");
|
|
30
|
+
if (weightedSum(v, WEIGHTS, 11) !== 0) return err("INVALID_CHECKSUM", "Norwegian org number check digit mismatch");
|
|
31
|
+
return {
|
|
32
|
+
valid: true,
|
|
33
|
+
compact: v
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const format = (value) => {
|
|
37
|
+
const v = compact(value);
|
|
38
|
+
return `${v.slice(0, 3)} ${v.slice(3, 6)} ${v.slice(6)}`;
|
|
39
|
+
};
|
|
40
|
+
/** Generate a random valid Norwegian org number. */
|
|
41
|
+
const generate = () => {
|
|
42
|
+
for (;;) {
|
|
43
|
+
const c = randomDigits(9);
|
|
44
|
+
if (validate(c).valid) return c;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/** Norwegian Organization Number. */
|
|
48
|
+
const orgnr = {
|
|
49
|
+
name: "Norwegian Organization Number",
|
|
50
|
+
localName: "Organisasjonsnummer",
|
|
51
|
+
abbreviation: "Orgnr",
|
|
52
|
+
aliases: ["organisasjonsnummer", "org.nr"],
|
|
53
|
+
candidatePattern: "\\d{9}",
|
|
54
|
+
country: "NO",
|
|
55
|
+
entityType: "company",
|
|
56
|
+
sourceUrl: "https://www.brreg.no/",
|
|
57
|
+
examples: ["923609016"],
|
|
58
|
+
compact,
|
|
59
|
+
format,
|
|
60
|
+
validate,
|
|
61
|
+
generate
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
64
|
+
export { compact, orgnr as default, format, generate, validate };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=orgnr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orgnr.js","names":[],"sources":["../../src/no/orgnr.ts"],"sourcesContent":["/**\n * Organisasjonsnummer (Norwegian organization number).\n *\n * 9 digits. Weights [3,2,7,6,5,4,3,2,1], sum % 11 === 0.\n *\n * @see https://www.brreg.no/\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\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst WEIGHTS = [3, 2, 7, 6, 5, 4, 3, 2, 1] 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 !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Norwegian org number must be 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Norwegian org number must contain only digits\",\n );\n }\n\n const sum = weightedSum(v, WEIGHTS, 11);\n if (sum !== 0) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Norwegian org number check digit mismatch\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v.slice(0, 3)} ${v.slice(3, 6)} ${v.slice(6)}`;\n};\n\n/** Generate a random valid Norwegian org number. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(9);\n if (validate(c).valid) return c;\n }\n};\n\n/** Norwegian Organization Number. */\nconst orgnr: Validator = {\n name: \"Norwegian Organization Number\",\n localName: \"Organisasjonsnummer\",\n abbreviation: \"Orgnr\",\n aliases: [\"organisasjonsnummer\", \"org.nr\"] as const,\n candidatePattern: \"\\\\d{9}\",\n country: \"NO\",\n entityType: \"company\",\n sourceUrl: \"https://www.brreg.no/\",\n examples: [\"923609016\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default orgnr;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAE3C,MAAM,WAAW,UACf,MAAM,OAAO,KAAK;AAEpB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,wCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,gDACD;AAIH,KADY,YAAY,GAAG,SAAS,GAAG,KAC3B,EACV,QAAO,IACL,oBACA,4CACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;AAIxD,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,IAAI,aAAa,EAAE;AACzB,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,QAAmB;CACvB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,uBAAuB,SAAS;CAC1C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
|
package/dist/nz/ird.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/nz/ird.d.ts
|
|
4
|
+
|
|
5
|
+
declare const compact: (value: string) => string;
|
|
6
|
+
declare const validate: (value: string) => ValidateResult;
|
|
7
|
+
declare const format: (value: string) => string;
|
|
8
|
+
/** Generate a random valid NZ IRD number. */
|
|
9
|
+
declare const generate: () => string;
|
|
10
|
+
/** New Zealand IRD Number. */
|
|
11
|
+
declare const ird: Validator;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { compact, ird as default, format, generate, validate };
|
|
14
|
+
//# sourceMappingURL=ird.d.ts.map
|
package/dist/nz/ird.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomDigits } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
import { isdigits } from "../_util/strings.js";
|
|
5
|
+
//#region src/nz/ird.ts
|
|
6
|
+
/**
|
|
7
|
+
* IRD number (New Zealand Inland Revenue Department
|
|
8
|
+
* number, Te Tari Take).
|
|
9
|
+
*
|
|
10
|
+
* 8 or 9 digit number with a weighted checksum.
|
|
11
|
+
* Uses primary weights, falling back to secondary
|
|
12
|
+
* weights if the primary check yields 10.
|
|
13
|
+
*
|
|
14
|
+
* @see https://www.ird.govt.nz/
|
|
15
|
+
*/
|
|
16
|
+
const PRIMARY_WEIGHTS = [
|
|
17
|
+
3,
|
|
18
|
+
2,
|
|
19
|
+
7,
|
|
20
|
+
6,
|
|
21
|
+
5,
|
|
22
|
+
4,
|
|
23
|
+
3,
|
|
24
|
+
2
|
|
25
|
+
];
|
|
26
|
+
const SECONDARY_WEIGHTS = [
|
|
27
|
+
7,
|
|
28
|
+
4,
|
|
29
|
+
3,
|
|
30
|
+
2,
|
|
31
|
+
5,
|
|
32
|
+
2,
|
|
33
|
+
7,
|
|
34
|
+
6
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* Calculate the check digit for an IRD number.
|
|
38
|
+
* The input should be the number without the check
|
|
39
|
+
* digit, zero-padded to 8 digits.
|
|
40
|
+
*/
|
|
41
|
+
const calcCheckDigit = (payload) => {
|
|
42
|
+
const padded = payload.padStart(8, "0");
|
|
43
|
+
let sum = 0;
|
|
44
|
+
for (let i = 0; i < 8; i++) sum += PRIMARY_WEIGHTS[i] * Number(padded[i]);
|
|
45
|
+
let remainder = (-sum % 11 + 11) % 11;
|
|
46
|
+
if (remainder !== 10) return remainder;
|
|
47
|
+
sum = 0;
|
|
48
|
+
for (let i = 0; i < 8; i++) sum += SECONDARY_WEIGHTS[i] * Number(padded[i]);
|
|
49
|
+
remainder = (-sum % 11 + 11) % 11;
|
|
50
|
+
if (remainder === 10) return null;
|
|
51
|
+
return remainder;
|
|
52
|
+
};
|
|
53
|
+
const compact = (value) => {
|
|
54
|
+
let v = clean(value, " -").toUpperCase();
|
|
55
|
+
if (v.startsWith("NZ")) v = v.slice(2);
|
|
56
|
+
return v;
|
|
57
|
+
};
|
|
58
|
+
const validate = (value) => {
|
|
59
|
+
const v = compact(value);
|
|
60
|
+
if (v.length !== 8 && v.length !== 9) return err("INVALID_LENGTH", "IRD number must be 8 or 9 digits");
|
|
61
|
+
if (!isdigits(v)) return err("INVALID_FORMAT", "IRD number must contain only digits");
|
|
62
|
+
const num = Number(v);
|
|
63
|
+
if (num < 1e7 || num >= 15e7) return err("INVALID_COMPONENT", "IRD number out of valid range");
|
|
64
|
+
const expected = calcCheckDigit(v.slice(0, -1));
|
|
65
|
+
if (expected === null) return err("INVALID_COMPONENT", "IRD number cannot have a valid check digit");
|
|
66
|
+
if (expected !== Number(v[v.length - 1])) return err("INVALID_CHECKSUM", "IRD check digit does not match");
|
|
67
|
+
return {
|
|
68
|
+
valid: true,
|
|
69
|
+
compact: v
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const format = (value) => {
|
|
73
|
+
const v = compact(value);
|
|
74
|
+
const last6 = v.slice(-6);
|
|
75
|
+
return `${v.slice(0, -6)}-${last6.slice(0, 3)}-${last6.slice(3)}`;
|
|
76
|
+
};
|
|
77
|
+
/** Generate a random valid NZ IRD number. */
|
|
78
|
+
const generate = () => {
|
|
79
|
+
for (;;) {
|
|
80
|
+
const c = randomDigits(9);
|
|
81
|
+
if (validate(c).valid) return c;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
/** New Zealand IRD Number. */
|
|
85
|
+
const ird = {
|
|
86
|
+
name: "IRD Number",
|
|
87
|
+
localName: "IRD Number",
|
|
88
|
+
abbreviation: "IRD",
|
|
89
|
+
aliases: ["IRD number", "tax number NZ"],
|
|
90
|
+
candidatePattern: "\\d{8,9}",
|
|
91
|
+
country: "NZ",
|
|
92
|
+
entityType: "any",
|
|
93
|
+
compact,
|
|
94
|
+
format,
|
|
95
|
+
validate,
|
|
96
|
+
description: "New Zealand Inland Revenue Department number",
|
|
97
|
+
sourceUrl: "https://www.ird.govt.nz/",
|
|
98
|
+
lengths: [8, 9],
|
|
99
|
+
examples: ["49091850", "136410132"],
|
|
100
|
+
generate
|
|
101
|
+
};
|
|
102
|
+
//#endregion
|
|
103
|
+
export { compact, ird as default, format, generate, validate };
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=ird.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ird.js","names":[],"sources":["../../src/nz/ird.ts"],"sourcesContent":["/**\n * IRD number (New Zealand Inland Revenue Department\n * number, Te Tari Take).\n *\n * 8 or 9 digit number with a weighted checksum.\n * Uses primary weights, falling back to secondary\n * weights if the primary check yields 10.\n *\n * @see https://www.ird.govt.nz/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst PRIMARY_WEIGHTS = [3, 2, 7, 6, 5, 4, 3, 2] as const;\n\nconst SECONDARY_WEIGHTS = [7, 4, 3, 2, 5, 2, 7, 6] as const;\n\n/**\n * Calculate the check digit for an IRD number.\n * The input should be the number without the check\n * digit, zero-padded to 8 digits.\n */\nconst calcCheckDigit = (payload: string): number | null => {\n const padded = payload.padStart(8, \"0\");\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += PRIMARY_WEIGHTS[i]! * Number(padded[i]);\n }\n let remainder = ((-sum % 11) + 11) % 11;\n if (remainder !== 10) return remainder;\n\n sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += SECONDARY_WEIGHTS[i]! * Number(padded[i]);\n }\n remainder = ((-sum % 11) + 11) % 11;\n if (remainder === 10) return null;\n return remainder;\n};\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -\").toUpperCase();\n if (v.startsWith(\"NZ\")) {\n v = v.slice(2);\n }\n return v;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8 && v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"IRD number must be 8 or 9 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"IRD number must contain only digits\",\n );\n }\n const num = Number(v);\n if (num < 10_000_000 || num >= 150_000_000) {\n return err(\n \"INVALID_COMPONENT\",\n \"IRD number out of valid range\",\n );\n }\n const payload = v.slice(0, -1);\n const expected = calcCheckDigit(payload);\n if (expected === null) {\n return err(\n \"INVALID_COMPONENT\",\n \"IRD number cannot have a valid check digit\",\n );\n }\n if (expected !== Number(v[v.length - 1])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"IRD check digit does not match\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n const last6 = v.slice(-6);\n const prefix = v.slice(0, -6);\n return `${prefix}-${last6.slice(0, 3)}-${last6.slice(3)}`;\n};\n\n/** Generate a random valid NZ IRD number. */\nconst generate = (): string => {\n for (;;) {\n const c = randomDigits(9);\n if (validate(c).valid) return c;\n }\n};\n\n/** New Zealand IRD Number. */\nconst ird: Validator = {\n name: \"IRD Number\",\n localName: \"IRD Number\",\n abbreviation: \"IRD\",\n aliases: [\"IRD number\", \"tax number NZ\"] as const,\n candidatePattern: \"\\\\d{8,9}\",\n country: \"NZ\",\n entityType: \"any\",\n compact,\n format,\n validate,\n description:\n \"New Zealand Inland Revenue Department number\",\n sourceUrl: \"https://www.ird.govt.nz/\",\n lengths: [8, 9] as const,\n examples: [\"49091850\", \"136410132\"] as const,\n generate,\n};\n\nexport default ird;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,kBAAkB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAEhD,MAAM,oBAAoB;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;;;;;;AAOlD,MAAM,kBAAkB,YAAmC;CACzD,MAAM,SAAS,QAAQ,SAAS,GAAG,IAAI;CACvC,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,QAAO,gBAAgB,KAAM,OAAO,OAAO,GAAG;CAEhD,IAAI,aAAc,CAAC,MAAM,KAAM,MAAM;AACrC,KAAI,cAAc,GAAI,QAAO;AAE7B,OAAM;AACN,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,QAAO,kBAAkB,KAAM,OAAO,OAAO,GAAG;AAElD,cAAc,CAAC,MAAM,KAAM,MAAM;AACjC,KAAI,cAAc,GAAI,QAAO;AAC7B,QAAO;;AAGT,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,KAAK,CAAC,aAAa;AACxC,KAAI,EAAE,WAAW,KAAK,CACpB,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,EACjC,QAAO,IACL,kBACA,mCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,sCACD;CAEH,MAAM,MAAM,OAAO,EAAE;AACrB,KAAI,MAAM,OAAc,OAAO,KAC7B,QAAO,IACL,qBACA,gCACD;CAGH,MAAM,WAAW,eADD,EAAE,MAAM,GAAG,GAAG,CACU;AACxC,KAAI,aAAa,KACf,QAAO,IACL,qBACA,6CACD;AAEH,KAAI,aAAa,OAAO,EAAE,EAAE,SAAS,GAAG,CACtC,QAAO,IACL,oBACA,iCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;CACxB,MAAM,QAAQ,EAAE,MAAM,GAAG;AAEzB,QAAO,GADQ,EAAE,MAAM,GAAG,GAAG,CACZ,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,MAAM,MAAM,EAAE;;;AAIzD,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,IAAI,aAAa,EAAE;AACzB,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,cAAc,gBAAgB;CACxC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ;CACA;CACA;CACA,aACE;CACF,WAAW;CACX,SAAS,CAAC,GAAG,EAAE;CACf,UAAU,CAAC,YAAY,YAAY;CACnC;CACD"}
|
package/dist/nz/mod.d.ts
ADDED
package/dist/nz/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import ird from "./ird.js";
|
|
3
|
+
//#region src/nz/mod.ts
|
|
4
|
+
var nz_exports = /* @__PURE__ */ __exportAll({ ird: () => ird });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { ird, nz_exports };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/nz/mod.ts"],"sourcesContent":["export { default as ird } from \"./ird\";\n"],"mappings":""}
|
package/dist/pa/mod.d.ts
ADDED
package/dist/pa/mod.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import ruc from "./ruc.js";
|
|
3
|
+
//#region src/pa/mod.ts
|
|
4
|
+
var pa_exports = /* @__PURE__ */ __exportAll({ ruc: () => ruc });
|
|
5
|
+
//#endregion
|
|
6
|
+
export { pa_exports, ruc };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../../src/pa/mod.ts"],"sourcesContent":["export { default as ruc } from \"./ruc\";\n"],"mappings":""}
|
package/dist/pa/ruc.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ValidateResult, Validator } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/pa/ruc.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Compact: normalize Unicode, collapse whitespace,
|
|
7
|
+
* strip colons around DV, and uppercase. Keeps
|
|
8
|
+
* hyphens (structural separators) and a single
|
|
9
|
+
* space before "DV".
|
|
10
|
+
*/
|
|
11
|
+
declare const compact: (value: string) => string;
|
|
12
|
+
declare const validate: (value: string) => ValidateResult;
|
|
13
|
+
/**
|
|
14
|
+
* Format: display as segments with " DV XX".
|
|
15
|
+
*/
|
|
16
|
+
declare const format: (value: string) => string;
|
|
17
|
+
/** Generate a random valid Panama RUC (natural person). */
|
|
18
|
+
declare const generate: () => string;
|
|
19
|
+
/** Panama tax identification number. */
|
|
20
|
+
declare const ruc: Validator;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { compact, ruc as default, format, generate, validate };
|
|
23
|
+
//# sourceMappingURL=ruc.d.ts.map
|
package/dist/pa/ruc.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { clean } from "../_util/clean.js";
|
|
2
|
+
import { randomInt } from "../_util/generate.js";
|
|
3
|
+
import { err } from "../_util/result.js";
|
|
4
|
+
//#region src/pa/ruc.ts
|
|
5
|
+
/**
|
|
6
|
+
* RUC (Registro Único de Contribuyente, Panama
|
|
7
|
+
* tax number).
|
|
8
|
+
*
|
|
9
|
+
* The RUC identifies taxpayers in Panama. It comes
|
|
10
|
+
* in several formats depending on entity type
|
|
11
|
+
* (natural person, legal entity, foreigner, etc.)
|
|
12
|
+
* and is always accompanied by a two-digit check
|
|
13
|
+
* code called the "dígito verificador" (DV).
|
|
14
|
+
*
|
|
15
|
+
* The DV is computed by encoding the hyphen-separated
|
|
16
|
+
* RUC into a 20-position numeric buffer, then applying
|
|
17
|
+
* a double weighted-sum mod 11 algorithm. The encoding
|
|
18
|
+
* and legacy-format handling follow the official ANIP/DGI
|
|
19
|
+
* specification.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dgi.mef.gob.pa/
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Legacy cross-reference table: maps two-digit codes
|
|
25
|
+
* at positions 5–6 of old-format juridical RUCs.
|
|
26
|
+
*/
|
|
27
|
+
const LEGACY_MAP = {
|
|
28
|
+
"00": "00",
|
|
29
|
+
"10": "01",
|
|
30
|
+
"11": "02",
|
|
31
|
+
"12": "03",
|
|
32
|
+
"13": "04",
|
|
33
|
+
"14": "05",
|
|
34
|
+
"15": "06",
|
|
35
|
+
"16": "07",
|
|
36
|
+
"17": "08",
|
|
37
|
+
"18": "09",
|
|
38
|
+
"19": "01",
|
|
39
|
+
"20": "02",
|
|
40
|
+
"21": "03",
|
|
41
|
+
"22": "04",
|
|
42
|
+
"23": "07",
|
|
43
|
+
"24": "08",
|
|
44
|
+
"25": "09",
|
|
45
|
+
"26": "02",
|
|
46
|
+
"27": "03",
|
|
47
|
+
"28": "04",
|
|
48
|
+
"29": "05",
|
|
49
|
+
"30": "06",
|
|
50
|
+
"31": "07",
|
|
51
|
+
"32": "08",
|
|
52
|
+
"33": "09",
|
|
53
|
+
"34": "01",
|
|
54
|
+
"35": "02",
|
|
55
|
+
"36": "03",
|
|
56
|
+
"37": "04",
|
|
57
|
+
"38": "05",
|
|
58
|
+
"39": "06",
|
|
59
|
+
"40": "07",
|
|
60
|
+
"41": "08",
|
|
61
|
+
"42": "09",
|
|
62
|
+
"43": "01",
|
|
63
|
+
"44": "02",
|
|
64
|
+
"45": "03",
|
|
65
|
+
"46": "04",
|
|
66
|
+
"47": "05",
|
|
67
|
+
"48": "06",
|
|
68
|
+
"49": "07"
|
|
69
|
+
};
|
|
70
|
+
/** Prepend n leading zeros. */
|
|
71
|
+
const z = (n) => "0".repeat(Math.max(0, n));
|
|
72
|
+
/**
|
|
73
|
+
* Compute a single DV digit via weighted sum mod 11.
|
|
74
|
+
* Weights start at 2 and increment, applied
|
|
75
|
+
* right-to-left. For old-format juridical RUCs,
|
|
76
|
+
* weight 12 is skipped (jumps from 11 to 13).
|
|
77
|
+
*/
|
|
78
|
+
const digitDV = (buf, isOldFormat) => {
|
|
79
|
+
let weight = 2;
|
|
80
|
+
let sum = 0;
|
|
81
|
+
for (let i = buf.length - 1; i >= 0; i--) {
|
|
82
|
+
if (isOldFormat && weight === 12) weight += 1;
|
|
83
|
+
sum += weight * (buf.charCodeAt(i) - 48);
|
|
84
|
+
weight += 1;
|
|
85
|
+
}
|
|
86
|
+
const r = sum % 11;
|
|
87
|
+
return r > 1 ? 11 - r : 0;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Encode the RUC segments into a numeric buffer
|
|
91
|
+
* according to entity type, then compute the two
|
|
92
|
+
* DV digits.
|
|
93
|
+
*
|
|
94
|
+
* Returns the two-digit DV string, or null if the
|
|
95
|
+
* format is unrecognized.
|
|
96
|
+
*/
|
|
97
|
+
const computeDV = (segments, raw) => {
|
|
98
|
+
const len = segments.length;
|
|
99
|
+
if (len < 3 || len > 4 || len === 4 && segments[1] !== "NT") return null;
|
|
100
|
+
let buf;
|
|
101
|
+
let isOld = false;
|
|
102
|
+
const s0 = segments[0];
|
|
103
|
+
const s1 = segments[1];
|
|
104
|
+
const s2 = segments[2];
|
|
105
|
+
if (raw[0] === "E") buf = z(4 - s1.length) + "00000050050" + z(3 - s1.length) + s1 + z(5 - s2.length) + s2;
|
|
106
|
+
else if (s1 === "NT") {
|
|
107
|
+
const s3 = segments[3];
|
|
108
|
+
const prefix = s0.slice(0, -2);
|
|
109
|
+
buf = z(4 - s1.length) + "0000005" + z(4 - prefix.length) + prefix + "43" + z(3 - s2.length) + s2 + z(5 - s3.length) + s3;
|
|
110
|
+
} else if (s0.endsWith("AV")) {
|
|
111
|
+
const prefix = s0.slice(0, -2);
|
|
112
|
+
buf = z(4 - s1.length) + "0000005" + z(4 - prefix.length) + prefix + "15" + z(3 - s1.length) + s1 + z(5 - s2.length) + s2;
|
|
113
|
+
} else if (s0.endsWith("PI")) {
|
|
114
|
+
const prefix = s0.slice(0, -2);
|
|
115
|
+
buf = z(4 - s1.length) + "0000005" + z(4 - prefix.length) + prefix + "79" + z(3 - s1.length) + s1 + z(5 - s2.length) + s2;
|
|
116
|
+
} else if (s0 === "PE") buf = z(4 - s1.length) + "00000050075" + z(3 - s1.length) + s1 + z(5 - s2.length) + s2;
|
|
117
|
+
else if (raw[0] === "N") buf = z(4 - s1.length) + "00000050040" + z(3 - s1.length) + s1 + z(5 - s2.length) + s2;
|
|
118
|
+
else if (s0.length >= 1 && s0.length <= 2) buf = z(4 - s1.length) + "0000005" + z(2 - s0.length) + s0 + "00" + z(3 - s1.length) + s1 + z(5 - s2.length) + s2;
|
|
119
|
+
else {
|
|
120
|
+
buf = z(10 - s0.length) + s0 + z(4 - s1.length) + s1 + z(6 - s2.length) + s2;
|
|
121
|
+
isOld = buf[3] === "0" && buf[4] === "0" && buf[5] < "5";
|
|
122
|
+
}
|
|
123
|
+
if (isOld) {
|
|
124
|
+
const key = buf.slice(5, 7);
|
|
125
|
+
const mapped = LEGACY_MAP[key] ?? key;
|
|
126
|
+
buf = buf.slice(0, 5) + mapped + buf.slice(7);
|
|
127
|
+
}
|
|
128
|
+
const dv1 = digitDV(buf, isOld);
|
|
129
|
+
return `${dv1}${digitDV(buf + String.fromCharCode(48 + dv1), isOld)}`;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Compact: normalize Unicode, collapse whitespace,
|
|
133
|
+
* strip colons around DV, and uppercase. Keeps
|
|
134
|
+
* hyphens (structural separators) and a single
|
|
135
|
+
* space before "DV".
|
|
136
|
+
*/
|
|
137
|
+
const compact = (value) => {
|
|
138
|
+
let v = clean(value, "").trim().toUpperCase();
|
|
139
|
+
v = v.replace(/\s*DV[:\s]*(\d{2})$/, " DV$1");
|
|
140
|
+
v = v.replace(/\s+/g, " ");
|
|
141
|
+
return v;
|
|
142
|
+
};
|
|
143
|
+
const validate = (value) => {
|
|
144
|
+
const dvMatch = compact(value).match(/^(.+?)-?\s*DV[:\s]*(\d{2})$/);
|
|
145
|
+
if (!dvMatch) return err("INVALID_FORMAT", "Panama RUC must include DV (dígito verificador)");
|
|
146
|
+
const rucPart = dvMatch[1];
|
|
147
|
+
const dvPart = dvMatch[2];
|
|
148
|
+
const segments = rucPart.replace(/-+$/, "").split("-");
|
|
149
|
+
if (segments.length < 3 || segments.length > 4) return err("INVALID_FORMAT", "Panama RUC must have 3–4 hyphen-separated segments");
|
|
150
|
+
if (segments.some((s) => s.length === 0)) return err("INVALID_FORMAT", "Panama RUC segments must not be empty");
|
|
151
|
+
const computed = computeDV(segments, rucPart);
|
|
152
|
+
if (computed === null) return err("INVALID_FORMAT", "Unrecognized Panama RUC format");
|
|
153
|
+
if (computed !== dvPart) return err("INVALID_CHECKSUM", "Panama RUC dígito verificador does not match");
|
|
154
|
+
return {
|
|
155
|
+
valid: true,
|
|
156
|
+
compact: segments.join("-") + " DV" + dvPart
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Format: display as segments with " DV XX".
|
|
161
|
+
*/
|
|
162
|
+
const format = (value) => {
|
|
163
|
+
const v = compact(value);
|
|
164
|
+
const dvMatch = v.match(/^(.+?)-?\s*DV[:\s]*(\d{2})$/);
|
|
165
|
+
if (!dvMatch) return v;
|
|
166
|
+
const rucPart = dvMatch[1].replace(/-+$/, "");
|
|
167
|
+
const dvPart = dvMatch[2];
|
|
168
|
+
return `${rucPart.split("-").join("-")} DV ${dvPart}`;
|
|
169
|
+
};
|
|
170
|
+
/** Generate a random valid Panama RUC (natural person). */
|
|
171
|
+
const generate = () => {
|
|
172
|
+
const segments = [
|
|
173
|
+
String(randomInt(1, 13)),
|
|
174
|
+
String(randomInt(1, 9999)),
|
|
175
|
+
String(randomInt(1, 99999))
|
|
176
|
+
];
|
|
177
|
+
const dv = computeDV(segments, segments.join("-"));
|
|
178
|
+
return `${segments.join("-")} DV${dv}`;
|
|
179
|
+
};
|
|
180
|
+
/** Panama tax identification number. */
|
|
181
|
+
const ruc = {
|
|
182
|
+
name: "Tax Identification Number",
|
|
183
|
+
localName: "Registro Único de Contribuyente",
|
|
184
|
+
abbreviation: "RUC",
|
|
185
|
+
aliases: ["RUC"],
|
|
186
|
+
candidatePattern: "\\d{1,2}-?\\d{1,4}-?\\d{1,6}",
|
|
187
|
+
country: "PA",
|
|
188
|
+
entityType: "any",
|
|
189
|
+
description: "Tax identifier issued by Panama's DGI",
|
|
190
|
+
sourceUrl: "https://dgi.mef.gob.pa/",
|
|
191
|
+
examples: ["1-184-921 DV49", "2588017-1-831938 DV20"],
|
|
192
|
+
compact,
|
|
193
|
+
format,
|
|
194
|
+
validate,
|
|
195
|
+
generate
|
|
196
|
+
};
|
|
197
|
+
//#endregion
|
|
198
|
+
export { compact, ruc as default, format, generate, validate };
|
|
199
|
+
|
|
200
|
+
//# sourceMappingURL=ruc.js.map
|