@stll/stdnum 1.0.0 → 2.0.1

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 (705) hide show
  1. package/README.md +1 -4
  2. package/dist/_checksums/luhn.js.map +1 -1
  3. package/dist/_checksums/mod1110.js +1 -1
  4. package/dist/_checksums/mod1110.js.map +1 -1
  5. package/dist/_checksums/mod112.js.map +1 -1
  6. package/dist/_checksums/mod97.js.map +1 -1
  7. package/dist/_checksums/verhoeff.js.map +1 -1
  8. package/dist/_checksums/weighted-sum.js.map +1 -1
  9. package/dist/_util/arabic.js.map +1 -1
  10. package/dist/_util/clean.js.map +1 -1
  11. package/dist/_util/date.js.map +1 -1
  12. package/dist/_util/generate.js.map +1 -1
  13. package/dist/_util/result.js.map +1 -1
  14. package/dist/_util/strings.js.map +1 -1
  15. package/dist/ad/nrt.d.ts +16 -2
  16. package/dist/ad/nrt.js +1 -14
  17. package/dist/ad/nrt.js.map +1 -1
  18. package/dist/ae/eid.d.ts +2 -2
  19. package/dist/ae/eid.js +2 -12
  20. package/dist/ae/eid.js.map +1 -1
  21. package/dist/ai/tin.d.ts +20 -2
  22. package/dist/ai/tin.js +1 -18
  23. package/dist/ai/tin.js.map +1 -1
  24. package/dist/al/nipt.d.ts +13 -2
  25. package/dist/al/nipt.js +1 -11
  26. package/dist/al/nipt.js.map +1 -1
  27. package/dist/am/tin.d.ts +16 -2
  28. package/dist/am/tin.js +1 -14
  29. package/dist/am/tin.js.map +1 -1
  30. package/dist/ar/cbu.d.ts +2 -2
  31. package/dist/ar/cbu.js +1 -9
  32. package/dist/ar/cbu.js.map +1 -1
  33. package/dist/ar/cuit.d.ts +2 -2
  34. package/dist/ar/cuit.js +1 -17
  35. package/dist/ar/cuit.js.map +1 -1
  36. package/dist/ar/dni.d.ts +11 -2
  37. package/dist/ar/dni.js +1 -9
  38. package/dist/ar/dni.js.map +1 -1
  39. package/dist/at/businessid.d.ts +10 -2
  40. package/dist/at/businessid.js +1 -8
  41. package/dist/at/businessid.js.map +1 -1
  42. package/dist/at/tin.d.ts +2 -2
  43. package/dist/at/tin.js +1 -11
  44. package/dist/at/tin.js.map +1 -1
  45. package/dist/at/uid.d.ts +2 -2
  46. package/dist/at/uid.js +2 -10
  47. package/dist/at/uid.js.map +1 -1
  48. package/dist/at/vnr.d.ts +2 -2
  49. package/dist/at/vnr.js +4 -14
  50. package/dist/at/vnr.js.map +1 -1
  51. package/dist/au/abn.d.ts +2 -2
  52. package/dist/au/abn.js +1 -10
  53. package/dist/au/abn.js.map +1 -1
  54. package/dist/au/acn.d.ts +2 -2
  55. package/dist/au/acn.js +1 -10
  56. package/dist/au/acn.js.map +1 -1
  57. package/dist/au/tfn.d.ts +2 -2
  58. package/dist/au/tfn.js +1 -10
  59. package/dist/au/tfn.js.map +1 -1
  60. package/dist/az/voen.d.ts +2 -2
  61. package/dist/az/voen.js +1 -14
  62. package/dist/az/voen.js.map +1 -1
  63. package/dist/ba/jmbg.d.ts +2 -2
  64. package/dist/ba/jmbg.js +3 -11
  65. package/dist/ba/jmbg.js.map +1 -1
  66. package/dist/bd/nid.d.ts +23 -2
  67. package/dist/bd/nid.js +1 -21
  68. package/dist/bd/nid.js.map +1 -1
  69. package/dist/be/bis.d.ts +2 -2
  70. package/dist/be/bis.js +1 -11
  71. package/dist/be/bis.js.map +1 -1
  72. package/dist/be/nn.d.ts +2 -2
  73. package/dist/be/nn.js +1 -11
  74. package/dist/be/nn.js.map +1 -1
  75. package/dist/be/vat.d.ts +2 -2
  76. package/dist/be/vat.js +1 -9
  77. package/dist/be/vat.js.map +1 -1
  78. package/dist/bg/egn.d.ts +2 -2
  79. package/dist/bg/egn.js +3 -18
  80. package/dist/bg/egn.js.map +1 -1
  81. package/dist/bg/pnf.d.ts +2 -2
  82. package/dist/bg/pnf.js +1 -8
  83. package/dist/bg/pnf.js.map +1 -1
  84. package/dist/bg/vat.d.ts +2 -2
  85. package/dist/bg/vat.js +3 -9
  86. package/dist/bg/vat.js.map +1 -1
  87. package/dist/bh/cpr.d.ts +2 -2
  88. package/dist/bh/cpr.js +1 -17
  89. package/dist/bh/cpr.js.map +1 -1
  90. package/dist/bic.d.ts +13 -2
  91. package/dist/bic.js +1 -11
  92. package/dist/bic.js.map +1 -1
  93. package/dist/br/cnpj.d.ts +2 -2
  94. package/dist/br/cnpj.js +1 -20
  95. package/dist/br/cnpj.js.map +1 -1
  96. package/dist/br/cpf.d.ts +2 -2
  97. package/dist/br/cpf.js +1 -14
  98. package/dist/br/cpf.js.map +1 -1
  99. package/dist/by/unp.d.ts +2 -2
  100. package/dist/by/unp.js +3 -14
  101. package/dist/by/unp.js.map +1 -1
  102. package/dist/bz/tin.d.ts +2 -2
  103. package/dist/bz/tin.js +1 -26
  104. package/dist/bz/tin.js.map +1 -1
  105. package/dist/ca/bn.d.ts +2 -2
  106. package/dist/ca/bn.js +2 -10
  107. package/dist/ca/bn.js.map +1 -1
  108. package/dist/ca/sin.d.ts +2 -2
  109. package/dist/ca/sin.js +2 -10
  110. package/dist/ca/sin.js.map +1 -1
  111. package/dist/ch/ssn.d.ts +2 -2
  112. package/dist/ch/ssn.js +1 -9
  113. package/dist/ch/ssn.js.map +1 -1
  114. package/dist/ch/uid.d.ts +2 -2
  115. package/dist/ch/uid.js +1 -9
  116. package/dist/ch/uid.js.map +1 -1
  117. package/dist/ch/vat.d.ts +2 -2
  118. package/dist/ch/vat.js +1 -9
  119. package/dist/ch/vat.js.map +1 -1
  120. package/dist/cl/rut.d.ts +2 -2
  121. package/dist/cl/rut.js +1 -14
  122. package/dist/cl/rut.js.map +1 -1
  123. package/dist/cn/ric.d.ts +2 -2
  124. package/dist/cn/ric.js +3 -14
  125. package/dist/cn/ric.js.map +1 -1
  126. package/dist/cn/uscc.d.ts +2 -2
  127. package/dist/cn/uscc.js +1 -10
  128. package/dist/cn/uscc.js.map +1 -1
  129. package/dist/co/nit.d.ts +2 -2
  130. package/dist/co/nit.js +2 -12
  131. package/dist/co/nit.js.map +1 -1
  132. package/dist/cr/cpf.d.ts +18 -2
  133. package/dist/cr/cpf.js +1 -16
  134. package/dist/cr/cpf.js.map +1 -1
  135. package/dist/creditcard.d.ts +2 -2
  136. package/dist/creditcard.js +5 -14
  137. package/dist/creditcard.js.map +1 -1
  138. package/dist/cu/ni.d.ts +2 -2
  139. package/dist/cu/ni.js +2 -17
  140. package/dist/cu/ni.js.map +1 -1
  141. package/dist/cy/vat.d.ts +2 -2
  142. package/dist/cy/vat.js +1 -8
  143. package/dist/cy/vat.js.map +1 -1
  144. package/dist/cz/dic.d.ts +2 -2
  145. package/dist/cz/dic.js +7 -13
  146. package/dist/cz/dic.js.map +1 -1
  147. package/dist/cz/ico.d.ts +2 -2
  148. package/dist/cz/ico.js +2 -10
  149. package/dist/cz/ico.js.map +1 -1
  150. package/dist/cz/rc.d.ts +2 -2
  151. package/dist/cz/rc.js +2 -26
  152. package/dist/cz/rc.js.map +1 -1
  153. package/dist/de/handelsreg.d.ts +19 -2
  154. package/dist/de/handelsreg.js +1 -17
  155. package/dist/de/handelsreg.js.map +1 -1
  156. package/dist/de/idnr.d.ts +2 -2
  157. package/dist/de/idnr.js +2 -12
  158. package/dist/de/idnr.js.map +1 -1
  159. package/dist/de/stnr.d.ts +17 -2
  160. package/dist/de/stnr.js +1 -15
  161. package/dist/de/stnr.js.map +1 -1
  162. package/dist/de/svnr.d.ts +2 -2
  163. package/dist/de/svnr.js +2 -11
  164. package/dist/de/svnr.js.map +1 -1
  165. package/dist/de/vat.d.ts +2 -2
  166. package/dist/de/vat.js +2 -11
  167. package/dist/de/vat.js.map +1 -1
  168. package/dist/dk/cpr.d.ts +2 -2
  169. package/dist/dk/cpr.js +2 -10
  170. package/dist/dk/cpr.js.map +1 -1
  171. package/dist/dk/cvr.d.ts +2 -2
  172. package/dist/dk/cvr.js +2 -15
  173. package/dist/dk/cvr.js.map +1 -1
  174. package/dist/dk/vat.d.ts +2 -2
  175. package/dist/dk/vat.js +3 -13
  176. package/dist/dk/vat.js.map +1 -1
  177. package/dist/do/rnc.d.ts +2 -2
  178. package/dist/do/rnc.js +2 -16
  179. package/dist/do/rnc.js.map +1 -1
  180. package/dist/ec/ruc.d.ts +2 -2
  181. package/dist/ec/ruc.js +1 -18
  182. package/dist/ec/ruc.js.map +1 -1
  183. package/dist/ee/ik.d.ts +2 -2
  184. package/dist/ee/ik.js +3 -20
  185. package/dist/ee/ik.js.map +1 -1
  186. package/dist/ee/registrikood.d.ts +2 -2
  187. package/dist/ee/registrikood.js +1 -8
  188. package/dist/ee/registrikood.js.map +1 -1
  189. package/dist/ee/vat.d.ts +2 -2
  190. package/dist/ee/vat.js +2 -10
  191. package/dist/ee/vat.js.map +1 -1
  192. package/dist/eg/tn.d.ts +11 -2
  193. package/dist/eg/tn.js +1 -9
  194. package/dist/eg/tn.js.map +1 -1
  195. package/dist/es/cif.d.ts +2 -2
  196. package/dist/es/cif.js +1 -10
  197. package/dist/es/cif.js.map +1 -1
  198. package/dist/es/dni.d.ts +2 -2
  199. package/dist/es/dni.js +1 -9
  200. package/dist/es/dni.js.map +1 -1
  201. package/dist/es/nie.d.ts +2 -2
  202. package/dist/es/nie.js +1 -9
  203. package/dist/es/nie.js.map +1 -1
  204. package/dist/es/nss.d.ts +2 -2
  205. package/dist/es/nss.js +1 -16
  206. package/dist/es/nss.js.map +1 -1
  207. package/dist/es/vat.d.ts +2 -2
  208. package/dist/es/vat.js +5 -10
  209. package/dist/es/vat.js.map +1 -1
  210. package/dist/eu/vat.d.ts +2 -2
  211. package/dist/eu/vat.js +1 -0
  212. package/dist/eu/vat.js.map +1 -1
  213. package/dist/fi/hetu.d.ts +2 -2
  214. package/dist/fi/hetu.js +2 -10
  215. package/dist/fi/hetu.js.map +1 -1
  216. package/dist/fi/vat.d.ts +2 -2
  217. package/dist/fi/vat.js +3 -10
  218. package/dist/fi/vat.js.map +1 -1
  219. package/dist/fi/ytunnus.d.ts +2 -2
  220. package/dist/fi/ytunnus.js +2 -10
  221. package/dist/fi/ytunnus.js.map +1 -1
  222. package/dist/fr/nif.d.ts +2 -2
  223. package/dist/fr/nif.js +1 -9
  224. package/dist/fr/nif.js.map +1 -1
  225. package/dist/fr/nir.d.ts +2 -2
  226. package/dist/fr/nir.js +2 -14
  227. package/dist/fr/nir.js.map +1 -1
  228. package/dist/fr/siren.d.ts +2 -2
  229. package/dist/fr/siren.js +2 -10
  230. package/dist/fr/siren.js.map +1 -1
  231. package/dist/fr/siret.d.ts +2 -2
  232. package/dist/fr/siret.js +2 -11
  233. package/dist/fr/siret.js.map +1 -1
  234. package/dist/fr/tva.d.ts +2 -2
  235. package/dist/fr/tva.js +2 -12
  236. package/dist/fr/tva.js.map +1 -1
  237. package/dist/gb/nino.d.ts +12 -2
  238. package/dist/gb/nino.js +1 -10
  239. package/dist/gb/nino.js.map +1 -1
  240. package/dist/gb/sedol.d.ts +2 -2
  241. package/dist/gb/sedol.js +1 -11
  242. package/dist/gb/sedol.js.map +1 -1
  243. package/dist/gb/utr.d.ts +2 -2
  244. package/dist/gb/utr.js +2 -10
  245. package/dist/gb/utr.js.map +1 -1
  246. package/dist/gb/vat.d.ts +2 -2
  247. package/dist/gb/vat.js +2 -11
  248. package/dist/gb/vat.js.map +1 -1
  249. package/dist/ge/pin.d.ts +14 -2
  250. package/dist/ge/pin.js +1 -12
  251. package/dist/ge/pin.js.map +1 -1
  252. package/dist/gh/tin.d.ts +2 -2
  253. package/dist/gh/tin.js +1 -15
  254. package/dist/gh/tin.js.map +1 -1
  255. package/dist/gr/amka.d.ts +2 -2
  256. package/dist/gr/amka.js +3 -11
  257. package/dist/gr/amka.js.map +1 -1
  258. package/dist/gr/vat.d.ts +2 -2
  259. package/dist/gr/vat.js +1 -10
  260. package/dist/gr/vat.js.map +1 -1
  261. package/dist/gt/nit.d.ts +2 -2
  262. package/dist/gt/nit.js +1 -12
  263. package/dist/gt/nit.js.map +1 -1
  264. package/dist/hk/hkid.d.ts +2 -2
  265. package/dist/hk/hkid.js +1 -10
  266. package/dist/hk/hkid.js.map +1 -1
  267. package/dist/hr/vat.d.ts +2 -2
  268. package/dist/hr/vat.js +2 -9
  269. package/dist/hr/vat.js.map +1 -1
  270. package/dist/hu/vat.d.ts +2 -2
  271. package/dist/hu/vat.js +3 -10
  272. package/dist/hu/vat.js.map +1 -1
  273. package/dist/iban.d.ts +2 -2
  274. package/dist/iban.js +2 -8
  275. package/dist/iban.js.map +1 -1
  276. package/dist/id/npwp.d.ts +2 -2
  277. package/dist/id/npwp.js +3 -13
  278. package/dist/id/npwp.js.map +1 -1
  279. package/dist/ie/pps.d.ts +2 -2
  280. package/dist/ie/pps.js +1 -10
  281. package/dist/ie/pps.js.map +1 -1
  282. package/dist/ie/vat.d.ts +2 -2
  283. package/dist/ie/vat.js +1 -9
  284. package/dist/ie/vat.js.map +1 -1
  285. package/dist/il/idnr.d.ts +2 -2
  286. package/dist/il/idnr.js +2 -9
  287. package/dist/il/idnr.js.map +1 -1
  288. package/dist/in/aadhaar.d.ts +2 -2
  289. package/dist/in/aadhaar.js +2 -12
  290. package/dist/in/aadhaar.js.map +1 -1
  291. package/dist/in/gstin.d.ts +2 -2
  292. package/dist/in/gstin.js +1 -10
  293. package/dist/in/gstin.js.map +1 -1
  294. package/dist/in/pan.d.ts +15 -2
  295. package/dist/in/pan.js +1 -13
  296. package/dist/in/pan.js.map +1 -1
  297. package/dist/index.d.ts +2 -2
  298. package/dist/index.js +6 -6
  299. package/dist/iq/nid.d.ts +16 -2
  300. package/dist/iq/nid.js +2 -15
  301. package/dist/iq/nid.js.map +1 -1
  302. package/dist/ir/nid.d.ts +2 -2
  303. package/dist/ir/nid.js +2 -24
  304. package/dist/ir/nid.js.map +1 -1
  305. package/dist/is/kennitala.d.ts +2 -2
  306. package/dist/is/kennitala.js +2 -13
  307. package/dist/is/kennitala.js.map +1 -1
  308. package/dist/is/vsk.d.ts +9 -2
  309. package/dist/is/vsk.js +1 -7
  310. package/dist/is/vsk.js.map +1 -1
  311. package/dist/isin.d.ts +2 -2
  312. package/dist/isin.js +2 -12
  313. package/dist/isin.js.map +1 -1
  314. package/dist/it/codicefiscale.d.ts +2 -2
  315. package/dist/it/codicefiscale.js +1 -21
  316. package/dist/it/codicefiscale.js.map +1 -1
  317. package/dist/it/iva.d.ts +2 -2
  318. package/dist/it/iva.js +2 -9
  319. package/dist/it/iva.js.map +1 -1
  320. package/dist/jp/cn.d.ts +2 -2
  321. package/dist/jp/cn.js +1 -9
  322. package/dist/jp/cn.js.map +1 -1
  323. package/dist/jp/mynumber.d.ts +2 -2
  324. package/dist/jp/mynumber.js +1 -10
  325. package/dist/jp/mynumber.js.map +1 -1
  326. package/dist/kr/brn.d.ts +11 -2
  327. package/dist/kr/brn.js +1 -9
  328. package/dist/kr/brn.js.map +1 -1
  329. package/dist/kr/rrn.d.ts +2 -2
  330. package/dist/kr/rrn.js +2 -11
  331. package/dist/kr/rrn.js.map +1 -1
  332. package/dist/kw/civil.d.ts +2 -2
  333. package/dist/kw/civil.js +2 -14
  334. package/dist/kw/civil.js.map +1 -1
  335. package/dist/kz/iin.d.ts +2 -2
  336. package/dist/kz/iin.js +3 -18
  337. package/dist/kz/iin.js.map +1 -1
  338. package/dist/lei.d.ts +2 -2
  339. package/dist/lei.js +2 -11
  340. package/dist/lei.js.map +1 -1
  341. package/dist/li/peid.d.ts +11 -2
  342. package/dist/li/peid.js +1 -9
  343. package/dist/li/peid.js.map +1 -1
  344. package/dist/lk/nic.d.ts +2 -2
  345. package/dist/lk/nic.js +2 -14
  346. package/dist/lk/nic.js.map +1 -1
  347. package/dist/lt/asmens.d.ts +2 -2
  348. package/dist/lt/asmens.js +2 -1
  349. package/dist/lt/asmens.js.map +1 -1
  350. package/dist/lt/vat.d.ts +2 -2
  351. package/dist/lt/vat.js +2 -10
  352. package/dist/lt/vat.js.map +1 -1
  353. package/dist/lu/vat.d.ts +2 -2
  354. package/dist/lu/vat.js +2 -8
  355. package/dist/lu/vat.js.map +1 -1
  356. package/dist/luhn.d.ts +2 -2
  357. package/dist/luhn.js +2 -9
  358. package/dist/luhn.js.map +1 -1
  359. package/dist/lv/vat.d.ts +2 -2
  360. package/dist/lv/vat.js +2 -28
  361. package/dist/lv/vat.js.map +1 -1
  362. package/dist/ma/ice.d.ts +2 -2
  363. package/dist/ma/ice.js +2 -11
  364. package/dist/ma/ice.js.map +1 -1
  365. package/dist/mc/tva.d.ts +2 -2
  366. package/dist/mc/tva.js +1 -0
  367. package/dist/mc/tva.js.map +1 -1
  368. package/dist/md/idno.d.ts +2 -2
  369. package/dist/md/idno.js +1 -10
  370. package/dist/md/idno.js.map +1 -1
  371. package/dist/me/pib.d.ts +2 -2
  372. package/dist/me/pib.js +2 -10
  373. package/dist/me/pib.js.map +1 -1
  374. package/dist/mk/edb.d.ts +2 -2
  375. package/dist/mk/edb.js +2 -11
  376. package/dist/mk/edb.js.map +1 -1
  377. package/dist/mt/vat.d.ts +2 -2
  378. package/dist/mt/vat.js +3 -10
  379. package/dist/mt/vat.js.map +1 -1
  380. package/dist/mu/brn.d.ts +23 -2
  381. package/dist/mu/brn.js +1 -21
  382. package/dist/mu/brn.js.map +1 -1
  383. package/dist/mx/clabe.d.ts +2 -2
  384. package/dist/mx/clabe.js +1 -14
  385. package/dist/mx/clabe.js.map +1 -1
  386. package/dist/mx/curp.d.ts +2 -2
  387. package/dist/mx/curp.js +3 -17
  388. package/dist/mx/curp.js.map +1 -1
  389. package/dist/mx/rfc.d.ts +2 -2
  390. package/dist/mx/rfc.js +3 -19
  391. package/dist/mx/rfc.js.map +1 -1
  392. package/dist/my/nric.d.ts +2 -2
  393. package/dist/my/nric.js +2 -14
  394. package/dist/my/nric.js.map +1 -1
  395. package/dist/ng/nin.d.ts +13 -2
  396. package/dist/ng/nin.js +1 -11
  397. package/dist/ng/nin.js.map +1 -1
  398. package/dist/ni/ruc.d.ts +2 -2
  399. package/dist/ni/ruc.js +1 -23
  400. package/dist/ni/ruc.js.map +1 -1
  401. package/dist/nl/bsn.d.ts +2 -2
  402. package/dist/nl/bsn.js +2 -10
  403. package/dist/nl/bsn.js.map +1 -1
  404. package/dist/nl/kvk.d.ts +9 -2
  405. package/dist/nl/kvk.js +1 -7
  406. package/dist/nl/kvk.js.map +1 -1
  407. package/dist/nl/vat.d.ts +2 -2
  408. package/dist/nl/vat.js +1 -13
  409. package/dist/nl/vat.js.map +1 -1
  410. package/dist/no/fodselsnummer.d.ts +2 -2
  411. package/dist/no/fodselsnummer.js +2 -10
  412. package/dist/no/fodselsnummer.js.map +1 -1
  413. package/dist/no/mva.d.ts +2 -2
  414. package/dist/no/mva.js +1 -8
  415. package/dist/no/mva.js.map +1 -1
  416. package/dist/no/orgnr.d.ts +2 -2
  417. package/dist/no/orgnr.js +2 -8
  418. package/dist/no/orgnr.js.map +1 -1
  419. package/dist/nz/ird.d.ts +2 -2
  420. package/dist/nz/ird.js +2 -11
  421. package/dist/nz/ird.js.map +1 -1
  422. package/dist/pa/ruc.d.ts +2 -2
  423. package/dist/pa/ruc.js +1 -18
  424. package/dist/pa/ruc.js.map +1 -1
  425. package/dist/patterns.d.ts +8 -7
  426. package/dist/patterns.js +3 -5
  427. package/dist/patterns.js.map +1 -1
  428. package/dist/pe/ruc.d.ts +2 -2
  429. package/dist/pe/ruc.js +1 -15
  430. package/dist/pe/ruc.js.map +1 -1
  431. package/dist/ph/philid.d.ts +14 -2
  432. package/dist/ph/philid.js +1 -12
  433. package/dist/ph/philid.js.map +1 -1
  434. package/dist/pk/cnic.d.ts +14 -2
  435. package/dist/pk/cnic.js +1 -12
  436. package/dist/pk/cnic.js.map +1 -1
  437. package/dist/pl/nip.d.ts +2 -2
  438. package/dist/pl/nip.js +2 -10
  439. package/dist/pl/nip.js.map +1 -1
  440. package/dist/pl/pesel.d.ts +2 -2
  441. package/dist/pl/pesel.js +3 -13
  442. package/dist/pl/pesel.js.map +1 -1
  443. package/dist/pl/regon.d.ts +2 -2
  444. package/dist/pl/regon.js +2 -11
  445. package/dist/pl/regon.js.map +1 -1
  446. package/dist/pt/cc.d.ts +2 -2
  447. package/dist/pt/cc.js +1 -9
  448. package/dist/pt/cc.js.map +1 -1
  449. package/dist/pt/vat.d.ts +2 -2
  450. package/dist/pt/vat.js +3 -11
  451. package/dist/pt/vat.js.map +1 -1
  452. package/dist/ro/cnp.d.ts +2 -2
  453. package/dist/ro/cnp.js +4 -14
  454. package/dist/ro/cnp.js.map +1 -1
  455. package/dist/ro/vat.d.ts +2 -2
  456. package/dist/ro/vat.js +13 -11
  457. package/dist/ro/vat.js.map +1 -1
  458. package/dist/rs/pib.d.ts +2 -2
  459. package/dist/rs/pib.js +1 -9
  460. package/dist/rs/pib.js.map +1 -1
  461. package/dist/ru/inn.d.ts +2 -2
  462. package/dist/ru/inn.js +1 -11
  463. package/dist/ru/inn.js.map +1 -1
  464. package/dist/se/orgnr.d.ts +2 -2
  465. package/dist/se/orgnr.js +2 -9
  466. package/dist/se/orgnr.js.map +1 -1
  467. package/dist/se/personnummer.d.ts +2 -2
  468. package/dist/se/personnummer.js +7 -15
  469. package/dist/se/personnummer.js.map +1 -1
  470. package/dist/se/vat.d.ts +2 -2
  471. package/dist/se/vat.js +3 -10
  472. package/dist/se/vat.js.map +1 -1
  473. package/dist/sg/uen.d.ts +2 -2
  474. package/dist/sg/uen.js +1 -15
  475. package/dist/sg/uen.js.map +1 -1
  476. package/dist/si/emso.d.ts +2 -2
  477. package/dist/si/emso.js +3 -18
  478. package/dist/si/emso.js.map +1 -1
  479. package/dist/si/vat.d.ts +2 -2
  480. package/dist/si/vat.js +3 -12
  481. package/dist/si/vat.js.map +1 -1
  482. package/dist/sk/dic.d.ts +2 -2
  483. package/dist/sk/dic.js +1 -0
  484. package/dist/sk/dic.js.map +1 -1
  485. package/dist/sk/ico.d.ts +2 -2
  486. package/dist/sk/ico.js +1 -0
  487. package/dist/sk/ico.js.map +1 -1
  488. package/dist/sk/rc.d.ts +2 -2
  489. package/dist/sk/rc.js +1 -0
  490. package/dist/sk/rc.js.map +1 -1
  491. package/dist/th/tin.d.ts +2 -2
  492. package/dist/th/tin.js +1 -11
  493. package/dist/th/tin.js.map +1 -1
  494. package/dist/tr/tckimlik.d.ts +2 -2
  495. package/dist/tr/tckimlik.js +1 -20
  496. package/dist/tr/tckimlik.js.map +1 -1
  497. package/dist/tr/vkn.d.ts +2 -2
  498. package/dist/tr/vkn.js +1 -20
  499. package/dist/tr/vkn.js.map +1 -1
  500. package/dist/tw/ubn.d.ts +2 -2
  501. package/dist/tw/ubn.js +1 -11
  502. package/dist/tw/ubn.js.map +1 -1
  503. package/dist/types.d.ts +26 -4
  504. package/dist/ua/edrpou.d.ts +2 -2
  505. package/dist/ua/edrpou.js +1 -11
  506. package/dist/ua/edrpou.js.map +1 -1
  507. package/dist/us/ein.d.ts +12 -2
  508. package/dist/us/ein.js +1 -10
  509. package/dist/us/ein.js.map +1 -1
  510. package/dist/us/itin.d.ts +13 -2
  511. package/dist/us/itin.js +1 -11
  512. package/dist/us/itin.js.map +1 -1
  513. package/dist/us/rtn.d.ts +2 -2
  514. package/dist/us/rtn.js +3 -18
  515. package/dist/us/rtn.js.map +1 -1
  516. package/dist/us/ssn.d.ts +13 -2
  517. package/dist/us/ssn.js +1 -11
  518. package/dist/us/ssn.js.map +1 -1
  519. package/dist/uy/rut.d.ts +2 -2
  520. package/dist/uy/rut.js +1 -14
  521. package/dist/uy/rut.js.map +1 -1
  522. package/dist/ve/rif.d.ts +2 -2
  523. package/dist/ve/rif.js +2 -15
  524. package/dist/ve/rif.js.map +1 -1
  525. package/dist/vn/mst.d.ts +2 -2
  526. package/dist/vn/mst.js +1 -12
  527. package/dist/vn/mst.js.map +1 -1
  528. package/dist/za/idnr.d.ts +2 -2
  529. package/dist/za/idnr.js +3 -16
  530. package/dist/za/idnr.js.map +1 -1
  531. package/package.json +22 -12
  532. package/src/_checksums/mod1110.ts +1 -1
  533. package/src/ad/nrt.ts +7 -3
  534. package/src/ae/eid.ts +7 -3
  535. package/src/ai/tin.ts +7 -3
  536. package/src/al/nipt.ts +7 -3
  537. package/src/am/tin.ts +7 -3
  538. package/src/ar/cbu.ts +7 -3
  539. package/src/ar/cuit.ts +7 -3
  540. package/src/ar/dni.ts +7 -3
  541. package/src/at/businessid.ts +7 -3
  542. package/src/at/tin.ts +7 -3
  543. package/src/at/uid.ts +7 -3
  544. package/src/at/vnr.ts +37 -9
  545. package/src/au/abn.ts +7 -3
  546. package/src/au/acn.ts +7 -3
  547. package/src/au/tfn.ts +7 -3
  548. package/src/az/voen.ts +7 -3
  549. package/src/ba/jmbg.ts +8 -7
  550. package/src/bd/nid.ts +7 -3
  551. package/src/be/bis.ts +8 -4
  552. package/src/be/nn.ts +7 -3
  553. package/src/be/vat.ts +7 -3
  554. package/src/bg/egn.ts +8 -7
  555. package/src/bg/pnf.ts +7 -3
  556. package/src/bg/vat.ts +8 -3
  557. package/src/bh/cpr.ts +7 -3
  558. package/src/bic.ts +7 -3
  559. package/src/br/cnpj.ts +7 -3
  560. package/src/br/cpf.ts +7 -3
  561. package/src/by/unp.ts +10 -5
  562. package/src/bz/tin.ts +7 -3
  563. package/src/ca/bn.ts +7 -3
  564. package/src/ca/sin.ts +7 -3
  565. package/src/ch/ssn.ts +7 -3
  566. package/src/ch/uid.ts +7 -3
  567. package/src/ch/vat.ts +9 -5
  568. package/src/cl/rut.ts +7 -3
  569. package/src/cn/ric.ts +8 -7
  570. package/src/cn/uscc.ts +7 -3
  571. package/src/co/nit.ts +8 -4
  572. package/src/cr/cpf.ts +7 -3
  573. package/src/creditcard.ts +10 -6
  574. package/src/cu/ni.ts +8 -7
  575. package/src/cy/vat.ts +7 -3
  576. package/src/cz/dic.ts +9 -4
  577. package/src/cz/ico.ts +7 -3
  578. package/src/cz/rc.ts +8 -7
  579. package/src/de/handelsreg.ts +7 -3
  580. package/src/de/idnr.ts +7 -3
  581. package/src/de/stnr.ts +7 -3
  582. package/src/de/svnr.ts +7 -3
  583. package/src/de/vat.ts +7 -3
  584. package/src/dk/cpr.ts +8 -7
  585. package/src/dk/cvr.ts +7 -3
  586. package/src/dk/vat.ts +8 -3
  587. package/src/do/rnc.ts +7 -3
  588. package/src/ec/ruc.ts +7 -3
  589. package/src/ee/ik.ts +8 -7
  590. package/src/ee/registrikood.ts +8 -4
  591. package/src/ee/vat.ts +7 -3
  592. package/src/eg/tn.ts +7 -3
  593. package/src/es/cif.ts +8 -4
  594. package/src/es/dni.ts +7 -3
  595. package/src/es/nie.ts +8 -4
  596. package/src/es/nss.ts +7 -3
  597. package/src/es/vat.ts +13 -5
  598. package/src/eu/vat.ts +10 -6
  599. package/src/fi/hetu.ts +8 -7
  600. package/src/fi/vat.ts +8 -3
  601. package/src/fi/ytunnus.ts +7 -3
  602. package/src/fr/nif.ts +7 -3
  603. package/src/fr/nir.ts +8 -7
  604. package/src/fr/siren.ts +7 -3
  605. package/src/fr/siret.ts +7 -3
  606. package/src/fr/tva.ts +7 -3
  607. package/src/gb/nino.ts +7 -3
  608. package/src/gb/sedol.ts +7 -3
  609. package/src/gb/utr.ts +7 -3
  610. package/src/gb/vat.ts +7 -3
  611. package/src/ge/pin.ts +7 -3
  612. package/src/gh/tin.ts +7 -3
  613. package/src/gr/amka.ts +7 -3
  614. package/src/gr/vat.ts +7 -3
  615. package/src/gt/nit.ts +7 -3
  616. package/src/hk/hkid.ts +7 -3
  617. package/src/hr/vat.ts +7 -3
  618. package/src/hu/vat.ts +8 -3
  619. package/src/iban.ts +7 -3
  620. package/src/id/npwp.ts +7 -3
  621. package/src/ie/pps.ts +7 -3
  622. package/src/ie/vat.ts +7 -3
  623. package/src/il/idnr.ts +7 -3
  624. package/src/in/aadhaar.ts +7 -3
  625. package/src/in/gstin.ts +7 -3
  626. package/src/in/pan.ts +7 -3
  627. package/src/index.ts +3 -0
  628. package/src/iq/nid.ts +7 -3
  629. package/src/ir/nid.ts +7 -3
  630. package/src/is/kennitala.ts +7 -3
  631. package/src/is/vsk.ts +7 -3
  632. package/src/isin.ts +7 -3
  633. package/src/it/codicefiscale.ts +11 -7
  634. package/src/it/iva.ts +7 -3
  635. package/src/jp/cn.ts +7 -3
  636. package/src/jp/mynumber.ts +7 -3
  637. package/src/kr/brn.ts +7 -3
  638. package/src/kr/rrn.ts +8 -7
  639. package/src/kw/civil.ts +8 -7
  640. package/src/kz/iin.ts +8 -8
  641. package/src/lei.ts +7 -3
  642. package/src/li/peid.ts +7 -3
  643. package/src/lk/nic.ts +8 -7
  644. package/src/lt/asmens.ts +8 -4
  645. package/src/lt/vat.ts +8 -3
  646. package/src/lu/vat.ts +8 -3
  647. package/src/luhn.ts +7 -3
  648. package/src/lv/vat.ts +7 -3
  649. package/src/ma/ice.ts +7 -3
  650. package/src/mc/tva.ts +9 -5
  651. package/src/md/idno.ts +7 -3
  652. package/src/me/pib.ts +7 -3
  653. package/src/mk/edb.ts +7 -3
  654. package/src/mt/vat.ts +8 -3
  655. package/src/mu/brn.ts +7 -3
  656. package/src/mx/clabe.ts +7 -3
  657. package/src/mx/curp.ts +9 -8
  658. package/src/mx/rfc.ts +8 -4
  659. package/src/my/nric.ts +8 -7
  660. package/src/ng/nin.ts +7 -3
  661. package/src/ni/ruc.ts +7 -3
  662. package/src/nl/bsn.ts +7 -3
  663. package/src/nl/kvk.ts +7 -3
  664. package/src/nl/vat.ts +7 -3
  665. package/src/no/fodselsnummer.ts +11 -7
  666. package/src/no/mva.ts +9 -5
  667. package/src/no/orgnr.ts +7 -3
  668. package/src/nz/ird.ts +8 -4
  669. package/src/pa/ruc.ts +7 -3
  670. package/src/patterns.ts +49 -18
  671. package/src/pe/ruc.ts +7 -3
  672. package/src/ph/philid.ts +7 -3
  673. package/src/pk/cnic.ts +7 -3
  674. package/src/pl/nip.ts +7 -3
  675. package/src/pl/pesel.ts +8 -7
  676. package/src/pl/regon.ts +7 -3
  677. package/src/pt/cc.ts +7 -3
  678. package/src/pt/vat.ts +8 -3
  679. package/src/ro/cnp.ts +15 -8
  680. package/src/ro/vat.ts +8 -3
  681. package/src/rs/pib.ts +7 -3
  682. package/src/ru/inn.ts +7 -3
  683. package/src/se/orgnr.ts +7 -3
  684. package/src/se/personnummer.ts +35 -33
  685. package/src/se/vat.ts +8 -3
  686. package/src/sg/uen.ts +7 -3
  687. package/src/si/emso.ts +8 -7
  688. package/src/si/vat.ts +8 -3
  689. package/src/sk/dic.ts +8 -4
  690. package/src/sk/ico.ts +3 -2
  691. package/src/sk/rc.ts +6 -2
  692. package/src/th/tin.ts +7 -3
  693. package/src/tr/tckimlik.ts +7 -3
  694. package/src/tr/vkn.ts +7 -3
  695. package/src/tw/ubn.ts +7 -3
  696. package/src/types.ts +34 -3
  697. package/src/ua/edrpou.ts +7 -3
  698. package/src/us/ein.ts +7 -3
  699. package/src/us/itin.ts +7 -3
  700. package/src/us/rtn.ts +16 -8
  701. package/src/us/ssn.ts +7 -3
  702. package/src/uy/rut.ts +7 -3
  703. package/src/ve/rif.ts +8 -6
  704. package/src/vn/mst.ts +7 -3
  705. package/src/za/idnr.ts +8 -7
package/src/pl/pesel.ts CHANGED
@@ -10,6 +10,12 @@
10
10
  * @see https://www.gov.pl/web/cyfryzacja/numer-pesel
11
11
  */
12
12
 
13
+ import type {
14
+ ParsedPersonId,
15
+ ValidateResult,
16
+ CountryValidator,
17
+ } from "../types";
18
+
13
19
  import { weightedSum } from "#checksums/weighted-sum";
14
20
  import { clean } from "#util/clean";
15
21
  import { isValidDate } from "#util/date";
@@ -17,12 +23,6 @@ import { randomDigits, randomInt } from "#util/generate";
17
23
  import { err } from "#util/result";
18
24
  import { isdigits } from "#util/strings";
19
25
 
20
- import type {
21
- ParsedPersonId,
22
- ValidateResult,
23
- Validator,
24
- } from "../types";
25
-
26
26
  const WEIGHTS = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3] as const;
27
27
 
28
28
  const compact = (value: string): string =>
@@ -131,13 +131,14 @@ const generate = (): string => {
131
131
  };
132
132
 
133
133
  /** Polish National Identification Number. */
134
- const pesel: Validator<ParsedPersonId> = {
134
+ const pesel: CountryValidator<"PL", ParsedPersonId> = {
135
135
  name: "Polish National ID",
136
136
  localName:
137
137
  "Powszechny Elektroniczny System Ewidencji Ludności",
138
138
  abbreviation: "PESEL",
139
139
  aliases: ["PESEL"] as const,
140
140
  candidatePattern: "\\d{11}",
141
+ scope: "country",
141
142
  country: "PL",
142
143
  entityType: "person",
143
144
  sourceUrl:
package/src/pl/regon.ts CHANGED
@@ -9,14 +9,17 @@
9
9
  * @see https://bip.stat.gov.pl/en/regon/
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import { weightedSum } from "#checksums/weighted-sum";
13
18
  import { clean } from "#util/clean";
14
19
  import { randomDigits } from "#util/generate";
15
20
  import { err } from "#util/result";
16
21
  import { isdigits } from "#util/strings";
17
22
 
18
- import type { ValidateResult, Validator } from "../types";
19
-
20
23
  const WEIGHTS_9 = [8, 9, 2, 3, 4, 5, 6, 7] as const;
21
24
  const WEIGHTS_14 = [
22
25
  2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8,
@@ -78,12 +81,13 @@ const generate = (): string => {
78
81
  };
79
82
 
80
83
  /** Polish Statistical Identification Number. */
81
- const regon: Validator = {
84
+ const regon: CountryValidator<"PL"> = {
82
85
  name: "Polish Business Register Number",
83
86
  localName: "Rejestr Gospodarki Narodowej",
84
87
  abbreviation: "REGON",
85
88
  aliases: ["REGON", "numer statystyczny"] as const,
86
89
  candidatePattern: "\\d{9,14}",
90
+ scope: "country",
87
91
  country: "PL",
88
92
  entityType: "company",
89
93
  sourceUrl: "https://bip.stat.gov.pl/en/regon/",
package/src/pt/cc.ts CHANGED
@@ -8,12 +8,15 @@
8
8
  * @see https://pt.wikipedia.org/wiki/Cartão_de_cidadão
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 { randomChar, randomDigits } from "#util/generate";
13
18
  import { err } from "#util/result";
14
19
 
15
- import type { ValidateResult, Validator } from "../types";
16
-
17
20
  const CC_RE = /^\d{9}[A-Z0-9]{2}\d$/;
18
21
 
19
22
  const ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
@@ -80,7 +83,7 @@ const generate = (): string => {
80
83
  };
81
84
 
82
85
  /** Portuguese Identity Card number. */
83
- const cc: Validator = {
86
+ const cc: CountryValidator<"PT"> = {
84
87
  name: "Portuguese Identity Card",
85
88
  localName: "Cartão de Cidadão",
86
89
  abbreviation: "CC",
@@ -90,6 +93,7 @@ const cc: Validator = {
90
93
  "número de identificação civil",
91
94
  ] as const,
92
95
  candidatePattern: "\\d{8}\\s?\\d\\s?[A-Z]{2}\\d",
96
+ scope: "country",
93
97
  country: "PT",
94
98
  entityType: "person",
95
99
  description:
package/src/pt/vat.ts CHANGED
@@ -9,14 +9,17 @@
9
9
  * @see https://www.portaldasfinancas.gov.pt/
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import { weightedSum } from "#checksums/weighted-sum";
13
18
  import { clean } from "#util/clean";
14
19
  import { randomDigits, 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 WEIGHTS = [9, 8, 7, 6, 5, 4, 3, 2];
21
24
 
22
25
  const compact = (value: string): string => {
@@ -69,7 +72,7 @@ const generate = (): string => {
69
72
  };
70
73
 
71
74
  /** Portuguese VAT Number. */
72
- const vat: Validator = {
75
+ const vat: CountryValidator<"PT"> = {
73
76
  name: "Portuguese VAT Number",
74
77
  localName: "Número de Identificação Fiscal",
75
78
  abbreviation: "NIF",
@@ -79,9 +82,11 @@ const vat: Validator = {
79
82
  "contribuinte",
80
83
  ] as const,
81
84
  candidatePattern: "PT\\d{9}",
85
+ scope: "country",
82
86
  country: "PT",
83
87
  entityType: "any",
84
88
  sourceUrl: "https://www.portaldasfinancas.gov.pt/",
89
+ lengths: [9] as const,
85
90
  examples: ["501964843"] as const,
86
91
  compact,
87
92
  format,
package/src/ro/cnp.ts CHANGED
@@ -9,6 +9,12 @@
9
9
  * @see https://www.cnp.ro/
10
10
  */
11
11
 
12
+ import type {
13
+ ParsedPersonId,
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
12
18
  import { weightedSum } from "#checksums/weighted-sum";
13
19
  import { clean } from "#util/clean";
14
20
  import { isValidDate } from "#util/date";
@@ -16,21 +22,20 @@ import { randomInt } from "#util/generate";
16
22
  import { err } from "#util/result";
17
23
  import { isdigits } from "#util/strings";
18
24
 
19
- import type {
20
- ParsedPersonId,
21
- ValidateResult,
22
- Validator,
23
- } from "../types";
24
-
25
25
  const WEIGHTS = [
26
26
  2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9,
27
27
  ] as const;
28
28
 
29
+ // Counties 01-39 are the 39 modern judete; 40-46 are
30
+ // Bucuresti sectors 1-6; 47-48 are the abolished
31
+ // sectors 7-8; 51-52 are Calarasi/Giurgiu; 70 is "Any";
32
+ // 80-83 are reserved. 49 and 50 are not allocated.
33
+ // See https://github.com/vimishor/cnp-spec.
29
34
  const VALID_COUNTIES = new Set([
30
35
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
31
36
  18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32
37
  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
33
- 46, 47, 48, 49, 50, 51, 52, 70, 80, 81, 82, 83,
38
+ 46, 47, 48, 51, 52, 70, 80, 81, 82, 83,
34
39
  ]);
35
40
 
36
41
  const centuryMap: Record<number, number> = {
@@ -150,16 +155,18 @@ const generate = (): string => {
150
155
  };
151
156
 
152
157
  /** Romanian Personal Identification Number. */
153
- const cnp: Validator<ParsedPersonId> = {
158
+ const cnp: CountryValidator<"RO", ParsedPersonId> = {
154
159
  name: "Romanian Personal ID",
155
160
  localName: "Cod Numeric Personal",
156
161
  abbreviation: "CNP",
157
162
  aliases: ["CNP", "cod numeric personal"] as const,
158
163
  candidatePattern:
159
164
  "[1-8]\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01])\\d{6}",
165
+ scope: "country",
160
166
  country: "RO",
161
167
  entityType: "person",
162
168
  sourceUrl: "https://www.cnp.ro/",
169
+ lengths: [13] as const,
163
170
  examples: ["1630615123457"] as const,
164
171
  compact,
165
172
  format,
package/src/ro/vat.ts CHANGED
@@ -9,14 +9,17 @@
9
9
  * @see https://www.anaf.ro/
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import { weightedSum } from "#checksums/weighted-sum";
13
18
  import { clean } from "#util/clean";
14
19
  import { randomDigits, 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 WEIGHTS = [7, 5, 3, 2, 1, 7, 5, 3, 2];
21
24
 
22
25
  const compact = (value: string): string => {
@@ -69,7 +72,7 @@ const generate = (): string => {
69
72
  };
70
73
 
71
74
  /** Romanian VAT Number. */
72
- const vat: Validator = {
75
+ const vat: CountryValidator<"RO"> = {
73
76
  name: "Romanian VAT Number",
74
77
  localName: "Cod de Identificare Fiscală",
75
78
  abbreviation: "CIF",
@@ -80,9 +83,11 @@ const vat: Validator = {
80
83
  "cod fiscal",
81
84
  ] as const,
82
85
  candidatePattern: "RO\\d{2,10}",
86
+ scope: "country",
83
87
  country: "RO",
84
88
  entityType: "any",
85
89
  sourceUrl: "https://www.anaf.ro/",
90
+ lengths: [2, 3, 4, 5, 6, 7, 8, 9, 10] as const,
86
91
  examples: ["18547290"] as const,
87
92
  compact,
88
93
  format,
package/src/rs/pib.ts CHANGED
@@ -8,13 +8,16 @@
8
8
  * @see https://www.purs.gov.rs/
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
 
@@ -62,12 +65,13 @@ const generate = (): string => {
62
65
  };
63
66
 
64
67
  /** Serbian Tax Identification Number. */
65
- const pib: Validator = {
68
+ const pib: CountryValidator<"RS"> = {
66
69
  name: "Serbian Tax ID",
67
70
  localName: "Poreski identifikacioni broj",
68
71
  abbreviation: "PIB",
69
72
  aliases: ["PIB", "poreski identifikacioni broj"] as const,
70
73
  candidatePattern: "\\d{9}",
74
+ scope: "country",
71
75
  country: "RS",
72
76
  entityType: "any",
73
77
  lengths: [9] as const,
package/src/ru/inn.ts CHANGED
@@ -10,13 +10,16 @@
10
10
  * @see https://www.nalog.gov.ru/
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
  const WEIGHTS_10 = [2, 4, 10, 3, 5, 9, 4, 6, 8] as const;
21
24
  const WEIGHTS_11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8] as const;
22
25
  const WEIGHTS_12 = [
@@ -88,12 +91,13 @@ const generate = (): string => {
88
91
  };
89
92
 
90
93
  /** Russian Taxpayer Identification Number. */
91
- const inn: Validator = {
94
+ const inn: CountryValidator<"RU"> = {
92
95
  name: "Russian Tax ID",
93
96
  localName: "Идентификационный номер налогоплательщика",
94
97
  abbreviation: "ИНН",
95
98
  aliases: ["ИНН", "INN"] as const,
96
99
  candidatePattern: "\\d{10,12}",
100
+ scope: "country",
97
101
  country: "RU",
98
102
  entityType: "any",
99
103
  lengths: [10, 12] as const,
package/src/se/orgnr.ts CHANGED
@@ -7,6 +7,11 @@
7
7
  * @see https://www.skatteverket.se/
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+
10
15
  import {
11
16
  luhnValidate,
12
17
  luhnChecksum,
@@ -16,8 +21,6 @@ import { randomDigits } from "#util/generate";
16
21
  import { err } from "#util/result";
17
22
  import { isdigits } from "#util/strings";
18
23
 
19
- import type { ValidateResult, Validator } from "../types";
20
-
21
24
  const compact = (value: string): string =>
22
25
  clean(value, " -");
23
26
 
@@ -57,7 +60,7 @@ const generate = (): string => {
57
60
  };
58
61
 
59
62
  /** Swedish Organization Number. */
60
- const orgnr: Validator = {
63
+ const orgnr: CountryValidator<"SE"> = {
61
64
  name: "Swedish Organization Number",
62
65
  localName: "Organisationsnummer",
63
66
  abbreviation: "Orgnr",
@@ -67,6 +70,7 @@ const orgnr: Validator = {
67
70
  "org nr",
68
71
  ] as const,
69
72
  candidatePattern: "\\d{6}-\\d{4}",
73
+ scope: "country",
70
74
  country: "SE",
71
75
  entityType: "company",
72
76
  sourceUrl: "https://www.skatteverket.se/",
@@ -8,6 +8,12 @@
8
8
  * @see https://www.skatteverket.se/privat/folkbokforing/personnummer.4.3810a01c150939e893f18c29.html
9
9
  */
10
10
 
11
+ import type {
12
+ ParsedPersonId,
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
11
17
  import {
12
18
  luhnValidate,
13
19
  luhnChecksum,
@@ -18,12 +24,6 @@ import { randomInt } from "#util/generate";
18
24
  import { err } from "#util/result";
19
25
  import { isdigits } from "#util/strings";
20
26
 
21
- import type {
22
- ParsedPersonId,
23
- ValidateResult,
24
- Validator,
25
- } from "../types";
26
-
27
27
  /**
28
28
  * Match python-stdnum's compact: preserve the '-' or '+'
29
29
  * separator at position -5, and strip any others.
@@ -32,8 +32,8 @@ const compact = (value: string): string => {
32
32
  let v = clean(value, " :");
33
33
  if (
34
34
  (v.length === 10 || v.length === 12) &&
35
- v[v.length - 5] !== "-" &&
36
- v[v.length - 5] !== "+"
35
+ v.at(-5) !== "-" &&
36
+ v.at(-5) !== "+"
37
37
  ) {
38
38
  v = `${v.slice(0, -4)}-${v.slice(-4)}`;
39
39
  }
@@ -64,7 +64,7 @@ const getBirthDate = (
64
64
  let century = Math.floor(currentYear / 100);
65
65
  const yy = Number(v.slice(0, 2));
66
66
  if (yy > currentYear % 100) century -= 1;
67
- if (v[v.length - 5] === "+") century -= 1;
67
+ if (v.at(-5) === "+") century -= 1;
68
68
  year = century * 100 + yy;
69
69
  month = Number(v.slice(2, 4));
70
70
  day = Number(v.slice(4, 6));
@@ -84,7 +84,7 @@ const validate = (value: string): ValidateResult => {
84
84
  }
85
85
 
86
86
  const digits = v.slice(0, -5) + v.slice(-4);
87
- const sep = v[v.length - 5];
87
+ const sep = v.at(-5);
88
88
  if ((sep !== "-" && sep !== "+") || !isdigits(digits)) {
89
89
  return err(
90
90
  "INVALID_FORMAT",
@@ -123,7 +123,7 @@ const parse = (value: string): ParsedPersonId | null => {
123
123
  const birthDate = getBirthDate(v);
124
124
  if (birthDate === null) return null;
125
125
 
126
- const genderDigit = Number(v[v.length - 2]);
126
+ const genderDigit = Number(v.at(-2));
127
127
 
128
128
  return {
129
129
  birthDate: new Date(
@@ -154,28 +154,30 @@ const generate = (): string => {
154
154
  };
155
155
 
156
156
  /** Swedish Personal Identity Number. */
157
- const personnummer: Validator<ParsedPersonId> = {
158
- name: "Swedish Personal ID",
159
- localName: "Personnummer",
160
- abbreviation: "PN",
161
- aliases: [
162
- "personnummer",
163
- "personnr",
164
- "pers.nr",
165
- "personal identity number",
166
- ] as const,
167
- candidatePattern: "\\d{6,8}-\\d{4}",
168
- country: "SE",
169
- entityType: "person",
170
- sourceUrl:
171
- "https://www.skatteverket.se/privat/folkbokforing/personnummer.4.3810a01c150939e893f18c29.html",
172
- examples: ["880320-0016"] as const,
173
- compact,
174
- format,
175
- parse,
176
- validate,
177
- generate,
178
- };
157
+ const personnummer: CountryValidator<"SE", ParsedPersonId> =
158
+ {
159
+ name: "Swedish Personal ID",
160
+ localName: "Personnummer",
161
+ abbreviation: "PN",
162
+ aliases: [
163
+ "personnummer",
164
+ "personnr",
165
+ "pers.nr",
166
+ "personal identity number",
167
+ ] as const,
168
+ candidatePattern: "\\d{6,8}-\\d{4}",
169
+ scope: "country",
170
+ country: "SE",
171
+ entityType: "person",
172
+ sourceUrl:
173
+ "https://www.skatteverket.se/privat/folkbokforing/personnummer.4.3810a01c150939e893f18c29.html",
174
+ examples: ["880320-0016"] as const,
175
+ compact,
176
+ format,
177
+ parse,
178
+ validate,
179
+ generate,
180
+ };
179
181
 
180
182
  export default personnummer;
181
183
  export { compact, format, parse, validate, generate };
package/src/se/vat.ts CHANGED
@@ -8,6 +8,11 @@
8
8
  * @see https://www.skatteverket.se/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import {
12
17
  luhnValidate,
13
18
  luhnChecksum,
@@ -17,8 +22,6 @@ import { randomDigits } from "#util/generate";
17
22
  import { err } from "#util/result";
18
23
  import { isdigits } from "#util/strings";
19
24
 
20
- import type { ValidateResult, Validator } from "../types";
21
-
22
25
  const compact = (value: string): string => {
23
26
  let v = clean(value, " -/.");
24
27
  if (v.startsWith("SE") || v.startsWith("se")) {
@@ -67,7 +70,7 @@ const generate = (): string => {
67
70
  };
68
71
 
69
72
  /** Swedish VAT Number. */
70
- const vat: Validator = {
73
+ const vat: CountryValidator<"SE"> = {
71
74
  name: "Swedish VAT Number",
72
75
  localName: "Momsregistreringsnummer",
73
76
  abbreviation: "Momsnr.",
@@ -78,9 +81,11 @@ const vat: Validator = {
78
81
  "SE VAT",
79
82
  ] as const,
80
83
  candidatePattern: "SE\\s?\\d{10}01",
84
+ scope: "country",
81
85
  country: "SE",
82
86
  entityType: "company",
83
87
  sourceUrl: "https://www.skatteverket.se/",
88
+ lengths: [12] as const,
84
89
  examples: ["556188840401"] as const,
85
90
  compact,
86
91
  format,
package/src/sg/uen.ts CHANGED
@@ -14,13 +14,16 @@
14
14
  * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Singapore-TIN.pdf
15
15
  */
16
16
 
17
+ import type {
18
+ ValidateResult,
19
+ CountryValidator,
20
+ } from "../types";
21
+
17
22
  import { clean } from "#util/clean";
18
23
  import { randomDigits } from "#util/generate";
19
24
  import { err } from "#util/result";
20
25
  import { isdigits } from "#util/strings";
21
26
 
22
- import type { ValidateResult, Validator } from "../types";
23
-
24
27
  /** Check letter alphabet for "Other" format. */
25
28
  const OTHER_ALPHA = "ABCDEFGHJKLMNPQRSTUVWX0123456789";
26
29
 
@@ -257,12 +260,13 @@ const generate = (): string => {
257
260
  };
258
261
 
259
262
  /** Singapore Unique Entity Number. */
260
- const uen: Validator = {
263
+ const uen: CountryValidator<"SG"> = {
261
264
  name: "Singapore Unique Entity Number",
262
265
  localName: "Unique Entity Number",
263
266
  abbreviation: "UEN",
264
267
  aliases: ["UEN", "Unique Entity Number"] as const,
265
268
  candidatePattern: "[\\dSTR]\\d{7}[A-Z]",
269
+ scope: "country",
266
270
  country: "SG",
267
271
  entityType: "company",
268
272
  description:
package/src/si/emso.ts CHANGED
@@ -15,6 +15,12 @@
15
15
  * @see https://www.gov.si/teme/registri-in-evidence-prebivalstva/
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 = [
32
32
  7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2,
33
33
  ] as const;
@@ -152,7 +152,7 @@ const generate = (): string => {
152
152
  };
153
153
 
154
154
  /** Slovenian Unique Master Citizen Number. */
155
- const emso: Validator<ParsedPersonId> = {
155
+ const emso: CountryValidator<"SI", ParsedPersonId> = {
156
156
  name: "Slovenian Personal ID",
157
157
  localName: "Enotna matična številka občana",
158
158
  abbreviation: "EMŠO",
@@ -161,6 +161,7 @@ const emso: Validator<ParsedPersonId> = {
161
161
  "enotna matična številka občana",
162
162
  ] as const,
163
163
  candidatePattern: "\\d{13}",
164
+ scope: "country",
164
165
  country: "SI",
165
166
  entityType: "person",
166
167
  sourceUrl:
package/src/si/vat.ts CHANGED
@@ -10,14 +10,17 @@
10
10
  * @see https://spot.gov.si/en/info/taxes/value-added-tax-vat
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import { weightedSum } from "#checksums/weighted-sum";
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
  const WEIGHTS = [8, 7, 6, 5, 4, 3, 2];
22
25
 
23
26
  const compact = (value: string): string => {
@@ -85,7 +88,7 @@ const generate = (): string => {
85
88
  };
86
89
 
87
90
  /** Slovenian VAT Number. */
88
- const vat: Validator = {
91
+ const vat: CountryValidator<"SI"> = {
89
92
  name: "Slovenian VAT Number",
90
93
  localName: "Davčna številka",
91
94
  abbreviation: "DDV",
@@ -94,9 +97,11 @@ const vat: Validator = {
94
97
  "identifikacijska številka za DDV",
95
98
  ] as const,
96
99
  candidatePattern: "SI\\d{8}",
100
+ scope: "country",
97
101
  country: "SI",
98
102
  entityType: "company",
99
103
  sourceUrl: "https://www.fu.gov.si/",
104
+ lengths: [8] as const,
100
105
  examples: ["15012557"] as const,
101
106
  compact,
102
107
  format,
package/src/sk/dic.ts CHANGED
@@ -9,14 +9,17 @@
9
9
  * @see https://www.financnasprava.sk/
10
10
  */
11
11
 
12
+ import { validate as validateRc } from "../cz/rc";
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
12
18
  import { clean } from "#util/clean";
13
19
  import { randomDigits } from "#util/generate";
14
20
  import { err } from "#util/result";
15
21
  import { isdigits } from "#util/strings";
16
22
 
17
- import { validate as validateRc } from "../cz/rc";
18
- import type { ValidateResult, Validator } from "../types";
19
-
20
23
  const compact = (value: string): string => {
21
24
  const v = clean(value, " -");
22
25
  if (v.startsWith("SK") || v.startsWith("sk")) {
@@ -85,13 +88,14 @@ const generate = (): string => {
85
88
  };
86
89
 
87
90
  /** Slovak VAT Number. */
88
- const dic: Validator = {
91
+ const dic: CountryValidator<"SK"> = {
89
92
  name: "Slovak VAT Number",
90
93
  localName:
91
94
  "Identifikačné číslo pre daň z pridanej hodnoty",
92
95
  abbreviation: "IČ DPH",
93
96
  aliases: ["DIČ", "daňové identifikačné číslo"] as const,
94
97
  candidatePattern: "SK\\d{10}",
98
+ scope: "country",
95
99
  country: "SK",
96
100
  entityType: "company",
97
101
  sourceUrl: "https://www.financnasprava.sk/",