@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/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
@@ -15,6 +15,12 @@
15
15
  * @see https://www.grao.bg/normact/NaredbaFunkcESGR.pdf
16
16
  */
17
17
 
18
+ import type {
19
+ ParsedPersonId,
20
+ ValidateResult,
21
+ CountryValidator,
22
+ } from "../types";
23
+
18
24
  import { weightedSum } from "#checksums/weighted-sum";
19
25
  import { clean } from "#util/clean";
20
26
  import { isValidDate } from "#util/date";
@@ -22,12 +28,6 @@ import { randomInt } from "#util/generate";
22
28
  import { err } from "#util/result";
23
29
  import { isdigits } from "#util/strings";
24
30
 
25
- import type {
26
- ParsedPersonId,
27
- ValidateResult,
28
- Validator,
29
- } from "../types";
30
-
31
31
  const WEIGHTS = [2, 4, 8, 5, 10, 9, 7, 3, 6] as const;
32
32
 
33
33
  const compact = (value: string): string =>
@@ -137,7 +137,7 @@ const generate = (): string => {
137
137
  };
138
138
 
139
139
  /** Bulgarian Personal Identification Number. */
140
- const egn: Validator<ParsedPersonId> = {
140
+ const egn: CountryValidator<"BG", ParsedPersonId> = {
141
141
  name: "Bulgarian Personal ID",
142
142
  localName: "Единен граждански номер",
143
143
  abbreviation: "ЕГН",
@@ -147,6 +147,7 @@ const egn: Validator<ParsedPersonId> = {
147
147
  "EGN",
148
148
  ] as const,
149
149
  candidatePattern: "\\d{10}",
150
+ scope: "country",
150
151
  country: "BG",
151
152
  entityType: "person",
152
153
  sourceUrl:
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,13 +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";
20
25
  import { randomDigits, randomInt } from "#util/generate";
21
26
  import { err } from "#util/result";
22
27
  import { isdigits } from "#util/strings";
23
28
 
24
- import type { ValidateResult, Validator } from "../types";
25
-
26
29
  const compact = (value: string): string =>
27
30
  clean(value, " -");
28
31
 
@@ -68,12 +71,13 @@ const generate = (): string => {
68
71
  };
69
72
 
70
73
  /** Bahrain Central Population Registration number. */
71
- const cpr: Validator = {
74
+ const cpr: CountryValidator<"BH"> = {
72
75
  name: "Central Population Registration Number",
73
76
  localName: "الرقم السكاني",
74
77
  abbreviation: "CPR",
75
78
  aliases: ["CPR", "الرقم السكاني"] as const,
76
79
  candidatePattern: "\\d{9}",
80
+ scope: "country",
77
81
  country: "BH",
78
82
  entityType: "person",
79
83
  lengths: [9] as const,
package/src/bic.ts CHANGED
@@ -36,6 +36,11 @@ const generate = (): string => {
36
36
  * @see https://www.swift.com/
37
37
  */
38
38
 
39
+ import type {
40
+ ValidateResult,
41
+ GlobalValidator,
42
+ } from "./types";
43
+
39
44
  import { clean } from "#util/clean";
40
45
  import {
41
46
  randomChar,
@@ -44,8 +49,6 @@ import {
44
49
  } from "#util/generate";
45
50
  import { err } from "#util/result";
46
51
 
47
- import type { ValidateResult, Validator } from "./types";
48
-
49
52
  const BIC_RE =
50
53
  /^[A-Z]{4}[A-Z]{2}[0-9A-Z]{2}([0-9A-Z]{3})?$/;
51
54
 
@@ -82,7 +85,8 @@ const format = (value: string): string => {
82
85
  };
83
86
 
84
87
  /** Business Identifier Code (SWIFT/BIC). */
85
- const bic: Validator = {
88
+ const bic: GlobalValidator = {
89
+ scope: "global",
86
90
  name: "Business Identifier Code",
87
91
  localName: "Business Identifier Code",
88
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/",
package/src/by/unp.ts CHANGED
@@ -11,13 +11,16 @@
11
11
  * @see https://www.nalog.gov.by/
12
12
  */
13
13
 
14
+ import type {
15
+ ValidateResult,
16
+ CountryValidator,
17
+ } from "../types";
18
+
14
19
  import { clean } from "#util/clean";
15
20
  import { randomDigits, 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
  /** Cyrillic to Latin mapping for the letter positions. */
22
25
  const CYRILLIC_TO_LATIN: Record<string, string> = {
23
26
  А: "A",
@@ -44,7 +47,8 @@ const compact = (value: string): string => {
44
47
  } else if (v.startsWith("UNP")) {
45
48
  v = v.slice(3);
46
49
  }
47
- return [...v]
50
+ return v
51
+ .split("")
48
52
  .map((ch) => CYRILLIC_TO_LATIN[ch] ?? ch)
49
53
  .join("");
50
54
  };
@@ -88,7 +92,7 @@ const validate = (value: string): ValidateResult => {
88
92
  const first2 = v.slice(0, 2);
89
93
  if (
90
94
  !isdigits(first2) &&
91
- ![...first2].every((ch) => ALPHA_SET.includes(ch))
95
+ !first2.split("").every((ch) => ALPHA_SET.includes(ch))
92
96
  ) {
93
97
  return err(
94
98
  "INVALID_FORMAT",
@@ -138,12 +142,13 @@ const generate = (): string => {
138
142
  };
139
143
 
140
144
  /** Belarus UNP (Учётный номер плательщика). */
141
- const unp: Validator = {
145
+ const unp: CountryValidator<"BY"> = {
142
146
  name: "Belarus Tax Number",
143
147
  localName: "Учётный номер плательщика",
144
148
  abbreviation: "УНП",
145
149
  aliases: ["УНП", "UNP"] as const,
146
150
  candidatePattern: "\\d{9}",
151
+ scope: "country",
147
152
  country: "BY",
148
153
  entityType: "any",
149
154
  sourceUrl: "https://www.nalog.gov.by/",
package/src/bz/tin.ts CHANGED
@@ -25,12 +25,15 @@
25
25
  * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf
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 { randomDigits, randomInt } from "#util/generate";
30
35
  import { err } from "#util/result";
31
36
 
32
- import type { ValidateResult, Validator } from "../types";
33
-
34
37
  /** Valid 2-digit suffix codes. */
35
38
  const SUFFIX_CODES = ["10", "13", "66"] as const;
36
39
 
@@ -94,12 +97,13 @@ const generate = (): string => {
94
97
  *
95
98
  * Examples derived from stdnum-js test suite.
96
99
  */
97
- const tin: Validator = {
100
+ const tin: CountryValidator<"BZ"> = {
98
101
  name: "Belize Tax Identification Number",
99
102
  localName: "Tax Identification Number",
100
103
  abbreviation: "TIN",
101
104
  aliases: ["TIN"] as const,
102
105
  candidatePattern: "\\d{6}",
106
+ scope: "country",
103
107
  country: "BZ",
104
108
  entityType: "any",
105
109
  lengths: [6, 8] as const,
package/src/ca/bn.ts CHANGED
@@ -8,6 +8,11 @@
8
8
  * @see https://www.canada.ca/en/services/taxes/business-number.html
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import {
12
17
  luhnValidate,
13
18
  luhnChecksum,
@@ -17,8 +22,6 @@ import { randomDigits } from "#util/generate";
17
22
  import { err } from "#util/result";
18
23
  import { isdigits } from "#util/strings";
19
24
 
20
- import type { ValidateResult, Validator } from "../types";
21
-
22
25
  const VALID_PROGRAMS = new Set(["RC", "RM", "RP", "RT"]);
23
26
 
24
27
  const compact = (value: string): string =>
@@ -82,7 +85,7 @@ const generate = (): string => {
82
85
  };
83
86
 
84
87
  /** Canadian Business Number. */
85
- const bn: Validator = {
88
+ const bn: CountryValidator<"CA"> = {
86
89
  name: "Business Number",
87
90
  localName: "Business Number",
88
91
  abbreviation: "BN",
@@ -92,6 +95,7 @@ const bn: Validator = {
92
95
  "numéro d'entreprise",
93
96
  ] as const,
94
97
  candidatePattern: "\\d{9}\\s?[A-Z]{2}\\s?\\d{4}",
98
+ scope: "country",
95
99
  country: "CA",
96
100
  entityType: "company",
97
101
  sourceUrl:
package/src/ca/sin.ts CHANGED
@@ -8,6 +8,11 @@
8
8
  * @see https://en.wikipedia.org/wiki/Social_Insurance_Number
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import {
12
17
  luhnValidate,
13
18
  luhnChecksum,
@@ -17,8 +22,6 @@ import { randomDigits, 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
 
@@ -66,7 +69,7 @@ const generate = (): string => {
66
69
  };
67
70
 
68
71
  /** Canadian Social Insurance Number. */
69
- const sin: Validator = {
72
+ const sin: CountryValidator<"CA"> = {
70
73
  name: "Social Insurance Number",
71
74
  localName: "Social Insurance Number",
72
75
  abbreviation: "SIN",
@@ -76,6 +79,7 @@ const sin: Validator = {
76
79
  "NAS",
77
80
  ] as const,
78
81
  candidatePattern: "\\d{3}-?\\d{3}-?\\d{3}",
82
+ scope: "country",
79
83
  country: "CA",
80
84
  entityType: "person",
81
85
  sourceUrl:
package/src/ch/ssn.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.bsv.admin.ch/
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
 
@@ -70,7 +73,7 @@ const generate = (): string => {
70
73
  };
71
74
 
72
75
  /** Swiss Social Security Number. */
73
- const ssn: Validator = {
76
+ const ssn: CountryValidator<"CH"> = {
74
77
  name: "Swiss Social Security Number",
75
78
  localName: "AHV-Versichertennummer",
76
79
  abbreviation: "AHV",
@@ -81,6 +84,7 @@ const ssn: Validator = {
81
84
  "AHV",
82
85
  ] as const,
83
86
  candidatePattern: "756\\.?\\d{4}\\.?\\d{4}\\.?\\d{2}",
87
+ scope: "country",
84
88
  country: "CH",
85
89
  entityType: "person",
86
90
  sourceUrl: "https://www.bsv.admin.ch/",
package/src/ch/uid.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.uid.admin.ch/
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 WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4] as const;
19
22
 
20
23
  const compact = (value: string): string =>
@@ -84,7 +87,7 @@ const generate = (): string => {
84
87
  };
85
88
 
86
89
  /** Swiss Business Identification Number. */
87
- const uid: Validator = {
90
+ const uid: CountryValidator<"CH"> = {
88
91
  name: "Swiss Business ID",
89
92
  localName: "Unternehmens-Identifikationsnummer",
90
93
  abbreviation: "UID",
@@ -94,6 +97,7 @@ const uid: Validator = {
94
97
  "IDE",
95
98
  ] as const,
96
99
  candidatePattern: "CHE-?\\d{3}\\.?\\d{3}\\.?\\d{3}",
100
+ scope: "country",
97
101
  country: "CH",
98
102
  entityType: "company",
99
103
  sourceUrl: "https://www.uid.admin.ch/",
package/src/ch/vat.ts CHANGED
@@ -8,15 +8,18 @@
8
8
  * @see https://www.estv.admin.ch/
9
9
  */
10
10
 
11
- import { clean } from "#util/clean";
12
- import { err } from "#util/result";
13
-
14
- import type { ValidateResult, Validator } from "../types";
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
15
  import {
16
16
  validate as validateUid,
17
17
  generate as generateUid,
18
18
  } from "./uid";
19
19
 
20
+ import { clean } from "#util/clean";
21
+ import { err } from "#util/result";
22
+
20
23
  const SUFFIXES = ["MWST", "TVA", "IVA", "TPV"] as const;
21
24
 
22
25
  const compact = (value: string): string =>
@@ -64,13 +67,14 @@ const format = (value: string): string => {
64
67
  const generate = (): string => generateUid() + "MWST";
65
68
 
66
69
  /** Swiss VAT Number. */
67
- const vat: Validator = {
70
+ const vat: CountryValidator<"CH"> = {
68
71
  name: "Swiss VAT Number",
69
72
  localName: "Mehrwertsteuernummer",
70
73
  abbreviation: "MWST",
71
74
  aliases: ["MWST", "TVA", "IVA"] as const,
72
75
  candidatePattern:
73
76
  "CHE-?\\d{3}\\.?\\d{3}\\.?\\d{3}\\s?(?:MWST|TVA|IVA)",
77
+ scope: "country",
74
78
  country: "CH",
75
79
  entityType: "company",
76
80
  sourceUrl: "https://www.estv.admin.ch/",
package/src/cl/rut.ts CHANGED
@@ -13,12 +13,15 @@
13
13
  * @see https://en.wikipedia.org/wiki/Rol_%C3%9Anico_Tributario
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
  const RUT_RE = /^\d{7,8}[\dK]$/;
23
26
 
24
27
  const compact = (value: string): string => {
@@ -99,12 +102,13 @@ const generate = (): string => {
99
102
  * Examples sourced from python-stdnum test suite
100
103
  * (cl.rut module).
101
104
  */
102
- const rut: Validator = {
105
+ const rut: CountryValidator<"CL"> = {
103
106
  name: "Chilean Tax ID",
104
107
  localName: "Rol Único Tributario",
105
108
  abbreviation: "RUT",
106
109
  aliases: ["RUT", "Rol Único Tributario"] as const,
107
110
  candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[\\dkK]",
111
+ scope: "country",
108
112
  country: "CL",
109
113
  entityType: "any",
110
114
  compact,