@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/ae/eid.ts CHANGED
@@ -10,6 +10,11 @@
10
10
  * @see https://u.ae/en/information-and-services/visa-and-emirates-id/emirates-id
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import {
14
19
  luhnChecksum,
15
20
  luhnValidate,
@@ -19,8 +24,6 @@ import { randomDigits, randomInt } from "#util/generate";
19
24
  import { err } from "#util/result";
20
25
  import { isdigits } from "#util/strings";
21
26
 
22
- import type { ValidateResult, Validator } from "../types";
23
-
24
27
  const compact = (value: string): string =>
25
28
  clean(value, " -/");
26
29
 
@@ -77,12 +80,13 @@ const generate = (): string => {
77
80
  };
78
81
 
79
82
  /** UAE Emirates ID. */
80
- const eid: Validator = {
83
+ const eid: CountryValidator<"AE"> = {
81
84
  name: "Emirates ID",
82
85
  localName: "رقم الهوية",
83
86
  abbreviation: "EID",
84
87
  aliases: ["EID", "Emirates ID", "رقم الهوية"] as const,
85
88
  candidatePattern: "784-\\d{4}-\\d{7}-\\d",
89
+ scope: "country",
86
90
  country: "AE",
87
91
  entityType: "person",
88
92
  lengths: [15],
package/src/ai/tin.ts CHANGED
@@ -23,12 +23,15 @@ const generate = (): string => {
23
23
  * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Anguilla-TIN.pdf
24
24
  */
25
25
 
26
+ import type {
27
+ ValidateResult,
28
+ CountryValidator,
29
+ } from "../types";
30
+
26
31
  import { clean } from "#util/clean";
27
32
  import { randomDigits } from "#util/generate";
28
33
  import { err } from "#util/result";
29
34
 
30
- import type { ValidateResult, Validator } from "../types";
31
-
32
35
  const compact = (value: string): string => {
33
36
  return clean(value, " -").trim();
34
37
  };
@@ -74,12 +77,13 @@ const format = (value: string): string => {
74
77
  * (format-only validation, no published check
75
78
  * digit algorithm).
76
79
  */
77
- const tin: Validator = {
80
+ const tin: CountryValidator<"AI"> = {
78
81
  name: "Anguilla Tax Identification Number",
79
82
  localName: "Tax Identification Number",
80
83
  abbreviation: "TIN",
81
84
  aliases: ["TIN"] as const,
82
85
  candidatePattern: "\\d{11}",
86
+ scope: "country",
83
87
  country: "AI",
84
88
  entityType: "any",
85
89
  lengths: [10] as const,
package/src/al/nipt.ts CHANGED
@@ -18,12 +18,15 @@ const generate = (): string => {
18
18
  * @see https://www.tatime.gov.al/eng/c/4/103/business-lifecycle
19
19
  */
20
20
 
21
+ import type {
22
+ ValidateResult,
23
+ CountryValidator,
24
+ } from "../types";
25
+
21
26
  import { clean } from "#util/clean";
22
27
  import { randomDigits, randomInt } from "#util/generate";
23
28
  import { err } from "#util/result";
24
29
 
25
- import type { ValidateResult, Validator } from "../types";
26
-
27
30
  const NIPT_RE = /^[A-M]\d{8}[A-Z]$/;
28
31
 
29
32
  const compact = (value: string): string => {
@@ -57,13 +60,14 @@ const validate = (value: string): ValidateResult => {
57
60
  const format = (value: string): string => compact(value);
58
61
 
59
62
  /** Albanian NIPT (tax identification number). */
60
- const nipt: Validator = {
63
+ const nipt: CountryValidator<"AL"> = {
61
64
  name: "Albanian Tax Number",
62
65
  localName:
63
66
  "Numri i Identifikimit për Personin e Tatueshëm",
64
67
  abbreviation: "NIPT",
65
68
  aliases: ["NIPT", "NUIS"] as const,
66
69
  candidatePattern: "[A-Z]\\d{8}[A-Z]",
70
+ scope: "country",
67
71
  country: "AL",
68
72
  entityType: "any",
69
73
  sourceUrl: "https://www.tatime.gov.al/",
package/src/am/tin.ts CHANGED
@@ -16,13 +16,16 @@ const generate = (): string => randomDigits(8);
16
16
  * @see https://www.src.am/en/taxpayerSearchSystemPage/112
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 } 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, " -").trim();
28
31
 
@@ -49,12 +52,13 @@ const validate = (value: string): ValidateResult => {
49
52
  const format = (value: string): string => compact(value);
50
53
 
51
54
  /** Armenian Tax Identification Number. */
52
- const tin: Validator = {
55
+ const tin: CountryValidator<"AM"> = {
53
56
  name: "Armenian Tax ID",
54
57
  localName: "Հարկ վճարողի հաշվառման համար",
55
58
  abbreviation: "TIN",
56
59
  aliases: ["ՀՎՀՀ", "TIN"] as const,
57
60
  candidatePattern: "\\d{8}",
61
+ scope: "country",
58
62
  country: "AM",
59
63
  entityType: "any",
60
64
  lengths: [8] as const,
package/src/ar/cbu.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://es.wikipedia.org/wiki/Clave_bancaria_uniforme
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_BLOCK1 = [7, 1, 3, 9, 7, 1, 3];
19
22
  const WEIGHTS_BLOCK2 = [
20
23
  3, 9, 7, 1, 3, 9, 7, 1, 3, 9, 7, 1, 3,
@@ -84,12 +87,13 @@ const generate = (): string => {
84
87
  };
85
88
 
86
89
  /** Argentine Uniform Bank Key. */
87
- const cbu: Validator = {
90
+ const cbu: CountryValidator<"AR"> = {
88
91
  name: "Argentine Bank Account Number",
89
92
  localName: "Clave Bancaria Uniforme",
90
93
  abbreviation: "CBU",
91
94
  aliases: ["CBU", "Clave Bancaria Uniforme"] as const,
92
95
  candidatePattern: "\\d{22}",
96
+ scope: "country",
93
97
  country: "AR",
94
98
  entityType: "any",
95
99
  sourceUrl:
package/src/ar/cuit.ts CHANGED
@@ -16,13 +16,16 @@
16
16
  * @see https://en.wikipedia.org/wiki/CUIT_(Argentina)
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, randomPick } 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 VALID_TYPES = new Set([
27
30
  "20",
28
31
  "23",
@@ -120,7 +123,7 @@ const generate = (): string => {
120
123
  * Examples sourced from python-stdnum test suite
121
124
  * (ar.cuit module).
122
125
  */
123
- const cuit: Validator = {
126
+ const cuit: CountryValidator<"AR"> = {
124
127
  name: "Argentine Tax ID",
125
128
  localName: "Clave Única de Identificación Tributaria",
126
129
  abbreviation: "CUIT",
@@ -130,6 +133,7 @@ const cuit: Validator = {
130
133
  "Clave Única de Identificación Tributaria",
131
134
  ] as const,
132
135
  candidatePattern: "\\d{2}-?\\d{8}-?\\d",
136
+ scope: "country",
133
137
  country: "AR",
134
138
  entityType: "any",
135
139
  compact,
package/src/ar/dni.ts CHANGED
@@ -11,13 +11,16 @@ const generate = (): string => randomDigits(8);
11
11
  * @see https://en.wikipedia.org/wiki/Documento_Nacional_de_Identidad_(Argentina)
12
12
  */
13
13
 
14
+ import type {
15
+ ValidateResult,
16
+ CountryValidator,
17
+ } from "../types";
18
+
14
19
  import { clean } from "#util/clean";
15
20
  import { randomDigits } from "#util/generate";
16
21
  import { err } from "#util/result";
17
22
  import { isdigits } from "#util/strings";
18
23
 
19
- import type { ValidateResult, Validator } from "../types";
20
-
21
24
  const compact = (value: string): string =>
22
25
  clean(value, " -.").trim();
23
26
 
@@ -53,7 +56,7 @@ const format = (value: string): string => {
53
56
  };
54
57
 
55
58
  /** Argentine National Identity Document. */
56
- const dni: Validator = {
59
+ const dni: CountryValidator<"AR"> = {
57
60
  name: "Argentine Identity Card",
58
61
  localName: "Documento Nacional de Identidad",
59
62
  abbreviation: "DNI",
@@ -63,6 +66,7 @@ const dni: Validator = {
63
66
  "Documento de Identidad",
64
67
  ] as const,
65
68
  candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}",
69
+ scope: "country",
66
70
  country: "AR",
67
71
  entityType: "person",
68
72
  sourceUrl:
@@ -16,12 +16,15 @@ const generate = (): string => {
16
16
  * @see https://www.justiz.gv.at/
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
 
23
- import type { ValidateResult, Validator } from "../types";
24
-
25
28
  const FN_RE = /^\d+[a-z]$/i;
26
29
 
27
30
  const compact = (value: string): string => {
@@ -54,12 +57,13 @@ const format = (value: string): string =>
54
57
  `FN ${compact(value)}`;
55
58
 
56
59
  /** Austrian Company Register Number. */
57
- const businessid: Validator = {
60
+ const businessid: CountryValidator<"AT"> = {
58
61
  name: "Austrian Company Register Number",
59
62
  localName: "Firmenbuchnummer",
60
63
  abbreviation: "FN",
61
64
  aliases: ["Firmenbuchnummer", "FN", "FBN"] as const,
62
65
  candidatePattern: "FN\\s?\\d{5,6}[a-z]?",
66
+ scope: "country",
63
67
  country: "AT",
64
68
  entityType: "company",
65
69
  sourceUrl: "https://www.justiz.gv.at/",
package/src/at/tin.ts CHANGED
@@ -10,13 +10,16 @@
10
10
  * @see https://service.bmf.gv.at/Service/Anwend/Behoerden/show_mast.asp
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 { randomDigits } from "#util/generate";
15
20
  import { err } from "#util/result";
16
21
  import { isdigits } from "#util/strings";
17
22
 
18
- import type { ValidateResult, Validator } from "../types";
19
-
20
23
  /** Luhn-variant doubling table: position-dependent. */
21
24
  const DOUBLE = "0246813579";
22
25
 
@@ -69,12 +72,13 @@ const generate = (): string => {
69
72
  };
70
73
 
71
74
  /** Austrian Tax Identification Number. */
72
- const tin: Validator = {
75
+ const tin: CountryValidator<"AT"> = {
73
76
  name: "Austrian Tax Identification Number",
74
77
  localName: "Abgabenkontonummer",
75
78
  abbreviation: "TIN",
76
79
  aliases: ["Steuernummer", "St.Nr.", "TIN"] as const,
77
80
  candidatePattern: "\\d{2}-?\\d{3}/\\d{4}",
81
+ scope: "country",
78
82
  country: "AT",
79
83
  entityType: "any",
80
84
  sourceUrl:
package/src/at/uid.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.bmf.gv.at/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { luhnChecksum } from "#checksums/luhn";
12
17
  import { clean } from "#util/clean";
13
18
  import { randomDigits } from "#util/generate";
14
19
  import { err } from "#util/result";
15
20
  import { isdigits } from "#util/strings";
16
21
 
17
- import type { ValidateResult, Validator } from "../types";
18
-
19
22
  const compact = (value: string): string => {
20
23
  let v = clean(value, " -/");
21
24
  if (v.startsWith("AT") || v.startsWith("at")) {
@@ -68,7 +71,7 @@ const generate = (): string => {
68
71
  };
69
72
 
70
73
  /** Austrian VAT Identification Number. */
71
- const uid: Validator = {
74
+ const uid: CountryValidator<"AT"> = {
72
75
  name: "Austrian VAT Number",
73
76
  localName: "Umsatzsteuer-Identifikationsnummer",
74
77
  abbreviation: "UID",
@@ -78,6 +81,7 @@ const uid: Validator = {
78
81
  "ATU",
79
82
  ] as const,
80
83
  candidatePattern: "ATU\\d{8}",
84
+ scope: "country",
81
85
  country: "AT",
82
86
  entityType: "company",
83
87
  sourceUrl: "https://www.bmf.gv.at/",
package/src/at/vnr.ts CHANGED
@@ -6,17 +6,31 @@
6
6
  * The check digit is computed using a weighted sum
7
7
  * mod 11 over the 9 non-check digits.
8
8
  *
9
+ * The 6-digit "birth date" field is not always a real
10
+ * calendar date. Sozialversicherung.at documents that
11
+ * persons with unknown date of birth are issued
12
+ * substitute values (01.01. or 01.07.), and that
13
+ * months 13, 14, etc. are issued when the daily serial
14
+ * pool for a given substitute date is exhausted. We
15
+ * therefore do not enforce a calendar-valid month here.
16
+ * The day field, however, is always within 01-31 — even
17
+ * in the documented overflow cases the day stays "01"
18
+ * — so we keep the day-bounds check.
19
+ *
9
20
  * @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer#%C3%96sterreich
10
- * @see https://www.sozialversicherung.at/
21
+ * @see https://www.sozialversicherung.at/cdscontent/?contentid=10007.820902&viewmode=content
11
22
  */
12
23
 
24
+ import type {
25
+ ValidateResult,
26
+ CountryValidator,
27
+ } from "../types";
28
+
13
29
  import { clean } from "#util/clean";
14
30
  import { randomDigits, randomInt } from "#util/generate";
15
31
  import { err } from "#util/result";
16
32
  import { isdigits } from "#util/strings";
17
33
 
18
- import type { ValidateResult, Validator } from "../types";
19
-
20
34
  /**
21
35
  * Weights for the 9 non-check digits (positions
22
36
  * 0,1,2, then 4,5,6,7,8,9). Check digit is at
@@ -44,13 +58,24 @@ const validate = (value: string): ValidateResult => {
44
58
  );
45
59
  }
46
60
 
47
- // Validate birth date (DDMMYY in positions 4-9)
61
+ // Per sozialversicherung.at, the 3-digit serial
62
+ // (positions 0-2) never starts with zero.
63
+ if (v[0] === "0") {
64
+ return err(
65
+ "INVALID_COMPONENT",
66
+ "Austrian VNR serial must not start with zero",
67
+ );
68
+ }
69
+
70
+ // Day (positions 4-5) is always within 01-31, even
71
+ // in the documented substitute and overflow cases
72
+ // where the month is shifted. The month is left
73
+ // unchecked per the source.
48
74
  const day = Number(v.slice(4, 6));
49
- const month = Number(v.slice(6, 8));
50
- if (day < 1 || day > 31 || month < 1 || month > 12) {
75
+ if (day < 1 || day > 31) {
51
76
  return err(
52
77
  "INVALID_COMPONENT",
53
- "Austrian VNR contains an invalid birth date",
78
+ "Austrian VNR day field must be within 01-31",
54
79
  );
55
80
  }
56
81
 
@@ -88,7 +113,9 @@ const format = (value: string): string => {
88
113
  /** Generate a random valid Austrian VNR. */
89
114
  const generate = (): string => {
90
115
  for (;;) {
91
- const serial = randomDigits(3);
116
+ // Serial must not start with zero (see validate).
117
+ const serial =
118
+ String(randomInt(1, 9)) + randomDigits(2);
92
119
  const day = String(randomInt(1, 28)).padStart(2, "0");
93
120
  const month = String(randomInt(1, 12)).padStart(2, "0");
94
121
  const year = String(randomInt(0, 99)).padStart(2, "0");
@@ -106,7 +133,7 @@ const generate = (): string => {
106
133
  };
107
134
 
108
135
  /** Austrian Social Insurance Number. */
109
- const vnr: Validator = {
136
+ const vnr: CountryValidator<"AT"> = {
110
137
  name: "Austrian Social Insurance Number",
111
138
  localName: "Versicherungsnummer",
112
139
  abbreviation: "VNR",
@@ -117,6 +144,7 @@ const vnr: Validator = {
117
144
  "Sozialversicherungsnummer",
118
145
  ] as const,
119
146
  candidatePattern: "\\d{4}\\s?\\d{6}",
147
+ scope: "country",
120
148
  country: "AT",
121
149
  entityType: "person",
122
150
  sourceUrl:
package/src/au/abn.ts CHANGED
@@ -9,13 +9,16 @@
9
9
  * @see https://abr.business.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 = [
20
23
  10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
21
24
  ] as const;
@@ -65,12 +68,13 @@ const generate = (): string => {
65
68
  };
66
69
 
67
70
  /** Australian Business Number. */
68
- const abn: Validator = {
71
+ const abn: CountryValidator<"AU"> = {
69
72
  name: "Australian Business Number",
70
73
  localName: "Australian Business Number",
71
74
  abbreviation: "ABN",
72
75
  aliases: ["ABN", "Australian Business Number"] as const,
73
76
  candidatePattern: "\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{3}",
77
+ scope: "country",
74
78
  country: "AU",
75
79
  entityType: "company",
76
80
  sourceUrl: "https://abr.business.gov.au/",
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
 
@@ -106,12 +109,13 @@ const generate = (): string => {
106
109
  *
107
110
  * Examples sourced from python-stdnum test suite.
108
111
  */
109
- const voen: Validator = {
112
+ const voen: CountryValidator<"AZ"> = {
110
113
  name: "Azerbaijani Tax ID",
111
114
  localName: "Vergi Ödəyicisinin Eyniləşdirmə Nömrəsi",
112
115
  abbreviation: "VÖEN",
113
116
  aliases: ["VÖEN"] as const,
114
117
  candidatePattern: "\\d{10}",
118
+ scope: "country",
115
119
  country: "AZ",
116
120
  entityType: "any",
117
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<ParsedPersonId> = {
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,
package/src/bd/nid.ts CHANGED
@@ -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
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],