@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/ie/vat.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.revenue.ie/
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 ALPHABET = "WABCDEFGHIJKLMNOPQRSTUV";
19
22
 
20
23
  const compact = (value: string): string => {
@@ -118,12 +121,13 @@ const generate = (): string => {
118
121
  };
119
122
 
120
123
  /** Irish VAT Number. */
121
- const vat: Validator = {
124
+ const vat: CountryValidator<"IE"> = {
122
125
  name: "Irish VAT Number",
123
126
  localName: "Value Added Tax Number",
124
127
  abbreviation: "VAT",
125
128
  aliases: ["VAT number IE"] as const,
126
129
  candidatePattern: "IE\\d[A-Z+*]\\d{5}[A-Z]",
130
+ scope: "country",
127
131
  country: "IE",
128
132
  entityType: "any",
129
133
  sourceUrl: "https://www.revenue.ie/",
package/src/il/idnr.ts CHANGED
@@ -7,6 +7,11 @@
7
7
  * @see https://en.wikipedia.org/wiki/Israeli_identity_card
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+
10
15
  import {
11
16
  luhnValidate,
12
17
  luhnChecksum,
@@ -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
  clean(value, " -").padStart(9, "0");
23
26
 
@@ -58,7 +61,7 @@ const generate = (): string => {
58
61
  };
59
62
 
60
63
  /** Israeli Identity Number (Mispar Zehut). */
61
- const idnr: Validator = {
64
+ const idnr: CountryValidator<"IL"> = {
62
65
  name: "Israeli Identity Number",
63
66
  localName: "מספר זהות",
64
67
  abbreviation: "ת.ז.",
@@ -68,6 +71,7 @@ const idnr: Validator = {
68
71
  "ID number",
69
72
  ] as const,
70
73
  candidatePattern: "\\d{9}",
74
+ scope: "country",
71
75
  country: "IL",
72
76
  entityType: "person",
73
77
  compact,
package/src/in/aadhaar.ts CHANGED
@@ -10,6 +10,11 @@
10
10
  * @see https://uidai.gov.in/
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import {
14
19
  verhoeffValidate,
15
20
  verhoeffCheckDigit,
@@ -19,8 +24,6 @@ import { randomDigits, randomInt } 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, " -");
26
29
 
@@ -73,12 +76,13 @@ const generate = (): string => {
73
76
  };
74
77
 
75
78
  /** Indian Unique Identity Number. */
76
- const aadhaar: Validator = {
79
+ const aadhaar: CountryValidator<"IN"> = {
77
80
  name: "Indian Unique Identity Number",
78
81
  localName: "Aadhaar",
79
82
  abbreviation: "Aadhaar",
80
83
  aliases: ["Aadhaar", "आधार"] as const,
81
84
  candidatePattern: "\\d{4}\\s?\\d{4}\\s?\\d{4}",
85
+ scope: "country",
82
86
  country: "IN",
83
87
  entityType: "person",
84
88
  lengths: [12],
package/src/in/gstin.ts CHANGED
@@ -9,13 +9,16 @@
9
9
  * @see https://en.wikipedia.org/wiki/Goods_and_Services_Tax_Identification_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, randomInt } from "#util/generate";
14
19
  import { err } from "#util/result";
15
20
  import { charValue } from "#util/strings";
16
21
 
17
- import type { ValidateResult, Validator } from "../types";
18
-
19
22
  const GSTIN_RE =
20
23
  /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][0-9A-Z]Z[0-9A-Z]$/;
21
24
 
@@ -146,13 +149,14 @@ const generate = (): string => {
146
149
  };
147
150
 
148
151
  /** Indian Goods and Services Tax ID. */
149
- const gstin: Validator = {
152
+ const gstin: CountryValidator<"IN"> = {
150
153
  name: "Indian Goods and Services Tax ID",
151
154
  localName: "Goods and Services Tax Identification Number",
152
155
  abbreviation: "GSTIN",
153
156
  aliases: ["GSTIN", "GST number"] as const,
154
157
  candidatePattern:
155
158
  "\\d{2}[A-Z]{5}\\d{4}[A-Z][A-Z\\d][Z][A-Z\\d]",
159
+ scope: "country",
156
160
  country: "IN",
157
161
  entityType: "company",
158
162
  lengths: [15],
package/src/in/pan.ts CHANGED
@@ -25,6 +25,11 @@ const generate = (): string => {
25
25
  * @see https://en.wikipedia.org/wiki/Permanent_account_number
26
26
  */
27
27
 
28
+ import type {
29
+ ValidateResult,
30
+ CountryValidator,
31
+ } from "../types";
32
+
28
33
  import { clean } from "#util/clean";
29
34
  import {
30
35
  randomChar,
@@ -33,8 +38,6 @@ import {
33
38
  } from "#util/generate";
34
39
  import { err } from "#util/result";
35
40
 
36
- import type { ValidateResult, Validator } from "../types";
37
-
38
41
  const PAN_RE = /^[A-Z]{5}\d{4}[A-Z]$/;
39
42
 
40
43
  const HOLDER_TYPES = "ABCFGHJLPT";
@@ -70,12 +73,13 @@ const validate = (value: string): ValidateResult => {
70
73
  const format = (value: string): string => compact(value);
71
74
 
72
75
  /** Indian Permanent Account Number. */
73
- const pan: Validator = {
76
+ const pan: CountryValidator<"IN"> = {
74
77
  name: "Indian Permanent Account Number",
75
78
  localName: "Permanent Account Number",
76
79
  abbreviation: "PAN",
77
80
  aliases: ["PAN", "Permanent Account Number"] as const,
78
81
  candidatePattern: "[A-Z]{5}\\d{4}[A-Z]",
82
+ scope: "country",
79
83
  country: "IN",
80
84
  entityType: "any",
81
85
  lengths: [10],
package/src/index.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export type {
2
+ CountryValidator,
2
3
  CountryCode,
3
4
  ErrorCode,
5
+ GlobalValidator,
4
6
  ParsedBirthDate,
5
7
  ParsedIdentifier,
6
8
  ParsedPersonId,
@@ -8,6 +10,7 @@ export type {
8
10
  StdnumError,
9
11
  ValidateResult,
10
12
  Validator,
13
+ ValidatorScope,
11
14
  } from "./types";
12
15
  export { default as bic } from "./bic";
13
16
  export {
package/src/iq/nid.ts CHANGED
@@ -16,14 +16,17 @@ const generate = (): string => randomDigits(12);
16
16
  * @see https://mofa.gov.iq/the-civil-status-id/
17
17
  */
18
18
 
19
+ import type {
20
+ ValidateResult,
21
+ CountryValidator,
22
+ } from "../types";
23
+
19
24
  import { normalizeArabicDigits } from "#util/arabic";
20
25
  import { clean } from "#util/clean";
21
26
  import { randomDigits } 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
  normalizeArabicDigits(clean(value, " -./"));
29
32
 
@@ -48,12 +51,13 @@ const validate = (value: string): ValidateResult => {
48
51
  const format = (value: string): string => compact(value);
49
52
 
50
53
  /** Iraqi National Identification Number. */
51
- const nid: Validator = {
54
+ const nid: CountryValidator<"IQ"> = {
52
55
  name: "Iraqi National ID",
53
56
  localName: "البطاقة الوطنية الموحدة",
54
57
  abbreviation: "NID",
55
58
  aliases: ["NID", "البطاقة الوطنية الموحدة"] as const,
56
59
  candidatePattern: "\\d{12}",
60
+ scope: "country",
57
61
  country: "IQ",
58
62
  entityType: "person",
59
63
  sourceUrl: "https://mofa.gov.iq/the-civil-status-id/",
package/src/ir/nid.ts CHANGED
@@ -22,14 +22,17 @@
22
22
  * @see https://persian-tools.js.org/functions/verifyIranianNationalId.html
23
23
  */
24
24
 
25
+ import type {
26
+ ValidateResult,
27
+ CountryValidator,
28
+ } from "../types";
29
+
25
30
  import { normalizeArabicDigits } from "#util/arabic";
26
31
  import { clean } from "#util/clean";
27
32
  import { randomDigits } from "#util/generate";
28
33
  import { err } from "#util/result";
29
34
  import { isdigits } from "#util/strings";
30
35
 
31
- import type { ValidateResult, Validator } from "../types";
32
-
33
36
  /** All-same-digit patterns (0000000000 .. 9999999999). */
34
37
  const ALL_SAME = new Set(
35
38
  Array.from({ length: 10 }, (_, i) =>
@@ -97,12 +100,13 @@ const generate = (): string => {
97
100
  };
98
101
 
99
102
  /** Iranian National Identification Number. */
100
- const nid: Validator = {
103
+ const nid: CountryValidator<"IR"> = {
101
104
  name: "Iranian National ID",
102
105
  localName: "کد ملی",
103
106
  abbreviation: "NID",
104
107
  aliases: ["NID", "کد ملی", "national code"] as const,
105
108
  candidatePattern: "\\d{10}",
109
+ scope: "country",
106
110
  country: "IR",
107
111
  entityType: "person",
108
112
  sourceUrl: "https://www.sabteahval.ir/",
@@ -11,14 +11,17 @@
11
11
  * @see https://www.skra.is/
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 { isValidDate } from "#util/date";
16
21
  import { 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 = [3, 2, 7, 6, 5, 4, 3, 2, 0, 0] as const;
23
26
 
24
27
  const compact = (value: string): string =>
@@ -105,12 +108,13 @@ const generate = (): string => {
105
108
  };
106
109
 
107
110
  /** Icelandic Identification Number. */
108
- const kennitala: Validator = {
111
+ const kennitala: CountryValidator<"IS"> = {
109
112
  name: "Icelandic ID Number",
110
113
  localName: "Kennitala",
111
114
  abbreviation: "kt.",
112
115
  aliases: ["kennitala", "kt."] as const,
113
116
  candidatePattern: "\\d{6}-?\\d{4}",
117
+ scope: "country",
114
118
  country: "IS",
115
119
  entityType: "any",
116
120
  sourceUrl: "https://www.skra.is/",
package/src/is/vsk.ts CHANGED
@@ -12,13 +12,16 @@ const generate = (): string => {
12
12
  * @see https://www.rsk.is/
13
13
  */
14
14
 
15
+ import type {
16
+ ValidateResult,
17
+ CountryValidator,
18
+ } from "../types";
19
+
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 compact = (value: string): string =>
23
26
  clean(value, " -");
24
27
 
@@ -43,12 +46,13 @@ const validate = (value: string): ValidateResult => {
43
46
  const format = (value: string): string => compact(value);
44
47
 
45
48
  /** Icelandic VAT Number. */
46
- const vsk: Validator = {
49
+ const vsk: CountryValidator<"IS"> = {
47
50
  name: "Icelandic VAT Number",
48
51
  localName: "Virðisaukaskattur",
49
52
  abbreviation: "VSK",
50
53
  aliases: ["VSK-númer", "virðisaukaskattur"] as const,
51
54
  candidatePattern: "IS\\d{5,6}",
55
+ scope: "country",
52
56
  country: "IS",
53
57
  entityType: "company",
54
58
  sourceUrl: "https://www.rsk.is/",
package/src/isin.ts CHANGED
@@ -10,14 +10,17 @@
10
10
  * @see https://www.isin.org/
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ GlobalValidator,
16
+ } from "./types";
17
+
13
18
  import { luhnChecksum } from "#checksums/luhn";
14
19
  import { clean } from "#util/clean";
15
20
  import { randomInt, randomPick } from "#util/generate";
16
21
  import { err } from "#util/result";
17
22
  import { charValue, isalnum } from "#util/strings";
18
23
 
19
- import type { ValidateResult, Validator } from "./types";
20
-
21
24
  const ISIN_RE = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;
22
25
 
23
26
  const compact = (value: string): string =>
@@ -97,7 +100,8 @@ const generate = (): string => {
97
100
  };
98
101
 
99
102
  /** International Securities Identification Number. */
100
- const isin: Validator = {
103
+ const isin: GlobalValidator = {
104
+ scope: "global",
101
105
  name: "International Securities Identification Number",
102
106
  localName:
103
107
  "International Securities Identification Number",
@@ -20,18 +20,18 @@
20
20
  * @see https://it.wikipedia.org/wiki/Codice_fiscale#Omocodia
21
21
  */
22
22
 
23
- import { clean } from "#util/clean";
24
- import { randomInt } from "#util/generate";
25
- import { err } from "#util/result";
26
- import { isdigits } from "#util/strings";
27
-
28
23
  import type {
29
24
  ParsedPersonId,
30
25
  ValidateResult,
31
- Validator,
26
+ CountryValidator,
32
27
  } from "../types";
33
28
  import { validate as validateIva } from "./iva";
34
29
 
30
+ import { clean } from "#util/clean";
31
+ import { randomInt } from "#util/generate";
32
+ import { err } from "#util/result";
33
+ import { isdigits } from "#util/strings";
34
+
35
35
  // Values for odd-positioned characters (0-based
36
36
  // index 0, 2, 4, ...)
37
37
  const ODD: Record<string, number> = {
@@ -297,7 +297,10 @@ const generate = (): string => {
297
297
  };
298
298
 
299
299
  /** Italian Tax Code. */
300
- const codiceFiscale: Validator<ParsedPersonId> = {
300
+ const codiceFiscale: CountryValidator<
301
+ "IT",
302
+ ParsedPersonId
303
+ > = {
301
304
  name: "Italian Tax Code",
302
305
  localName: "Codice Fiscale",
303
306
  abbreviation: "CF",
@@ -310,6 +313,7 @@ const codiceFiscale: Validator<ParsedPersonId> = {
310
313
  ] as const,
311
314
  candidatePattern:
312
315
  "[A-Z]{6}\\d{2}[A-Z]\\d{2}[A-Z]\\d{3}[A-Z]",
316
+ scope: "country",
313
317
  country: "IT",
314
318
  entityType: "person",
315
319
  description:
package/src/it/iva.ts CHANGED
@@ -7,6 +7,11 @@
7
7
  * @see https://www.agenziaentrate.gov.it/
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+
10
15
  import {
11
16
  luhnValidate,
12
17
  luhnChecksum,
@@ -16,8 +21,6 @@ import { randomDigits, randomInt } 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 VALID_PROVINCES = new Set([
22
25
  ...Array.from({ length: 100 }, (_, i) =>
23
26
  String(i + 1).padStart(3, "0"),
@@ -90,7 +93,7 @@ const generate = (): string => {
90
93
  };
91
94
 
92
95
  /** Italian VAT Number. */
93
- const iva: Validator = {
96
+ const iva: CountryValidator<"IT"> = {
94
97
  name: "Italian VAT Number",
95
98
  localName: "Partita IVA",
96
99
  abbreviation: "P.IVA",
@@ -101,6 +104,7 @@ const iva: Validator = {
101
104
  "VAT IT",
102
105
  ] as const,
103
106
  candidatePattern: "IT\\d{11}",
107
+ scope: "country",
104
108
  country: "IT",
105
109
  entityType: "company",
106
110
  sourceUrl: "https://www.agenziaentrate.gov.it/",
package/src/jp/cn.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://en.wikipedia.org/wiki/Corporate_Number_(Japan)
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 compact = (value: string): string =>
19
22
  clean(value, " -");
20
23
 
@@ -67,12 +70,13 @@ const generate = (): string => {
67
70
  };
68
71
 
69
72
  /** Japanese Corporate Number. */
70
- const cn: Validator = {
73
+ const cn: CountryValidator<"JP"> = {
71
74
  name: "Japanese Corporate Number",
72
75
  localName: "法人番号",
73
76
  abbreviation: "CN",
74
77
  aliases: ["法人番号", "Corporate Number"] as const,
75
78
  candidatePattern: "\\d{13}",
79
+ scope: "country",
76
80
  country: "JP",
77
81
  entityType: "company",
78
82
  description:
@@ -9,13 +9,16 @@
9
9
  * @see https://en.wikipedia.org/wiki/Individual_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 compact = (value: string): string =>
20
23
  clean(value, " -");
21
24
 
@@ -74,7 +77,7 @@ const generate = (): string => {
74
77
  };
75
78
 
76
79
  /** Japanese Individual Number (My Number). */
77
- const mynumber: Validator = {
80
+ const mynumber: CountryValidator<"JP"> = {
78
81
  name: "Japanese Individual Number",
79
82
  localName: "マイナンバー",
80
83
  abbreviation: "My Number",
@@ -84,6 +87,7 @@ const mynumber: Validator = {
84
87
  "個人番号",
85
88
  ] as const,
86
89
  candidatePattern: "\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}",
90
+ scope: "country",
87
91
  country: "JP",
88
92
  entityType: "person",
89
93
  description:
package/src/kr/brn.ts CHANGED
@@ -23,13 +23,16 @@ const generate = (): string => {
23
23
  * @see https://en.wikipedia.org/wiki/Business_registration_number_(South_Korea)
24
24
  */
25
25
 
26
+ import type {
27
+ ValidateResult,
28
+ CountryValidator,
29
+ } from "../types";
30
+
26
31
  import { clean } from "#util/clean";
27
32
  import { randomDigits, randomInt } from "#util/generate";
28
33
  import { err } from "#util/result";
29
34
  import { isdigits } from "#util/strings";
30
35
 
31
- import type { ValidateResult, Validator } from "../types";
32
-
33
36
  const compact = (value: string): string =>
34
37
  clean(value, " -");
35
38
 
@@ -77,12 +80,13 @@ const format = (value: string): string => {
77
80
  };
78
81
 
79
82
  /** Korean Business Registration Number. */
80
- const brn: Validator = {
83
+ const brn: CountryValidator<"KR"> = {
81
84
  name: "Korean Business Registration Number",
82
85
  localName: "사업자등록번호",
83
86
  abbreviation: "BRN",
84
87
  aliases: ["사업자등록번호", "BRN"] as const,
85
88
  candidatePattern: "\\d{3}-?\\d{2}-?\\d{5}",
89
+ scope: "country",
86
90
  country: "KR",
87
91
  entityType: "company",
88
92
  description:
package/src/kr/rrn.ts CHANGED
@@ -9,18 +9,18 @@
9
9
  * @see https://en.wikipedia.org/wiki/Resident_registration_number
10
10
  */
11
11
 
12
+ import type {
13
+ ParsedPersonId,
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
12
18
  import { clean } from "#util/clean";
13
19
  import { isValidDate } from "#util/date";
14
20
  import { randomDigits, randomInt } from "#util/generate";
15
21
  import { err } from "#util/result";
16
22
  import { isdigits } from "#util/strings";
17
23
 
18
- import type {
19
- ParsedPersonId,
20
- ValidateResult,
21
- Validator,
22
- } from "../types";
23
-
24
24
  const compact = (value: string): string =>
25
25
  clean(value, " -/");
26
26
 
@@ -157,7 +157,7 @@ const generate = (): string => {
157
157
  };
158
158
 
159
159
  /** Korean Resident Registration Number. */
160
- const rrn: Validator<ParsedPersonId> = {
160
+ const rrn: CountryValidator<"KR", ParsedPersonId> = {
161
161
  name: "Korean Resident Registration Number",
162
162
  localName: "주민등록번호",
163
163
  abbreviation: "RRN",
@@ -167,6 +167,7 @@ const rrn: Validator<ParsedPersonId> = {
167
167
  "Resident Registration Number",
168
168
  ] as const,
169
169
  candidatePattern: "\\d{6}[\\s-]?\\d{7}",
170
+ scope: "country",
170
171
  country: "KR",
171
172
  entityType: "person",
172
173
  description:
package/src/kw/civil.ts CHANGED
@@ -12,18 +12,18 @@
12
12
  * @see https://kuwaitsexpat.com/kuwait-civil-id-format/
13
13
  */
14
14
 
15
+ import type {
16
+ ParsedBirthDate,
17
+ ValidateResult,
18
+ CountryValidator,
19
+ } from "../types";
20
+
15
21
  import { clean } from "#util/clean";
16
22
  import { isValidDate } from "#util/date";
17
23
  import { randomDigits, randomInt } from "#util/generate";
18
24
  import { err } from "#util/result";
19
25
  import { isdigits } from "#util/strings";
20
26
 
21
- import type {
22
- ParsedBirthDate,
23
- ValidateResult,
24
- Validator,
25
- } from "../types";
26
-
27
27
  const WEIGHTS = [2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] as const;
28
28
 
29
29
  const centuryMap: Record<number, number> = {
@@ -135,12 +135,13 @@ const generate = (): string => {
135
135
  };
136
136
 
137
137
  /** Kuwait Civil Number (الرقم المدني). */
138
- const civil: Validator<ParsedBirthDate> = {
138
+ const civil: CountryValidator<"KW", ParsedBirthDate> = {
139
139
  name: "Civil Number",
140
140
  localName: "الرقم المدني",
141
141
  abbreviation: "Civil ID",
142
142
  aliases: ["Civil ID", "الرقم المدني"] as const,
143
143
  candidatePattern: "\\d{12}",
144
+ scope: "country",
144
145
  country: "KW",
145
146
  entityType: "person",
146
147
  lengths: [12] as const,
package/src/kz/iin.ts CHANGED
@@ -14,6 +14,12 @@
14
14
  * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Kazakhstan-TIN.pdf
15
15
  */
16
16
 
17
+ import type {
18
+ ParsedPersonId,
19
+ ValidateResult,
20
+ CountryValidator,
21
+ } from "../types";
22
+
17
23
  import { weightedSum } from "#checksums/weighted-sum";
18
24
  import { clean } from "#util/clean";
19
25
  import { isValidDate } from "#util/date";
@@ -21,12 +27,6 @@ import { randomDigits, randomInt } from "#util/generate";
21
27
  import { err } from "#util/result";
22
28
  import { isdigits } from "#util/strings";
23
29
 
24
- import type {
25
- ParsedPersonId,
26
- ValidateResult,
27
- Validator,
28
- } from "../types";
29
-
30
30
  const WEIGHTS_1 = [
31
31
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
32
32
  ] as const;
@@ -144,7 +144,6 @@ const generate = (): string => {
144
144
  const serial = randomDigits(4);
145
145
  const payload = yy + mm + dd + gender + serial;
146
146
  const check = calcCheckDigit(payload);
147
- if (check === null) continue;
148
147
  const c = payload + String(check);
149
148
  if (validate(c).valid) return c;
150
149
  }
@@ -155,7 +154,7 @@ const generate = (): string => {
155
154
  *
156
155
  * Examples sourced from identique/idnumbers test suite.
157
156
  */
158
- const iin: Validator<ParsedPersonId> = {
157
+ const iin: CountryValidator<"KZ", ParsedPersonId> = {
159
158
  name: "Kazakhstan Individual ID",
160
159
  localName: "Жеке сәйкестендіру нөмірі",
161
160
  abbreviation: "IIN",
@@ -165,6 +164,7 @@ const iin: Validator<ParsedPersonId> = {
165
164
  "индивидуальный идентификационный номер",
166
165
  ] as const,
167
166
  candidatePattern: "\\d{12}",
167
+ scope: "country",
168
168
  country: "KZ",
169
169
  entityType: "person",
170
170
  lengths: [12] as const,