@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/fr/nir.ts CHANGED
@@ -12,17 +12,17 @@
12
12
  * @see https://en.wikipedia.org/wiki/INSEE_code
13
13
  */
14
14
 
15
- import { clean } from "#util/clean";
16
- import { resolveTwoDigitYear } from "#util/date";
17
- import { randomInt } from "#util/generate";
18
- import { err } from "#util/result";
19
-
20
15
  import type {
21
16
  ParsedPersonId,
22
17
  ValidateResult,
23
- Validator,
18
+ CountryValidator,
24
19
  } from "../types";
25
20
 
21
+ import { clean } from "#util/clean";
22
+ import { resolveTwoDigitYear } from "#util/date";
23
+ import { randomInt } from "#util/generate";
24
+ import { err } from "#util/result";
25
+
26
26
  const compact = (value: string): string =>
27
27
  clean(value, " -.");
28
28
 
@@ -165,7 +165,7 @@ const generate = (): string => {
165
165
  };
166
166
 
167
167
  /** French Social Security Number. */
168
- const nir: Validator<ParsedPersonId> = {
168
+ const nir: CountryValidator<"FR", ParsedPersonId> = {
169
169
  name: "French Social Security Number",
170
170
  localName: "Numero d'Inscription au Repertoire",
171
171
  abbreviation: "NIR",
@@ -177,6 +177,7 @@ const nir: Validator<ParsedPersonId> = {
177
177
  ] as const,
178
178
  candidatePattern:
179
179
  "[12]\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{2}",
180
+ scope: "country",
180
181
  country: "FR",
181
182
  entityType: "person",
182
183
  description:
package/src/fr/siren.ts CHANGED
@@ -8,6 +8,11 @@
8
8
  * @see https://www.insee.fr/fr/information/2549588
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import {
12
17
  luhnValidate,
13
18
  luhnChecksum,
@@ -17,8 +22,6 @@ import { randomDigits } 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 compact = (value: string): string =>
23
26
  clean(value, " -.");
24
27
 
@@ -58,13 +61,14 @@ const generate = (): string => {
58
61
  };
59
62
 
60
63
  /** French Company Identification Number. */
61
- const siren: Validator = {
64
+ const siren: CountryValidator<"FR"> = {
62
65
  name: "French Company ID",
63
66
  localName:
64
67
  "Système d'Identification du Répertoire des Entreprises",
65
68
  abbreviation: "SIREN",
66
69
  aliases: ["SIREN", "numéro SIREN"] as const,
67
70
  candidatePattern: "\\d{3}\\s?\\d{3}\\s?\\d{3}",
71
+ scope: "country",
68
72
  country: "FR",
69
73
  entityType: "company",
70
74
  sourceUrl: "https://www.insee.fr/fr/information/2549588",
package/src/fr/siret.ts CHANGED
@@ -9,6 +9,11 @@
9
9
  * @see https://www.insee.fr/fr/information/2549588
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import {
13
18
  luhnValidate,
14
19
  luhnChecksum,
@@ -18,8 +23,6 @@ import { randomDigits } from "#util/generate";
18
23
  import { err } from "#util/result";
19
24
  import { isdigits } from "#util/strings";
20
25
 
21
- import type { ValidateResult, Validator } from "../types";
22
-
23
26
  const compact = (value: string): string =>
24
27
  clean(value, " -.");
25
28
 
@@ -101,13 +104,14 @@ const generate = (): string => {
101
104
  };
102
105
 
103
106
  /** French Establishment Identification Number. */
104
- const siret: Validator = {
107
+ const siret: CountryValidator<"FR"> = {
105
108
  name: "French Establishment ID",
106
109
  localName:
107
110
  "Système d'Identification du Répertoire des Établissements",
108
111
  abbreviation: "SIRET",
109
112
  aliases: ["SIRET", "numéro SIRET"] as const,
110
113
  candidatePattern: "\\d{3}\\s?\\d{3}\\s?\\d{3}\\s?\\d{5}",
114
+ scope: "country",
111
115
  country: "FR",
112
116
  entityType: "company",
113
117
  sourceUrl: "https://www.insee.fr/fr/information/2549588",
package/src/fr/tva.ts CHANGED
@@ -10,6 +10,11 @@
10
10
  * @see https://www.economie.gouv.fr/
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import {
14
19
  luhnValidate,
15
20
  luhnChecksum,
@@ -19,8 +24,6 @@ import { randomDigits } from "#util/generate";
19
24
  import { err } from "#util/result";
20
25
  import { isdigits } from "#util/strings";
21
26
 
22
- import type { ValidateResult, Validator } from "../types";
23
-
24
27
  const ALPHABET = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";
25
28
 
26
29
  const compact = (value: string): string => {
@@ -122,7 +125,7 @@ const generate = (): string => {
122
125
  };
123
126
 
124
127
  /** French VAT Number. */
125
- const tva: Validator = {
128
+ const tva: CountryValidator<"FR"> = {
126
129
  name: "French VAT Number",
127
130
  localName: "Numéro de TVA intracommunautaire",
128
131
  abbreviation: "TVA",
@@ -132,6 +135,7 @@ const tva: Validator = {
132
135
  "FR VAT",
133
136
  ] as const,
134
137
  candidatePattern: "FR[A-Z0-9]{2}\\d{9}",
138
+ scope: "country",
135
139
  country: "FR",
136
140
  entityType: "company",
137
141
  sourceUrl: "https://www.economie.gouv.fr/",
package/src/gb/nino.ts CHANGED
@@ -28,12 +28,15 @@ const generate = (): string => {
28
28
  * @see https://www.gov.uk/hmrc-internal-manuals/national-insurance-manual/nim39110
29
29
  */
30
30
 
31
+ import type {
32
+ ValidateResult,
33
+ CountryValidator,
34
+ } from "../types";
35
+
31
36
  import { clean } from "#util/clean";
32
37
  import { randomChar, randomDigits } from "#util/generate";
33
38
  import { err } from "#util/result";
34
39
 
35
- import type { ValidateResult, Validator } from "../types";
36
-
37
40
  const INVALID_FIRST = new Set([
38
41
  "D",
39
42
  "F",
@@ -124,7 +127,7 @@ const format = (value: string): string => {
124
127
  };
125
128
 
126
129
  /** UK National Insurance Number. */
127
- const nino: Validator = {
130
+ const nino: CountryValidator<"GB"> = {
128
131
  name: "UK National Insurance Number",
129
132
  localName: "National Insurance Number",
130
133
  abbreviation: "NINO",
@@ -134,6 +137,7 @@ const nino: Validator = {
134
137
  "NI number",
135
138
  ] as const,
136
139
  candidatePattern: "[A-Z]{2}\\d{6}[A-Z]",
140
+ scope: "country",
137
141
  country: "GB",
138
142
  entityType: "person",
139
143
  description:
package/src/gb/sedol.ts CHANGED
@@ -10,13 +10,16 @@
10
10
  * @see https://en.wikipedia.org/wiki/SEDOL
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import { clean } from "#util/clean";
14
19
  import { randomChar } from "#util/generate";
15
20
  import { err } from "#util/result";
16
21
  import { isdigits } from "#util/strings";
17
22
 
18
- import type { ValidateResult, Validator } from "../types";
19
-
20
23
  /**
21
24
  * Allowed characters in a SEDOL: digits and
22
25
  * consonants only (vowels are never used).
@@ -109,7 +112,7 @@ const generate = (): string => {
109
112
  };
110
113
 
111
114
  /** Stock Exchange Daily Official List number. */
112
- const sedol: Validator = {
115
+ const sedol: CountryValidator<"GB"> = {
113
116
  name: "Stock Exchange Daily Official List number",
114
117
  localName: "Stock Exchange Daily Official List number",
115
118
  abbreviation: "SEDOL",
@@ -118,6 +121,7 @@ const sedol: Validator = {
118
121
  "Stock Exchange Daily Official List",
119
122
  ] as const,
120
123
  candidatePattern: "[B-DF-HJ-NP-TV-Z0-9]{6}\\d",
124
+ scope: "country",
121
125
  country: "GB",
122
126
  entityType: "any",
123
127
  sourceUrl: "https://en.wikipedia.org/wiki/SEDOL",
package/src/gb/utr.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.gov.uk/find-utr-number
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 = [6, 7, 8, 9, 10, 5, 4, 3, 2] as const;
20
23
  const CHECK_LOOKUP = "21987654321";
21
24
 
@@ -61,12 +64,13 @@ const generate = (): string => {
61
64
  };
62
65
 
63
66
  /** UK Unique Taxpayer Reference. */
64
- const utr: Validator = {
67
+ const utr: CountryValidator<"GB"> = {
65
68
  name: "UK Unique Taxpayer Reference",
66
69
  localName: "Unique Taxpayer Reference",
67
70
  abbreviation: "UTR",
68
71
  aliases: ["Unique Taxpayer Reference", "UTR"] as const,
69
72
  candidatePattern: "\\d{10}",
73
+ scope: "country",
70
74
  country: "GB",
71
75
  entityType: "any",
72
76
  sourceUrl: "https://www.gov.uk/find-utr-number",
package/src/gb/vat.ts CHANGED
@@ -9,14 +9,17 @@
9
9
  * @see https://www.gov.uk/vat-registration
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import { weightedSum } from "#checksums/weighted-sum";
13
18
  import { clean } from "#util/clean";
14
19
  import { randomDigits } from "#util/generate";
15
20
  import { err } from "#util/result";
16
21
  import { isdigits } from "#util/strings";
17
22
 
18
- import type { ValidateResult, Validator } from "../types";
19
-
20
23
  const WEIGHTS = [8, 7, 6, 5, 4, 3, 2] as const;
21
24
 
22
25
  const compact = (value: string): string => {
@@ -135,7 +138,7 @@ const generate = (): string => {
135
138
  };
136
139
 
137
140
  /** UK VAT Registration Number. */
138
- const vat: Validator = {
141
+ const vat: CountryValidator<"GB"> = {
139
142
  name: "UK VAT Number",
140
143
  localName: "VAT Registration Number",
141
144
  abbreviation: "VAT",
@@ -144,6 +147,7 @@ const vat: Validator = {
144
147
  "VAT number",
145
148
  ] as const,
146
149
  candidatePattern: "GB\\d{9,12}",
150
+ scope: "country",
147
151
  country: "GB",
148
152
  entityType: "company",
149
153
  sourceUrl: "https://www.gov.uk/vat-registration",
package/src/ge/pin.ts CHANGED
@@ -14,13 +14,16 @@ const generate = (): string => randomDigits(11);
14
14
  * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Georgia-TIN.pdf
15
15
  */
16
16
 
17
+ import type {
18
+ ValidateResult,
19
+ CountryValidator,
20
+ } from "../types";
21
+
17
22
  import { clean } from "#util/clean";
18
23
  import { randomDigits } from "#util/generate";
19
24
  import { err } from "#util/result";
20
25
  import { isdigits } from "#util/strings";
21
26
 
22
- import type { ValidateResult, Validator } from "../types";
23
-
24
27
  const compact = (value: string): string =>
25
28
  clean(value, " -").trim();
26
29
 
@@ -47,12 +50,13 @@ const validate = (value: string): ValidateResult => {
47
50
  const format = (value: string): string => compact(value);
48
51
 
49
52
  /** Georgian Personal Identification Number. */
50
- const pin: Validator = {
53
+ const pin: CountryValidator<"GE"> = {
51
54
  name: "Georgian Personal ID",
52
55
  localName: "პირადი ნომერი",
53
56
  abbreviation: "PIN",
54
57
  aliases: ["პირადი ნომერი", "PIN"] as const,
55
58
  candidatePattern: "\\d{11}",
59
+ scope: "country",
56
60
  country: "GE",
57
61
  entityType: "any",
58
62
  lengths: [9, 11] as const,
package/src/gh/tin.ts CHANGED
@@ -14,12 +14,15 @@
14
14
  * @see https://gra.gov.gh/
15
15
  */
16
16
 
17
+ import type {
18
+ ValidateResult,
19
+ CountryValidator,
20
+ } from "../types";
21
+
17
22
  import { clean } from "#util/clean";
18
23
  import { randomDigits, randomPick } from "#util/generate";
19
24
  import { err } from "#util/result";
20
25
 
21
- import type { ValidateResult, Validator } from "../types";
22
-
23
26
  const FORMAT_RE = /^[PCGQV]00[0-9]{7}[0-9X]$/;
24
27
 
25
28
  const compact = (value: string): string =>
@@ -79,12 +82,13 @@ const generate = (): string => {
79
82
  };
80
83
 
81
84
  /** Ghanaian Tax Identification Number. */
82
- const tin: Validator = {
85
+ const tin: CountryValidator<"GH"> = {
83
86
  name: "Ghanaian Tax Identification Number",
84
87
  localName: "Tax Identification Number",
85
88
  abbreviation: "TIN",
86
89
  aliases: ["TIN", "Tax Identification Number"] as const,
87
90
  candidatePattern: "[A-Z]\\d{9,10}",
91
+ scope: "country",
88
92
  country: "GH",
89
93
  entityType: "any",
90
94
  compact,
package/src/gr/amka.ts CHANGED
@@ -8,6 +8,11 @@
8
8
  * @see https://www.amka.gr/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import {
12
17
  luhnValidate,
13
18
  luhnChecksum,
@@ -18,8 +23,6 @@ import { randomDigits, randomInt } from "#util/generate";
18
23
  import { err } from "#util/result";
19
24
  import { isdigits } from "#util/strings";
20
25
 
21
- import type { ValidateResult, Validator } from "../types";
22
-
23
26
  const compact = (value: string): string =>
24
27
  clean(value, " -");
25
28
 
@@ -80,7 +83,7 @@ const generate = (): string => {
80
83
  };
81
84
 
82
85
  /** Greek Social Security Number. */
83
- const amka: Validator = {
86
+ const amka: CountryValidator<"GR"> = {
84
87
  name: "Greek Social Security Number",
85
88
  localName: "Αριθμός Μητρώου Κοινωνικής Ασφάλισης",
86
89
  abbreviation: "ΑΜΚΑ",
@@ -90,6 +93,7 @@ const amka: Validator = {
90
93
  "AMKA",
91
94
  ] as const,
92
95
  candidatePattern: "\\d{11}",
96
+ scope: "country",
93
97
  country: "GR",
94
98
  entityType: "person",
95
99
  sourceUrl: "https://www.amka.gr/",
package/src/gr/vat.ts CHANGED
@@ -9,13 +9,16 @@
9
9
  * @see https://www.aade.gr/
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
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 compact = (value: string): string => {
20
23
  let v = clean(value, " -/.");
21
24
  if (v.startsWith("EL") || v.startsWith("el")) {
@@ -72,7 +75,7 @@ const generate = (): string => {
72
75
  };
73
76
 
74
77
  /** Greek VAT Number. */
75
- const vat: Validator = {
78
+ const vat: CountryValidator<"GR"> = {
76
79
  name: "Greek VAT Number",
77
80
  localName: "Αριθμός Φορολογικού Μητρώου",
78
81
  abbreviation: "ΑΦΜ",
@@ -82,6 +85,7 @@ const vat: Validator = {
82
85
  "AFM",
83
86
  ] as const,
84
87
  candidatePattern: "EL\\d{9}",
88
+ scope: "country",
85
89
  country: "GR",
86
90
  entityType: "any",
87
91
  sourceUrl: "https://www.aade.gr/",
package/src/gt/nit.ts CHANGED
@@ -11,13 +11,16 @@
11
11
  * @see https://portal.sat.gob.gt/portal/
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
  * Compact: strip spaces, hyphens, leading zeros,
23
26
  * and uppercase.
@@ -97,12 +100,13 @@ const generate = (): string => {
97
100
  };
98
101
 
99
102
  /** Guatemala tax identification number. */
100
- const nit: Validator = {
103
+ const nit: CountryValidator<"GT"> = {
101
104
  name: "Tax Identification Number",
102
105
  localName: "Número de Identificación Tributaria",
103
106
  abbreviation: "NIT",
104
107
  aliases: ["NIT"] as const,
105
108
  candidatePattern: "\\d{7,8}-?\\d",
109
+ scope: "country",
106
110
  country: "GT",
107
111
  entityType: "any",
108
112
  description: "Tax identifier issued by Guatemala's SAT",
package/src/hk/hkid.ts CHANGED
@@ -9,12 +9,15 @@
9
9
  * @see https://en.wikipedia.org/wiki/Hong_Kong_identity_card
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import { clean } from "#util/clean";
13
18
  import { randomDigits, randomInt } from "#util/generate";
14
19
  import { err } from "#util/result";
15
20
 
16
- import type { ValidateResult, Validator } from "../types";
17
-
18
21
  /** Strip spaces, parentheses, and dashes. */
19
22
  const compact = (value: string): string =>
20
23
  clean(value, " -()").toUpperCase();
@@ -106,12 +109,13 @@ const generate = (): string => {
106
109
  };
107
110
 
108
111
  /** Hong Kong Identity Card number. */
109
- const hkid: Validator = {
112
+ const hkid: CountryValidator<"HK"> = {
110
113
  name: "Hong Kong Identity Card Number",
111
114
  localName: "Hong Kong Identity Card Number",
112
115
  abbreviation: "HKID",
113
116
  aliases: ["HKID", "香港身份證"] as const,
114
117
  candidatePattern: "[A-Z]{1,2}\\d{6}[\\dA]",
118
+ scope: "country",
115
119
  country: "HK",
116
120
  entityType: "person",
117
121
  lengths: [8, 9],
package/src/hr/vat.ts CHANGED
@@ -7,6 +7,11 @@
7
7
  * @see https://www.porezna-uprava.hr/
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+
10
15
  import {
11
16
  mod1110validate,
12
17
  mod1110checkDigit,
@@ -16,8 +21,6 @@ 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
  const compact = (value: string): string => {
22
25
  let v = clean(value, " -/.");
23
26
  if (v.startsWith("HR") || v.startsWith("hr")) {
@@ -59,12 +62,13 @@ const generate = (): string => {
59
62
  };
60
63
 
61
64
  /** Croatian VAT Number. */
62
- const vat: Validator = {
65
+ const vat: CountryValidator<"HR"> = {
63
66
  name: "Croatian VAT Number",
64
67
  localName: "Osobni identifikacijski broj",
65
68
  abbreviation: "OIB",
66
69
  aliases: ["OIB", "osobni identifikacijski broj"] as const,
67
70
  candidatePattern: "HR\\d{11}",
71
+ scope: "country",
68
72
  country: "HR",
69
73
  entityType: "any",
70
74
  sourceUrl: "https://www.porezna-uprava.hr/",
package/src/hu/vat.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/hungary-tin.pdf
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 = [9, 7, 3, 1, 9, 7, 3, 1];
20
23
 
21
24
  const compact = (value: string): string => {
@@ -62,15 +65,17 @@ const generate = (): string => {
62
65
  };
63
66
 
64
67
  /** Hungarian VAT Number. */
65
- const vat: Validator = {
68
+ const vat: CountryValidator<"HU"> = {
66
69
  name: "Hungarian VAT Number",
67
70
  localName: "Adószám",
68
71
  abbreviation: "ANUM",
69
72
  aliases: ["adószám", "adóazonosító jel"] as const,
70
73
  candidatePattern: "\\d{8}-\\d-\\d{2}",
74
+ scope: "country",
71
75
  country: "HU",
72
76
  entityType: "company",
73
77
  sourceUrl: "https://nav.gov.hu/",
78
+ lengths: [8] as const,
74
79
  examples: ["12892312"] as const,
75
80
  compact,
76
81
  format,
package/src/iban.ts CHANGED
@@ -6,14 +6,17 @@
6
6
  * characters. Validated using ISO 7064 Mod 97-10.
7
7
  */
8
8
 
9
+ import type {
10
+ ValidateResult,
11
+ GlobalValidator,
12
+ } from "./types";
13
+
9
14
  import { mod97 } from "#checksums/mod97";
10
15
  import { clean } from "#util/clean";
11
16
  import { randomDigits, randomInt } from "#util/generate";
12
17
  import { err } from "#util/result";
13
18
  import { charValue, isalnum } from "#util/strings";
14
19
 
15
- import type { ValidateResult, Validator } from "./types";
16
-
17
20
  /**
18
21
  * BBAN format regex by country code.
19
22
  * Sourced from SWIFT IBAN Registry.
@@ -314,7 +317,8 @@ const generate = (): string => {
314
317
  };
315
318
 
316
319
  /** International Bank Account Number. */
317
- const iban: Validator = {
320
+ const iban: GlobalValidator = {
321
+ scope: "global",
318
322
  name: "IBAN",
319
323
  localName: "IBAN",
320
324
  abbreviation: "IBAN",
package/src/id/npwp.ts CHANGED
@@ -10,6 +10,11 @@
10
10
  * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Indonesia-TIN.pdf
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import {
14
19
  luhnValidate,
15
20
  luhnChecksum,
@@ -20,8 +25,6 @@ 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
 
@@ -160,13 +163,14 @@ const generate = (): string => {
160
163
  };
161
164
 
162
165
  /** Indonesian Taxpayer Identification Number. */
163
- const npwp: Validator = {
166
+ const npwp: CountryValidator<"ID"> = {
164
167
  name: "Indonesian Taxpayer Identification Number",
165
168
  localName: "Nomor Pokok Wajib Pajak",
166
169
  abbreviation: "NPWP",
167
170
  aliases: ["NPWP", "Nomor Pokok Wajib Pajak"] as const,
168
171
  candidatePattern:
169
172
  "\\d{2}\\.?\\d{3}\\.?\\d{3}\\.?\\d-?\\d{3}\\.?\\d{3}",
173
+ scope: "country",
170
174
  country: "ID",
171
175
  entityType: "any",
172
176
  lengths: [15, 16],
package/src/ie/pps.ts CHANGED
@@ -9,13 +9,16 @@
9
9
  * @see https://www.gov.ie/en/service/12e6de-get-a-personal-public-service-pps-number/
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
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 ALPHABET = "WABCDEFGHIJKLMNOPQRSTUV";
20
23
 
21
24
  const compact = (value: string): string =>
@@ -84,12 +87,13 @@ const generate = (): string => {
84
87
  };
85
88
 
86
89
  /** Irish Personal Public Service Number. */
87
- const pps: Validator = {
90
+ const pps: CountryValidator<"IE"> = {
88
91
  name: "Irish Personal ID",
89
92
  localName: "Personal Public Service Number",
90
93
  abbreviation: "PPS",
91
94
  aliases: ["PPS number", "PPSN", "RSI number"] as const,
92
95
  candidatePattern: "\\d{7}[A-Z]{1,2}",
96
+ scope: "country",
93
97
  country: "IE",
94
98
  entityType: "person",
95
99
  sourceUrl: