@stll/stdnum 0.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (808) hide show
  1. package/LICENSE +1 -5
  2. package/README.md +28 -4
  3. package/dist/_checksums/luhn.js.map +1 -1
  4. package/dist/_checksums/mod1110.js +1 -1
  5. package/dist/_checksums/mod1110.js.map +1 -1
  6. package/dist/_checksums/mod112.js +5 -5
  7. package/dist/_checksums/mod112.js.map +1 -1
  8. package/dist/_checksums/mod97.js.map +1 -1
  9. package/dist/_checksums/verhoeff.js.map +1 -1
  10. package/dist/_checksums/weighted-sum.js.map +1 -1
  11. package/dist/_util/arabic.js.map +1 -1
  12. package/dist/_util/clean.js.map +1 -1
  13. package/dist/_util/date.js.map +1 -1
  14. package/dist/_util/generate.d.ts +13 -1
  15. package/dist/_util/generate.js +23 -1
  16. package/dist/_util/generate.js.map +1 -1
  17. package/dist/_util/result.js.map +1 -1
  18. package/dist/_util/strings.js.map +1 -1
  19. package/dist/ad/mod.d.ts +3 -2
  20. package/dist/ad/nrt.d.ts +16 -2
  21. package/dist/ad/nrt.js +4 -16
  22. package/dist/ad/nrt.js.map +1 -1
  23. package/dist/ae/eid.d.ts +2 -3
  24. package/dist/ae/eid.js +2 -12
  25. package/dist/ae/eid.js.map +1 -1
  26. package/dist/ae/mod.d.ts +3 -2
  27. package/dist/ai/mod.d.ts +3 -2
  28. package/dist/ai/tin.d.ts +20 -2
  29. package/dist/ai/tin.js +1 -18
  30. package/dist/ai/tin.js.map +1 -1
  31. package/dist/al/mod.d.ts +3 -2
  32. package/dist/al/nipt.d.ts +13 -2
  33. package/dist/al/nipt.js +1 -11
  34. package/dist/al/nipt.js.map +1 -1
  35. package/dist/am/mod.d.ts +3 -2
  36. package/dist/am/tin.d.ts +16 -2
  37. package/dist/am/tin.js +1 -14
  38. package/dist/am/tin.js.map +1 -1
  39. package/dist/ar/cbu.d.ts +2 -3
  40. package/dist/ar/cbu.js +2 -10
  41. package/dist/ar/cbu.js.map +1 -1
  42. package/dist/ar/cuit.d.ts +2 -3
  43. package/dist/ar/cuit.js +13 -29
  44. package/dist/ar/cuit.js.map +1 -1
  45. package/dist/ar/dni.d.ts +11 -2
  46. package/dist/ar/dni.js +1 -9
  47. package/dist/ar/dni.js.map +1 -1
  48. package/dist/ar/mod.d.ts +3 -2
  49. package/dist/at/businessid.d.ts +10 -2
  50. package/dist/at/businessid.js +1 -8
  51. package/dist/at/businessid.js.map +1 -1
  52. package/dist/at/mod.d.ts +3 -2
  53. package/dist/at/tin.d.ts +2 -3
  54. package/dist/at/tin.js +1 -11
  55. package/dist/at/tin.js.map +1 -1
  56. package/dist/at/uid.d.ts +2 -3
  57. package/dist/at/uid.js +2 -10
  58. package/dist/at/uid.js.map +1 -1
  59. package/dist/at/vnr.d.ts +5 -4
  60. package/dist/at/vnr.js +23 -16
  61. package/dist/at/vnr.js.map +1 -1
  62. package/dist/au/abn.d.ts +2 -3
  63. package/dist/au/abn.js +1 -10
  64. package/dist/au/abn.js.map +1 -1
  65. package/dist/au/acn.d.ts +2 -3
  66. package/dist/au/acn.js +1 -10
  67. package/dist/au/acn.js.map +1 -1
  68. package/dist/au/mod.d.ts +3 -2
  69. package/dist/au/tfn.d.ts +2 -3
  70. package/dist/au/tfn.js +1 -10
  71. package/dist/au/tfn.js.map +1 -1
  72. package/dist/az/mod.d.ts +3 -2
  73. package/dist/az/voen.d.ts +2 -3
  74. package/dist/az/voen.js +1 -14
  75. package/dist/az/voen.js.map +1 -1
  76. package/dist/ba/jmbg.d.ts +2 -3
  77. package/dist/ba/jmbg.js +4 -11
  78. package/dist/ba/jmbg.js.map +1 -1
  79. package/dist/ba/mod.d.ts +3 -2
  80. package/dist/bd/mod.d.ts +3 -2
  81. package/dist/bd/nid.d.ts +23 -2
  82. package/dist/bd/nid.js +11 -32
  83. package/dist/bd/nid.js.map +1 -1
  84. package/dist/be/bis.d.ts +2 -3
  85. package/dist/be/bis.js +1 -11
  86. package/dist/be/bis.js.map +1 -1
  87. package/dist/be/mod.d.ts +3 -2
  88. package/dist/be/nn.d.ts +2 -3
  89. package/dist/be/nn.js +1 -11
  90. package/dist/be/nn.js.map +1 -1
  91. package/dist/be/vat.d.ts +2 -3
  92. package/dist/be/vat.js +1 -9
  93. package/dist/be/vat.js.map +1 -1
  94. package/dist/bg/egn.d.ts +2 -3
  95. package/dist/bg/egn.js +5 -13
  96. package/dist/bg/egn.js.map +1 -1
  97. package/dist/bg/mod.d.ts +3 -2
  98. package/dist/bg/pnf.d.ts +2 -3
  99. package/dist/bg/pnf.js +1 -8
  100. package/dist/bg/pnf.js.map +1 -1
  101. package/dist/bg/vat.d.ts +2 -3
  102. package/dist/bg/vat.js +3 -9
  103. package/dist/bg/vat.js.map +1 -1
  104. package/dist/bh/cpr.d.ts +5 -4
  105. package/dist/bh/cpr.js +9 -19
  106. package/dist/bh/cpr.js.map +1 -1
  107. package/dist/bh/mod.d.ts +3 -2
  108. package/dist/bic.d.ts +13 -2
  109. package/dist/bic.js +14 -26
  110. package/dist/bic.js.map +1 -1
  111. package/dist/br/cnpj.d.ts +2 -3
  112. package/dist/br/cnpj.js +1 -20
  113. package/dist/br/cnpj.js.map +1 -1
  114. package/dist/br/cpf.d.ts +2 -3
  115. package/dist/br/cpf.js +1 -14
  116. package/dist/br/cpf.js.map +1 -1
  117. package/dist/br/mod.d.ts +3 -2
  118. package/dist/by/mod.d.ts +3 -2
  119. package/dist/by/unp.d.ts +2 -3
  120. package/dist/by/unp.js +9 -17
  121. package/dist/by/unp.js.map +1 -1
  122. package/dist/bz/mod.d.ts +3 -2
  123. package/dist/bz/tin.d.ts +5 -4
  124. package/dist/bz/tin.js +10 -27
  125. package/dist/bz/tin.js.map +1 -1
  126. package/dist/ca/bn.d.ts +2 -3
  127. package/dist/ca/bn.js +2 -10
  128. package/dist/ca/bn.js.map +1 -1
  129. package/dist/ca/mod.d.ts +3 -2
  130. package/dist/ca/sin.d.ts +2 -3
  131. package/dist/ca/sin.js +2 -10
  132. package/dist/ca/sin.js.map +1 -1
  133. package/dist/ch/mod.d.ts +3 -2
  134. package/dist/ch/ssn.d.ts +2 -3
  135. package/dist/ch/ssn.js +1 -9
  136. package/dist/ch/ssn.js.map +1 -1
  137. package/dist/ch/uid.d.ts +2 -3
  138. package/dist/ch/uid.js +1 -9
  139. package/dist/ch/uid.js.map +1 -1
  140. package/dist/ch/vat.d.ts +2 -3
  141. package/dist/ch/vat.js +1 -9
  142. package/dist/ch/vat.js.map +1 -1
  143. package/dist/cl/mod.d.ts +3 -2
  144. package/dist/cl/rut.d.ts +2 -3
  145. package/dist/cl/rut.js +2 -15
  146. package/dist/cl/rut.js.map +1 -1
  147. package/dist/cn/mod.d.ts +3 -2
  148. package/dist/cn/ric.d.ts +2 -3
  149. package/dist/cn/ric.js +4 -14
  150. package/dist/cn/ric.js.map +1 -1
  151. package/dist/cn/uscc.d.ts +2 -3
  152. package/dist/cn/uscc.js +8 -16
  153. package/dist/cn/uscc.js.map +1 -1
  154. package/dist/co/mod.d.ts +3 -2
  155. package/dist/co/nit.d.ts +2 -3
  156. package/dist/co/nit.js +6 -13
  157. package/dist/co/nit.js.map +1 -1
  158. package/dist/cr/cpf.d.ts +18 -2
  159. package/dist/cr/cpf.js +5 -19
  160. package/dist/cr/cpf.js.map +1 -1
  161. package/dist/cr/mod.d.ts +3 -2
  162. package/dist/creditcard.d.ts +2 -3
  163. package/dist/creditcard.js +5 -14
  164. package/dist/creditcard.js.map +1 -1
  165. package/dist/cu/mod.d.ts +3 -2
  166. package/dist/cu/ni.d.ts +5 -4
  167. package/dist/cu/ni.js +13 -18
  168. package/dist/cu/ni.js.map +1 -1
  169. package/dist/cy/mod.d.ts +3 -2
  170. package/dist/cy/vat.d.ts +2 -3
  171. package/dist/cy/vat.js +1 -8
  172. package/dist/cy/vat.js.map +1 -1
  173. package/dist/cz/dic.d.ts +2 -3
  174. package/dist/cz/dic.js +7 -13
  175. package/dist/cz/dic.js.map +1 -1
  176. package/dist/cz/ico.d.ts +2 -3
  177. package/dist/cz/ico.js +2 -10
  178. package/dist/cz/ico.js.map +1 -1
  179. package/dist/cz/mod.d.ts +3 -2
  180. package/dist/cz/rc.d.ts +2 -3
  181. package/dist/cz/rc.js +22 -21
  182. package/dist/cz/rc.js.map +1 -1
  183. package/dist/de/handelsreg.d.ts +19 -2
  184. package/dist/de/handelsreg.js +10 -26
  185. package/dist/de/handelsreg.js.map +1 -1
  186. package/dist/de/idnr.d.ts +2 -3
  187. package/dist/de/idnr.js +2 -12
  188. package/dist/de/idnr.js.map +1 -1
  189. package/dist/de/mod.d.ts +3 -2
  190. package/dist/de/stnr.d.ts +17 -3
  191. package/dist/de/stnr.js +1 -15
  192. package/dist/de/stnr.js.map +1 -1
  193. package/dist/de/svnr.d.ts +2 -3
  194. package/dist/de/svnr.js +4 -13
  195. package/dist/de/svnr.js.map +1 -1
  196. package/dist/de/vat.d.ts +2 -3
  197. package/dist/de/vat.js +2 -11
  198. package/dist/de/vat.js.map +1 -1
  199. package/dist/dk/cpr.d.ts +5 -4
  200. package/dist/dk/cpr.js +14 -12
  201. package/dist/dk/cpr.js.map +1 -1
  202. package/dist/dk/cvr.d.ts +2 -3
  203. package/dist/dk/cvr.js +2 -15
  204. package/dist/dk/cvr.js.map +1 -1
  205. package/dist/dk/mod.d.ts +3 -2
  206. package/dist/dk/vat.d.ts +2 -3
  207. package/dist/dk/vat.js +3 -13
  208. package/dist/dk/vat.js.map +1 -1
  209. package/dist/do/mod.d.ts +3 -2
  210. package/dist/do/rnc.d.ts +2 -3
  211. package/dist/do/rnc.js +3 -17
  212. package/dist/do/rnc.js.map +1 -1
  213. package/dist/ec/mod.d.ts +3 -2
  214. package/dist/ec/ruc.d.ts +2 -3
  215. package/dist/ec/ruc.js +2 -19
  216. package/dist/ec/ruc.js.map +1 -1
  217. package/dist/ee/ik.d.ts +2 -3
  218. package/dist/ee/ik.js +6 -15
  219. package/dist/ee/ik.js.map +1 -1
  220. package/dist/ee/mod.d.ts +3 -2
  221. package/dist/ee/registrikood.d.ts +2 -3
  222. package/dist/ee/registrikood.js +9 -15
  223. package/dist/ee/registrikood.js.map +1 -1
  224. package/dist/ee/vat.d.ts +2 -3
  225. package/dist/ee/vat.js +2 -10
  226. package/dist/ee/vat.js.map +1 -1
  227. package/dist/eg/mod.d.ts +3 -2
  228. package/dist/eg/tn.d.ts +11 -2
  229. package/dist/eg/tn.js +1 -9
  230. package/dist/eg/tn.js.map +1 -1
  231. package/dist/es/cif.d.ts +2 -3
  232. package/dist/es/cif.js +3 -12
  233. package/dist/es/cif.js.map +1 -1
  234. package/dist/es/dni.d.ts +2 -3
  235. package/dist/es/dni.js +1 -9
  236. package/dist/es/dni.js.map +1 -1
  237. package/dist/es/mod.d.ts +3 -2
  238. package/dist/es/nie.d.ts +2 -3
  239. package/dist/es/nie.js +14 -22
  240. package/dist/es/nie.js.map +1 -1
  241. package/dist/es/nss.d.ts +2 -3
  242. package/dist/es/nss.js +1 -16
  243. package/dist/es/nss.js.map +1 -1
  244. package/dist/es/vat.d.ts +2 -3
  245. package/dist/es/vat.js +5 -10
  246. package/dist/es/vat.js.map +1 -1
  247. package/dist/eu/mod.d.ts +3 -2
  248. package/dist/eu/vat.d.ts +5 -4
  249. package/dist/eu/vat.js +44 -2
  250. package/dist/eu/vat.js.map +1 -1
  251. package/dist/fi/hetu.d.ts +5 -4
  252. package/dist/fi/hetu.js +19 -12
  253. package/dist/fi/hetu.js.map +1 -1
  254. package/dist/fi/mod.d.ts +3 -2
  255. package/dist/fi/vat.d.ts +2 -3
  256. package/dist/fi/vat.js +3 -10
  257. package/dist/fi/vat.js.map +1 -1
  258. package/dist/fi/ytunnus.d.ts +2 -3
  259. package/dist/fi/ytunnus.js +2 -10
  260. package/dist/fi/ytunnus.js.map +1 -1
  261. package/dist/fr/mod.d.ts +3 -2
  262. package/dist/fr/nif.d.ts +2 -3
  263. package/dist/fr/nif.js +1 -9
  264. package/dist/fr/nif.js.map +1 -1
  265. package/dist/fr/nir.d.ts +2 -3
  266. package/dist/fr/nir.js +3 -14
  267. package/dist/fr/nir.js.map +1 -1
  268. package/dist/fr/siren.d.ts +2 -3
  269. package/dist/fr/siren.js +2 -10
  270. package/dist/fr/siren.js.map +1 -1
  271. package/dist/fr/siret.d.ts +2 -3
  272. package/dist/fr/siret.js +2 -11
  273. package/dist/fr/siret.js.map +1 -1
  274. package/dist/fr/tva.d.ts +2 -3
  275. package/dist/fr/tva.js +2 -12
  276. package/dist/fr/tva.js.map +1 -1
  277. package/dist/gb/mod.d.ts +3 -2
  278. package/dist/gb/nino.d.ts +12 -2
  279. package/dist/gb/nino.js +8 -17
  280. package/dist/gb/nino.js.map +1 -1
  281. package/dist/gb/sedol.d.ts +2 -3
  282. package/dist/gb/sedol.js +9 -18
  283. package/dist/gb/sedol.js.map +1 -1
  284. package/dist/gb/utr.d.ts +2 -3
  285. package/dist/gb/utr.js +2 -10
  286. package/dist/gb/utr.js.map +1 -1
  287. package/dist/gb/vat.d.ts +2 -3
  288. package/dist/gb/vat.js +2 -11
  289. package/dist/gb/vat.js.map +1 -1
  290. package/dist/ge/mod.d.ts +3 -2
  291. package/dist/ge/pin.d.ts +14 -2
  292. package/dist/ge/pin.js +1 -12
  293. package/dist/ge/pin.js.map +1 -1
  294. package/dist/gh/mod.d.ts +3 -2
  295. package/dist/gh/tin.d.ts +2 -3
  296. package/dist/gh/tin.js +10 -24
  297. package/dist/gh/tin.js.map +1 -1
  298. package/dist/gr/amka.d.ts +2 -3
  299. package/dist/gr/amka.js +3 -11
  300. package/dist/gr/amka.js.map +1 -1
  301. package/dist/gr/mod.d.ts +3 -2
  302. package/dist/gr/vat.d.ts +2 -3
  303. package/dist/gr/vat.js +1 -10
  304. package/dist/gr/vat.js.map +1 -1
  305. package/dist/gt/mod.d.ts +3 -2
  306. package/dist/gt/nit.d.ts +2 -3
  307. package/dist/gt/nit.js +6 -14
  308. package/dist/gt/nit.js.map +1 -1
  309. package/dist/hk/hkid.d.ts +2 -3
  310. package/dist/hk/hkid.js +2 -10
  311. package/dist/hk/hkid.js.map +1 -1
  312. package/dist/hk/mod.d.ts +3 -2
  313. package/dist/hr/mod.d.ts +3 -2
  314. package/dist/hr/vat.d.ts +2 -3
  315. package/dist/hr/vat.js +2 -9
  316. package/dist/hr/vat.js.map +1 -1
  317. package/dist/hu/mod.d.ts +3 -2
  318. package/dist/hu/vat.d.ts +2 -3
  319. package/dist/hu/vat.js +3 -10
  320. package/dist/hu/vat.js.map +1 -1
  321. package/dist/iban.d.ts +2 -3
  322. package/dist/iban.js +2 -8
  323. package/dist/iban.js.map +1 -1
  324. package/dist/id/mod.d.ts +3 -2
  325. package/dist/id/npwp.d.ts +2 -3
  326. package/dist/id/npwp.js +3 -13
  327. package/dist/id/npwp.js.map +1 -1
  328. package/dist/ie/mod.d.ts +3 -2
  329. package/dist/ie/pps.d.ts +2 -3
  330. package/dist/ie/pps.js +1 -10
  331. package/dist/ie/pps.js.map +1 -1
  332. package/dist/ie/vat.d.ts +2 -3
  333. package/dist/ie/vat.js +1 -9
  334. package/dist/ie/vat.js.map +1 -1
  335. package/dist/il/idnr.d.ts +2 -3
  336. package/dist/il/idnr.js +2 -9
  337. package/dist/il/idnr.js.map +1 -1
  338. package/dist/il/mod.d.ts +3 -2
  339. package/dist/in/aadhaar.d.ts +2 -3
  340. package/dist/in/aadhaar.js +2 -12
  341. package/dist/in/aadhaar.js.map +1 -1
  342. package/dist/in/gstin.d.ts +2 -3
  343. package/dist/in/gstin.js +4 -11
  344. package/dist/in/gstin.js.map +1 -1
  345. package/dist/in/mod.d.ts +3 -2
  346. package/dist/in/pan.d.ts +15 -2
  347. package/dist/in/pan.js +3 -15
  348. package/dist/in/pan.js.map +1 -1
  349. package/dist/index.d.ts +2 -2
  350. package/dist/index.js +6 -6
  351. package/dist/iq/mod.d.ts +3 -2
  352. package/dist/iq/nid.d.ts +16 -2
  353. package/dist/iq/nid.js +2 -15
  354. package/dist/iq/nid.js.map +1 -1
  355. package/dist/ir/mod.d.ts +3 -2
  356. package/dist/ir/nid.d.ts +2 -3
  357. package/dist/ir/nid.js +2 -24
  358. package/dist/ir/nid.js.map +1 -1
  359. package/dist/is/kennitala.d.ts +2 -3
  360. package/dist/is/kennitala.js +2 -13
  361. package/dist/is/kennitala.js.map +1 -1
  362. package/dist/is/mod.d.ts +3 -2
  363. package/dist/is/vsk.d.ts +9 -2
  364. package/dist/is/vsk.js +1 -7
  365. package/dist/is/vsk.js.map +1 -1
  366. package/dist/isin.d.ts +2 -3
  367. package/dist/isin.js +11 -21
  368. package/dist/isin.js.map +1 -1
  369. package/dist/it/codicefiscale.d.ts +5 -4
  370. package/dist/it/codicefiscale.js +27 -23
  371. package/dist/it/codicefiscale.js.map +1 -1
  372. package/dist/it/iva.d.ts +2 -3
  373. package/dist/it/iva.js +2 -9
  374. package/dist/it/iva.js.map +1 -1
  375. package/dist/it/mod.d.ts +3 -2
  376. package/dist/jp/cn.d.ts +2 -3
  377. package/dist/jp/cn.js +1 -9
  378. package/dist/jp/cn.js.map +1 -1
  379. package/dist/jp/mod.d.ts +3 -2
  380. package/dist/jp/mynumber.d.ts +2 -3
  381. package/dist/jp/mynumber.js +1 -10
  382. package/dist/jp/mynumber.js.map +1 -1
  383. package/dist/kr/brn.d.ts +11 -2
  384. package/dist/kr/brn.js +1 -9
  385. package/dist/kr/brn.js.map +1 -1
  386. package/dist/kr/mod.d.ts +3 -2
  387. package/dist/kr/rrn.d.ts +5 -4
  388. package/dist/kr/rrn.js +15 -13
  389. package/dist/kr/rrn.js.map +1 -1
  390. package/dist/kw/civil.d.ts +6 -5
  391. package/dist/kw/civil.js +20 -17
  392. package/dist/kw/civil.js.map +1 -1
  393. package/dist/kw/mod.d.ts +3 -2
  394. package/dist/kz/iin.d.ts +2 -3
  395. package/dist/kz/iin.js +4 -18
  396. package/dist/kz/iin.js.map +1 -1
  397. package/dist/kz/mod.d.ts +3 -2
  398. package/dist/lei.d.ts +2 -3
  399. package/dist/lei.js +2 -11
  400. package/dist/lei.js.map +1 -1
  401. package/dist/li/mod.d.ts +3 -2
  402. package/dist/li/peid.d.ts +11 -2
  403. package/dist/li/peid.js +1 -9
  404. package/dist/li/peid.js.map +1 -1
  405. package/dist/lk/mod.d.ts +3 -2
  406. package/dist/lk/nic.d.ts +5 -4
  407. package/dist/lk/nic.js +16 -16
  408. package/dist/lk/nic.js.map +1 -1
  409. package/dist/lt/asmens.d.ts +2 -3
  410. package/dist/lt/asmens.js +2 -1
  411. package/dist/lt/asmens.js.map +1 -1
  412. package/dist/lt/mod.d.ts +3 -2
  413. package/dist/lt/vat.d.ts +2 -3
  414. package/dist/lt/vat.js +2 -10
  415. package/dist/lt/vat.js.map +1 -1
  416. package/dist/lu/mod.d.ts +3 -2
  417. package/dist/lu/vat.d.ts +2 -3
  418. package/dist/lu/vat.js +2 -8
  419. package/dist/lu/vat.js.map +1 -1
  420. package/dist/luhn.d.ts +2 -3
  421. package/dist/luhn.js +9 -9
  422. package/dist/luhn.js.map +1 -1
  423. package/dist/lv/mod.d.ts +3 -2
  424. package/dist/lv/vat.d.ts +2 -3
  425. package/dist/lv/vat.js +19 -18
  426. package/dist/lv/vat.js.map +1 -1
  427. package/dist/ma/ice.d.ts +2 -3
  428. package/dist/ma/ice.js +2 -11
  429. package/dist/ma/ice.js.map +1 -1
  430. package/dist/ma/mod.d.ts +3 -2
  431. package/dist/mc/mod.d.ts +3 -2
  432. package/dist/mc/tva.d.ts +2 -3
  433. package/dist/mc/tva.js +1 -0
  434. package/dist/mc/tva.js.map +1 -1
  435. package/dist/md/idno.d.ts +2 -3
  436. package/dist/md/idno.js +1 -10
  437. package/dist/md/idno.js.map +1 -1
  438. package/dist/md/mod.d.ts +3 -2
  439. package/dist/me/mod.d.ts +3 -2
  440. package/dist/me/pib.d.ts +2 -3
  441. package/dist/me/pib.js +2 -10
  442. package/dist/me/pib.js.map +1 -1
  443. package/dist/mk/edb.d.ts +2 -3
  444. package/dist/mk/edb.js +2 -11
  445. package/dist/mk/edb.js.map +1 -1
  446. package/dist/mk/mod.d.ts +3 -2
  447. package/dist/mt/mod.d.ts +3 -2
  448. package/dist/mt/vat.d.ts +2 -3
  449. package/dist/mt/vat.js +3 -10
  450. package/dist/mt/vat.js.map +1 -1
  451. package/dist/mu/brn.d.ts +23 -2
  452. package/dist/mu/brn.js +1 -21
  453. package/dist/mu/brn.js.map +1 -1
  454. package/dist/mu/mod.d.ts +3 -2
  455. package/dist/mx/clabe.d.ts +2 -3
  456. package/dist/mx/clabe.js +1 -14
  457. package/dist/mx/clabe.js.map +1 -1
  458. package/dist/mx/curp.d.ts +5 -4
  459. package/dist/mx/curp.js +27 -19
  460. package/dist/mx/curp.js.map +1 -1
  461. package/dist/mx/mod.d.ts +3 -2
  462. package/dist/mx/rfc.d.ts +5 -4
  463. package/dist/mx/rfc.js +23 -20
  464. package/dist/mx/rfc.js.map +1 -1
  465. package/dist/my/mod.d.ts +3 -2
  466. package/dist/my/nric.d.ts +5 -4
  467. package/dist/my/nric.js +18 -16
  468. package/dist/my/nric.js.map +1 -1
  469. package/dist/ng/mod.d.ts +3 -2
  470. package/dist/ng/nin.d.ts +13 -2
  471. package/dist/ng/nin.js +1 -11
  472. package/dist/ng/nin.js.map +1 -1
  473. package/dist/ni/mod.d.ts +3 -2
  474. package/dist/ni/ruc.d.ts +2 -3
  475. package/dist/ni/ruc.js +1 -23
  476. package/dist/ni/ruc.js.map +1 -1
  477. package/dist/nl/bsn.d.ts +2 -3
  478. package/dist/nl/bsn.js +2 -10
  479. package/dist/nl/bsn.js.map +1 -1
  480. package/dist/nl/kvk.d.ts +9 -2
  481. package/dist/nl/kvk.js +1 -7
  482. package/dist/nl/kvk.js.map +1 -1
  483. package/dist/nl/mod.d.ts +3 -2
  484. package/dist/nl/vat.d.ts +2 -3
  485. package/dist/nl/vat.js +4 -50
  486. package/dist/nl/vat.js.map +1 -1
  487. package/dist/no/fodselsnummer.d.ts +2 -3
  488. package/dist/no/fodselsnummer.js +3 -10
  489. package/dist/no/fodselsnummer.js.map +1 -1
  490. package/dist/no/mod.d.ts +3 -2
  491. package/dist/no/mva.d.ts +2 -3
  492. package/dist/no/mva.js +1 -8
  493. package/dist/no/mva.js.map +1 -1
  494. package/dist/no/orgnr.d.ts +2 -3
  495. package/dist/no/orgnr.js +2 -8
  496. package/dist/no/orgnr.js.map +1 -1
  497. package/dist/nz/ird.d.ts +2 -3
  498. package/dist/nz/ird.js +4 -13
  499. package/dist/nz/ird.js.map +1 -1
  500. package/dist/nz/mod.d.ts +3 -2
  501. package/dist/pa/mod.d.ts +3 -2
  502. package/dist/pa/ruc.d.ts +2 -3
  503. package/dist/pa/ruc.js +4 -19
  504. package/dist/pa/ruc.js.map +1 -1
  505. package/dist/patterns.d.ts +8 -10
  506. package/dist/patterns.js +83 -28
  507. package/dist/patterns.js.map +1 -1
  508. package/dist/pe/mod.d.ts +3 -2
  509. package/dist/pe/ruc.d.ts +2 -3
  510. package/dist/pe/ruc.js +10 -24
  511. package/dist/pe/ruc.js.map +1 -1
  512. package/dist/ph/mod.d.ts +3 -2
  513. package/dist/ph/philid.d.ts +14 -2
  514. package/dist/ph/philid.js +1 -12
  515. package/dist/ph/philid.js.map +1 -1
  516. package/dist/pk/cnic.d.ts +14 -2
  517. package/dist/pk/cnic.js +1 -12
  518. package/dist/pk/cnic.js.map +1 -1
  519. package/dist/pk/mod.d.ts +3 -2
  520. package/dist/pl/mod.d.ts +3 -2
  521. package/dist/pl/nip.d.ts +2 -3
  522. package/dist/pl/nip.js +2 -10
  523. package/dist/pl/nip.js.map +1 -1
  524. package/dist/pl/pesel.d.ts +2 -3
  525. package/dist/pl/pesel.js +4 -13
  526. package/dist/pl/pesel.js.map +1 -1
  527. package/dist/pl/regon.d.ts +2 -3
  528. package/dist/pl/regon.js +2 -11
  529. package/dist/pl/regon.js.map +1 -1
  530. package/dist/pt/cc.d.ts +2 -3
  531. package/dist/pt/cc.js +7 -13
  532. package/dist/pt/cc.js.map +1 -1
  533. package/dist/pt/mod.d.ts +3 -2
  534. package/dist/pt/vat.d.ts +2 -3
  535. package/dist/pt/vat.js +3 -11
  536. package/dist/pt/vat.js.map +1 -1
  537. package/dist/ro/cnp.d.ts +2 -3
  538. package/dist/ro/cnp.js +5 -14
  539. package/dist/ro/cnp.js.map +1 -1
  540. package/dist/ro/mod.d.ts +3 -2
  541. package/dist/ro/vat.d.ts +2 -3
  542. package/dist/ro/vat.js +13 -11
  543. package/dist/ro/vat.js.map +1 -1
  544. package/dist/rs/mod.d.ts +3 -2
  545. package/dist/rs/pib.d.ts +2 -3
  546. package/dist/rs/pib.js +1 -9
  547. package/dist/rs/pib.js.map +1 -1
  548. package/dist/ru/inn.d.ts +2 -3
  549. package/dist/ru/inn.js +2 -12
  550. package/dist/ru/inn.js.map +1 -1
  551. package/dist/ru/mod.d.ts +3 -2
  552. package/dist/se/mod.d.ts +3 -2
  553. package/dist/se/orgnr.d.ts +2 -3
  554. package/dist/se/orgnr.js +2 -9
  555. package/dist/se/orgnr.js.map +1 -1
  556. package/dist/se/personnummer.d.ts +2 -3
  557. package/dist/se/personnummer.js +8 -15
  558. package/dist/se/personnummer.js.map +1 -1
  559. package/dist/se/vat.d.ts +2 -3
  560. package/dist/se/vat.js +3 -10
  561. package/dist/se/vat.js.map +1 -1
  562. package/dist/sg/mod.d.ts +3 -2
  563. package/dist/sg/uen.d.ts +2 -3
  564. package/dist/sg/uen.js +47 -70
  565. package/dist/sg/uen.js.map +1 -1
  566. package/dist/si/emso.d.ts +2 -3
  567. package/dist/si/emso.js +12 -14
  568. package/dist/si/emso.js.map +1 -1
  569. package/dist/si/mod.d.ts +3 -2
  570. package/dist/si/vat.d.ts +2 -3
  571. package/dist/si/vat.js +3 -12
  572. package/dist/si/vat.js.map +1 -1
  573. package/dist/sk/dic.d.ts +2 -3
  574. package/dist/sk/dic.js +1 -0
  575. package/dist/sk/dic.js.map +1 -1
  576. package/dist/sk/ico.d.ts +2 -3
  577. package/dist/sk/ico.js +1 -0
  578. package/dist/sk/ico.js.map +1 -1
  579. package/dist/sk/mod.d.ts +3 -2
  580. package/dist/sk/rc.d.ts +4 -5
  581. package/dist/sk/rc.js +6 -2
  582. package/dist/sk/rc.js.map +1 -1
  583. package/dist/th/mod.d.ts +3 -2
  584. package/dist/th/tin.d.ts +2 -3
  585. package/dist/th/tin.js +1 -11
  586. package/dist/th/tin.js.map +1 -1
  587. package/dist/tr/mod.d.ts +3 -2
  588. package/dist/tr/tckimlik.d.ts +2 -3
  589. package/dist/tr/tckimlik.js +1 -20
  590. package/dist/tr/tckimlik.js.map +1 -1
  591. package/dist/tr/vkn.d.ts +2 -3
  592. package/dist/tr/vkn.js +1 -20
  593. package/dist/tr/vkn.js.map +1 -1
  594. package/dist/tw/mod.d.ts +3 -2
  595. package/dist/tw/ubn.d.ts +2 -3
  596. package/dist/tw/ubn.js +2 -12
  597. package/dist/tw/ubn.js.map +1 -1
  598. package/dist/types.d.ts +56 -21
  599. package/dist/ua/edrpou.d.ts +2 -3
  600. package/dist/ua/edrpou.js +5 -12
  601. package/dist/ua/edrpou.js.map +1 -1
  602. package/dist/ua/mod.d.ts +3 -2
  603. package/dist/us/ein.d.ts +12 -2
  604. package/dist/us/ein.js +88 -97
  605. package/dist/us/ein.js.map +1 -1
  606. package/dist/us/itin.d.ts +13 -2
  607. package/dist/us/itin.js +4 -15
  608. package/dist/us/itin.js.map +1 -1
  609. package/dist/us/mod.d.ts +3 -2
  610. package/dist/us/rtn.d.ts +2 -3
  611. package/dist/us/rtn.js +11 -23
  612. package/dist/us/rtn.js.map +1 -1
  613. package/dist/us/ssn.d.ts +13 -2
  614. package/dist/us/ssn.js +1 -11
  615. package/dist/us/ssn.js.map +1 -1
  616. package/dist/uy/mod.d.ts +3 -2
  617. package/dist/uy/rut.d.ts +2 -3
  618. package/dist/uy/rut.js +2 -15
  619. package/dist/uy/rut.js.map +1 -1
  620. package/dist/ve/mod.d.ts +3 -2
  621. package/dist/ve/rif.d.ts +2 -3
  622. package/dist/ve/rif.js +13 -26
  623. package/dist/ve/rif.js.map +1 -1
  624. package/dist/vn/mod.d.ts +3 -2
  625. package/dist/vn/mst.d.ts +2 -3
  626. package/dist/vn/mst.js +1 -12
  627. package/dist/vn/mst.js.map +1 -1
  628. package/dist/za/idnr.d.ts +2 -3
  629. package/dist/za/idnr.js +4 -16
  630. package/dist/za/idnr.js.map +1 -1
  631. package/dist/za/mod.d.ts +3 -2
  632. package/package.json +34 -21
  633. package/src/_checksums/mod1110.ts +1 -1
  634. package/src/_checksums/mod112.ts +7 -6
  635. package/src/_util/generate.ts +38 -0
  636. package/src/ad/nrt.ts +19 -7
  637. package/src/ae/eid.ts +7 -3
  638. package/src/ai/tin.ts +7 -3
  639. package/src/al/nipt.ts +7 -3
  640. package/src/am/tin.ts +7 -3
  641. package/src/ar/cbu.ts +9 -5
  642. package/src/ar/cuit.ts +22 -10
  643. package/src/ar/dni.ts +7 -3
  644. package/src/at/businessid.ts +7 -3
  645. package/src/at/tin.ts +7 -3
  646. package/src/at/uid.ts +7 -3
  647. package/src/at/vnr.ts +62 -12
  648. package/src/au/abn.ts +7 -3
  649. package/src/au/acn.ts +7 -3
  650. package/src/au/tfn.ts +7 -3
  651. package/src/az/voen.ts +9 -3
  652. package/src/ba/jmbg.ts +9 -7
  653. package/src/bd/nid.ts +11 -7
  654. package/src/be/bis.ts +8 -4
  655. package/src/be/nn.ts +7 -3
  656. package/src/be/vat.ts +7 -3
  657. package/src/bg/egn.ts +19 -10
  658. package/src/bg/pnf.ts +7 -3
  659. package/src/bg/vat.ts +8 -3
  660. package/src/bh/cpr.ts +17 -4
  661. package/src/bic.ts +26 -20
  662. package/src/br/cnpj.ts +7 -3
  663. package/src/br/cpf.ts +7 -3
  664. package/src/by/unp.ts +19 -9
  665. package/src/bz/tin.ts +19 -4
  666. package/src/ca/bn.ts +7 -3
  667. package/src/ca/sin.ts +7 -3
  668. package/src/ch/ssn.ts +7 -3
  669. package/src/ch/uid.ts +7 -3
  670. package/src/ch/vat.ts +9 -5
  671. package/src/cl/rut.ts +11 -5
  672. package/src/cn/ric.ts +11 -7
  673. package/src/cn/uscc.ts +27 -11
  674. package/src/co/nit.ts +14 -6
  675. package/src/cr/cpf.ts +11 -6
  676. package/src/creditcard.ts +10 -6
  677. package/src/cu/ni.ts +28 -7
  678. package/src/cy/vat.ts +7 -3
  679. package/src/cz/dic.ts +9 -4
  680. package/src/cz/ico.ts +7 -3
  681. package/src/cz/rc.ts +61 -29
  682. package/src/de/handelsreg.ts +21 -6
  683. package/src/de/idnr.ts +10 -3
  684. package/src/de/stnr.ts +11 -3
  685. package/src/de/svnr.ts +14 -5
  686. package/src/de/vat.ts +7 -3
  687. package/src/dk/cpr.ts +23 -8
  688. package/src/dk/cvr.ts +7 -3
  689. package/src/dk/vat.ts +8 -3
  690. package/src/do/rnc.ts +9 -5
  691. package/src/ec/ruc.ts +9 -5
  692. package/src/ee/ik.ts +21 -10
  693. package/src/ee/registrikood.ts +12 -7
  694. package/src/ee/vat.ts +7 -3
  695. package/src/eg/tn.ts +7 -3
  696. package/src/es/cif.ts +10 -7
  697. package/src/es/dni.ts +7 -3
  698. package/src/es/nie.ts +18 -9
  699. package/src/es/nss.ts +7 -3
  700. package/src/es/vat.ts +13 -5
  701. package/src/eu/vat.ts +55 -6
  702. package/src/fi/hetu.ts +26 -8
  703. package/src/fi/vat.ts +8 -3
  704. package/src/fi/ytunnus.ts +7 -3
  705. package/src/fr/nif.ts +7 -3
  706. package/src/fr/nir.ts +9 -7
  707. package/src/fr/siren.ts +7 -3
  708. package/src/fr/siret.ts +7 -3
  709. package/src/fr/tva.ts +7 -3
  710. package/src/gb/nino.ts +18 -13
  711. package/src/gb/sedol.ts +21 -15
  712. package/src/gb/utr.ts +7 -3
  713. package/src/gb/vat.ts +7 -3
  714. package/src/ge/pin.ts +7 -3
  715. package/src/gh/tin.ts +11 -6
  716. package/src/gr/amka.ts +7 -3
  717. package/src/gr/vat.ts +7 -3
  718. package/src/gt/nit.ts +13 -6
  719. package/src/hk/hkid.ts +9 -4
  720. package/src/hr/vat.ts +7 -3
  721. package/src/hu/vat.ts +8 -3
  722. package/src/iban.ts +7 -3
  723. package/src/id/npwp.ts +7 -3
  724. package/src/ie/pps.ts +7 -3
  725. package/src/ie/vat.ts +7 -3
  726. package/src/il/idnr.ts +7 -3
  727. package/src/in/aadhaar.ts +7 -3
  728. package/src/in/gstin.ts +10 -4
  729. package/src/in/pan.ts +15 -6
  730. package/src/index.ts +6 -0
  731. package/src/iq/nid.ts +7 -3
  732. package/src/ir/nid.ts +7 -3
  733. package/src/is/kennitala.ts +7 -3
  734. package/src/is/vsk.ts +7 -3
  735. package/src/isin.ts +17 -7
  736. package/src/it/codicefiscale.ts +49 -7
  737. package/src/it/iva.ts +7 -3
  738. package/src/jp/cn.ts +7 -3
  739. package/src/jp/mynumber.ts +7 -3
  740. package/src/kr/brn.ts +7 -3
  741. package/src/kr/rrn.ts +27 -8
  742. package/src/kw/civil.ts +31 -14
  743. package/src/kz/iin.ts +9 -8
  744. package/src/lei.ts +7 -3
  745. package/src/li/peid.ts +7 -3
  746. package/src/lk/nic.ts +31 -8
  747. package/src/lt/asmens.ts +8 -4
  748. package/src/lt/vat.ts +8 -3
  749. package/src/lu/vat.ts +8 -3
  750. package/src/luhn.ts +10 -3
  751. package/src/lv/vat.ts +53 -23
  752. package/src/ma/ice.ts +7 -3
  753. package/src/mc/tva.ts +9 -5
  754. package/src/md/idno.ts +7 -3
  755. package/src/me/pib.ts +7 -3
  756. package/src/mk/edb.ts +7 -3
  757. package/src/mt/vat.ts +8 -3
  758. package/src/mu/brn.ts +7 -3
  759. package/src/mx/clabe.ts +7 -3
  760. package/src/mx/curp.ts +47 -10
  761. package/src/mx/rfc.ts +42 -7
  762. package/src/my/nric.ts +33 -8
  763. package/src/ng/nin.ts +7 -3
  764. package/src/ni/ruc.ts +7 -3
  765. package/src/nl/bsn.ts +7 -3
  766. package/src/nl/kvk.ts +7 -3
  767. package/src/nl/vat.ts +18 -69
  768. package/src/no/fodselsnummer.ts +12 -7
  769. package/src/no/mva.ts +9 -5
  770. package/src/no/orgnr.ts +7 -3
  771. package/src/nz/ird.ts +12 -8
  772. package/src/pa/ruc.ts +39 -11
  773. package/src/patterns.ts +184 -46
  774. package/src/pe/ruc.ts +13 -10
  775. package/src/ph/philid.ts +7 -3
  776. package/src/pk/cnic.ts +9 -3
  777. package/src/pl/nip.ts +7 -3
  778. package/src/pl/pesel.ts +9 -7
  779. package/src/pl/regon.ts +7 -3
  780. package/src/pt/cc.ts +13 -7
  781. package/src/pt/vat.ts +8 -3
  782. package/src/ro/cnp.ts +16 -8
  783. package/src/ro/vat.ts +8 -3
  784. package/src/rs/pib.ts +7 -3
  785. package/src/ru/inn.ts +9 -5
  786. package/src/se/orgnr.ts +7 -3
  787. package/src/se/personnummer.ts +35 -32
  788. package/src/se/vat.ts +8 -3
  789. package/src/sg/uen.ts +44 -23
  790. package/src/si/emso.ts +37 -11
  791. package/src/si/vat.ts +8 -3
  792. package/src/sk/dic.ts +8 -4
  793. package/src/sk/ico.ts +3 -2
  794. package/src/sk/rc.ts +17 -4
  795. package/src/th/tin.ts +7 -3
  796. package/src/tr/tckimlik.ts +7 -3
  797. package/src/tr/vkn.ts +7 -3
  798. package/src/tw/ubn.ts +9 -5
  799. package/src/types.ts +69 -7
  800. package/src/ua/edrpou.ts +10 -5
  801. package/src/us/ein.ts +95 -91
  802. package/src/us/itin.ts +14 -11
  803. package/src/us/rtn.ts +32 -19
  804. package/src/us/ssn.ts +7 -3
  805. package/src/uy/rut.ts +9 -5
  806. package/src/ve/rif.ts +19 -12
  807. package/src/vn/mst.ts +7 -3
  808. package/src/za/idnr.ts +9 -7
package/src/au/acn.ts CHANGED
@@ -9,13 +9,16 @@
9
9
  * @see https://asic.gov.au/
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 WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 1] as const;
20
23
 
21
24
  const compact = (value: string): string =>
@@ -66,12 +69,13 @@ const generate = (): string => {
66
69
  };
67
70
 
68
71
  /** Australian Company Number. */
69
- const acn: Validator = {
72
+ const acn: CountryValidator<"AU"> = {
70
73
  name: "Australian Company Number",
71
74
  localName: "Australian Company Number",
72
75
  abbreviation: "ACN",
73
76
  aliases: ["ACN", "Australian Company Number"] as const,
74
77
  candidatePattern: "\\d{3}\\s?\\d{3}\\s?\\d{3}",
78
+ scope: "country",
75
79
  country: "AU",
76
80
  entityType: "company",
77
81
  sourceUrl: "https://asic.gov.au/",
package/src/au/tfn.ts CHANGED
@@ -9,13 +9,16 @@
9
9
  * @see https://www.ato.gov.au/Individuals/Tax-file-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 WEIGHTS = [1, 4, 3, 7, 5, 8, 6, 9, 10] as const;
20
23
 
21
24
  const compact = (value: string): string =>
@@ -64,12 +67,13 @@ const generate = (): string => {
64
67
  };
65
68
 
66
69
  /** Australian Tax File Number. */
67
- const tfn: Validator = {
70
+ const tfn: CountryValidator<"AU"> = {
68
71
  name: "Tax File Number",
69
72
  localName: "Tax File Number",
70
73
  abbreviation: "TFN",
71
74
  aliases: ["TFN", "Tax File Number"] as const,
72
75
  candidatePattern: "\\d{8,9}",
76
+ scope: "country",
73
77
  country: "AU",
74
78
  entityType: "person",
75
79
  sourceUrl:
package/src/az/voen.ts CHANGED
@@ -13,12 +13,15 @@
13
13
  * @see https://www.taxes.gov.az/
14
14
  */
15
15
 
16
+ import type {
17
+ ValidateResult,
18
+ CountryValidator,
19
+ } from "../types";
20
+
16
21
  import { clean } from "#util/clean";
17
22
  import { randomDigits } from "#util/generate";
18
23
  import { err } from "#util/result";
19
24
 
20
- import type { ValidateResult, Validator } from "../types";
21
-
22
25
  /** Weights for check digit computation (positions 0-7). */
23
26
  const WEIGHTS = [4, 1, 8, 6, 2, 7, 5, 3] as const;
24
27
 
@@ -63,6 +66,8 @@ const validate = (value: string): ValidateResult => {
63
66
  );
64
67
  }
65
68
 
69
+ // SAFETY: regex above guarantees length === 10.
70
+ // eslint-disable-next-line no-non-null-assertion
66
71
  const lastDigit = v[9]!;
67
72
  if (lastDigit !== "1" && lastDigit !== "2") {
68
73
  return err(
@@ -104,12 +109,13 @@ const generate = (): string => {
104
109
  *
105
110
  * Examples sourced from python-stdnum test suite.
106
111
  */
107
- const voen: Validator = {
112
+ const voen: CountryValidator<"AZ"> = {
108
113
  name: "Azerbaijani Tax ID",
109
114
  localName: "Vergi Ödəyicisinin Eyniləşdirmə Nömrəsi",
110
115
  abbreviation: "VÖEN",
111
116
  aliases: ["VÖEN"] as const,
112
117
  candidatePattern: "\\d{10}",
118
+ scope: "country",
113
119
  country: "AZ",
114
120
  entityType: "any",
115
121
  lengths: [10] as const,
package/src/ba/jmbg.ts CHANGED
@@ -8,6 +8,12 @@
8
8
  * @see https://en.wikipedia.org/wiki/Unique_Master_Citizen_Number
9
9
  */
10
10
 
11
+ import type {
12
+ ParsedPersonId,
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
11
17
  import { weightedSum } from "#checksums/weighted-sum";
12
18
  import { clean } from "#util/clean";
13
19
  import { isValidDate } from "#util/date";
@@ -15,12 +21,6 @@ import { 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 WEIGHTS = [
25
25
  7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2,
26
26
  ] as const;
@@ -106,12 +106,13 @@ const generate = (): string => {
106
106
  };
107
107
 
108
108
  /** Bosnian Unique Master Citizen Number. */
109
- const jmbg: Validator = {
109
+ const jmbg: CountryValidator<"BA", ParsedPersonId> = {
110
110
  name: "Bosnian Personal ID",
111
111
  localName: "Jedinstveni matični broj građana",
112
112
  abbreviation: "JMBG",
113
113
  aliases: ["JMBG", "matični broj"] as const,
114
114
  candidatePattern: "\\d{13}",
115
+ scope: "country",
115
116
  country: "BA",
116
117
  entityType: "person",
117
118
  lengths: [13] as const,
@@ -120,6 +121,7 @@ const jmbg: Validator = {
120
121
  examples: ["0101006500006"] as const,
121
122
  compact,
122
123
  format,
124
+ parse,
123
125
  validate,
124
126
  generate,
125
127
  };
package/src/bd/nid.ts CHANGED
@@ -1,9 +1,9 @@
1
+ const RMO_VALUES = ["1", "2", "3", "4", "5", "9"] as const;
2
+
1
3
  /** Generate a random valid Bangladesh NID (13-digit). */
2
4
  const generate = (): string => {
3
5
  const district = randomDigits(2);
4
- const rmoValues = ["1", "2", "3", "4", "5", "9"];
5
- const rmo =
6
- rmoValues[randomInt(0, rmoValues.length - 1)]!;
6
+ const rmo = randomPick(RMO_VALUES);
7
7
  const rest = randomDigits(10);
8
8
  return `${district}${rmo}${rest}`;
9
9
  };
@@ -30,13 +30,16 @@ const generate = (): string => {
30
30
  * @see https://www.nidw.gov.bd/
31
31
  */
32
32
 
33
+ import type {
34
+ ValidateResult,
35
+ CountryValidator,
36
+ } from "../types";
37
+
33
38
  import { clean } from "#util/clean";
34
- import { randomDigits, randomInt } from "#util/generate";
39
+ import { randomDigits, randomPick } from "#util/generate";
35
40
  import { err } from "#util/result";
36
41
  import { isdigits } from "#util/strings";
37
42
 
38
- import type { ValidateResult, Validator } from "../types";
39
-
40
43
  /**
41
44
  * Valid RMO (residential/municipal/other) codes.
42
45
  * 1 = Rural, 2 = Municipality, 3 = City,
@@ -106,7 +109,7 @@ const validate = (value: string): ValidateResult => {
106
109
  const format = (value: string): string => compact(value);
107
110
 
108
111
  /** Bangladesh National Identity Number. */
109
- const nid: Validator = {
112
+ const nid: CountryValidator<"BD"> = {
110
113
  name: "National Identity Number",
111
114
  localName: "জাতীয় পরিচয়পত্র",
112
115
  abbreviation: "NID",
@@ -116,6 +119,7 @@ const nid: Validator = {
116
119
  "National ID Card",
117
120
  ] as const,
118
121
  candidatePattern: "\\d{10,17}",
122
+ scope: "country",
119
123
  country: "BD",
120
124
  entityType: "person",
121
125
  lengths: [10, 13, 17],
package/src/be/bis.ts CHANGED
@@ -10,14 +10,17 @@
10
10
  * @see https://nl.wikipedia.org/wiki/Rijksregisternummer
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+ import { checksum, format as nnFormat } from "./nn";
18
+
13
19
  import { clean } from "#util/clean";
14
20
  import { randomInt } from "#util/generate";
15
21
  import { err } from "#util/result";
16
22
  import { isdigits } from "#util/strings";
17
23
 
18
- import type { ValidateResult, Validator } from "../types";
19
- import { checksum, format as nnFormat } from "./nn";
20
-
21
24
  const compact = (value: string): string =>
22
25
  clean(value, " .-");
23
26
 
@@ -83,13 +86,14 @@ const generate = (): string => {
83
86
  };
84
87
 
85
88
  /** Belgian BIS Number. */
86
- const bis: Validator = {
89
+ const bis: CountryValidator<"BE"> = {
87
90
  name: "Belgian BIS Number",
88
91
  localName: "BIS-nummer",
89
92
  abbreviation: "BIS",
90
93
  aliases: ["BIS-nummer", "numéro BIS"] as const,
91
94
  candidatePattern:
92
95
  "\\d{2}\\.?\\d{2}\\.?\\d{2}-?\\d{3}\\.?\\d{2}",
96
+ scope: "country",
93
97
  country: "BE",
94
98
  entityType: "person",
95
99
  sourceUrl:
package/src/be/nn.ts CHANGED
@@ -10,13 +10,16 @@
10
10
  * @see https://www.ibz.rrn.fgov.be/
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 { randomInt } 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 compact = (value: string): string =>
21
24
  clean(value, " .-");
22
25
 
@@ -100,7 +103,7 @@ const generate = (): string => {
100
103
  };
101
104
 
102
105
  /** Belgian National Number. */
103
- const nn: Validator = {
106
+ const nn: CountryValidator<"BE"> = {
104
107
  name: "Belgian National Number",
105
108
  localName: "Numéro national",
106
109
  abbreviation: "NN",
@@ -111,6 +114,7 @@ const nn: Validator = {
111
114
  ] as const,
112
115
  candidatePattern:
113
116
  "\\d{2}\\.?\\d{2}\\.?\\d{2}-?\\d{3}\\.?\\d{2}",
117
+ scope: "country",
114
118
  country: "BE",
115
119
  entityType: "person",
116
120
  sourceUrl: "https://www.ibz.rrn.fgov.be/",
package/src/be/vat.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/belgium-tin.pdf
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
  let v = clean(value, " -/.");
20
23
  if (v.startsWith("BE") || v.startsWith("be")) {
@@ -82,7 +85,7 @@ const generate = (): string => {
82
85
  };
83
86
 
84
87
  /** Belgian VAT Number. */
85
- const vat: Validator = {
88
+ const vat: CountryValidator<"BE"> = {
86
89
  name: "Belgian VAT Number",
87
90
  localName: "BTW-identificatienummer",
88
91
  abbreviation: "BTW",
@@ -93,6 +96,7 @@ const vat: Validator = {
93
96
  "ondernemingsnummer",
94
97
  ] as const,
95
98
  candidatePattern: "BE0?\\d{9,10}",
99
+ scope: "country",
96
100
  country: "BE",
97
101
  entityType: "company",
98
102
  sourceUrl: "https://finances.belgium.be/",
package/src/bg/egn.ts CHANGED
@@ -5,10 +5,22 @@
5
5
  * 10 digits encoding date of birth, serial number,
6
6
  * and a check digit.
7
7
  *
8
- * @see https://en.wikipedia.org/wiki/Unique_citizenship_number
9
- * @see https://www.grao.bg/
8
+ * Canonical source:
9
+ * - GRAO regulation PDF describing the EGN structure.
10
+ *
11
+ * We treat this as authoritative over third-party
12
+ * oracle libraries when the checksum or date rules
13
+ * disagree.
14
+ *
15
+ * @see https://www.grao.bg/normact/NaredbaFunkcESGR.pdf
10
16
  */
11
17
 
18
+ import type {
19
+ ParsedPersonId,
20
+ ValidateResult,
21
+ CountryValidator,
22
+ } from "../types";
23
+
12
24
  import { weightedSum } from "#checksums/weighted-sum";
13
25
  import { clean } from "#util/clean";
14
26
  import { isValidDate } from "#util/date";
@@ -16,12 +28,6 @@ import { randomInt } from "#util/generate";
16
28
  import { err } from "#util/result";
17
29
  import { isdigits } from "#util/strings";
18
30
 
19
- import type {
20
- ParsedPersonId,
21
- ValidateResult,
22
- Validator,
23
- } from "../types";
24
-
25
31
  const WEIGHTS = [2, 4, 8, 5, 10, 9, 7, 3, 6] as const;
26
32
 
27
33
  const compact = (value: string): string =>
@@ -131,7 +137,7 @@ const generate = (): string => {
131
137
  };
132
138
 
133
139
  /** Bulgarian Personal Identification Number. */
134
- const egn: Validator = {
140
+ const egn: CountryValidator<"BG", ParsedPersonId> = {
135
141
  name: "Bulgarian Personal ID",
136
142
  localName: "Единен граждански номер",
137
143
  abbreviation: "ЕГН",
@@ -141,12 +147,15 @@ const egn: Validator = {
141
147
  "EGN",
142
148
  ] as const,
143
149
  candidatePattern: "\\d{10}",
150
+ scope: "country",
144
151
  country: "BG",
145
152
  entityType: "person",
146
- sourceUrl: "https://www.grao.bg/",
153
+ sourceUrl:
154
+ "https://www.grao.bg/normact/NaredbaFunkcESGR.pdf",
147
155
  examples: ["7523169263"] as const,
148
156
  compact,
149
157
  format,
158
+ parse,
150
159
  validate,
151
160
  generate,
152
161
  };
package/src/bg/pnf.ts CHANGED
@@ -7,13 +7,16 @@
7
7
  * @see https://en.wikipedia.org/wiki/Unique_citizenship_number
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+
10
15
  import { clean } from "#util/clean";
11
16
  import { randomDigits } from "#util/generate";
12
17
  import { err } from "#util/result";
13
18
  import { isdigits } from "#util/strings";
14
19
 
15
- import type { ValidateResult, Validator } from "../types";
16
-
17
20
  const WEIGHTS = [21, 19, 17, 13, 11, 9, 7, 3, 1] as const;
18
21
 
19
22
  const compact = (value: string): string =>
@@ -61,7 +64,7 @@ const generate = (): string => {
61
64
  };
62
65
 
63
66
  /** Bulgarian Personal Number of a Foreigner. */
64
- const pnf: Validator = {
67
+ const pnf: CountryValidator<"BG"> = {
65
68
  name: "Bulgarian Foreigner Number",
66
69
  localName: "Личен номер на чужденец",
67
70
  abbreviation: "ЛНЧ",
@@ -71,6 +74,7 @@ const pnf: Validator = {
71
74
  "PNF",
72
75
  ] as const,
73
76
  candidatePattern: "\\d{10}",
77
+ scope: "country",
74
78
  country: "BG",
75
79
  entityType: "person",
76
80
  sourceUrl:
package/src/bg/vat.ts CHANGED
@@ -7,14 +7,17 @@
7
7
  * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/bulgaria-tin.pdf
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+
10
15
  import { weightedSum } from "#checksums/weighted-sum";
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
  let v = clean(value, " -/.");
20
23
  if (v.startsWith("BG") || v.startsWith("bg")) {
@@ -132,7 +135,7 @@ const generate = (): string => {
132
135
  };
133
136
 
134
137
  /** Bulgarian VAT Number. */
135
- const vat: Validator = {
138
+ const vat: CountryValidator<"BG"> = {
136
139
  name: "Bulgarian VAT Number",
137
140
  localName: "ИН по ДДС",
138
141
  abbreviation: "ИН по ДДС",
@@ -141,9 +144,11 @@ const vat: Validator = {
141
144
  "идентификационен номер по ДДС",
142
145
  ] as const,
143
146
  candidatePattern: "BG\\d{9,10}",
147
+ scope: "country",
144
148
  country: "BG",
145
149
  entityType: "any",
146
150
  sourceUrl: "https://www.nra.bg/",
151
+ lengths: [9, 10] as const,
147
152
  examples: ["175074752"] as const,
148
153
  compact,
149
154
  format,
package/src/bh/cpr.ts CHANGED
@@ -16,12 +16,16 @@
16
16
  * @see https://www.bahrain.bh/wps/portal/IDInfo_en
17
17
  */
18
18
 
19
+ import type {
20
+ ValidateResult,
21
+ CountryValidator,
22
+ } from "../types";
23
+
19
24
  import { clean } from "#util/clean";
25
+ import { randomDigits, randomInt } from "#util/generate";
20
26
  import { err } from "#util/result";
21
27
  import { isdigits } from "#util/strings";
22
28
 
23
- import type { ValidateResult, Validator } from "../types";
24
-
25
29
  const compact = (value: string): string =>
26
30
  clean(value, " -");
27
31
 
@@ -59,13 +63,21 @@ const format = (value: string): string => {
59
63
  return `${v.slice(0, 2)}-${v.slice(2, 4)}-${v.slice(4)}`;
60
64
  };
61
65
 
66
+ /** Generate a random structurally valid Bahrain CPR. */
67
+ const generate = (): string => {
68
+ const yy = String(randomInt(0, 99)).padStart(2, "0");
69
+ const mm = String(randomInt(1, 12)).padStart(2, "0");
70
+ return `${yy}${mm}${randomDigits(5)}`;
71
+ };
72
+
62
73
  /** Bahrain Central Population Registration number. */
63
- const cpr: Validator = {
74
+ const cpr: CountryValidator<"BH"> = {
64
75
  name: "Central Population Registration Number",
65
76
  localName: "الرقم السكاني",
66
77
  abbreviation: "CPR",
67
78
  aliases: ["CPR", "الرقم السكاني"] as const,
68
79
  candidatePattern: "\\d{9}",
80
+ scope: "country",
69
81
  country: "BH",
70
82
  entityType: "person",
71
83
  lengths: [9] as const,
@@ -75,7 +87,8 @@ const cpr: Validator = {
75
87
  compact,
76
88
  format,
77
89
  validate,
90
+ generate,
78
91
  };
79
92
 
80
93
  export default cpr;
81
- export { compact, format, validate };
94
+ export { compact, format, generate, validate };
package/src/bic.ts CHANGED
@@ -1,28 +1,26 @@
1
+ const BIC_ALPHANUM = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
2
+ const BIC_COUNTRIES = [
3
+ "DE",
4
+ "GB",
5
+ "US",
6
+ "FR",
7
+ "CH",
8
+ "NL",
9
+ "AT",
10
+ ] as const;
11
+
1
12
  /** Generate a random valid BIC (8-character). */
2
13
  const generate = (): string => {
3
14
  const randomLetter = (): string =>
4
15
  String.fromCodePoint(65 + randomInt(0, 25));
5
- const randomAlphaNum = (): string => {
6
- const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
7
- return chars[randomInt(0, chars.length - 1)]!;
8
- };
9
- const countries = [
10
- "DE",
11
- "GB",
12
- "US",
13
- "FR",
14
- "CH",
15
- "NL",
16
- "AT",
17
- ];
18
- const country =
19
- countries[randomInt(0, countries.length - 1)]!;
16
+ const country = randomPick(BIC_COUNTRIES);
20
17
  const bank =
21
18
  randomLetter() +
22
19
  randomLetter() +
23
20
  randomLetter() +
24
21
  randomLetter();
25
- const location = randomAlphaNum() + randomAlphaNum();
22
+ const location =
23
+ randomChar(BIC_ALPHANUM) + randomChar(BIC_ALPHANUM);
26
24
  return `${bank}${country}${location}`;
27
25
  };
28
26
 
@@ -38,12 +36,19 @@ const generate = (): string => {
38
36
  * @see https://www.swift.com/
39
37
  */
40
38
 
39
+ import type {
40
+ ValidateResult,
41
+ GlobalValidator,
42
+ } from "./types";
43
+
41
44
  import { clean } from "#util/clean";
42
- import { randomInt } from "#util/generate";
45
+ import {
46
+ randomChar,
47
+ randomInt,
48
+ randomPick,
49
+ } from "#util/generate";
43
50
  import { err } from "#util/result";
44
51
 
45
- import type { ValidateResult, Validator } from "./types";
46
-
47
52
  const BIC_RE =
48
53
  /^[A-Z]{4}[A-Z]{2}[0-9A-Z]{2}([0-9A-Z]{3})?$/;
49
54
 
@@ -80,7 +85,8 @@ const format = (value: string): string => {
80
85
  };
81
86
 
82
87
  /** Business Identifier Code (SWIFT/BIC). */
83
- const bic: Validator = {
88
+ const bic: GlobalValidator = {
89
+ scope: "global",
84
90
  name: "Business Identifier Code",
85
91
  localName: "Business Identifier Code",
86
92
  abbreviation: "BIC",
package/src/br/cnpj.ts CHANGED
@@ -19,12 +19,15 @@
19
19
  * @see https://en.wikipedia.org/wiki/CNPJ
20
20
  */
21
21
 
22
+ import type {
23
+ ValidateResult,
24
+ CountryValidator,
25
+ } from "../types";
26
+
22
27
  import { clean } from "#util/clean";
23
28
  import { randomDigits } from "#util/generate";
24
29
  import { err } from "#util/result";
25
30
 
26
- import type { ValidateResult, Validator } from "../types";
27
-
28
31
  const CNPJ_RE = /^[\dA-Z]+$/;
29
32
 
30
33
  const compact = (value: string): string =>
@@ -128,7 +131,7 @@ const generate = (): string => {
128
131
  * - Petrobras: 33.000.167/0001-01
129
132
  * - Banco do Brasil: 00.000.000/0001-91
130
133
  */
131
- const cnpj: Validator = {
134
+ const cnpj: CountryValidator<"BR"> = {
132
135
  name: "Brazilian CNPJ",
133
136
  localName: "Cadastro Nacional da Pessoa Jurídica",
134
137
  abbreviation: "CNPJ",
@@ -138,6 +141,7 @@ const cnpj: Validator = {
138
141
  ] as const,
139
142
  candidatePattern:
140
143
  "\\d{2}\\.?\\d{3}\\.?\\d{3}/?\\d{4}-?\\d{2}",
144
+ scope: "country",
141
145
  country: "BR",
142
146
  entityType: "company",
143
147
  sourceUrl: "https://www.gov.br/receitafederal/",
package/src/br/cpf.ts CHANGED
@@ -13,13 +13,16 @@
13
13
  * @see https://en.wikipedia.org/wiki/CPF_number
14
14
  */
15
15
 
16
+ import type {
17
+ ValidateResult,
18
+ CountryValidator,
19
+ } from "../types";
20
+
16
21
  import { clean } from "#util/clean";
17
22
  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, " -.").trim();
25
28
 
@@ -94,12 +97,13 @@ const generate = (): string => {
94
97
  };
95
98
 
96
99
  /** Brazilian CPF (personal tax ID). */
97
- const cpf: Validator = {
100
+ const cpf: CountryValidator<"BR"> = {
98
101
  name: "Brazilian CPF",
99
102
  localName: "Cadastro de Pessoas Físicas",
100
103
  abbreviation: "CPF",
101
104
  aliases: ["CPF", "Cadastro de Pessoas Físicas"] as const,
102
105
  candidatePattern: "\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}",
106
+ scope: "country",
103
107
  country: "BR",
104
108
  entityType: "person",
105
109
  sourceUrl: "https://www.gov.br/receitafederal/",