@stll/stdnum 1.0.0 → 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.
Files changed (704) hide show
  1. package/dist/_checksums/luhn.js.map +1 -1
  2. package/dist/_checksums/mod1110.js +1 -1
  3. package/dist/_checksums/mod1110.js.map +1 -1
  4. package/dist/_checksums/mod112.js.map +1 -1
  5. package/dist/_checksums/mod97.js.map +1 -1
  6. package/dist/_checksums/verhoeff.js.map +1 -1
  7. package/dist/_checksums/weighted-sum.js.map +1 -1
  8. package/dist/_util/arabic.js.map +1 -1
  9. package/dist/_util/clean.js.map +1 -1
  10. package/dist/_util/date.js.map +1 -1
  11. package/dist/_util/generate.js.map +1 -1
  12. package/dist/_util/result.js.map +1 -1
  13. package/dist/_util/strings.js.map +1 -1
  14. package/dist/ad/nrt.d.ts +16 -2
  15. package/dist/ad/nrt.js +1 -14
  16. package/dist/ad/nrt.js.map +1 -1
  17. package/dist/ae/eid.d.ts +2 -2
  18. package/dist/ae/eid.js +2 -12
  19. package/dist/ae/eid.js.map +1 -1
  20. package/dist/ai/tin.d.ts +20 -2
  21. package/dist/ai/tin.js +1 -18
  22. package/dist/ai/tin.js.map +1 -1
  23. package/dist/al/nipt.d.ts +13 -2
  24. package/dist/al/nipt.js +1 -11
  25. package/dist/al/nipt.js.map +1 -1
  26. package/dist/am/tin.d.ts +16 -2
  27. package/dist/am/tin.js +1 -14
  28. package/dist/am/tin.js.map +1 -1
  29. package/dist/ar/cbu.d.ts +2 -2
  30. package/dist/ar/cbu.js +1 -9
  31. package/dist/ar/cbu.js.map +1 -1
  32. package/dist/ar/cuit.d.ts +2 -2
  33. package/dist/ar/cuit.js +1 -17
  34. package/dist/ar/cuit.js.map +1 -1
  35. package/dist/ar/dni.d.ts +11 -2
  36. package/dist/ar/dni.js +1 -9
  37. package/dist/ar/dni.js.map +1 -1
  38. package/dist/at/businessid.d.ts +10 -2
  39. package/dist/at/businessid.js +1 -8
  40. package/dist/at/businessid.js.map +1 -1
  41. package/dist/at/tin.d.ts +2 -2
  42. package/dist/at/tin.js +1 -11
  43. package/dist/at/tin.js.map +1 -1
  44. package/dist/at/uid.d.ts +2 -2
  45. package/dist/at/uid.js +2 -10
  46. package/dist/at/uid.js.map +1 -1
  47. package/dist/at/vnr.d.ts +2 -2
  48. package/dist/at/vnr.js +4 -14
  49. package/dist/at/vnr.js.map +1 -1
  50. package/dist/au/abn.d.ts +2 -2
  51. package/dist/au/abn.js +1 -10
  52. package/dist/au/abn.js.map +1 -1
  53. package/dist/au/acn.d.ts +2 -2
  54. package/dist/au/acn.js +1 -10
  55. package/dist/au/acn.js.map +1 -1
  56. package/dist/au/tfn.d.ts +2 -2
  57. package/dist/au/tfn.js +1 -10
  58. package/dist/au/tfn.js.map +1 -1
  59. package/dist/az/voen.d.ts +2 -2
  60. package/dist/az/voen.js +1 -14
  61. package/dist/az/voen.js.map +1 -1
  62. package/dist/ba/jmbg.d.ts +2 -2
  63. package/dist/ba/jmbg.js +3 -11
  64. package/dist/ba/jmbg.js.map +1 -1
  65. package/dist/bd/nid.d.ts +23 -2
  66. package/dist/bd/nid.js +1 -21
  67. package/dist/bd/nid.js.map +1 -1
  68. package/dist/be/bis.d.ts +2 -2
  69. package/dist/be/bis.js +1 -11
  70. package/dist/be/bis.js.map +1 -1
  71. package/dist/be/nn.d.ts +2 -2
  72. package/dist/be/nn.js +1 -11
  73. package/dist/be/nn.js.map +1 -1
  74. package/dist/be/vat.d.ts +2 -2
  75. package/dist/be/vat.js +1 -9
  76. package/dist/be/vat.js.map +1 -1
  77. package/dist/bg/egn.d.ts +2 -2
  78. package/dist/bg/egn.js +3 -18
  79. package/dist/bg/egn.js.map +1 -1
  80. package/dist/bg/pnf.d.ts +2 -2
  81. package/dist/bg/pnf.js +1 -8
  82. package/dist/bg/pnf.js.map +1 -1
  83. package/dist/bg/vat.d.ts +2 -2
  84. package/dist/bg/vat.js +3 -9
  85. package/dist/bg/vat.js.map +1 -1
  86. package/dist/bh/cpr.d.ts +2 -2
  87. package/dist/bh/cpr.js +1 -17
  88. package/dist/bh/cpr.js.map +1 -1
  89. package/dist/bic.d.ts +13 -2
  90. package/dist/bic.js +1 -11
  91. package/dist/bic.js.map +1 -1
  92. package/dist/br/cnpj.d.ts +2 -2
  93. package/dist/br/cnpj.js +1 -20
  94. package/dist/br/cnpj.js.map +1 -1
  95. package/dist/br/cpf.d.ts +2 -2
  96. package/dist/br/cpf.js +1 -14
  97. package/dist/br/cpf.js.map +1 -1
  98. package/dist/by/unp.d.ts +2 -2
  99. package/dist/by/unp.js +3 -14
  100. package/dist/by/unp.js.map +1 -1
  101. package/dist/bz/tin.d.ts +2 -2
  102. package/dist/bz/tin.js +1 -26
  103. package/dist/bz/tin.js.map +1 -1
  104. package/dist/ca/bn.d.ts +2 -2
  105. package/dist/ca/bn.js +2 -10
  106. package/dist/ca/bn.js.map +1 -1
  107. package/dist/ca/sin.d.ts +2 -2
  108. package/dist/ca/sin.js +2 -10
  109. package/dist/ca/sin.js.map +1 -1
  110. package/dist/ch/ssn.d.ts +2 -2
  111. package/dist/ch/ssn.js +1 -9
  112. package/dist/ch/ssn.js.map +1 -1
  113. package/dist/ch/uid.d.ts +2 -2
  114. package/dist/ch/uid.js +1 -9
  115. package/dist/ch/uid.js.map +1 -1
  116. package/dist/ch/vat.d.ts +2 -2
  117. package/dist/ch/vat.js +1 -9
  118. package/dist/ch/vat.js.map +1 -1
  119. package/dist/cl/rut.d.ts +2 -2
  120. package/dist/cl/rut.js +1 -14
  121. package/dist/cl/rut.js.map +1 -1
  122. package/dist/cn/ric.d.ts +2 -2
  123. package/dist/cn/ric.js +3 -14
  124. package/dist/cn/ric.js.map +1 -1
  125. package/dist/cn/uscc.d.ts +2 -2
  126. package/dist/cn/uscc.js +1 -10
  127. package/dist/cn/uscc.js.map +1 -1
  128. package/dist/co/nit.d.ts +2 -2
  129. package/dist/co/nit.js +2 -12
  130. package/dist/co/nit.js.map +1 -1
  131. package/dist/cr/cpf.d.ts +18 -2
  132. package/dist/cr/cpf.js +1 -16
  133. package/dist/cr/cpf.js.map +1 -1
  134. package/dist/creditcard.d.ts +2 -2
  135. package/dist/creditcard.js +5 -14
  136. package/dist/creditcard.js.map +1 -1
  137. package/dist/cu/ni.d.ts +2 -2
  138. package/dist/cu/ni.js +2 -17
  139. package/dist/cu/ni.js.map +1 -1
  140. package/dist/cy/vat.d.ts +2 -2
  141. package/dist/cy/vat.js +1 -8
  142. package/dist/cy/vat.js.map +1 -1
  143. package/dist/cz/dic.d.ts +2 -2
  144. package/dist/cz/dic.js +7 -13
  145. package/dist/cz/dic.js.map +1 -1
  146. package/dist/cz/ico.d.ts +2 -2
  147. package/dist/cz/ico.js +2 -10
  148. package/dist/cz/ico.js.map +1 -1
  149. package/dist/cz/rc.d.ts +2 -2
  150. package/dist/cz/rc.js +2 -26
  151. package/dist/cz/rc.js.map +1 -1
  152. package/dist/de/handelsreg.d.ts +19 -2
  153. package/dist/de/handelsreg.js +1 -17
  154. package/dist/de/handelsreg.js.map +1 -1
  155. package/dist/de/idnr.d.ts +2 -2
  156. package/dist/de/idnr.js +2 -12
  157. package/dist/de/idnr.js.map +1 -1
  158. package/dist/de/stnr.d.ts +17 -2
  159. package/dist/de/stnr.js +1 -15
  160. package/dist/de/stnr.js.map +1 -1
  161. package/dist/de/svnr.d.ts +2 -2
  162. package/dist/de/svnr.js +2 -11
  163. package/dist/de/svnr.js.map +1 -1
  164. package/dist/de/vat.d.ts +2 -2
  165. package/dist/de/vat.js +2 -11
  166. package/dist/de/vat.js.map +1 -1
  167. package/dist/dk/cpr.d.ts +2 -2
  168. package/dist/dk/cpr.js +2 -10
  169. package/dist/dk/cpr.js.map +1 -1
  170. package/dist/dk/cvr.d.ts +2 -2
  171. package/dist/dk/cvr.js +2 -15
  172. package/dist/dk/cvr.js.map +1 -1
  173. package/dist/dk/vat.d.ts +2 -2
  174. package/dist/dk/vat.js +3 -13
  175. package/dist/dk/vat.js.map +1 -1
  176. package/dist/do/rnc.d.ts +2 -2
  177. package/dist/do/rnc.js +2 -16
  178. package/dist/do/rnc.js.map +1 -1
  179. package/dist/ec/ruc.d.ts +2 -2
  180. package/dist/ec/ruc.js +1 -18
  181. package/dist/ec/ruc.js.map +1 -1
  182. package/dist/ee/ik.d.ts +2 -2
  183. package/dist/ee/ik.js +3 -20
  184. package/dist/ee/ik.js.map +1 -1
  185. package/dist/ee/registrikood.d.ts +2 -2
  186. package/dist/ee/registrikood.js +1 -8
  187. package/dist/ee/registrikood.js.map +1 -1
  188. package/dist/ee/vat.d.ts +2 -2
  189. package/dist/ee/vat.js +2 -10
  190. package/dist/ee/vat.js.map +1 -1
  191. package/dist/eg/tn.d.ts +11 -2
  192. package/dist/eg/tn.js +1 -9
  193. package/dist/eg/tn.js.map +1 -1
  194. package/dist/es/cif.d.ts +2 -2
  195. package/dist/es/cif.js +1 -10
  196. package/dist/es/cif.js.map +1 -1
  197. package/dist/es/dni.d.ts +2 -2
  198. package/dist/es/dni.js +1 -9
  199. package/dist/es/dni.js.map +1 -1
  200. package/dist/es/nie.d.ts +2 -2
  201. package/dist/es/nie.js +1 -9
  202. package/dist/es/nie.js.map +1 -1
  203. package/dist/es/nss.d.ts +2 -2
  204. package/dist/es/nss.js +1 -16
  205. package/dist/es/nss.js.map +1 -1
  206. package/dist/es/vat.d.ts +2 -2
  207. package/dist/es/vat.js +5 -10
  208. package/dist/es/vat.js.map +1 -1
  209. package/dist/eu/vat.d.ts +2 -2
  210. package/dist/eu/vat.js +1 -0
  211. package/dist/eu/vat.js.map +1 -1
  212. package/dist/fi/hetu.d.ts +2 -2
  213. package/dist/fi/hetu.js +2 -10
  214. package/dist/fi/hetu.js.map +1 -1
  215. package/dist/fi/vat.d.ts +2 -2
  216. package/dist/fi/vat.js +3 -10
  217. package/dist/fi/vat.js.map +1 -1
  218. package/dist/fi/ytunnus.d.ts +2 -2
  219. package/dist/fi/ytunnus.js +2 -10
  220. package/dist/fi/ytunnus.js.map +1 -1
  221. package/dist/fr/nif.d.ts +2 -2
  222. package/dist/fr/nif.js +1 -9
  223. package/dist/fr/nif.js.map +1 -1
  224. package/dist/fr/nir.d.ts +2 -2
  225. package/dist/fr/nir.js +2 -14
  226. package/dist/fr/nir.js.map +1 -1
  227. package/dist/fr/siren.d.ts +2 -2
  228. package/dist/fr/siren.js +2 -10
  229. package/dist/fr/siren.js.map +1 -1
  230. package/dist/fr/siret.d.ts +2 -2
  231. package/dist/fr/siret.js +2 -11
  232. package/dist/fr/siret.js.map +1 -1
  233. package/dist/fr/tva.d.ts +2 -2
  234. package/dist/fr/tva.js +2 -12
  235. package/dist/fr/tva.js.map +1 -1
  236. package/dist/gb/nino.d.ts +12 -2
  237. package/dist/gb/nino.js +1 -10
  238. package/dist/gb/nino.js.map +1 -1
  239. package/dist/gb/sedol.d.ts +2 -2
  240. package/dist/gb/sedol.js +1 -11
  241. package/dist/gb/sedol.js.map +1 -1
  242. package/dist/gb/utr.d.ts +2 -2
  243. package/dist/gb/utr.js +2 -10
  244. package/dist/gb/utr.js.map +1 -1
  245. package/dist/gb/vat.d.ts +2 -2
  246. package/dist/gb/vat.js +2 -11
  247. package/dist/gb/vat.js.map +1 -1
  248. package/dist/ge/pin.d.ts +14 -2
  249. package/dist/ge/pin.js +1 -12
  250. package/dist/ge/pin.js.map +1 -1
  251. package/dist/gh/tin.d.ts +2 -2
  252. package/dist/gh/tin.js +1 -15
  253. package/dist/gh/tin.js.map +1 -1
  254. package/dist/gr/amka.d.ts +2 -2
  255. package/dist/gr/amka.js +3 -11
  256. package/dist/gr/amka.js.map +1 -1
  257. package/dist/gr/vat.d.ts +2 -2
  258. package/dist/gr/vat.js +1 -10
  259. package/dist/gr/vat.js.map +1 -1
  260. package/dist/gt/nit.d.ts +2 -2
  261. package/dist/gt/nit.js +1 -12
  262. package/dist/gt/nit.js.map +1 -1
  263. package/dist/hk/hkid.d.ts +2 -2
  264. package/dist/hk/hkid.js +1 -10
  265. package/dist/hk/hkid.js.map +1 -1
  266. package/dist/hr/vat.d.ts +2 -2
  267. package/dist/hr/vat.js +2 -9
  268. package/dist/hr/vat.js.map +1 -1
  269. package/dist/hu/vat.d.ts +2 -2
  270. package/dist/hu/vat.js +3 -10
  271. package/dist/hu/vat.js.map +1 -1
  272. package/dist/iban.d.ts +2 -2
  273. package/dist/iban.js +2 -8
  274. package/dist/iban.js.map +1 -1
  275. package/dist/id/npwp.d.ts +2 -2
  276. package/dist/id/npwp.js +3 -13
  277. package/dist/id/npwp.js.map +1 -1
  278. package/dist/ie/pps.d.ts +2 -2
  279. package/dist/ie/pps.js +1 -10
  280. package/dist/ie/pps.js.map +1 -1
  281. package/dist/ie/vat.d.ts +2 -2
  282. package/dist/ie/vat.js +1 -9
  283. package/dist/ie/vat.js.map +1 -1
  284. package/dist/il/idnr.d.ts +2 -2
  285. package/dist/il/idnr.js +2 -9
  286. package/dist/il/idnr.js.map +1 -1
  287. package/dist/in/aadhaar.d.ts +2 -2
  288. package/dist/in/aadhaar.js +2 -12
  289. package/dist/in/aadhaar.js.map +1 -1
  290. package/dist/in/gstin.d.ts +2 -2
  291. package/dist/in/gstin.js +1 -10
  292. package/dist/in/gstin.js.map +1 -1
  293. package/dist/in/pan.d.ts +15 -2
  294. package/dist/in/pan.js +1 -13
  295. package/dist/in/pan.js.map +1 -1
  296. package/dist/index.d.ts +2 -2
  297. package/dist/index.js +6 -6
  298. package/dist/iq/nid.d.ts +16 -2
  299. package/dist/iq/nid.js +2 -15
  300. package/dist/iq/nid.js.map +1 -1
  301. package/dist/ir/nid.d.ts +2 -2
  302. package/dist/ir/nid.js +2 -24
  303. package/dist/ir/nid.js.map +1 -1
  304. package/dist/is/kennitala.d.ts +2 -2
  305. package/dist/is/kennitala.js +2 -13
  306. package/dist/is/kennitala.js.map +1 -1
  307. package/dist/is/vsk.d.ts +9 -2
  308. package/dist/is/vsk.js +1 -7
  309. package/dist/is/vsk.js.map +1 -1
  310. package/dist/isin.d.ts +2 -2
  311. package/dist/isin.js +2 -12
  312. package/dist/isin.js.map +1 -1
  313. package/dist/it/codicefiscale.d.ts +2 -2
  314. package/dist/it/codicefiscale.js +1 -21
  315. package/dist/it/codicefiscale.js.map +1 -1
  316. package/dist/it/iva.d.ts +2 -2
  317. package/dist/it/iva.js +2 -9
  318. package/dist/it/iva.js.map +1 -1
  319. package/dist/jp/cn.d.ts +2 -2
  320. package/dist/jp/cn.js +1 -9
  321. package/dist/jp/cn.js.map +1 -1
  322. package/dist/jp/mynumber.d.ts +2 -2
  323. package/dist/jp/mynumber.js +1 -10
  324. package/dist/jp/mynumber.js.map +1 -1
  325. package/dist/kr/brn.d.ts +11 -2
  326. package/dist/kr/brn.js +1 -9
  327. package/dist/kr/brn.js.map +1 -1
  328. package/dist/kr/rrn.d.ts +2 -2
  329. package/dist/kr/rrn.js +2 -11
  330. package/dist/kr/rrn.js.map +1 -1
  331. package/dist/kw/civil.d.ts +2 -2
  332. package/dist/kw/civil.js +2 -14
  333. package/dist/kw/civil.js.map +1 -1
  334. package/dist/kz/iin.d.ts +2 -2
  335. package/dist/kz/iin.js +3 -18
  336. package/dist/kz/iin.js.map +1 -1
  337. package/dist/lei.d.ts +2 -2
  338. package/dist/lei.js +2 -11
  339. package/dist/lei.js.map +1 -1
  340. package/dist/li/peid.d.ts +11 -2
  341. package/dist/li/peid.js +1 -9
  342. package/dist/li/peid.js.map +1 -1
  343. package/dist/lk/nic.d.ts +2 -2
  344. package/dist/lk/nic.js +2 -14
  345. package/dist/lk/nic.js.map +1 -1
  346. package/dist/lt/asmens.d.ts +2 -2
  347. package/dist/lt/asmens.js +2 -1
  348. package/dist/lt/asmens.js.map +1 -1
  349. package/dist/lt/vat.d.ts +2 -2
  350. package/dist/lt/vat.js +2 -10
  351. package/dist/lt/vat.js.map +1 -1
  352. package/dist/lu/vat.d.ts +2 -2
  353. package/dist/lu/vat.js +2 -8
  354. package/dist/lu/vat.js.map +1 -1
  355. package/dist/luhn.d.ts +2 -2
  356. package/dist/luhn.js +2 -9
  357. package/dist/luhn.js.map +1 -1
  358. package/dist/lv/vat.d.ts +2 -2
  359. package/dist/lv/vat.js +2 -28
  360. package/dist/lv/vat.js.map +1 -1
  361. package/dist/ma/ice.d.ts +2 -2
  362. package/dist/ma/ice.js +2 -11
  363. package/dist/ma/ice.js.map +1 -1
  364. package/dist/mc/tva.d.ts +2 -2
  365. package/dist/mc/tva.js +1 -0
  366. package/dist/mc/tva.js.map +1 -1
  367. package/dist/md/idno.d.ts +2 -2
  368. package/dist/md/idno.js +1 -10
  369. package/dist/md/idno.js.map +1 -1
  370. package/dist/me/pib.d.ts +2 -2
  371. package/dist/me/pib.js +2 -10
  372. package/dist/me/pib.js.map +1 -1
  373. package/dist/mk/edb.d.ts +2 -2
  374. package/dist/mk/edb.js +2 -11
  375. package/dist/mk/edb.js.map +1 -1
  376. package/dist/mt/vat.d.ts +2 -2
  377. package/dist/mt/vat.js +3 -10
  378. package/dist/mt/vat.js.map +1 -1
  379. package/dist/mu/brn.d.ts +23 -2
  380. package/dist/mu/brn.js +1 -21
  381. package/dist/mu/brn.js.map +1 -1
  382. package/dist/mx/clabe.d.ts +2 -2
  383. package/dist/mx/clabe.js +1 -14
  384. package/dist/mx/clabe.js.map +1 -1
  385. package/dist/mx/curp.d.ts +2 -2
  386. package/dist/mx/curp.js +3 -17
  387. package/dist/mx/curp.js.map +1 -1
  388. package/dist/mx/rfc.d.ts +2 -2
  389. package/dist/mx/rfc.js +3 -19
  390. package/dist/mx/rfc.js.map +1 -1
  391. package/dist/my/nric.d.ts +2 -2
  392. package/dist/my/nric.js +2 -14
  393. package/dist/my/nric.js.map +1 -1
  394. package/dist/ng/nin.d.ts +13 -2
  395. package/dist/ng/nin.js +1 -11
  396. package/dist/ng/nin.js.map +1 -1
  397. package/dist/ni/ruc.d.ts +2 -2
  398. package/dist/ni/ruc.js +1 -23
  399. package/dist/ni/ruc.js.map +1 -1
  400. package/dist/nl/bsn.d.ts +2 -2
  401. package/dist/nl/bsn.js +2 -10
  402. package/dist/nl/bsn.js.map +1 -1
  403. package/dist/nl/kvk.d.ts +9 -2
  404. package/dist/nl/kvk.js +1 -7
  405. package/dist/nl/kvk.js.map +1 -1
  406. package/dist/nl/vat.d.ts +2 -2
  407. package/dist/nl/vat.js +1 -13
  408. package/dist/nl/vat.js.map +1 -1
  409. package/dist/no/fodselsnummer.d.ts +2 -2
  410. package/dist/no/fodselsnummer.js +2 -10
  411. package/dist/no/fodselsnummer.js.map +1 -1
  412. package/dist/no/mva.d.ts +2 -2
  413. package/dist/no/mva.js +1 -8
  414. package/dist/no/mva.js.map +1 -1
  415. package/dist/no/orgnr.d.ts +2 -2
  416. package/dist/no/orgnr.js +2 -8
  417. package/dist/no/orgnr.js.map +1 -1
  418. package/dist/nz/ird.d.ts +2 -2
  419. package/dist/nz/ird.js +2 -11
  420. package/dist/nz/ird.js.map +1 -1
  421. package/dist/pa/ruc.d.ts +2 -2
  422. package/dist/pa/ruc.js +1 -18
  423. package/dist/pa/ruc.js.map +1 -1
  424. package/dist/patterns.d.ts +8 -7
  425. package/dist/patterns.js +3 -5
  426. package/dist/patterns.js.map +1 -1
  427. package/dist/pe/ruc.d.ts +2 -2
  428. package/dist/pe/ruc.js +1 -15
  429. package/dist/pe/ruc.js.map +1 -1
  430. package/dist/ph/philid.d.ts +14 -2
  431. package/dist/ph/philid.js +1 -12
  432. package/dist/ph/philid.js.map +1 -1
  433. package/dist/pk/cnic.d.ts +14 -2
  434. package/dist/pk/cnic.js +1 -12
  435. package/dist/pk/cnic.js.map +1 -1
  436. package/dist/pl/nip.d.ts +2 -2
  437. package/dist/pl/nip.js +2 -10
  438. package/dist/pl/nip.js.map +1 -1
  439. package/dist/pl/pesel.d.ts +2 -2
  440. package/dist/pl/pesel.js +3 -13
  441. package/dist/pl/pesel.js.map +1 -1
  442. package/dist/pl/regon.d.ts +2 -2
  443. package/dist/pl/regon.js +2 -11
  444. package/dist/pl/regon.js.map +1 -1
  445. package/dist/pt/cc.d.ts +2 -2
  446. package/dist/pt/cc.js +1 -9
  447. package/dist/pt/cc.js.map +1 -1
  448. package/dist/pt/vat.d.ts +2 -2
  449. package/dist/pt/vat.js +3 -11
  450. package/dist/pt/vat.js.map +1 -1
  451. package/dist/ro/cnp.d.ts +2 -2
  452. package/dist/ro/cnp.js +4 -14
  453. package/dist/ro/cnp.js.map +1 -1
  454. package/dist/ro/vat.d.ts +2 -2
  455. package/dist/ro/vat.js +13 -11
  456. package/dist/ro/vat.js.map +1 -1
  457. package/dist/rs/pib.d.ts +2 -2
  458. package/dist/rs/pib.js +1 -9
  459. package/dist/rs/pib.js.map +1 -1
  460. package/dist/ru/inn.d.ts +2 -2
  461. package/dist/ru/inn.js +1 -11
  462. package/dist/ru/inn.js.map +1 -1
  463. package/dist/se/orgnr.d.ts +2 -2
  464. package/dist/se/orgnr.js +2 -9
  465. package/dist/se/orgnr.js.map +1 -1
  466. package/dist/se/personnummer.d.ts +2 -2
  467. package/dist/se/personnummer.js +7 -15
  468. package/dist/se/personnummer.js.map +1 -1
  469. package/dist/se/vat.d.ts +2 -2
  470. package/dist/se/vat.js +3 -10
  471. package/dist/se/vat.js.map +1 -1
  472. package/dist/sg/uen.d.ts +2 -2
  473. package/dist/sg/uen.js +1 -15
  474. package/dist/sg/uen.js.map +1 -1
  475. package/dist/si/emso.d.ts +2 -2
  476. package/dist/si/emso.js +3 -18
  477. package/dist/si/emso.js.map +1 -1
  478. package/dist/si/vat.d.ts +2 -2
  479. package/dist/si/vat.js +3 -12
  480. package/dist/si/vat.js.map +1 -1
  481. package/dist/sk/dic.d.ts +2 -2
  482. package/dist/sk/dic.js +1 -0
  483. package/dist/sk/dic.js.map +1 -1
  484. package/dist/sk/ico.d.ts +2 -2
  485. package/dist/sk/ico.js +1 -0
  486. package/dist/sk/ico.js.map +1 -1
  487. package/dist/sk/rc.d.ts +2 -2
  488. package/dist/sk/rc.js +1 -0
  489. package/dist/sk/rc.js.map +1 -1
  490. package/dist/th/tin.d.ts +2 -2
  491. package/dist/th/tin.js +1 -11
  492. package/dist/th/tin.js.map +1 -1
  493. package/dist/tr/tckimlik.d.ts +2 -2
  494. package/dist/tr/tckimlik.js +1 -20
  495. package/dist/tr/tckimlik.js.map +1 -1
  496. package/dist/tr/vkn.d.ts +2 -2
  497. package/dist/tr/vkn.js +1 -20
  498. package/dist/tr/vkn.js.map +1 -1
  499. package/dist/tw/ubn.d.ts +2 -2
  500. package/dist/tw/ubn.js +1 -11
  501. package/dist/tw/ubn.js.map +1 -1
  502. package/dist/types.d.ts +26 -4
  503. package/dist/ua/edrpou.d.ts +2 -2
  504. package/dist/ua/edrpou.js +1 -11
  505. package/dist/ua/edrpou.js.map +1 -1
  506. package/dist/us/ein.d.ts +12 -2
  507. package/dist/us/ein.js +1 -10
  508. package/dist/us/ein.js.map +1 -1
  509. package/dist/us/itin.d.ts +13 -2
  510. package/dist/us/itin.js +1 -11
  511. package/dist/us/itin.js.map +1 -1
  512. package/dist/us/rtn.d.ts +2 -2
  513. package/dist/us/rtn.js +3 -18
  514. package/dist/us/rtn.js.map +1 -1
  515. package/dist/us/ssn.d.ts +13 -2
  516. package/dist/us/ssn.js +1 -11
  517. package/dist/us/ssn.js.map +1 -1
  518. package/dist/uy/rut.d.ts +2 -2
  519. package/dist/uy/rut.js +1 -14
  520. package/dist/uy/rut.js.map +1 -1
  521. package/dist/ve/rif.d.ts +2 -2
  522. package/dist/ve/rif.js +2 -15
  523. package/dist/ve/rif.js.map +1 -1
  524. package/dist/vn/mst.d.ts +2 -2
  525. package/dist/vn/mst.js +1 -12
  526. package/dist/vn/mst.js.map +1 -1
  527. package/dist/za/idnr.d.ts +2 -2
  528. package/dist/za/idnr.js +3 -16
  529. package/dist/za/idnr.js.map +1 -1
  530. package/package.json +22 -12
  531. package/src/_checksums/mod1110.ts +1 -1
  532. package/src/ad/nrt.ts +7 -3
  533. package/src/ae/eid.ts +7 -3
  534. package/src/ai/tin.ts +7 -3
  535. package/src/al/nipt.ts +7 -3
  536. package/src/am/tin.ts +7 -3
  537. package/src/ar/cbu.ts +7 -3
  538. package/src/ar/cuit.ts +7 -3
  539. package/src/ar/dni.ts +7 -3
  540. package/src/at/businessid.ts +7 -3
  541. package/src/at/tin.ts +7 -3
  542. package/src/at/uid.ts +7 -3
  543. package/src/at/vnr.ts +37 -9
  544. package/src/au/abn.ts +7 -3
  545. package/src/au/acn.ts +7 -3
  546. package/src/au/tfn.ts +7 -3
  547. package/src/az/voen.ts +7 -3
  548. package/src/ba/jmbg.ts +8 -7
  549. package/src/bd/nid.ts +7 -3
  550. package/src/be/bis.ts +8 -4
  551. package/src/be/nn.ts +7 -3
  552. package/src/be/vat.ts +7 -3
  553. package/src/bg/egn.ts +8 -7
  554. package/src/bg/pnf.ts +7 -3
  555. package/src/bg/vat.ts +8 -3
  556. package/src/bh/cpr.ts +7 -3
  557. package/src/bic.ts +7 -3
  558. package/src/br/cnpj.ts +7 -3
  559. package/src/br/cpf.ts +7 -3
  560. package/src/by/unp.ts +10 -5
  561. package/src/bz/tin.ts +7 -3
  562. package/src/ca/bn.ts +7 -3
  563. package/src/ca/sin.ts +7 -3
  564. package/src/ch/ssn.ts +7 -3
  565. package/src/ch/uid.ts +7 -3
  566. package/src/ch/vat.ts +9 -5
  567. package/src/cl/rut.ts +7 -3
  568. package/src/cn/ric.ts +8 -7
  569. package/src/cn/uscc.ts +7 -3
  570. package/src/co/nit.ts +8 -4
  571. package/src/cr/cpf.ts +7 -3
  572. package/src/creditcard.ts +10 -6
  573. package/src/cu/ni.ts +8 -7
  574. package/src/cy/vat.ts +7 -3
  575. package/src/cz/dic.ts +9 -4
  576. package/src/cz/ico.ts +7 -3
  577. package/src/cz/rc.ts +8 -7
  578. package/src/de/handelsreg.ts +7 -3
  579. package/src/de/idnr.ts +7 -3
  580. package/src/de/stnr.ts +7 -3
  581. package/src/de/svnr.ts +7 -3
  582. package/src/de/vat.ts +7 -3
  583. package/src/dk/cpr.ts +8 -7
  584. package/src/dk/cvr.ts +7 -3
  585. package/src/dk/vat.ts +8 -3
  586. package/src/do/rnc.ts +7 -3
  587. package/src/ec/ruc.ts +7 -3
  588. package/src/ee/ik.ts +8 -7
  589. package/src/ee/registrikood.ts +8 -4
  590. package/src/ee/vat.ts +7 -3
  591. package/src/eg/tn.ts +7 -3
  592. package/src/es/cif.ts +8 -4
  593. package/src/es/dni.ts +7 -3
  594. package/src/es/nie.ts +8 -4
  595. package/src/es/nss.ts +7 -3
  596. package/src/es/vat.ts +13 -5
  597. package/src/eu/vat.ts +10 -6
  598. package/src/fi/hetu.ts +8 -7
  599. package/src/fi/vat.ts +8 -3
  600. package/src/fi/ytunnus.ts +7 -3
  601. package/src/fr/nif.ts +7 -3
  602. package/src/fr/nir.ts +8 -7
  603. package/src/fr/siren.ts +7 -3
  604. package/src/fr/siret.ts +7 -3
  605. package/src/fr/tva.ts +7 -3
  606. package/src/gb/nino.ts +7 -3
  607. package/src/gb/sedol.ts +7 -3
  608. package/src/gb/utr.ts +7 -3
  609. package/src/gb/vat.ts +7 -3
  610. package/src/ge/pin.ts +7 -3
  611. package/src/gh/tin.ts +7 -3
  612. package/src/gr/amka.ts +7 -3
  613. package/src/gr/vat.ts +7 -3
  614. package/src/gt/nit.ts +7 -3
  615. package/src/hk/hkid.ts +7 -3
  616. package/src/hr/vat.ts +7 -3
  617. package/src/hu/vat.ts +8 -3
  618. package/src/iban.ts +7 -3
  619. package/src/id/npwp.ts +7 -3
  620. package/src/ie/pps.ts +7 -3
  621. package/src/ie/vat.ts +7 -3
  622. package/src/il/idnr.ts +7 -3
  623. package/src/in/aadhaar.ts +7 -3
  624. package/src/in/gstin.ts +7 -3
  625. package/src/in/pan.ts +7 -3
  626. package/src/index.ts +3 -0
  627. package/src/iq/nid.ts +7 -3
  628. package/src/ir/nid.ts +7 -3
  629. package/src/is/kennitala.ts +7 -3
  630. package/src/is/vsk.ts +7 -3
  631. package/src/isin.ts +7 -3
  632. package/src/it/codicefiscale.ts +11 -7
  633. package/src/it/iva.ts +7 -3
  634. package/src/jp/cn.ts +7 -3
  635. package/src/jp/mynumber.ts +7 -3
  636. package/src/kr/brn.ts +7 -3
  637. package/src/kr/rrn.ts +8 -7
  638. package/src/kw/civil.ts +8 -7
  639. package/src/kz/iin.ts +8 -8
  640. package/src/lei.ts +7 -3
  641. package/src/li/peid.ts +7 -3
  642. package/src/lk/nic.ts +8 -7
  643. package/src/lt/asmens.ts +8 -4
  644. package/src/lt/vat.ts +8 -3
  645. package/src/lu/vat.ts +8 -3
  646. package/src/luhn.ts +7 -3
  647. package/src/lv/vat.ts +7 -3
  648. package/src/ma/ice.ts +7 -3
  649. package/src/mc/tva.ts +9 -5
  650. package/src/md/idno.ts +7 -3
  651. package/src/me/pib.ts +7 -3
  652. package/src/mk/edb.ts +7 -3
  653. package/src/mt/vat.ts +8 -3
  654. package/src/mu/brn.ts +7 -3
  655. package/src/mx/clabe.ts +7 -3
  656. package/src/mx/curp.ts +9 -8
  657. package/src/mx/rfc.ts +8 -4
  658. package/src/my/nric.ts +8 -7
  659. package/src/ng/nin.ts +7 -3
  660. package/src/ni/ruc.ts +7 -3
  661. package/src/nl/bsn.ts +7 -3
  662. package/src/nl/kvk.ts +7 -3
  663. package/src/nl/vat.ts +7 -3
  664. package/src/no/fodselsnummer.ts +11 -7
  665. package/src/no/mva.ts +9 -5
  666. package/src/no/orgnr.ts +7 -3
  667. package/src/nz/ird.ts +8 -4
  668. package/src/pa/ruc.ts +7 -3
  669. package/src/patterns.ts +49 -18
  670. package/src/pe/ruc.ts +7 -3
  671. package/src/ph/philid.ts +7 -3
  672. package/src/pk/cnic.ts +7 -3
  673. package/src/pl/nip.ts +7 -3
  674. package/src/pl/pesel.ts +8 -7
  675. package/src/pl/regon.ts +7 -3
  676. package/src/pt/cc.ts +7 -3
  677. package/src/pt/vat.ts +8 -3
  678. package/src/ro/cnp.ts +15 -8
  679. package/src/ro/vat.ts +8 -3
  680. package/src/rs/pib.ts +7 -3
  681. package/src/ru/inn.ts +7 -3
  682. package/src/se/orgnr.ts +7 -3
  683. package/src/se/personnummer.ts +35 -33
  684. package/src/se/vat.ts +8 -3
  685. package/src/sg/uen.ts +7 -3
  686. package/src/si/emso.ts +8 -7
  687. package/src/si/vat.ts +8 -3
  688. package/src/sk/dic.ts +8 -4
  689. package/src/sk/ico.ts +3 -2
  690. package/src/sk/rc.ts +6 -2
  691. package/src/th/tin.ts +7 -3
  692. package/src/tr/tckimlik.ts +7 -3
  693. package/src/tr/vkn.ts +7 -3
  694. package/src/tw/ubn.ts +7 -3
  695. package/src/types.ts +34 -3
  696. package/src/ua/edrpou.ts +7 -3
  697. package/src/us/ein.ts +7 -3
  698. package/src/us/itin.ts +7 -3
  699. package/src/us/rtn.ts +16 -8
  700. package/src/us/ssn.ts +7 -3
  701. package/src/uy/rut.ts +7 -3
  702. package/src/ve/rif.ts +8 -6
  703. package/src/vn/mst.ts +7 -3
  704. package/src/za/idnr.ts +8 -7
package/src/dk/vat.ts CHANGED
@@ -11,14 +11,17 @@
11
11
  * for CVR.
12
12
  */
13
13
 
14
+ import type {
15
+ ValidateResult,
16
+ CountryValidator,
17
+ } from "../types";
18
+
14
19
  import { weightedSum } from "#checksums/weighted-sum";
15
20
  import { clean } from "#util/clean";
16
21
  import { randomDigits, randomInt } from "#util/generate";
17
22
  import { err } from "#util/result";
18
23
  import { isdigits } from "#util/strings";
19
24
 
20
- import type { ValidateResult, Validator } from "../types";
21
-
22
25
  const WEIGHTS = [2, 7, 6, 5, 4, 3, 2, 1];
23
26
 
24
27
  const compact = (value: string): string => {
@@ -71,15 +74,17 @@ const generate = (): string => {
71
74
  };
72
75
 
73
76
  /** Danish VAT Number. */
74
- const vat: Validator = {
77
+ const vat: CountryValidator<"DK"> = {
75
78
  name: "Danish VAT Number",
76
79
  localName: "Momsregistreringsnummer",
77
80
  abbreviation: "CVR",
78
81
  aliases: ["momsnummer", "SE-nummer"] as const,
79
82
  candidatePattern: "DK\\d{8}",
83
+ scope: "country",
80
84
  country: "DK",
81
85
  entityType: "company",
82
86
  sourceUrl: "https://erhvervsstyrelsen.dk/",
87
+ lengths: [8] as const,
83
88
  examples: ["13585628"] as const,
84
89
  compact,
85
90
  format,
package/src/do/rnc.ts CHANGED
@@ -14,14 +14,17 @@
14
14
  * @see https://dgii.gov.do/
15
15
  */
16
16
 
17
+ import type {
18
+ ValidateResult,
19
+ CountryValidator,
20
+ } from "../types";
21
+
17
22
  import { luhnValidate } from "#checksums/luhn";
18
23
  import { clean } from "#util/clean";
19
24
  import { randomDigits } from "#util/generate";
20
25
  import { err } from "#util/result";
21
26
  import { isdigits } from "#util/strings";
22
27
 
23
- import type { ValidateResult, Validator } from "../types";
24
-
25
28
  /**
26
29
  * Weights for the 9-digit RNC check digit.
27
30
  * Applied to positions 0-7; check digit is at
@@ -102,7 +105,7 @@ const generate = (): string => {
102
105
  *
103
106
  * Examples sourced from python-stdnum test suite.
104
107
  */
105
- const rnc: Validator = {
108
+ const rnc: CountryValidator<"DO"> = {
106
109
  name: "Dominican Republic Tax ID",
107
110
  localName: "Registro Nacional del Contribuyente",
108
111
  abbreviation: "RNC",
@@ -111,6 +114,7 @@ const rnc: Validator = {
111
114
  "Registro Nacional del Contribuyente",
112
115
  ] as const,
113
116
  candidatePattern: "\\d{9}",
117
+ scope: "country",
114
118
  country: "DO",
115
119
  entityType: "any",
116
120
  lengths: [9, 11] as const,
package/src/ec/ruc.ts CHANGED
@@ -17,13 +17,16 @@
17
17
  * @see https://www.sri.gob.ec/
18
18
  */
19
19
 
20
+ import type {
21
+ ValidateResult,
22
+ CountryValidator,
23
+ } from "../types";
24
+
20
25
  import { clean } from "#util/clean";
21
26
  import { randomDigits, randomInt } from "#util/generate";
22
27
  import { err } from "#util/result";
23
28
  import { isdigits } from "#util/strings";
24
29
 
25
- import type { ValidateResult, Validator } from "../types";
26
-
27
30
  const compact = (value: string): string =>
28
31
  clean(value, " -");
29
32
 
@@ -169,7 +172,7 @@ const generate = (): string => {
169
172
  };
170
173
 
171
174
  /** Ecuadorian tax identification number. */
172
- const ruc: Validator = {
175
+ const ruc: CountryValidator<"EC"> = {
173
176
  name: "Registro Único de Contribuyentes",
174
177
  localName: "Registro Único de Contribuyentes",
175
178
  abbreviation: "RUC",
@@ -178,6 +181,7 @@ const ruc: Validator = {
178
181
  "Registro Único de Contribuyentes",
179
182
  ] as const,
180
183
  candidatePattern: "\\d{13}",
184
+ scope: "country",
181
185
  country: "EC",
182
186
  entityType: "any",
183
187
  description:
package/src/ee/ik.ts CHANGED
@@ -17,6 +17,12 @@
17
17
  * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf
18
18
  */
19
19
 
20
+ import type {
21
+ ParsedPersonId,
22
+ ValidateResult,
23
+ CountryValidator,
24
+ } from "../types";
25
+
20
26
  import { weightedSum } from "#checksums/weighted-sum";
21
27
  import { clean } from "#util/clean";
22
28
  import { isValidDate } from "#util/date";
@@ -24,12 +30,6 @@ import { randomInt } from "#util/generate";
24
30
  import { err } from "#util/result";
25
31
  import { isdigits } from "#util/strings";
26
32
 
27
- import type {
28
- ParsedPersonId,
29
- ValidateResult,
30
- Validator,
31
- } from "../types";
32
-
33
33
  const WEIGHTS_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1] as const;
34
34
  const WEIGHTS_2 = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3] as const;
35
35
 
@@ -144,12 +144,13 @@ const generate = (): string => {
144
144
  };
145
145
 
146
146
  /** Estonian Personal Identification Code. */
147
- const ik: Validator<ParsedPersonId> = {
147
+ const ik: CountryValidator<"EE", ParsedPersonId> = {
148
148
  name: "Estonian Personal ID",
149
149
  localName: "Isikukood",
150
150
  abbreviation: "IK",
151
151
  aliases: ["isikukood", "IK"] as const,
152
152
  candidatePattern: "[1-6]\\d{10}",
153
+ scope: "country",
153
154
  country: "EE",
154
155
  entityType: "person",
155
156
  sourceUrl:
@@ -7,14 +7,17 @@
7
7
  * @see https://www.rik.ee/
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+ import { twoPassCheck } from "./ik";
15
+
10
16
  import { clean } from "#util/clean";
11
17
  import { randomDigits, randomPick } from "#util/generate";
12
18
  import { err } from "#util/result";
13
19
  import { isdigits } from "#util/strings";
14
20
 
15
- import type { ValidateResult, Validator } from "../types";
16
- import { twoPassCheck } from "./ik";
17
-
18
21
  const VALID_FIRST = new Set(["1", "7", "8", "9"]);
19
22
 
20
23
  const compact = (value: string): string =>
@@ -62,12 +65,13 @@ const generate = (): string => {
62
65
  };
63
66
 
64
67
  /** Estonian Company Registration Code. */
65
- const registrikood: Validator = {
68
+ const registrikood: CountryValidator<"EE"> = {
66
69
  name: "Estonian Company Registration Code",
67
70
  localName: "Registrikood",
68
71
  abbreviation: "Registrikood",
69
72
  aliases: ["registrikood"] as const,
70
73
  candidatePattern: "\\d{8}",
74
+ scope: "country",
71
75
  country: "EE",
72
76
  entityType: "company",
73
77
  sourceUrl: "https://www.rik.ee/",
package/src/ee/vat.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.emta.ee/en
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { weightedSum } from "#checksums/weighted-sum";
12
17
  import { clean } from "#util/clean";
13
18
  import { randomDigits } from "#util/generate";
14
19
  import { err } from "#util/result";
15
20
  import { isdigits } from "#util/strings";
16
21
 
17
- import type { ValidateResult, Validator } from "../types";
18
-
19
22
  const WEIGHTS = [3, 7, 1, 3, 7, 1, 3, 7, 1];
20
23
 
21
24
  const compact = (value: string): string => {
@@ -62,7 +65,7 @@ const generate = (): string => {
62
65
  };
63
66
 
64
67
  /** Estonian VAT Number. */
65
- const vat: Validator = {
68
+ const vat: CountryValidator<"EE"> = {
66
69
  name: "Estonian VAT Number",
67
70
  localName: "Käibemaksukohustuslase number",
68
71
  abbreviation: "KMKR",
@@ -71,6 +74,7 @@ const vat: Validator = {
71
74
  "KMKR",
72
75
  ] as const,
73
76
  candidatePattern: "EE\\d{9}",
77
+ scope: "country",
74
78
  country: "EE",
75
79
  entityType: "company",
76
80
  sourceUrl: "https://www.emta.ee/en",
package/src/eg/tn.ts CHANGED
@@ -11,13 +11,16 @@ const generate = (): string => randomDigits(9);
11
11
  * @see https://www.eta.gov.eg/
12
12
  */
13
13
 
14
+ import type {
15
+ ValidateResult,
16
+ CountryValidator,
17
+ } from "../types";
18
+
14
19
  import { clean } from "#util/clean";
15
20
  import { randomDigits } from "#util/generate";
16
21
  import { err } from "#util/result";
17
22
  import { isdigits } from "#util/strings";
18
23
 
19
- import type { ValidateResult, Validator } from "../types";
20
-
21
24
  /**
22
25
  * Arabic-Indic and Extended Arabic-Indic digit map.
23
26
  * Converts Arabic numeral characters to ASCII digits.
@@ -81,12 +84,13 @@ const format = (value: string): string => {
81
84
  };
82
85
 
83
86
  /** Egyptian Tax Registration Number. */
84
- const tn: Validator = {
87
+ const tn: CountryValidator<"EG"> = {
85
88
  name: "Egyptian Tax Registration Number",
86
89
  localName: "الرقم الضريبي",
87
90
  abbreviation: "TN",
88
91
  aliases: ["الرقم الضريبي", "tax number"] as const,
89
92
  candidatePattern: "\\d{9}",
93
+ scope: "country",
90
94
  country: "EG",
91
95
  entityType: "any",
92
96
  compact,
package/src/es/cif.ts CHANGED
@@ -9,14 +9,17 @@
9
9
  * @see https://www.agenciatributaria.es/
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+ import { cifChecksum } from "./vat";
17
+
12
18
  import { clean } from "#util/clean";
13
19
  import { randomChar, randomDigits } from "#util/generate";
14
20
  import { err } from "#util/result";
15
21
  import { isdigits } from "#util/strings";
16
22
 
17
- import type { ValidateResult, Validator } from "../types";
18
- import { cifChecksum } from "./vat";
19
-
20
23
  const CIF_PREFIXES = "ABCDEFGHJNPQRSUVW";
21
24
  const CIF_LETTERS = "JABCDEFGHI";
22
25
 
@@ -81,7 +84,7 @@ const generate = (): string => {
81
84
  };
82
85
 
83
86
  /** Spanish Company Tax ID (CIF). */
84
- const cif: Validator = {
87
+ const cif: CountryValidator<"ES"> = {
85
88
  name: "Spanish Company Tax ID",
86
89
  localName: "Código de Identificación Fiscal",
87
90
  abbreviation: "CIF",
@@ -90,6 +93,7 @@ const cif: Validator = {
90
93
  "código de identificación fiscal",
91
94
  ] as const,
92
95
  candidatePattern: "[A-HJNP-SUVW]\\d{7}[\\dA-J]",
96
+ scope: "country",
93
97
  country: "ES",
94
98
  entityType: "company",
95
99
  sourceUrl: "https://www.agenciatributaria.es/",
package/src/es/dni.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/dni/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { clean } from "#util/clean";
12
17
  import { randomDigits } from "#util/generate";
13
18
  import { err } from "#util/result";
14
19
  import { isdigits } from "#util/strings";
15
20
 
16
- import type { ValidateResult, Validator } from "../types";
17
-
18
21
  const CHECK_LETTERS = "TRWAGMYFPDXBNJZSQVHLCKE";
19
22
 
20
23
  const compact = (value: string): string =>
@@ -59,7 +62,7 @@ const generate = (): string => {
59
62
  };
60
63
 
61
64
  /** Spanish National Identity Document. */
62
- const dni: Validator = {
65
+ const dni: CountryValidator<"ES"> = {
63
66
  name: "Spanish National ID",
64
67
  localName: "Documento Nacional de Identidad",
65
68
  abbreviation: "DNI",
@@ -69,6 +72,7 @@ const dni: Validator = {
69
72
  "documento nacional de identidad",
70
73
  ] as const,
71
74
  candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[A-Z]",
75
+ scope: "country",
72
76
  country: "ES",
73
77
  entityType: "person",
74
78
  sourceUrl:
package/src/es/nie.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.interior.gob.es/opencms/es/servicios-al-ciudadano/tramites-y-gestiones/nie/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+ import { CHECK_LETTERS } from "./dni";
16
+
11
17
  import { clean } from "#util/clean";
12
18
  import { randomDigits, randomPick } from "#util/generate";
13
19
  import { err } from "#util/result";
14
20
  import { isdigits } from "#util/strings";
15
21
 
16
- import type { ValidateResult, Validator } from "../types";
17
- import { CHECK_LETTERS } from "./dni";
18
-
19
22
  const PREFIX_MAP: Record<string, string> = {
20
23
  X: "0",
21
24
  Y: "1",
@@ -82,7 +85,7 @@ const generate = (): string => {
82
85
  };
83
86
 
84
87
  /** Spanish Foreigner Identification Number. */
85
- const nie: Validator = {
88
+ const nie: CountryValidator<"ES"> = {
86
89
  name: "Spanish Foreigner ID",
87
90
  localName: "Número de Identidad de Extranjero",
88
91
  abbreviation: "NIE",
@@ -92,6 +95,7 @@ const nie: Validator = {
92
95
  "número de identidad de extranjero",
93
96
  ] as const,
94
97
  candidatePattern: "[XYZ]-?\\d{7}-?[A-Z]",
98
+ scope: "country",
95
99
  country: "ES",
96
100
  entityType: "person",
97
101
  sourceUrl:
package/src/es/nss.ts CHANGED
@@ -15,13 +15,16 @@
15
15
  * @see https://intervia.com/doc/validar-numeros-de-la-seguridad-social/
16
16
  */
17
17
 
18
+ import type {
19
+ ValidateResult,
20
+ CountryValidator,
21
+ } from "../types";
22
+
18
23
  import { clean } from "#util/clean";
19
24
  import { randomDigits } from "#util/generate";
20
25
  import { err } from "#util/result";
21
26
  import { isdigits } from "#util/strings";
22
27
 
23
- import type { ValidateResult, Validator } from "../types";
24
-
25
28
  const compact = (value: string): string =>
26
29
  clean(value, " -/.");
27
30
 
@@ -85,12 +88,13 @@ const generate = (): string => {
85
88
  };
86
89
 
87
90
  /** Spanish Social Security Number. */
88
- const nss: Validator = {
91
+ const nss: CountryValidator<"ES"> = {
89
92
  name: "Spanish Social Security Number",
90
93
  localName: "Número de la Seguridad Social",
91
94
  abbreviation: "NSS",
92
95
  aliases: ["NSS", "número de seguridad social"] as const,
93
96
  candidatePattern: "\\d{12}",
97
+ scope: "country",
94
98
  country: "ES",
95
99
  entityType: "person",
96
100
  description:
package/src/es/vat.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.agenciatributaria.es/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { clean } from "#util/clean";
12
17
  import { randomDigits } from "#util/generate";
13
18
  import { err } from "#util/result";
14
19
  import { isdigits } from "#util/strings";
15
20
 
16
- import type { ValidateResult, Validator } from "../types";
17
-
18
21
  const DNI_LETTERS = "TRWAGMYFPDXBNJZSQVHLCKE";
19
22
  const CIF_LETTERS = "JABCDEFGHI";
20
23
 
@@ -70,8 +73,12 @@ const validate = (value: string): ValidateResult => {
70
73
 
71
74
  // NIE: X/Y/Z + 7 digits + letter
72
75
  if (first === "X" || first === "Y" || first === "Z") {
73
- const prefix =
74
- first === "X" ? "0" : first === "Y" ? "1" : "2";
76
+ let prefix = "2";
77
+ if (first === "X") {
78
+ prefix = "0";
79
+ } else if (first === "Y") {
80
+ prefix = "1";
81
+ }
75
82
  const digits = prefix + v.slice(1, 8);
76
83
  if (!isdigits(digits) || !isdigits(v.slice(1, 8))) {
77
84
  return err(
@@ -154,7 +161,7 @@ const generate = (): string => {
154
161
  };
155
162
 
156
163
  /** Spanish VAT Number. */
157
- const vat: Validator = {
164
+ const vat: CountryValidator<"ES"> = {
158
165
  name: "Spanish VAT Number",
159
166
  localName: "Número de Identificación Fiscal",
160
167
  abbreviation: "NIF",
@@ -164,6 +171,7 @@ const vat: Validator = {
164
171
  "número de identificación fiscal",
165
172
  ] as const,
166
173
  candidatePattern: "ES[A-Z]\\d{7}[A-Z\\d]",
174
+ scope: "country",
167
175
  country: "ES",
168
176
  entityType: "any",
169
177
  sourceUrl: "https://www.agenciatributaria.es/",
package/src/eu/vat.ts CHANGED
@@ -12,10 +12,6 @@
12
12
  * @see https://ec.europa.eu/taxation_customs/vies/
13
13
  */
14
14
 
15
- import { clean } from "#util/clean";
16
- import { randomInt } from "#util/generate";
17
- import { err } from "#util/result";
18
-
19
15
  import atUid from "../at/uid";
20
16
  import beVat from "../be/vat";
21
17
  import bgVat from "../bg/vat";
@@ -44,7 +40,14 @@ import roVat from "../ro/vat";
44
40
  import seVat from "../se/vat";
45
41
  import siVat from "../si/vat";
46
42
  import skDic from "../sk/dic";
47
- import type { Validator, ValidateResult } from "../types";
43
+ import type {
44
+ GlobalValidator,
45
+ ValidateResult,
46
+ } from "../types";
47
+
48
+ import { clean } from "#util/clean";
49
+ import { randomInt } from "#util/generate";
50
+ import { err } from "#util/result";
48
51
 
49
52
  type CountryValidator = {
50
53
  compact: (value: string) => string;
@@ -197,7 +200,8 @@ const generate = (): string => {
197
200
  };
198
201
 
199
202
  /** European Union VAT Number. */
200
- const euVat: Validator = {
203
+ const euVat: GlobalValidator = {
204
+ scope: "global",
201
205
  name: "EU VAT Number",
202
206
  localName: "EU VAT Number",
203
207
  abbreviation: "EU VAT",
package/src/fi/hetu.ts CHANGED
@@ -8,18 +8,18 @@
8
8
  * @see https://dvv.fi/en/personal-identity-code
9
9
  */
10
10
 
11
+ import type {
12
+ ParsedPersonId,
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
11
17
  import { clean } from "#util/clean";
12
18
  import { isValidDate } from "#util/date";
13
19
  import { randomInt } from "#util/generate";
14
20
  import { err } from "#util/result";
15
21
  import { isdigits } from "#util/strings";
16
22
 
17
- import type {
18
- ParsedPersonId,
19
- ValidateResult,
20
- Validator,
21
- } from "../types";
22
-
23
23
  const CHECK_CHARS = "0123456789ABCDEFHJKLMNPRSTUVWXY";
24
24
 
25
25
  const SEPARATORS_1800 = new Set(["+"]);
@@ -173,7 +173,7 @@ const generate = (): string => {
173
173
  };
174
174
 
175
175
  /** Finnish Personal Identity Code. */
176
- const hetu: Validator<ParsedPersonId> = {
176
+ const hetu: CountryValidator<"FI", ParsedPersonId> = {
177
177
  name: "Finnish Personal ID",
178
178
  localName: "Henkilötunnus",
179
179
  abbreviation: "HETU",
@@ -183,6 +183,7 @@ const hetu: Validator<ParsedPersonId> = {
183
183
  "sosiaaliturvatunnus",
184
184
  ] as const,
185
185
  candidatePattern: "\\d{6}[-+A]\\d{3}[\\dA-Z]",
186
+ scope: "country",
186
187
  country: "FI",
187
188
  entityType: "person",
188
189
  sourceUrl: "https://dvv.fi/en/personal-identity-code",
package/src/fi/vat.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.ytj.fi/en/index/businessid.html
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { weightedSum } from "#checksums/weighted-sum";
12
17
  import { clean } from "#util/clean";
13
18
  import { randomDigits } from "#util/generate";
14
19
  import { err } from "#util/result";
15
20
  import { isdigits } from "#util/strings";
16
21
 
17
- import type { ValidateResult, Validator } from "../types";
18
-
19
22
  const WEIGHTS = [7, 9, 10, 5, 8, 4, 2, 1];
20
23
 
21
24
  const compact = (value: string): string => {
@@ -62,15 +65,17 @@ const generate = (): string => {
62
65
  };
63
66
 
64
67
  /** Finnish VAT Number. */
65
- const vat: Validator = {
68
+ const vat: CountryValidator<"FI"> = {
66
69
  name: "Finnish VAT Number",
67
70
  localName: "Arvonlisäveronumero",
68
71
  abbreviation: "ALV nro",
69
72
  aliases: ["ALV-numero", "Y-tunnus"] as const,
70
73
  candidatePattern: "FI\\d{8}",
74
+ scope: "country",
71
75
  country: "FI",
72
76
  entityType: "company",
73
77
  sourceUrl: "https://www.ytj.fi/en/index/businessid.html",
78
+ lengths: [8] as const,
74
79
  examples: ["20774740"] as const,
75
80
  compact,
76
81
  format,
package/src/fi/ytunnus.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.ytj.fi/en/index/businessid.html
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { weightedSum } from "#checksums/weighted-sum";
12
17
  import { clean } from "#util/clean";
13
18
  import { randomDigits } from "#util/generate";
14
19
  import { err } from "#util/result";
15
20
  import { isdigits } from "#util/strings";
16
21
 
17
- import type { ValidateResult, Validator } from "../types";
18
-
19
22
  const WEIGHTS = [7, 9, 10, 5, 8, 4, 2, 1];
20
23
 
21
24
  const compact = (value: string): string =>
@@ -59,7 +62,7 @@ const generate = (): string => {
59
62
  };
60
63
 
61
64
  /** Finnish Business ID. */
62
- const ytunnus: Validator = {
65
+ const ytunnus: CountryValidator<"FI"> = {
63
66
  name: "Finnish Business ID",
64
67
  localName: "Y-tunnus",
65
68
  abbreviation: "Y-tunnus",
@@ -69,6 +72,7 @@ const ytunnus: Validator = {
69
72
  "FO-nummer",
70
73
  ] as const,
71
74
  candidatePattern: "\\d{7}-\\d",
75
+ scope: "country",
72
76
  country: "FI",
73
77
  entityType: "company",
74
78
  sourceUrl: "https://www.ytj.fi/en/index/businessid.html",
package/src/fr/nif.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.impots.gouv.fr/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { clean } from "#util/clean";
12
17
  import { randomDigits, randomInt } from "#util/generate";
13
18
  import { err } from "#util/result";
14
19
  import { isdigits } from "#util/strings";
15
20
 
16
- import type { ValidateResult, Validator } from "../types";
17
-
18
21
  const compact = (value: string): string =>
19
22
  clean(value, " -");
20
23
 
@@ -69,7 +72,7 @@ const generate = (): string => {
69
72
  };
70
73
 
71
74
  /** French Tax Identification Number. */
72
- const nif: Validator = {
75
+ const nif: CountryValidator<"FR"> = {
73
76
  name: "French Tax ID",
74
77
  localName: "Numéro d'Identification Fiscale",
75
78
  abbreviation: "NIF",
@@ -79,6 +82,7 @@ const nif: Validator = {
79
82
  "numéro d'identification fiscale",
80
83
  ] as const,
81
84
  candidatePattern: "\\d{13}",
85
+ scope: "country",
82
86
  country: "FR",
83
87
  entityType: "person",
84
88
  sourceUrl: "https://www.impots.gouv.fr/",