@stll/stdnum 0.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 (1130) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +323 -0
  3. package/dist/_checksums/luhn.d.ts +12 -0
  4. package/dist/_checksums/luhn.js +26 -0
  5. package/dist/_checksums/luhn.js.map +1 -0
  6. package/dist/_checksums/mod1110.d.ts +12 -0
  7. package/dist/_checksums/mod1110.js +25 -0
  8. package/dist/_checksums/mod1110.js.map +1 -0
  9. package/dist/_checksums/mod112.d.ts +24 -0
  10. package/dist/_checksums/mod112.js +53 -0
  11. package/dist/_checksums/mod112.js.map +1 -0
  12. package/dist/_checksums/mod97.d.ts +23 -0
  13. package/dist/_checksums/mod97.js +28 -0
  14. package/dist/_checksums/mod97.js.map +1 -0
  15. package/dist/_checksums/verhoeff.d.ts +22 -0
  16. package/dist/_checksums/verhoeff.js +271 -0
  17. package/dist/_checksums/verhoeff.js.map +1 -0
  18. package/dist/_checksums/weighted-sum.d.ts +13 -0
  19. package/dist/_checksums/weighted-sum.js +22 -0
  20. package/dist/_checksums/weighted-sum.js.map +1 -0
  21. package/dist/_util/arabic.d.ts +19 -0
  22. package/dist/_util/arabic.js +41 -0
  23. package/dist/_util/arabic.js.map +1 -0
  24. package/dist/_util/clean.d.ts +13 -0
  25. package/dist/_util/clean.js +71 -0
  26. package/dist/_util/clean.js.map +1 -0
  27. package/dist/_util/date.d.ts +12 -0
  28. package/dist/_util/date.js +19 -0
  29. package/dist/_util/date.js.map +1 -0
  30. package/dist/_util/generate.d.ts +16 -0
  31. package/dist/_util/generate.js +21 -0
  32. package/dist/_util/generate.js.map +1 -0
  33. package/dist/_util/result.d.ts +8 -0
  34. package/dist/_util/result.js +13 -0
  35. package/dist/_util/result.js.map +1 -0
  36. package/dist/_util/strings.d.ts +21 -0
  37. package/dist/_util/strings.js +28 -0
  38. package/dist/_util/strings.js.map +1 -0
  39. package/dist/_virtual/_rolldown/runtime.js +13 -0
  40. package/dist/ad/mod.d.ts +8 -0
  41. package/dist/ad/mod.js +8 -0
  42. package/dist/ad/mod.js.map +1 -0
  43. package/dist/ad/nrt.d.ts +13 -0
  44. package/dist/ad/nrt.js +69 -0
  45. package/dist/ad/nrt.js.map +1 -0
  46. package/dist/ae/eid.d.ts +17 -0
  47. package/dist/ae/eid.js +79 -0
  48. package/dist/ae/eid.js.map +1 -0
  49. package/dist/ae/mod.d.ts +8 -0
  50. package/dist/ae/mod.js +8 -0
  51. package/dist/ae/mod.js.map +1 -0
  52. package/dist/ai/mod.d.ts +8 -0
  53. package/dist/ai/mod.js +8 -0
  54. package/dist/ai/mod.js.map +1 -0
  55. package/dist/ai/tin.d.ts +19 -0
  56. package/dist/ai/tin.js +72 -0
  57. package/dist/ai/tin.js.map +1 -0
  58. package/dist/al/mod.d.ts +8 -0
  59. package/dist/al/mod.js +8 -0
  60. package/dist/al/mod.js.map +1 -0
  61. package/dist/al/nipt.d.ts +13 -0
  62. package/dist/al/nipt.js +56 -0
  63. package/dist/al/nipt.js.map +1 -0
  64. package/dist/am/mod.d.ts +8 -0
  65. package/dist/am/mod.js +8 -0
  66. package/dist/am/mod.js.map +1 -0
  67. package/dist/am/tin.d.ts +13 -0
  68. package/dist/am/tin.js +53 -0
  69. package/dist/am/tin.js.map +1 -0
  70. package/dist/ar/cbu.d.ts +14 -0
  71. package/dist/ar/cbu.js +88 -0
  72. package/dist/ar/cbu.js.map +1 -0
  73. package/dist/ar/cuit.d.ts +19 -0
  74. package/dist/ar/cuit.js +123 -0
  75. package/dist/ar/cuit.js.map +1 -0
  76. package/dist/ar/dni.d.ts +13 -0
  77. package/dist/ar/dni.js +57 -0
  78. package/dist/ar/dni.js.map +1 -0
  79. package/dist/ar/mod.d.ts +10 -0
  80. package/dist/ar/mod.js +14 -0
  81. package/dist/ar/mod.js.map +1 -0
  82. package/dist/at/businessid.d.ts +13 -0
  83. package/dist/at/businessid.js +56 -0
  84. package/dist/at/businessid.js.map +1 -0
  85. package/dist/at/mod.d.ts +11 -0
  86. package/dist/at/mod.js +16 -0
  87. package/dist/at/mod.js.map +1 -0
  88. package/dist/at/tin.d.ts +14 -0
  89. package/dist/at/tin.js +70 -0
  90. package/dist/at/tin.js.map +1 -0
  91. package/dist/at/uid.d.ts +14 -0
  92. package/dist/at/uid.js +64 -0
  93. package/dist/at/uid.js.map +1 -0
  94. package/dist/at/vnr.d.ts +12 -0
  95. package/dist/at/vnr.js +79 -0
  96. package/dist/at/vnr.js.map +1 -0
  97. package/dist/au/abn.d.ts +14 -0
  98. package/dist/au/abn.js +77 -0
  99. package/dist/au/abn.js.map +1 -0
  100. package/dist/au/acn.d.ts +14 -0
  101. package/dist/au/acn.js +70 -0
  102. package/dist/au/acn.js.map +1 -0
  103. package/dist/au/mod.d.ts +10 -0
  104. package/dist/au/mod.js +14 -0
  105. package/dist/au/mod.js.map +1 -0
  106. package/dist/au/tfn.d.ts +14 -0
  107. package/dist/au/tfn.js +71 -0
  108. package/dist/au/tfn.js.map +1 -0
  109. package/dist/az/mod.d.ts +8 -0
  110. package/dist/az/mod.js +8 -0
  111. package/dist/az/mod.js.map +1 -0
  112. package/dist/az/voen.d.ts +21 -0
  113. package/dist/az/voen.js +100 -0
  114. package/dist/az/voen.js.map +1 -0
  115. package/dist/ba/jmbg.d.ts +15 -0
  116. package/dist/ba/jmbg.js +97 -0
  117. package/dist/ba/jmbg.js.map +1 -0
  118. package/dist/ba/mod.d.ts +8 -0
  119. package/dist/ba/mod.js +8 -0
  120. package/dist/ba/mod.js.map +1 -0
  121. package/dist/bd/mod.d.ts +8 -0
  122. package/dist/bd/mod.js +8 -0
  123. package/dist/bd/mod.js.map +1 -0
  124. package/dist/bd/nid.d.ts +13 -0
  125. package/dist/bd/nid.js +116 -0
  126. package/dist/bd/nid.js.map +1 -0
  127. package/dist/be/bis.d.ts +14 -0
  128. package/dist/be/bis.js +65 -0
  129. package/dist/be/bis.js.map +1 -0
  130. package/dist/be/mod.d.ts +10 -0
  131. package/dist/be/mod.js +14 -0
  132. package/dist/be/mod.js.map +1 -0
  133. package/dist/be/nn.d.ts +21 -0
  134. package/dist/be/nn.js +84 -0
  135. package/dist/be/nn.js.map +1 -0
  136. package/dist/be/vat.d.ts +14 -0
  137. package/dist/be/vat.js +70 -0
  138. package/dist/be/vat.js.map +1 -0
  139. package/dist/bg/egn.d.ts +19 -0
  140. package/dist/bg/egn.js +122 -0
  141. package/dist/bg/egn.js.map +1 -0
  142. package/dist/bg/mod.d.ts +10 -0
  143. package/dist/bg/mod.js +14 -0
  144. package/dist/bg/mod.js.map +1 -0
  145. package/dist/bg/pnf.d.ts +14 -0
  146. package/dist/bg/pnf.js +70 -0
  147. package/dist/bg/pnf.js.map +1 -0
  148. package/dist/bg/vat.d.ts +14 -0
  149. package/dist/bg/vat.js +153 -0
  150. package/dist/bg/vat.js.map +1 -0
  151. package/dist/bh/cpr.d.ts +12 -0
  152. package/dist/bh/cpr.js +58 -0
  153. package/dist/bh/cpr.js.map +1 -0
  154. package/dist/bh/mod.d.ts +8 -0
  155. package/dist/bh/mod.js +8 -0
  156. package/dist/bh/mod.js.map +1 -0
  157. package/dist/bic.d.ts +13 -0
  158. package/dist/bic.js +72 -0
  159. package/dist/bic.js.map +1 -0
  160. package/dist/br/cnpj.d.ts +21 -0
  161. package/dist/br/cnpj.js +132 -0
  162. package/dist/br/cnpj.js.map +1 -0
  163. package/dist/br/cpf.d.ts +14 -0
  164. package/dist/br/cpf.js +83 -0
  165. package/dist/br/cpf.js.map +1 -0
  166. package/dist/br/mod.d.ts +9 -0
  167. package/dist/br/mod.js +12 -0
  168. package/dist/br/mod.js.map +1 -0
  169. package/dist/by/mod.d.ts +8 -0
  170. package/dist/by/mod.js +8 -0
  171. package/dist/by/mod.js.map +1 -0
  172. package/dist/by/unp.d.ts +14 -0
  173. package/dist/by/unp.js +114 -0
  174. package/dist/by/unp.js.map +1 -0
  175. package/dist/bz/mod.d.ts +8 -0
  176. package/dist/bz/mod.js +8 -0
  177. package/dist/bz/mod.js.map +1 -0
  178. package/dist/bz/tin.d.ts +16 -0
  179. package/dist/bz/tin.js +85 -0
  180. package/dist/bz/tin.js.map +1 -0
  181. package/dist/ca/bn.d.ts +14 -0
  182. package/dist/ca/bn.js +73 -0
  183. package/dist/ca/bn.js.map +1 -0
  184. package/dist/ca/mod.d.ts +9 -0
  185. package/dist/ca/mod.js +12 -0
  186. package/dist/ca/mod.js.map +1 -0
  187. package/dist/ca/sin.d.ts +14 -0
  188. package/dist/ca/sin.js +62 -0
  189. package/dist/ca/sin.js.map +1 -0
  190. package/dist/ch/mod.d.ts +10 -0
  191. package/dist/ch/mod.js +14 -0
  192. package/dist/ch/mod.js.map +1 -0
  193. package/dist/ch/ssn.d.ts +14 -0
  194. package/dist/ch/ssn.js +67 -0
  195. package/dist/ch/ssn.js.map +1 -0
  196. package/dist/ch/uid.d.ts +14 -0
  197. package/dist/ch/uid.js +81 -0
  198. package/dist/ch/uid.js.map +1 -0
  199. package/dist/ch/vat.d.ts +14 -0
  200. package/dist/ch/vat.js +70 -0
  201. package/dist/ch/vat.js.map +1 -0
  202. package/dist/cl/mod.d.ts +8 -0
  203. package/dist/cl/mod.js +8 -0
  204. package/dist/cl/mod.js.map +1 -0
  205. package/dist/cl/rut.d.ts +19 -0
  206. package/dist/cl/rut.js +95 -0
  207. package/dist/cl/rut.js.map +1 -0
  208. package/dist/cn/mod.d.ts +9 -0
  209. package/dist/cn/mod.js +12 -0
  210. package/dist/cn/mod.js.map +1 -0
  211. package/dist/cn/ric.d.ts +19 -0
  212. package/dist/cn/ric.js +108 -0
  213. package/dist/cn/ric.js.map +1 -0
  214. package/dist/cn/uscc.d.ts +14 -0
  215. package/dist/cn/uscc.js +88 -0
  216. package/dist/cn/uscc.js.map +1 -0
  217. package/dist/co/mod.d.ts +8 -0
  218. package/dist/co/mod.js +8 -0
  219. package/dist/co/mod.js.map +1 -0
  220. package/dist/co/nit.d.ts +14 -0
  221. package/dist/co/nit.js +109 -0
  222. package/dist/co/nit.js.map +1 -0
  223. package/dist/cr/cpf.d.ts +21 -0
  224. package/dist/cr/cpf.js +79 -0
  225. package/dist/cr/cpf.js.map +1 -0
  226. package/dist/cr/mod.d.ts +8 -0
  227. package/dist/cr/mod.js +8 -0
  228. package/dist/cr/mod.js.map +1 -0
  229. package/dist/creditcard.d.ts +25 -0
  230. package/dist/creditcard.js +121 -0
  231. package/dist/creditcard.js.map +1 -0
  232. package/dist/cu/mod.d.ts +8 -0
  233. package/dist/cu/mod.js +8 -0
  234. package/dist/cu/mod.js.map +1 -0
  235. package/dist/cu/ni.d.ts +21 -0
  236. package/dist/cu/ni.js +90 -0
  237. package/dist/cu/ni.js.map +1 -0
  238. package/dist/cy/mod.d.ts +8 -0
  239. package/dist/cy/mod.js +8 -0
  240. package/dist/cy/mod.js.map +1 -0
  241. package/dist/cy/vat.d.ts +14 -0
  242. package/dist/cy/vat.js +88 -0
  243. package/dist/cy/vat.js.map +1 -0
  244. package/dist/cz/dic.d.ts +14 -0
  245. package/dist/cz/dic.js +97 -0
  246. package/dist/cz/dic.js.map +1 -0
  247. package/dist/cz/ico.d.ts +14 -0
  248. package/dist/cz/ico.js +70 -0
  249. package/dist/cz/ico.js.map +1 -0
  250. package/dist/cz/mod.d.ts +10 -0
  251. package/dist/cz/mod.js +14 -0
  252. package/dist/cz/mod.js.map +1 -0
  253. package/dist/cz/rc.d.ts +22 -0
  254. package/dist/cz/rc.js +116 -0
  255. package/dist/cz/rc.js.map +1 -0
  256. package/dist/de/handelsreg.d.ts +17 -0
  257. package/dist/de/handelsreg.js +86 -0
  258. package/dist/de/handelsreg.js.map +1 -0
  259. package/dist/de/idnr.d.ts +14 -0
  260. package/dist/de/idnr.js +102 -0
  261. package/dist/de/idnr.js.map +1 -0
  262. package/dist/de/mod.d.ts +12 -0
  263. package/dist/de/mod.js +18 -0
  264. package/dist/de/mod.js.map +1 -0
  265. package/dist/de/stnr.d.ts +22 -0
  266. package/dist/de/stnr.js +144 -0
  267. package/dist/de/stnr.js.map +1 -0
  268. package/dist/de/svnr.d.ts +14 -0
  269. package/dist/de/svnr.js +108 -0
  270. package/dist/de/svnr.js.map +1 -0
  271. package/dist/de/vat.d.ts +14 -0
  272. package/dist/de/vat.js +65 -0
  273. package/dist/de/vat.js.map +1 -0
  274. package/dist/dk/cpr.d.ts +17 -0
  275. package/dist/dk/cpr.js +81 -0
  276. package/dist/dk/cpr.js.map +1 -0
  277. package/dist/dk/cvr.d.ts +14 -0
  278. package/dist/dk/cvr.js +70 -0
  279. package/dist/dk/cvr.js.map +1 -0
  280. package/dist/dk/mod.d.ts +10 -0
  281. package/dist/dk/mod.js +14 -0
  282. package/dist/dk/mod.js.map +1 -0
  283. package/dist/dk/vat.d.ts +14 -0
  284. package/dist/dk/vat.js +72 -0
  285. package/dist/dk/vat.js.map +1 -0
  286. package/dist/do/mod.d.ts +8 -0
  287. package/dist/do/mod.js +8 -0
  288. package/dist/do/mod.js.map +1 -0
  289. package/dist/do/rnc.d.ts +18 -0
  290. package/dist/do/rnc.js +95 -0
  291. package/dist/do/rnc.js.map +1 -0
  292. package/dist/ec/mod.d.ts +8 -0
  293. package/dist/ec/mod.js +8 -0
  294. package/dist/ec/mod.js.map +1 -0
  295. package/dist/ec/ruc.d.ts +14 -0
  296. package/dist/ec/ruc.js +150 -0
  297. package/dist/ec/ruc.js.map +1 -0
  298. package/dist/ee/ik.d.ts +24 -0
  299. package/dist/ee/ik.js +131 -0
  300. package/dist/ee/ik.js.map +1 -0
  301. package/dist/ee/mod.d.ts +10 -0
  302. package/dist/ee/mod.js +14 -0
  303. package/dist/ee/mod.js.map +1 -0
  304. package/dist/ee/registrikood.d.ts +14 -0
  305. package/dist/ee/registrikood.js +63 -0
  306. package/dist/ee/registrikood.js.map +1 -0
  307. package/dist/ee/vat.d.ts +14 -0
  308. package/dist/ee/vat.js +69 -0
  309. package/dist/ee/vat.js.map +1 -0
  310. package/dist/eg/mod.d.ts +8 -0
  311. package/dist/eg/mod.js +8 -0
  312. package/dist/eg/mod.js.map +1 -0
  313. package/dist/eg/tn.d.ts +13 -0
  314. package/dist/eg/tn.js +81 -0
  315. package/dist/eg/tn.js.map +1 -0
  316. package/dist/es/cif.d.ts +14 -0
  317. package/dist/es/cif.js +66 -0
  318. package/dist/es/cif.js.map +1 -0
  319. package/dist/es/dni.d.ts +15 -0
  320. package/dist/es/dni.js +58 -0
  321. package/dist/es/dni.js.map +1 -0
  322. package/dist/es/mod.d.ts +12 -0
  323. package/dist/es/mod.js +18 -0
  324. package/dist/es/mod.js.map +1 -0
  325. package/dist/es/nie.d.ts +14 -0
  326. package/dist/es/nie.js +78 -0
  327. package/dist/es/nie.js.map +1 -0
  328. package/dist/es/nss.d.ts +14 -0
  329. package/dist/es/nss.js +72 -0
  330. package/dist/es/nss.js.map +1 -0
  331. package/dist/es/vat.d.ts +15 -0
  332. package/dist/es/vat.js +104 -0
  333. package/dist/es/vat.js.map +1 -0
  334. package/dist/eu/mod.d.ts +8 -0
  335. package/dist/eu/mod.js +8 -0
  336. package/dist/eu/mod.js.map +1 -0
  337. package/dist/eu/vat.d.ts +20 -0
  338. package/dist/eu/vat.js +145 -0
  339. package/dist/eu/vat.js.map +1 -0
  340. package/dist/fi/hetu.d.ts +17 -0
  341. package/dist/fi/hetu.js +107 -0
  342. package/dist/fi/hetu.js.map +1 -0
  343. package/dist/fi/mod.d.ts +10 -0
  344. package/dist/fi/mod.js +14 -0
  345. package/dist/fi/mod.js.map +1 -0
  346. package/dist/fi/vat.d.ts +14 -0
  347. package/dist/fi/vat.js +68 -0
  348. package/dist/fi/vat.js.map +1 -0
  349. package/dist/fi/ytunnus.d.ts +14 -0
  350. package/dist/fi/ytunnus.js +71 -0
  351. package/dist/fi/ytunnus.js.map +1 -0
  352. package/dist/fr/mod.d.ts +12 -0
  353. package/dist/fr/mod.js +18 -0
  354. package/dist/fr/mod.js.map +1 -0
  355. package/dist/fr/nif.d.ts +14 -0
  356. package/dist/fr/nif.js +64 -0
  357. package/dist/fr/nif.js.map +1 -0
  358. package/dist/fr/nir.d.ts +15 -0
  359. package/dist/fr/nir.js +106 -0
  360. package/dist/fr/nir.js.map +1 -0
  361. package/dist/fr/siren.d.ts +14 -0
  362. package/dist/fr/siren.js +56 -0
  363. package/dist/fr/siren.js.map +1 -0
  364. package/dist/fr/siret.d.ts +14 -0
  365. package/dist/fr/siret.js +73 -0
  366. package/dist/fr/siret.js.map +1 -0
  367. package/dist/fr/tva.d.ts +14 -0
  368. package/dist/fr/tva.js +80 -0
  369. package/dist/fr/tva.js.map +1 -0
  370. package/dist/gb/mod.d.ts +11 -0
  371. package/dist/gb/mod.js +16 -0
  372. package/dist/gb/mod.js.map +1 -0
  373. package/dist/gb/nino.d.ts +13 -0
  374. package/dist/gb/nino.js +103 -0
  375. package/dist/gb/nino.js.map +1 -0
  376. package/dist/gb/sedol.d.ts +15 -0
  377. package/dist/gb/sedol.js +85 -0
  378. package/dist/gb/sedol.js.map +1 -0
  379. package/dist/gb/utr.d.ts +14 -0
  380. package/dist/gb/utr.js +69 -0
  381. package/dist/gb/utr.js.map +1 -0
  382. package/dist/gb/vat.d.ts +14 -0
  383. package/dist/gb/vat.js +102 -0
  384. package/dist/gb/vat.js.map +1 -0
  385. package/dist/ge/mod.d.ts +8 -0
  386. package/dist/ge/mod.js +8 -0
  387. package/dist/ge/mod.js.map +1 -0
  388. package/dist/ge/pin.d.ts +13 -0
  389. package/dist/ge/pin.js +51 -0
  390. package/dist/ge/pin.js.map +1 -0
  391. package/dist/gh/mod.d.ts +8 -0
  392. package/dist/gh/mod.js +8 -0
  393. package/dist/gh/mod.js.map +1 -0
  394. package/dist/gh/tin.d.ts +14 -0
  395. package/dist/gh/tin.js +80 -0
  396. package/dist/gh/tin.js.map +1 -0
  397. package/dist/gr/amka.d.ts +14 -0
  398. package/dist/gr/amka.js +71 -0
  399. package/dist/gr/amka.js.map +1 -0
  400. package/dist/gr/mod.d.ts +9 -0
  401. package/dist/gr/mod.js +12 -0
  402. package/dist/gr/mod.js.map +1 -0
  403. package/dist/gr/vat.d.ts +14 -0
  404. package/dist/gr/vat.js +66 -0
  405. package/dist/gr/vat.js.map +1 -0
  406. package/dist/gt/mod.d.ts +8 -0
  407. package/dist/gt/mod.js +8 -0
  408. package/dist/gt/mod.js.map +1 -0
  409. package/dist/gt/nit.d.ts +21 -0
  410. package/dist/gt/nit.js +98 -0
  411. package/dist/gt/nit.js.map +1 -0
  412. package/dist/hk/hkid.d.ts +15 -0
  413. package/dist/hk/hkid.js +92 -0
  414. package/dist/hk/hkid.js.map +1 -0
  415. package/dist/hk/mod.d.ts +8 -0
  416. package/dist/hk/mod.js +8 -0
  417. package/dist/hk/mod.js.map +1 -0
  418. package/dist/hr/mod.d.ts +8 -0
  419. package/dist/hr/mod.js +8 -0
  420. package/dist/hr/mod.js.map +1 -0
  421. package/dist/hr/vat.d.ts +14 -0
  422. package/dist/hr/vat.js +55 -0
  423. package/dist/hr/vat.js.map +1 -0
  424. package/dist/hu/mod.d.ts +8 -0
  425. package/dist/hu/mod.js +8 -0
  426. package/dist/hu/mod.js.map +1 -0
  427. package/dist/hu/vat.d.ts +14 -0
  428. package/dist/hu/vat.js +68 -0
  429. package/dist/hu/vat.js.map +1 -0
  430. package/dist/iban.d.ts +16 -0
  431. package/dist/iban.js +282 -0
  432. package/dist/iban.js.map +1 -0
  433. package/dist/id/mod.d.ts +8 -0
  434. package/dist/id/mod.js +8 -0
  435. package/dist/id/mod.js.map +1 -0
  436. package/dist/id/npwp.d.ts +14 -0
  437. package/dist/id/npwp.js +133 -0
  438. package/dist/id/npwp.js.map +1 -0
  439. package/dist/ie/mod.d.ts +9 -0
  440. package/dist/ie/mod.js +12 -0
  441. package/dist/ie/mod.js.map +1 -0
  442. package/dist/ie/pps.d.ts +14 -0
  443. package/dist/ie/pps.js +69 -0
  444. package/dist/ie/pps.js.map +1 -0
  445. package/dist/ie/vat.d.ts +14 -0
  446. package/dist/ie/vat.js +83 -0
  447. package/dist/ie/vat.js.map +1 -0
  448. package/dist/il/idnr.d.ts +14 -0
  449. package/dist/il/idnr.js +61 -0
  450. package/dist/il/idnr.js.map +1 -0
  451. package/dist/il/mod.d.ts +8 -0
  452. package/dist/il/mod.js +8 -0
  453. package/dist/il/mod.js.map +1 -0
  454. package/dist/in/aadhaar.d.ts +14 -0
  455. package/dist/in/aadhaar.js +61 -0
  456. package/dist/in/aadhaar.js.map +1 -0
  457. package/dist/in/gstin.d.ts +14 -0
  458. package/dist/in/gstin.js +130 -0
  459. package/dist/in/gstin.js.map +1 -0
  460. package/dist/in/mod.d.ts +10 -0
  461. package/dist/in/mod.js +14 -0
  462. package/dist/in/mod.js.map +1 -0
  463. package/dist/in/pan.d.ts +13 -0
  464. package/dist/in/pan.js +58 -0
  465. package/dist/in/pan.js.map +1 -0
  466. package/dist/index.d.ts +105 -0
  467. package/dist/index.js +104 -0
  468. package/dist/iq/mod.d.ts +8 -0
  469. package/dist/iq/mod.js +8 -0
  470. package/dist/iq/mod.js.map +1 -0
  471. package/dist/iq/nid.d.ts +14 -0
  472. package/dist/iq/nid.js +56 -0
  473. package/dist/iq/nid.js.map +1 -0
  474. package/dist/ir/mod.d.ts +8 -0
  475. package/dist/ir/mod.js +8 -0
  476. package/dist/ir/mod.js.map +1 -0
  477. package/dist/ir/nid.d.ts +18 -0
  478. package/dist/ir/nid.js +90 -0
  479. package/dist/ir/nid.js.map +1 -0
  480. package/dist/is/kennitala.d.ts +14 -0
  481. package/dist/is/kennitala.js +92 -0
  482. package/dist/is/kennitala.js.map +1 -0
  483. package/dist/is/mod.d.ts +9 -0
  484. package/dist/is/mod.js +12 -0
  485. package/dist/is/mod.js.map +1 -0
  486. package/dist/is/vsk.d.ts +13 -0
  487. package/dist/is/vsk.js +47 -0
  488. package/dist/is/vsk.js.map +1 -0
  489. package/dist/isin.d.ts +14 -0
  490. package/dist/isin.js +85 -0
  491. package/dist/isin.js.map +1 -0
  492. package/dist/it/codicefiscale.d.ts +18 -0
  493. package/dist/it/codicefiscale.js +214 -0
  494. package/dist/it/codicefiscale.js.map +1 -0
  495. package/dist/it/iva.d.ts +14 -0
  496. package/dist/it/iva.js +71 -0
  497. package/dist/it/iva.js.map +1 -0
  498. package/dist/it/mod.d.ts +9 -0
  499. package/dist/it/mod.js +12 -0
  500. package/dist/it/mod.js.map +1 -0
  501. package/dist/jp/cn.d.ts +14 -0
  502. package/dist/jp/cn.js +68 -0
  503. package/dist/jp/cn.js.map +1 -0
  504. package/dist/jp/mod.d.ts +9 -0
  505. package/dist/jp/mod.js +12 -0
  506. package/dist/jp/mod.js.map +1 -0
  507. package/dist/jp/mynumber.d.ts +14 -0
  508. package/dist/jp/mynumber.js +86 -0
  509. package/dist/jp/mynumber.js.map +1 -0
  510. package/dist/kr/brn.d.ts +13 -0
  511. package/dist/kr/brn.js +67 -0
  512. package/dist/kr/brn.js.map +1 -0
  513. package/dist/kr/mod.d.ts +9 -0
  514. package/dist/kr/mod.js +12 -0
  515. package/dist/kr/mod.js.map +1 -0
  516. package/dist/kr/rrn.d.ts +22 -0
  517. package/dist/kr/rrn.js +133 -0
  518. package/dist/kr/rrn.js.map +1 -0
  519. package/dist/kw/civil.d.ts +18 -0
  520. package/dist/kw/civil.js +99 -0
  521. package/dist/kw/civil.js.map +1 -0
  522. package/dist/kw/mod.d.ts +8 -0
  523. package/dist/kw/mod.js +8 -0
  524. package/dist/kw/mod.js.map +1 -0
  525. package/dist/kz/iin.d.ts +23 -0
  526. package/dist/kz/iin.js +150 -0
  527. package/dist/kz/iin.js.map +1 -0
  528. package/dist/kz/mod.d.ts +8 -0
  529. package/dist/kz/mod.js +8 -0
  530. package/dist/kz/mod.js.map +1 -0
  531. package/dist/lei.d.ts +14 -0
  532. package/dist/lei.js +68 -0
  533. package/dist/lei.js.map +1 -0
  534. package/dist/li/mod.d.ts +8 -0
  535. package/dist/li/mod.js +8 -0
  536. package/dist/li/mod.js.map +1 -0
  537. package/dist/li/peid.d.ts +13 -0
  538. package/dist/li/peid.js +61 -0
  539. package/dist/li/peid.js.map +1 -0
  540. package/dist/lk/mod.d.ts +8 -0
  541. package/dist/lk/mod.js +8 -0
  542. package/dist/lk/mod.js.map +1 -0
  543. package/dist/lk/nic.d.ts +17 -0
  544. package/dist/lk/nic.js +139 -0
  545. package/dist/lk/nic.js.map +1 -0
  546. package/dist/lt/asmens.d.ts +14 -0
  547. package/dist/lt/asmens.js +81 -0
  548. package/dist/lt/asmens.js.map +1 -0
  549. package/dist/lt/mod.d.ts +9 -0
  550. package/dist/lt/mod.js +12 -0
  551. package/dist/lt/mod.js.map +1 -0
  552. package/dist/lt/vat.d.ts +14 -0
  553. package/dist/lt/vat.js +72 -0
  554. package/dist/lt/vat.js.map +1 -0
  555. package/dist/lu/mod.d.ts +8 -0
  556. package/dist/lu/mod.js +8 -0
  557. package/dist/lu/mod.js.map +1 -0
  558. package/dist/lu/vat.d.ts +14 -0
  559. package/dist/lu/vat.js +56 -0
  560. package/dist/lu/vat.js.map +1 -0
  561. package/dist/luhn.d.ts +17 -0
  562. package/dist/luhn.js +51 -0
  563. package/dist/luhn.js.map +1 -0
  564. package/dist/lv/mod.d.ts +8 -0
  565. package/dist/lv/mod.js +8 -0
  566. package/dist/lv/mod.js.map +1 -0
  567. package/dist/lv/vat.d.ts +14 -0
  568. package/dist/lv/vat.js +104 -0
  569. package/dist/lv/vat.js.map +1 -0
  570. package/dist/ma/ice.d.ts +14 -0
  571. package/dist/ma/ice.js +57 -0
  572. package/dist/ma/ice.js.map +1 -0
  573. package/dist/ma/mod.d.ts +8 -0
  574. package/dist/ma/mod.js +8 -0
  575. package/dist/ma/mod.js.map +1 -0
  576. package/dist/mc/mod.d.ts +8 -0
  577. package/dist/mc/mod.js +8 -0
  578. package/dist/mc/mod.js.map +1 -0
  579. package/dist/mc/tva.d.ts +14 -0
  580. package/dist/mc/tva.js +53 -0
  581. package/dist/mc/tva.js.map +1 -0
  582. package/dist/md/idno.d.ts +12 -0
  583. package/dist/md/idno.js +71 -0
  584. package/dist/md/idno.js.map +1 -0
  585. package/dist/md/mod.d.ts +8 -0
  586. package/dist/md/mod.js +8 -0
  587. package/dist/md/mod.js.map +1 -0
  588. package/dist/me/mod.d.ts +8 -0
  589. package/dist/me/mod.js +8 -0
  590. package/dist/me/mod.js.map +1 -0
  591. package/dist/me/pib.d.ts +14 -0
  592. package/dist/me/pib.js +63 -0
  593. package/dist/me/pib.js.map +1 -0
  594. package/dist/mk/edb.d.ts +14 -0
  595. package/dist/mk/edb.js +77 -0
  596. package/dist/mk/edb.js.map +1 -0
  597. package/dist/mk/mod.d.ts +8 -0
  598. package/dist/mk/mod.js +8 -0
  599. package/dist/mk/mod.js.map +1 -0
  600. package/dist/mt/mod.d.ts +8 -0
  601. package/dist/mt/mod.js +8 -0
  602. package/dist/mt/mod.js.map +1 -0
  603. package/dist/mt/vat.d.ts +14 -0
  604. package/dist/mt/vat.js +69 -0
  605. package/dist/mt/vat.js.map +1 -0
  606. package/dist/mu/brn.d.ts +13 -0
  607. package/dist/mu/brn.js +68 -0
  608. package/dist/mu/brn.js.map +1 -0
  609. package/dist/mu/mod.d.ts +8 -0
  610. package/dist/mu/mod.js +8 -0
  611. package/dist/mu/mod.js.map +1 -0
  612. package/dist/mx/clabe.d.ts +18 -0
  613. package/dist/mx/clabe.js +87 -0
  614. package/dist/mx/clabe.js.map +1 -0
  615. package/dist/mx/curp.d.ts +21 -0
  616. package/dist/mx/curp.js +140 -0
  617. package/dist/mx/curp.js.map +1 -0
  618. package/dist/mx/mod.d.ts +10 -0
  619. package/dist/mx/mod.js +14 -0
  620. package/dist/mx/mod.js.map +1 -0
  621. package/dist/mx/rfc.d.ts +16 -0
  622. package/dist/mx/rfc.js +92 -0
  623. package/dist/mx/rfc.js.map +1 -0
  624. package/dist/my/mod.d.ts +8 -0
  625. package/dist/my/mod.js +8 -0
  626. package/dist/my/mod.js.map +1 -0
  627. package/dist/my/nric.d.ts +17 -0
  628. package/dist/my/nric.js +186 -0
  629. package/dist/my/nric.js.map +1 -0
  630. package/dist/ng/mod.d.ts +8 -0
  631. package/dist/ng/mod.js +8 -0
  632. package/dist/ng/mod.js.map +1 -0
  633. package/dist/ng/nin.d.ts +13 -0
  634. package/dist/ng/nin.js +54 -0
  635. package/dist/ng/nin.js.map +1 -0
  636. package/dist/ni/mod.d.ts +8 -0
  637. package/dist/ni/mod.js +8 -0
  638. package/dist/ni/mod.js.map +1 -0
  639. package/dist/ni/ruc.d.ts +23 -0
  640. package/dist/ni/ruc.js +113 -0
  641. package/dist/ni/ruc.js.map +1 -0
  642. package/dist/nl/bsn.d.ts +14 -0
  643. package/dist/nl/bsn.js +70 -0
  644. package/dist/nl/bsn.js.map +1 -0
  645. package/dist/nl/kvk.d.ts +13 -0
  646. package/dist/nl/kvk.js +45 -0
  647. package/dist/nl/kvk.js.map +1 -0
  648. package/dist/nl/mod.d.ts +10 -0
  649. package/dist/nl/mod.js +14 -0
  650. package/dist/nl/mod.js.map +1 -0
  651. package/dist/nl/vat.d.ts +14 -0
  652. package/dist/nl/vat.js +94 -0
  653. package/dist/nl/vat.js.map +1 -0
  654. package/dist/no/fodselsnummer.d.ts +20 -0
  655. package/dist/no/fodselsnummer.js +134 -0
  656. package/dist/no/fodselsnummer.js.map +1 -0
  657. package/dist/no/mod.d.ts +10 -0
  658. package/dist/no/mod.js +14 -0
  659. package/dist/no/mod.js.map +1 -0
  660. package/dist/no/mva.d.ts +14 -0
  661. package/dist/no/mva.js +54 -0
  662. package/dist/no/mva.js.map +1 -0
  663. package/dist/no/orgnr.d.ts +14 -0
  664. package/dist/no/orgnr.js +66 -0
  665. package/dist/no/orgnr.js.map +1 -0
  666. package/dist/nz/ird.d.ts +14 -0
  667. package/dist/nz/ird.js +105 -0
  668. package/dist/nz/ird.js.map +1 -0
  669. package/dist/nz/mod.d.ts +8 -0
  670. package/dist/nz/mod.js +8 -0
  671. package/dist/nz/mod.js.map +1 -0
  672. package/dist/pa/mod.d.ts +8 -0
  673. package/dist/pa/mod.js +8 -0
  674. package/dist/pa/mod.js.map +1 -0
  675. package/dist/pa/ruc.d.ts +23 -0
  676. package/dist/pa/ruc.js +200 -0
  677. package/dist/pa/ruc.js.map +1 -0
  678. package/dist/patterns.d.ts +45 -0
  679. package/dist/patterns.js +123 -0
  680. package/dist/patterns.js.map +1 -0
  681. package/dist/pe/mod.d.ts +8 -0
  682. package/dist/pe/mod.js +8 -0
  683. package/dist/pe/mod.js.map +1 -0
  684. package/dist/pe/ruc.d.ts +19 -0
  685. package/dist/pe/ruc.js +109 -0
  686. package/dist/pe/ruc.js.map +1 -0
  687. package/dist/ph/mod.d.ts +8 -0
  688. package/dist/ph/mod.js +8 -0
  689. package/dist/ph/mod.js.map +1 -0
  690. package/dist/ph/philid.d.ts +13 -0
  691. package/dist/ph/philid.js +60 -0
  692. package/dist/ph/philid.js.map +1 -0
  693. package/dist/pk/cnic.d.ts +13 -0
  694. package/dist/pk/cnic.js +69 -0
  695. package/dist/pk/cnic.js.map +1 -0
  696. package/dist/pk/mod.d.ts +8 -0
  697. package/dist/pk/mod.js +8 -0
  698. package/dist/pk/mod.js.map +1 -0
  699. package/dist/pl/mod.d.ts +10 -0
  700. package/dist/pl/mod.js +14 -0
  701. package/dist/pl/mod.js.map +1 -0
  702. package/dist/pl/nip.d.ts +18 -0
  703. package/dist/pl/nip.js +77 -0
  704. package/dist/pl/nip.js.map +1 -0
  705. package/dist/pl/pesel.d.ts +19 -0
  706. package/dist/pl/pesel.js +109 -0
  707. package/dist/pl/pesel.js.map +1 -0
  708. package/dist/pl/regon.d.ts +14 -0
  709. package/dist/pl/regon.js +85 -0
  710. package/dist/pl/regon.js.map +1 -0
  711. package/dist/pt/cc.d.ts +14 -0
  712. package/dist/pt/cc.js +77 -0
  713. package/dist/pt/cc.js.map +1 -0
  714. package/dist/pt/mod.d.ts +9 -0
  715. package/dist/pt/mod.js +12 -0
  716. package/dist/pt/mod.js.map +1 -0
  717. package/dist/pt/vat.d.ts +14 -0
  718. package/dist/pt/vat.js +73 -0
  719. package/dist/pt/vat.js.map +1 -0
  720. package/dist/ro/cnp.d.ts +19 -0
  721. package/dist/ro/cnp.js +176 -0
  722. package/dist/ro/cnp.js.map +1 -0
  723. package/dist/ro/mod.d.ts +9 -0
  724. package/dist/ro/mod.js +12 -0
  725. package/dist/ro/mod.js.map +1 -0
  726. package/dist/ro/vat.d.ts +14 -0
  727. package/dist/ro/vat.js +76 -0
  728. package/dist/ro/vat.js.map +1 -0
  729. package/dist/rs/mod.d.ts +8 -0
  730. package/dist/rs/mod.js +8 -0
  731. package/dist/rs/mod.js.map +1 -0
  732. package/dist/rs/pib.d.ts +14 -0
  733. package/dist/rs/pib.js +60 -0
  734. package/dist/rs/pib.js.map +1 -0
  735. package/dist/ru/inn.d.ts +14 -0
  736. package/dist/ru/inn.js +103 -0
  737. package/dist/ru/inn.js.map +1 -0
  738. package/dist/ru/mod.d.ts +8 -0
  739. package/dist/ru/mod.js +8 -0
  740. package/dist/ru/mod.js.map +1 -0
  741. package/dist/se/mod.d.ts +10 -0
  742. package/dist/se/mod.js +14 -0
  743. package/dist/se/mod.js.map +1 -0
  744. package/dist/se/orgnr.d.ts +14 -0
  745. package/dist/se/orgnr.js +59 -0
  746. package/dist/se/orgnr.js.map +1 -0
  747. package/dist/se/personnummer.d.ts +23 -0
  748. package/dist/se/personnummer.js +122 -0
  749. package/dist/se/personnummer.js.map +1 -0
  750. package/dist/se/vat.d.ts +14 -0
  751. package/dist/se/vat.js +63 -0
  752. package/dist/se/vat.js.map +1 -0
  753. package/dist/sg/mod.d.ts +8 -0
  754. package/dist/sg/mod.js +8 -0
  755. package/dist/sg/mod.js.map +1 -0
  756. package/dist/sg/uen.d.ts +14 -0
  757. package/dist/sg/uen.js +207 -0
  758. package/dist/sg/uen.js.map +1 -0
  759. package/dist/si/emso.d.ts +19 -0
  760. package/dist/si/emso.js +108 -0
  761. package/dist/si/emso.js.map +1 -0
  762. package/dist/si/mod.d.ts +9 -0
  763. package/dist/si/mod.js +12 -0
  764. package/dist/si/mod.js.map +1 -0
  765. package/dist/si/vat.d.ts +14 -0
  766. package/dist/si/vat.js +74 -0
  767. package/dist/si/vat.js.map +1 -0
  768. package/dist/sk/dic.d.ts +14 -0
  769. package/dist/sk/dic.js +66 -0
  770. package/dist/sk/dic.js.map +1 -0
  771. package/dist/sk/ico.d.ts +10 -0
  772. package/dist/sk/ico.js +30 -0
  773. package/dist/sk/ico.js.map +1 -0
  774. package/dist/sk/mod.d.ts +10 -0
  775. package/dist/sk/mod.js +14 -0
  776. package/dist/sk/mod.js.map +1 -0
  777. package/dist/sk/rc.d.ts +10 -0
  778. package/dist/sk/rc.js +30 -0
  779. package/dist/sk/rc.js.map +1 -0
  780. package/dist/th/mod.d.ts +8 -0
  781. package/dist/th/mod.js +8 -0
  782. package/dist/th/mod.js.map +1 -0
  783. package/dist/th/tin.d.ts +14 -0
  784. package/dist/th/tin.js +63 -0
  785. package/dist/th/tin.js.map +1 -0
  786. package/dist/tr/mod.d.ts +9 -0
  787. package/dist/tr/mod.js +12 -0
  788. package/dist/tr/mod.js.map +1 -0
  789. package/dist/tr/tckimlik.d.ts +15 -0
  790. package/dist/tr/tckimlik.js +79 -0
  791. package/dist/tr/tckimlik.js.map +1 -0
  792. package/dist/tr/vkn.d.ts +15 -0
  793. package/dist/tr/vkn.js +79 -0
  794. package/dist/tr/vkn.js.map +1 -0
  795. package/dist/tw/mod.d.ts +8 -0
  796. package/dist/tw/mod.js +8 -0
  797. package/dist/tw/mod.js.map +1 -0
  798. package/dist/tw/ubn.d.ts +14 -0
  799. package/dist/tw/ubn.js +86 -0
  800. package/dist/tw/ubn.js.map +1 -0
  801. package/dist/types.d.ts +95 -0
  802. package/dist/types.js +1 -0
  803. package/dist/ua/edrpou.d.ts +14 -0
  804. package/dist/ua/edrpou.js +103 -0
  805. package/dist/ua/edrpou.js.map +1 -0
  806. package/dist/ua/mod.d.ts +8 -0
  807. package/dist/ua/mod.js +8 -0
  808. package/dist/ua/mod.js.map +1 -0
  809. package/dist/us/ein.d.ts +13 -0
  810. package/dist/us/ein.js +234 -0
  811. package/dist/us/ein.js.map +1 -0
  812. package/dist/us/itin.d.ts +15 -0
  813. package/dist/us/itin.js +69 -0
  814. package/dist/us/itin.js.map +1 -0
  815. package/dist/us/mod.d.ts +11 -0
  816. package/dist/us/mod.js +16 -0
  817. package/dist/us/mod.js.map +1 -0
  818. package/dist/us/rtn.d.ts +14 -0
  819. package/dist/us/rtn.js +91 -0
  820. package/dist/us/rtn.js.map +1 -0
  821. package/dist/us/ssn.d.ts +13 -0
  822. package/dist/us/ssn.js +77 -0
  823. package/dist/us/ssn.js.map +1 -0
  824. package/dist/uy/mod.d.ts +8 -0
  825. package/dist/uy/mod.js +8 -0
  826. package/dist/uy/mod.js.map +1 -0
  827. package/dist/uy/rut.d.ts +18 -0
  828. package/dist/uy/rut.js +105 -0
  829. package/dist/uy/rut.js.map +1 -0
  830. package/dist/ve/mod.d.ts +8 -0
  831. package/dist/ve/mod.js +8 -0
  832. package/dist/ve/mod.js.map +1 -0
  833. package/dist/ve/rif.d.ts +18 -0
  834. package/dist/ve/rif.js +109 -0
  835. package/dist/ve/rif.js.map +1 -0
  836. package/dist/vn/mod.d.ts +8 -0
  837. package/dist/vn/mod.js +8 -0
  838. package/dist/vn/mod.js.map +1 -0
  839. package/dist/vn/mst.d.ts +14 -0
  840. package/dist/vn/mst.js +82 -0
  841. package/dist/vn/mst.js.map +1 -0
  842. package/dist/za/idnr.d.ts +19 -0
  843. package/dist/za/idnr.js +110 -0
  844. package/dist/za/idnr.js.map +1 -0
  845. package/dist/za/mod.d.ts +8 -0
  846. package/dist/za/mod.js +8 -0
  847. package/dist/za/mod.js.map +1 -0
  848. package/package.json +936 -0
  849. package/src/_checksums/luhn.ts +24 -0
  850. package/src/_checksums/mod1110.ts +24 -0
  851. package/src/_checksums/mod112.ts +40 -0
  852. package/src/_checksums/mod97.ts +28 -0
  853. package/src/_checksums/verhoeff.ts +71 -0
  854. package/src/_checksums/weighted-sum.ts +23 -0
  855. package/src/_util/arabic.ts +48 -0
  856. package/src/_util/clean.ts +86 -0
  857. package/src/_util/date.ts +23 -0
  858. package/src/_util/generate.ts +24 -0
  859. package/src/_util/result.ts +10 -0
  860. package/src/_util/strings.ts +32 -0
  861. package/src/ad/mod.ts +1 -0
  862. package/src/ad/nrt.ts +111 -0
  863. package/src/ae/eid.ts +106 -0
  864. package/src/ae/mod.ts +1 -0
  865. package/src/ai/mod.ts +1 -0
  866. package/src/ai/tin.ts +98 -0
  867. package/src/al/mod.ts +1 -0
  868. package/src/al/nipt.ts +78 -0
  869. package/src/am/mod.ts +1 -0
  870. package/src/am/tin.ts +73 -0
  871. package/src/ar/cbu.ts +106 -0
  872. package/src/ar/cuit.ts +137 -0
  873. package/src/ar/dni.ts +79 -0
  874. package/src/ar/mod.ts +3 -0
  875. package/src/at/businessid.ts +74 -0
  876. package/src/at/mod.ts +4 -0
  877. package/src/at/tin.ts +90 -0
  878. package/src/at/uid.ts +92 -0
  879. package/src/at/vnr.ts +111 -0
  880. package/src/au/abn.ts +85 -0
  881. package/src/au/acn.ts +86 -0
  882. package/src/au/mod.ts +3 -0
  883. package/src/au/tfn.ts +85 -0
  884. package/src/az/mod.ts +1 -0
  885. package/src/az/voen.ts +125 -0
  886. package/src/ba/jmbg.ts +128 -0
  887. package/src/ba/mod.ts +1 -0
  888. package/src/bd/mod.ts +1 -0
  889. package/src/bd/nid.ts +139 -0
  890. package/src/be/bis.ts +105 -0
  891. package/src/be/mod.ts +3 -0
  892. package/src/be/nn.ts +125 -0
  893. package/src/be/vat.ts +107 -0
  894. package/src/bg/egn.ts +155 -0
  895. package/src/bg/mod.ts +3 -0
  896. package/src/bg/pnf.ts +86 -0
  897. package/src/bg/vat.ts +155 -0
  898. package/src/bh/cpr.ts +81 -0
  899. package/src/bh/mod.ts +1 -0
  900. package/src/bic.ts +99 -0
  901. package/src/br/cnpj.ts +152 -0
  902. package/src/br/cpf.ts +114 -0
  903. package/src/br/mod.ts +2 -0
  904. package/src/by/mod.ts +1 -0
  905. package/src/by/unp.ts +153 -0
  906. package/src/bz/mod.ts +1 -0
  907. package/src/bz/tin.ts +107 -0
  908. package/src/ca/bn.ts +107 -0
  909. package/src/ca/mod.ts +2 -0
  910. package/src/ca/sin.ts +91 -0
  911. package/src/ch/mod.ts +3 -0
  912. package/src/ch/ssn.ts +95 -0
  913. package/src/ch/uid.ts +108 -0
  914. package/src/ch/vat.ts +85 -0
  915. package/src/cl/mod.ts +1 -0
  916. package/src/cl/rut.ts +118 -0
  917. package/src/cn/mod.ts +2 -0
  918. package/src/cn/ric.ts +180 -0
  919. package/src/cn/uscc.ts +111 -0
  920. package/src/co/mod.ts +1 -0
  921. package/src/co/nit.ts +108 -0
  922. package/src/cr/cpf.ts +111 -0
  923. package/src/cr/mod.ts +1 -0
  924. package/src/creditcard.ts +190 -0
  925. package/src/cu/mod.ts +1 -0
  926. package/src/cu/ni.ts +125 -0
  927. package/src/cy/mod.ts +1 -0
  928. package/src/cy/vat.ts +130 -0
  929. package/src/cz/dic.ts +135 -0
  930. package/src/cz/ico.ts +82 -0
  931. package/src/cz/mod.ts +3 -0
  932. package/src/cz/rc.ts +190 -0
  933. package/src/de/handelsreg.ts +107 -0
  934. package/src/de/idnr.ts +140 -0
  935. package/src/de/mod.ts +5 -0
  936. package/src/de/stnr.ts +214 -0
  937. package/src/de/svnr.ts +162 -0
  938. package/src/de/vat.ts +98 -0
  939. package/src/dk/cpr.ts +122 -0
  940. package/src/dk/cvr.ts +87 -0
  941. package/src/dk/mod.ts +3 -0
  942. package/src/dk/vat.ts +91 -0
  943. package/src/do/mod.ts +1 -0
  944. package/src/do/rnc.ts +126 -0
  945. package/src/ec/mod.ts +1 -0
  946. package/src/ec/ruc.ts +195 -0
  947. package/src/ee/ik.ts +156 -0
  948. package/src/ee/mod.ts +3 -0
  949. package/src/ee/registrikood.ts +81 -0
  950. package/src/ee/vat.ts +85 -0
  951. package/src/eg/mod.ts +1 -0
  952. package/src/eg/tn.ts +103 -0
  953. package/src/es/cif.ts +105 -0
  954. package/src/es/dni.ts +90 -0
  955. package/src/es/mod.ts +5 -0
  956. package/src/es/nie.ts +102 -0
  957. package/src/es/nss.ts +109 -0
  958. package/src/es/vat.ts +178 -0
  959. package/src/eu/mod.ts +1 -0
  960. package/src/eu/vat.ts +171 -0
  961. package/src/fi/hetu.ts +182 -0
  962. package/src/fi/mod.ts +3 -0
  963. package/src/fi/vat.ts +82 -0
  964. package/src/fi/ytunnus.ts +83 -0
  965. package/src/fr/mod.ts +5 -0
  966. package/src/fr/nif.ts +93 -0
  967. package/src/fr/nir.ts +195 -0
  968. package/src/fr/siren.ts +79 -0
  969. package/src/fr/siret.ts +122 -0
  970. package/src/fr/tva.ts +146 -0
  971. package/src/gb/mod.ts +4 -0
  972. package/src/gb/nino.ts +153 -0
  973. package/src/gb/sedol.ts +137 -0
  974. package/src/gb/utr.ts +81 -0
  975. package/src/gb/vat.ts +158 -0
  976. package/src/ge/mod.ts +1 -0
  977. package/src/ge/pin.ts +71 -0
  978. package/src/gh/mod.ts +1 -0
  979. package/src/gh/tin.ts +100 -0
  980. package/src/gr/amka.ts +104 -0
  981. package/src/gr/mod.ts +2 -0
  982. package/src/gr/vat.ts +96 -0
  983. package/src/gt/mod.ts +1 -0
  984. package/src/gt/nit.ts +116 -0
  985. package/src/hk/hkid.ts +131 -0
  986. package/src/hk/mod.ts +1 -0
  987. package/src/hr/mod.ts +1 -0
  988. package/src/hr/vat.ts +79 -0
  989. package/src/hu/mod.ts +1 -0
  990. package/src/hu/vat.ts +82 -0
  991. package/src/iban.ts +340 -0
  992. package/src/id/mod.ts +1 -0
  993. package/src/id/npwp.ts +187 -0
  994. package/src/ie/mod.ts +2 -0
  995. package/src/ie/pps.ts +105 -0
  996. package/src/ie/vat.ts +138 -0
  997. package/src/il/idnr.ts +87 -0
  998. package/src/il/mod.ts +1 -0
  999. package/src/in/aadhaar.ts +96 -0
  1000. package/src/in/gstin.ts +169 -0
  1001. package/src/in/mod.ts +3 -0
  1002. package/src/in/pan.ts +88 -0
  1003. package/src/index.ts +116 -0
  1004. package/src/iq/mod.ts +1 -0
  1005. package/src/iq/nid.ts +71 -0
  1006. package/src/ir/mod.ts +1 -0
  1007. package/src/ir/nid.ts +120 -0
  1008. package/src/is/kennitala.ts +125 -0
  1009. package/src/is/mod.ts +2 -0
  1010. package/src/is/vsk.ts +63 -0
  1011. package/src/isin.ts +114 -0
  1012. package/src/it/codicefiscale.ts +290 -0
  1013. package/src/it/iva.ts +115 -0
  1014. package/src/it/mod.ts +2 -0
  1015. package/src/jp/cn.ts +91 -0
  1016. package/src/jp/mod.ts +2 -0
  1017. package/src/jp/mynumber.ts +103 -0
  1018. package/src/kr/brn.ts +101 -0
  1019. package/src/kr/mod.ts +2 -0
  1020. package/src/kr/rrn.ts +170 -0
  1021. package/src/kw/civil.ts +144 -0
  1022. package/src/kw/mod.ts +1 -0
  1023. package/src/kz/iin.ts +183 -0
  1024. package/src/kz/mod.ts +1 -0
  1025. package/src/lei.ts +98 -0
  1026. package/src/li/mod.ts +1 -0
  1027. package/src/li/peid.ts +66 -0
  1028. package/src/lk/mod.ts +1 -0
  1029. package/src/lk/nic.ts +210 -0
  1030. package/src/lt/asmens.ts +120 -0
  1031. package/src/lt/mod.ts +2 -0
  1032. package/src/lt/vat.ts +109 -0
  1033. package/src/lu/mod.ts +1 -0
  1034. package/src/lu/vat.ts +80 -0
  1035. package/src/luhn.ts +72 -0
  1036. package/src/lv/mod.ts +1 -0
  1037. package/src/lv/vat.ts +139 -0
  1038. package/src/ma/ice.ts +79 -0
  1039. package/src/ma/mod.ts +1 -0
  1040. package/src/mc/mod.ts +1 -0
  1041. package/src/mc/tva.ts +74 -0
  1042. package/src/md/idno.ts +86 -0
  1043. package/src/md/mod.ts +1 -0
  1044. package/src/me/mod.ts +1 -0
  1045. package/src/me/pib.ts +79 -0
  1046. package/src/mk/edb.ts +91 -0
  1047. package/src/mk/mod.ts +1 -0
  1048. package/src/mt/mod.ts +1 -0
  1049. package/src/mt/vat.ts +88 -0
  1050. package/src/mu/brn.ts +102 -0
  1051. package/src/mu/mod.ts +1 -0
  1052. package/src/mx/clabe.ts +111 -0
  1053. package/src/mx/curp.ts +210 -0
  1054. package/src/mx/mod.ts +3 -0
  1055. package/src/mx/rfc.ts +144 -0
  1056. package/src/my/mod.ts +1 -0
  1057. package/src/my/nric.ts +235 -0
  1058. package/src/ng/mod.ts +1 -0
  1059. package/src/ng/nin.ts +72 -0
  1060. package/src/ni/mod.ts +1 -0
  1061. package/src/ni/ruc.ts +176 -0
  1062. package/src/nl/bsn.ts +87 -0
  1063. package/src/nl/kvk.ts +59 -0
  1064. package/src/nl/mod.ts +3 -0
  1065. package/src/nl/vat.ts +146 -0
  1066. package/src/no/fodselsnummer.ts +192 -0
  1067. package/src/no/mod.ts +3 -0
  1068. package/src/no/mva.ts +73 -0
  1069. package/src/no/orgnr.ts +79 -0
  1070. package/src/nz/ird.ts +128 -0
  1071. package/src/nz/mod.ts +1 -0
  1072. package/src/pa/mod.ts +1 -0
  1073. package/src/pa/ruc.ts +359 -0
  1074. package/src/patterns.ts +252 -0
  1075. package/src/pe/mod.ts +1 -0
  1076. package/src/pe/ruc.ts +121 -0
  1077. package/src/ph/mod.ts +1 -0
  1078. package/src/ph/philid.ts +76 -0
  1079. package/src/pk/cnic.ts +103 -0
  1080. package/src/pk/mod.ts +1 -0
  1081. package/src/pl/mod.ts +3 -0
  1082. package/src/pl/nip.ts +96 -0
  1083. package/src/pl/pesel.ts +153 -0
  1084. package/src/pl/regon.ts +98 -0
  1085. package/src/pt/cc.ts +106 -0
  1086. package/src/pt/mod.ts +2 -0
  1087. package/src/pt/vat.ts +93 -0
  1088. package/src/ro/cnp.ts +171 -0
  1089. package/src/ro/mod.ts +2 -0
  1090. package/src/ro/vat.ts +94 -0
  1091. package/src/rs/mod.ts +1 -0
  1092. package/src/rs/pib.ts +83 -0
  1093. package/src/ru/inn.ts +109 -0
  1094. package/src/ru/mod.ts +1 -0
  1095. package/src/se/mod.ts +3 -0
  1096. package/src/se/orgnr.ts +81 -0
  1097. package/src/se/personnummer.ts +180 -0
  1098. package/src/se/vat.ts +92 -0
  1099. package/src/sg/mod.ts +1 -0
  1100. package/src/sg/uen.ts +267 -0
  1101. package/src/si/emso.ts +152 -0
  1102. package/src/si/mod.ts +2 -0
  1103. package/src/si/vat.ts +108 -0
  1104. package/src/sk/dic.ts +106 -0
  1105. package/src/sk/ico.ts +39 -0
  1106. package/src/sk/mod.ts +3 -0
  1107. package/src/sk/rc.ts +31 -0
  1108. package/src/th/mod.ts +1 -0
  1109. package/src/th/tin.ts +102 -0
  1110. package/src/tr/mod.ts +2 -0
  1111. package/src/tr/tckimlik.ts +111 -0
  1112. package/src/tr/vkn.ts +97 -0
  1113. package/src/tw/mod.ts +1 -0
  1114. package/src/tw/ubn.ts +108 -0
  1115. package/src/types.ts +200 -0
  1116. package/src/ua/edrpou.ts +103 -0
  1117. package/src/ua/mod.ts +1 -0
  1118. package/src/us/ein.ts +257 -0
  1119. package/src/us/itin.ts +126 -0
  1120. package/src/us/mod.ts +4 -0
  1121. package/src/us/rtn.ts +126 -0
  1122. package/src/us/ssn.ts +117 -0
  1123. package/src/uy/mod.ts +1 -0
  1124. package/src/uy/rut.ts +146 -0
  1125. package/src/ve/mod.ts +1 -0
  1126. package/src/ve/rif.ts +140 -0
  1127. package/src/vn/mod.ts +1 -0
  1128. package/src/vn/mst.ts +128 -0
  1129. package/src/za/idnr.ts +157 -0
  1130. package/src/za/mod.ts +1 -0
package/dist/uy/rut.js ADDED
@@ -0,0 +1,105 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits, randomInt } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ import { isdigits } from "../_util/strings.js";
5
+ //#region src/uy/rut.ts
6
+ /**
7
+ * RUT (Registro Único Tributario).
8
+ *
9
+ * Uruguayan tax identification number issued by the
10
+ * DGI (Dirección General Impositiva). The number is
11
+ * 12 digits: 2-digit document type (01-22), 6-digit
12
+ * sequence, fixed "001" suffix, and a check digit
13
+ * computed via weighted sum mod 11 (Python-style
14
+ * modulo of the negated sum).
15
+ *
16
+ * Format: ############ (12 digits compact)
17
+ *
18
+ * @see https://www.agesic.gub.uy/
19
+ */
20
+ const WEIGHTS = [
21
+ 4,
22
+ 3,
23
+ 2,
24
+ 9,
25
+ 8,
26
+ 7,
27
+ 6,
28
+ 5,
29
+ 4,
30
+ 3,
31
+ 2
32
+ ];
33
+ const compact = (value) => {
34
+ let v = clean(value, " -").trim();
35
+ if (v.toUpperCase().startsWith("UY")) v = v.slice(2);
36
+ return v;
37
+ };
38
+ /**
39
+ * Python-style modulo: always returns a non-negative
40
+ * result for a positive divisor.
41
+ */
42
+ const pymod = (a, b) => (a % b + b) % b;
43
+ const calcCheckDigit = (value) => {
44
+ let sum = 0;
45
+ for (let i = 0; i < 11; i++) sum += Number(value[i]) * WEIGHTS[i];
46
+ const result = pymod(-sum, 11);
47
+ if (result === 10) return null;
48
+ return String(result);
49
+ };
50
+ const validate = (value) => {
51
+ const v = compact(value);
52
+ if (v.length !== 12) return err("INVALID_LENGTH", "RUT must be 12 digits");
53
+ if (!isdigits(v)) return err("INVALID_FORMAT", "RUT must contain only digits");
54
+ const docType = Number.parseInt(v.slice(0, 2), 10);
55
+ if (docType < 1 || docType > 22) return err("INVALID_COMPONENT", "RUT document type must be between 01 and 22");
56
+ if (v.slice(2, 8) === "000000") return err("INVALID_COMPONENT", "RUT sequence must not be all zeros");
57
+ if (v.slice(8, 11) !== "001") return err("INVALID_COMPONENT", "RUT branch code must be 001");
58
+ const expected = calcCheckDigit(v);
59
+ if (expected === null || v.at(-1) !== expected) return err("INVALID_CHECKSUM", "RUT check digit does not match");
60
+ return {
61
+ valid: true,
62
+ compact: v
63
+ };
64
+ };
65
+ const format = (value) => {
66
+ const v = compact(value);
67
+ return `${v.slice(0, 2)}-${v.slice(2, 8)}-${v.slice(8, 11)}-${v.slice(11)}`;
68
+ };
69
+ /** Generate a random valid Uruguayan RUT. */
70
+ const generate = () => {
71
+ for (;;) {
72
+ const docType = String(randomInt(1, 22)).padStart(2, "0");
73
+ const seq = randomDigits(6);
74
+ if (seq === "000000") continue;
75
+ const partial = `${docType}${seq}001`;
76
+ const check = calcCheckDigit(partial);
77
+ if (check === null) continue;
78
+ return `${partial}${check}`;
79
+ }
80
+ };
81
+ /**
82
+ * Uruguayan RUT (tax identification number).
83
+ *
84
+ * Examples sourced from python-stdnum test suite.
85
+ */
86
+ const rut = {
87
+ name: "Uruguayan Tax ID",
88
+ localName: "Registro Único Tributario",
89
+ abbreviation: "RUT",
90
+ aliases: ["RUT", "Registro Único Tributario"],
91
+ candidatePattern: "\\d{12}",
92
+ country: "UY",
93
+ entityType: "any",
94
+ lengths: [12],
95
+ examples: ["010100010013", "102000010017"],
96
+ compact,
97
+ format,
98
+ validate,
99
+ sourceUrl: "https://www.agesic.gub.uy/",
100
+ generate
101
+ };
102
+ //#endregion
103
+ export { compact, rut as default, format, generate, validate };
104
+
105
+ //# sourceMappingURL=rut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rut.js","names":[],"sources":["../../src/uy/rut.ts"],"sourcesContent":["/**\n * RUT (Registro Único Tributario).\n *\n * Uruguayan tax identification number issued by the\n * DGI (Dirección General Impositiva). The number is\n * 12 digits: 2-digit document type (01-22), 6-digit\n * sequence, fixed \"001\" suffix, and a check digit\n * computed via weighted sum mod 11 (Python-style\n * modulo of the negated sum).\n *\n * Format: ############ (12 digits compact)\n *\n * @see https://www.agesic.gub.uy/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst WEIGHTS = [4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] as const;\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -\").trim();\n if (v.toUpperCase().startsWith(\"UY\")) {\n v = v.slice(2);\n }\n return v;\n};\n\n/**\n * Python-style modulo: always returns a non-negative\n * result for a positive divisor.\n */\nconst pymod = (a: number, b: number): number =>\n ((a % b) + b) % b;\n\nconst calcCheckDigit = (value: string): string | null => {\n let sum = 0;\n for (let i = 0; i < 11; i++) {\n sum += Number(value[i]) * WEIGHTS[i]!;\n }\n const result = pymod(-sum, 11);\n // A result of 10 means no valid single-digit check\n // digit exists; the DGI does not issue such numbers.\n if (result === 10) return null;\n return String(result);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 12) {\n return err(\"INVALID_LENGTH\", \"RUT must be 12 digits\");\n }\n\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"RUT must contain only digits\",\n );\n }\n\n // First 2 digits: document type (01-22)\n const docType = Number.parseInt(v.slice(0, 2), 10);\n if (docType < 1 || docType > 22) {\n return err(\n \"INVALID_COMPONENT\",\n \"RUT document type must be between 01 and 22\",\n );\n }\n\n // Digits 2-8: sequence (must not be all zeros)\n if (v.slice(2, 8) === \"000000\") {\n return err(\n \"INVALID_COMPONENT\",\n \"RUT sequence must not be all zeros\",\n );\n }\n\n // Digits 8-11: must be \"001\"\n if (v.slice(8, 11) !== \"001\") {\n return err(\n \"INVALID_COMPONENT\",\n \"RUT branch code must be 001\",\n );\n }\n\n const expected = calcCheckDigit(v);\n if (expected === null || v.at(-1) !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"RUT check digit does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v.slice(0, 2)}-${v.slice(2, 8)}-${v.slice(8, 11)}-${v.slice(11)}`;\n};\n\n/** Generate a random valid Uruguayan RUT. */\nconst generate = (): string => {\n for (;;) {\n const docType = String(randomInt(1, 22)).padStart(\n 2,\n \"0\",\n );\n const seq = randomDigits(6);\n if (seq === \"000000\") continue;\n const partial = `${docType}${seq}001`;\n const check = calcCheckDigit(partial);\n if (check === null) continue;\n return `${partial}${check}`;\n }\n};\n\n/**\n * Uruguayan RUT (tax identification number).\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst rut: Validator = {\n name: \"Uruguayan Tax ID\",\n localName: \"Registro Único Tributario\",\n abbreviation: \"RUT\",\n aliases: [\"RUT\", \"Registro Único Tributario\"] as const,\n candidatePattern: \"\\\\d{12}\",\n country: \"UY\",\n entityType: \"any\",\n lengths: [12] as const,\n examples: [\"010100010013\", \"102000010017\"] as const,\n compact,\n format,\n validate,\n sourceUrl: \"https://www.agesic.gub.uy/\",\n generate,\n};\n\nexport default rut;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAEjD,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,KAAK,CAAC,MAAM;AACjC,KAAI,EAAE,aAAa,CAAC,WAAW,KAAK,CAClC,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO;;;;;;AAOT,MAAM,SAAS,GAAW,OACtB,IAAI,IAAK,KAAK;AAElB,MAAM,kBAAkB,UAAiC;CACvD,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,QAAO,OAAO,MAAM,GAAG,GAAG,QAAQ;CAEpC,MAAM,SAAS,MAAM,CAAC,KAAK,GAAG;AAG9B,KAAI,WAAW,GAAI,QAAO;AAC1B,QAAO,OAAO,OAAO;;AAGvB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,GACf,QAAO,IAAI,kBAAkB,wBAAwB;AAGvD,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;CAIH,MAAM,UAAU,OAAO,SAAS,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG;AAClD,KAAI,UAAU,KAAK,UAAU,GAC3B,QAAO,IACL,qBACA,8CACD;AAIH,KAAI,EAAE,MAAM,GAAG,EAAE,KAAK,SACpB,QAAO,IACL,qBACA,qCACD;AAIH,KAAI,EAAE,MAAM,GAAG,GAAG,KAAK,MACrB,QAAO,IACL,qBACA,8BACD;CAGH,MAAM,WAAW,eAAe,EAAE;AAClC,KAAI,aAAa,QAAQ,EAAE,GAAG,GAAG,KAAK,SACpC,QAAO,IACL,oBACA,iCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;;;AAI3E,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,UAAU,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SACvC,GACA,IACD;EACD,MAAM,MAAM,aAAa,EAAE;AAC3B,MAAI,QAAQ,SAAU;EACtB,MAAM,UAAU,GAAG,UAAU,IAAI;EACjC,MAAM,QAAQ,eAAe,QAAQ;AACrC,MAAI,UAAU,KAAM;AACpB,SAAO,GAAG,UAAU;;;;;;;;AASxB,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,4BAA4B;CAC7C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG;CACb,UAAU,CAAC,gBAAgB,eAAe;CAC1C;CACA;CACA;CACA,WAAW;CACX;CACD"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import rif from "./rif.js";
3
+
4
+ //#region src/ve/mod.d.ts
5
+
6
+ //#endregion
7
+ export { mod_d_exports, rif };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/ve/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import rif from "./rif.js";
3
+ //#region src/ve/mod.ts
4
+ var ve_exports = /* @__PURE__ */ __exportAll({ rif: () => rif });
5
+ //#endregion
6
+ export { rif, ve_exports };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/ve/mod.ts"],"sourcesContent":["export { default as rif } from \"./rif\";\n"],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/ve/rif.d.ts
4
+
5
+ declare const compact: (value: string) => string;
6
+ declare const validate: (value: string) => ValidateResult;
7
+ declare const format: (value: string) => string;
8
+ /** Generate a random valid Venezuelan RIF. */
9
+ declare const generate: () => string;
10
+ /**
11
+ * Venezuelan RIF (tax identification number).
12
+ *
13
+ * Examples sourced from python-stdnum test suite.
14
+ */
15
+ declare const rif: Validator;
16
+ //#endregion
17
+ export { compact, rif as default, format, generate, validate };
18
+ //# sourceMappingURL=rif.d.ts.map
package/dist/ve/rif.js ADDED
@@ -0,0 +1,109 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits, randomInt } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ import { isdigits } from "../_util/strings.js";
5
+ //#region src/ve/rif.ts
6
+ /**
7
+ * RIF (Registro de Información Fiscal).
8
+ *
9
+ * Venezuelan tax identification number issued by the
10
+ * SENIAT. The number consists of 1 letter indicating
11
+ * the entity type (J=juridical, G=government,
12
+ * V=natural/Venezuelan, E=foreign, P=passport)
13
+ * followed by 8 digits and a check digit computed
14
+ * via weighted sum mod 11.
15
+ *
16
+ * Format: X-########-# or X######### (10 chars compact)
17
+ *
18
+ * @see https://en.wikipedia.org/wiki/Tax_Identification_Number#Venezuela
19
+ */
20
+ /**
21
+ * Map prefix letter to its numeric offset used
22
+ * in the check digit computation.
23
+ */
24
+ const PREFIX_VALUES = {
25
+ V: 4,
26
+ E: 8,
27
+ J: 12,
28
+ P: 16,
29
+ G: 20
30
+ };
31
+ /** Weights applied to the 8-digit body. */
32
+ const WEIGHTS = [
33
+ 3,
34
+ 2,
35
+ 7,
36
+ 6,
37
+ 5,
38
+ 4,
39
+ 3,
40
+ 2
41
+ ];
42
+ /**
43
+ * Lookup table for converting the mod 11 result
44
+ * to the check character.
45
+ */
46
+ const CHECK_LOOKUP = "00987654321";
47
+ const compact = (value) => clean(value, " -.").trim().toUpperCase();
48
+ const calcCheckDigit = (prefix, body) => {
49
+ const pv = PREFIX_VALUES[prefix];
50
+ let sum = 0;
51
+ for (let i = 0; i < 8; i++) sum += Number(body[i]) * WEIGHTS[i];
52
+ return CHECK_LOOKUP[(pv + sum % 11) % 11];
53
+ };
54
+ const validate = (value) => {
55
+ const v = compact(value);
56
+ if (v.length !== 10) return err("INVALID_LENGTH", "RIF must be 10 characters");
57
+ const prefix = v[0];
58
+ if (!(prefix in PREFIX_VALUES)) return err("INVALID_COMPONENT", "RIF must start with V, E, J, P, or G");
59
+ const body = v.slice(1, 9);
60
+ const check = v.slice(9);
61
+ if (!isdigits(v.slice(1))) return err("INVALID_FORMAT", "RIF body must contain only digits");
62
+ if (check !== calcCheckDigit(prefix, body)) return err("INVALID_CHECKSUM", "RIF check digit does not match");
63
+ return {
64
+ valid: true,
65
+ compact: v
66
+ };
67
+ };
68
+ const format = (value) => {
69
+ const v = compact(value);
70
+ return `${v[0]}-${v.slice(1, 9)}-${v.slice(9)}`;
71
+ };
72
+ /** Generate a random valid Venezuelan RIF. */
73
+ const generate = () => {
74
+ const types = [
75
+ "V",
76
+ "E",
77
+ "J",
78
+ "P",
79
+ "G"
80
+ ];
81
+ const prefix = types[randomInt(0, types.length - 1)];
82
+ const body = randomDigits(8);
83
+ return prefix + body + String(calcCheckDigit(prefix, body));
84
+ };
85
+ /**
86
+ * Venezuelan RIF (tax identification number).
87
+ *
88
+ * Examples sourced from python-stdnum test suite.
89
+ */
90
+ const rif = {
91
+ name: "Venezuelan Tax ID",
92
+ localName: "Registro de Información Fiscal",
93
+ abbreviation: "RIF",
94
+ aliases: ["RIF", "Registro de Información Fiscal"],
95
+ candidatePattern: "[VEJPG]-?\\d{8}-?\\d",
96
+ country: "VE",
97
+ entityType: "any",
98
+ lengths: [10],
99
+ examples: ["V309876543", "J309876546"],
100
+ compact,
101
+ format,
102
+ validate,
103
+ sourceUrl: "https://en.wikipedia.org/wiki/Tax_Identification_Number#Venezuela",
104
+ generate
105
+ };
106
+ //#endregion
107
+ export { compact, rif as default, format, generate, validate };
108
+
109
+ //# sourceMappingURL=rif.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rif.js","names":[],"sources":["../../src/ve/rif.ts"],"sourcesContent":["/**\n * RIF (Registro de Información Fiscal).\n *\n * Venezuelan tax identification number issued by the\n * SENIAT. The number consists of 1 letter indicating\n * the entity type (J=juridical, G=government,\n * V=natural/Venezuelan, E=foreign, P=passport)\n * followed by 8 digits and a check digit computed\n * via weighted sum mod 11.\n *\n * Format: X-########-# or X######### (10 chars compact)\n *\n * @see https://en.wikipedia.org/wiki/Tax_Identification_Number#Venezuela\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\n/**\n * Map prefix letter to its numeric offset used\n * in the check digit computation.\n */\nconst PREFIX_VALUES: Record<string, number> = {\n V: 4,\n E: 8,\n J: 12,\n P: 16,\n G: 20,\n};\n\n/** Weights applied to the 8-digit body. */\nconst WEIGHTS = [3, 2, 7, 6, 5, 4, 3, 2] as const;\n\n/**\n * Lookup table for converting the mod 11 result\n * to the check character.\n */\nconst CHECK_LOOKUP = \"00987654321\";\n\nconst compact = (value: string): string =>\n clean(value, \" -.\").trim().toUpperCase();\n\nconst calcCheckDigit = (\n prefix: string,\n body: string,\n): string => {\n const pv = PREFIX_VALUES[prefix]!;\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n sum += Number(body[i]) * WEIGHTS[i]!;\n }\n const digit = (pv + (sum % 11)) % 11;\n return CHECK_LOOKUP[digit]!;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 10) {\n return err(\n \"INVALID_LENGTH\",\n \"RIF must be 10 characters\",\n );\n }\n\n const prefix = v[0]!;\n if (!(prefix in PREFIX_VALUES)) {\n return err(\n \"INVALID_COMPONENT\",\n \"RIF must start with V, E, J, P, or G\",\n );\n }\n\n const body = v.slice(1, 9);\n const check = v.slice(9);\n if (!isdigits(v.slice(1))) {\n return err(\n \"INVALID_FORMAT\",\n \"RIF body must contain only digits\",\n );\n }\n\n const expected = calcCheckDigit(prefix, body);\n if (check !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"RIF check digit does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n return `${v[0]}-${v.slice(1, 9)}-${v.slice(9)}`;\n};\n\n/** Generate a random valid Venezuelan RIF. */\nconst generate = (): string => {\n const types = [\"V\", \"E\", \"J\", \"P\", \"G\"] as const;\n const prefix = types[randomInt(0, types.length - 1)]!;\n const body = randomDigits(8);\n return (\n prefix + body + String(calcCheckDigit(prefix, body))\n );\n};\n\n/**\n * Venezuelan RIF (tax identification number).\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst rif: Validator = {\n name: \"Venezuelan Tax ID\",\n localName: \"Registro de Información Fiscal\",\n abbreviation: \"RIF\",\n aliases: [\n \"RIF\",\n \"Registro de Información Fiscal\",\n ] as const,\n candidatePattern: \"[VEJPG]-?\\\\d{8}-?\\\\d\",\n country: \"VE\",\n entityType: \"any\",\n lengths: [10] as const,\n examples: [\"V309876543\", \"J309876546\"] as const,\n compact,\n format,\n validate,\n sourceUrl:\n \"https://en.wikipedia.org/wiki/Tax_Identification_Number#Venezuela\",\n generate,\n};\n\nexport default rif;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,gBAAwC;CAC5C,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACJ;;AAGD,MAAM,UAAU;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;;;;;AAMxC,MAAM,eAAe;AAErB,MAAM,WAAW,UACf,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa;AAE1C,MAAM,kBACJ,QACA,SACW;CACX,MAAM,KAAK,cAAc;CACzB,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,QAAO,OAAO,KAAK,GAAG,GAAG,QAAQ;AAGnC,QAAO,cADQ,KAAM,MAAM,MAAO;;AAIpC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,4BACD;CAGH,MAAM,SAAS,EAAE;AACjB,KAAI,EAAE,UAAU,eACd,QAAO,IACL,qBACA,uCACD;CAGH,MAAM,OAAO,EAAE,MAAM,GAAG,EAAE;CAC1B,MAAM,QAAQ,EAAE,MAAM,EAAE;AACxB,KAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CACvB,QAAO,IACL,kBACA,oCACD;AAIH,KAAI,UADa,eAAe,QAAQ,KAAK,CAE3C,QAAO,IACL,oBACA,iCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,QAAO,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;AAI/C,MAAM,iBAAyB;CAC7B,MAAM,QAAQ;EAAC;EAAK;EAAK;EAAK;EAAK;EAAI;CACvC,MAAM,SAAS,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE;CACnD,MAAM,OAAO,aAAa,EAAE;AAC5B,QACE,SAAS,OAAO,OAAO,eAAe,QAAQ,KAAK,CAAC;;;;;;;AASxD,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,OACA,iCACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG;CACb,UAAU,CAAC,cAAc,aAAa;CACtC;CACA;CACA;CACA,WACE;CACF;CACD"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import mst from "./mst.js";
3
+
4
+ //#region src/vn/mod.d.ts
5
+
6
+ //#endregion
7
+ export { mod_d_exports, mst };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/vn/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import mst from "./mst.js";
3
+ //#region src/vn/mod.ts
4
+ var vn_exports = /* @__PURE__ */ __exportAll({ mst: () => mst });
5
+ //#endregion
6
+ export { mst, vn_exports };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/vn/mod.ts"],"sourcesContent":["export { default as mst } from \"./mst\";\n"],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/vn/mst.d.ts
4
+
5
+ declare const compact: (value: string) => string;
6
+ declare const validate: (value: string) => ValidateResult;
7
+ declare const format: (value: string) => string;
8
+ /** Generate a random valid Vietnamese MST. */
9
+ declare const generate: () => string;
10
+ /** Vietnamese Tax Number. */
11
+ declare const mst: Validator;
12
+ //#endregion
13
+ export { compact, mst as default, format, generate, validate };
14
+ //# sourceMappingURL=mst.d.ts.map
package/dist/vn/mst.js ADDED
@@ -0,0 +1,82 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits, randomInt } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ import { isdigits } from "../_util/strings.js";
5
+ //#region src/vn/mst.ts
6
+ /**
7
+ * MST (Mã số thuế, Vietnam tax number).
8
+ *
9
+ * 10 or 13 digits. The first two digits encode the province
10
+ * where the business was registered. Digits 3-9 are a
11
+ * sequential number (0000001-9999999). Digit 10 is a
12
+ * weighted mod-11 check digit. An optional 3-digit branch
13
+ * suffix (001-999) may follow, separated by a dash.
14
+ *
15
+ * @see https://vi.wikipedia.org/wiki/Thuế_Việt_Nam#Mã_số_thuế_(MST)_của_doanh_nghiệp
16
+ * @see https://easyinvoice.vn/ma-so-thue/
17
+ */
18
+ const WEIGHTS = [
19
+ 31,
20
+ 29,
21
+ 23,
22
+ 19,
23
+ 17,
24
+ 13,
25
+ 7,
26
+ 5,
27
+ 3
28
+ ];
29
+ const calcCheckDigit = (number) => {
30
+ let total = 0;
31
+ for (let i = 0; i < 9; i++) total += (WEIGHTS[i] ?? 0) * Number(number.charAt(i));
32
+ const remainder = 10 - total % 11;
33
+ return String(remainder >= 10 ? remainder - 10 : remainder);
34
+ };
35
+ const compact = (value) => clean(value, " -.");
36
+ const validate = (value) => {
37
+ const v = compact(value);
38
+ if (v.length !== 10 && v.length !== 13) return err("INVALID_LENGTH", "MST must be 10 or 13 digits");
39
+ if (!isdigits(v)) return err("INVALID_FORMAT", "MST must contain only digits");
40
+ if (v.slice(2, 9) === "0000000") return err("INVALID_COMPONENT", "MST sequential part must not be 0000000");
41
+ if (v.length === 13 && v.slice(10) === "000") return err("INVALID_COMPONENT", "MST branch suffix must not be 000");
42
+ if (v[9] !== calcCheckDigit(v)) return err("INVALID_CHECKSUM", "MST check digit does not match");
43
+ return {
44
+ valid: true,
45
+ compact: v
46
+ };
47
+ };
48
+ const format = (value) => {
49
+ const v = compact(value);
50
+ if (v.length === 13) return `${v.slice(0, 10)}-${v.slice(10)}`;
51
+ return v;
52
+ };
53
+ /** Generate a random valid Vietnamese MST. */
54
+ const generate = () => {
55
+ for (;;) {
56
+ const payload = String(randomInt(1, 99)).padStart(2, "0") + randomDigits(7);
57
+ const c = payload + calcCheckDigit(payload);
58
+ if (validate(c).valid) return c;
59
+ }
60
+ };
61
+ /** Vietnamese Tax Number. */
62
+ const mst = {
63
+ name: "Vietnamese Tax Number",
64
+ localName: "Mã số thuế",
65
+ abbreviation: "MST",
66
+ aliases: ["MST", "mã số thuế"],
67
+ candidatePattern: "\\d{10}(-\\d{3})?",
68
+ country: "VN",
69
+ entityType: "company",
70
+ description: "10- or 13-digit tax identifier for enterprises",
71
+ sourceUrl: "https://vi.wikipedia.org/wiki/Thu%E1%BA%BF_Vi%E1%BB%87t_Nam#M%C3%A3_s%E1%BB%91_thu%E1%BA%BF_(MST)_c%E1%BB%A7a_doanh_nghi%E1%BB%87p",
72
+ lengths: [10, 13],
73
+ examples: ["0100233488", "0314409058002"],
74
+ compact,
75
+ format,
76
+ validate,
77
+ generate
78
+ };
79
+ //#endregion
80
+ export { compact, mst as default, format, generate, validate };
81
+
82
+ //# sourceMappingURL=mst.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mst.js","names":[],"sources":["../../src/vn/mst.ts"],"sourcesContent":["/**\n * MST (Mã số thuế, Vietnam tax number).\n *\n * 10 or 13 digits. The first two digits encode the province\n * where the business was registered. Digits 3-9 are a\n * sequential number (0000001-9999999). Digit 10 is a\n * weighted mod-11 check digit. An optional 3-digit branch\n * suffix (001-999) may follow, separated by a dash.\n *\n * @see https://vi.wikipedia.org/wiki/Thuế_Việt_Nam#Mã_số_thuế_(MST)_của_doanh_nghiệp\n * @see https://easyinvoice.vn/ma-so-thue/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst WEIGHTS = [31, 29, 23, 19, 17, 13, 7, 5, 3] as const;\n\nconst calcCheckDigit = (number: string): string => {\n let total = 0;\n for (let i = 0; i < 9; i++) {\n total += (WEIGHTS[i] ?? 0) * Number(number.charAt(i));\n }\n const remainder = 10 - (total % 11);\n // When remainder is 10, the sequential part is\n // never issued by GDT. Returning \"0\" keeps the\n // function correct as a digit calculator (mod 10\n // wrap) while still rejecting these numbers since\n // no real MST will have this combination.\n return String(\n remainder >= 10 ? remainder - 10 : remainder,\n );\n};\n\nconst compact = (value: string): string =>\n clean(value, \" -.\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 10 && v.length !== 13) {\n return err(\n \"INVALID_LENGTH\",\n \"MST must be 10 or 13 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"MST must contain only digits\",\n );\n }\n\n // Sequential part (digits 3-9) must not be all zeros\n if (v.slice(2, 9) === \"0000000\") {\n return err(\n \"INVALID_COMPONENT\",\n \"MST sequential part must not be 0000000\",\n );\n }\n\n // Branch suffix (last 3 digits) must not be 000\n if (v.length === 13 && v.slice(10) === \"000\") {\n return err(\n \"INVALID_COMPONENT\",\n \"MST branch suffix must not be 000\",\n );\n }\n\n // Check digit (position 10, index 9)\n if (v[9] !== calcCheckDigit(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"MST check digit does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 13) {\n return `${v.slice(0, 10)}-${v.slice(10)}`;\n }\n return v;\n};\n\n/** Generate a random valid Vietnamese MST. */\nconst generate = (): string => {\n for (;;) {\n const province = String(randomInt(1, 99)).padStart(\n 2,\n \"0\",\n );\n const payload = province + randomDigits(7);\n const c = payload + calcCheckDigit(payload);\n if (validate(c).valid) return c;\n }\n};\n\n/** Vietnamese Tax Number. */\nconst mst: Validator = {\n name: \"Vietnamese Tax Number\",\n localName: \"Mã số thuế\",\n abbreviation: \"MST\",\n aliases: [\"MST\", \"mã số thuế\"] as const,\n candidatePattern: \"\\\\d{10}(-\\\\d{3})?\",\n country: \"VN\",\n entityType: \"company\",\n description:\n \"10- or 13-digit tax identifier for enterprises\",\n sourceUrl:\n \"https://vi.wikipedia.org/wiki/Thu%E1%BA%BF_Vi%E1%BB%87t_Nam#M%C3%A3_s%E1%BB%91_thu%E1%BA%BF_(MST)_c%E1%BB%A7a_doanh_nghi%E1%BB%87p\",\n lengths: [10, 13] as const,\n examples: [\"0100233488\", \"0314409058002\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default mst;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,MAAM,UAAU;CAAC;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAE;AAEjD,MAAM,kBAAkB,WAA2B;CACjD,IAAI,QAAQ;AACZ,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,WAAU,QAAQ,MAAM,KAAK,OAAO,OAAO,OAAO,EAAE,CAAC;CAEvD,MAAM,YAAY,KAAM,QAAQ;AAMhC,QAAO,OACL,aAAa,KAAK,YAAY,KAAK,UACpC;;AAGH,MAAM,WAAW,UACf,MAAM,OAAO,MAAM;AAErB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,MAAM,EAAE,WAAW,GAClC,QAAO,IACL,kBACA,8BACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;AAIH,KAAI,EAAE,MAAM,GAAG,EAAE,KAAK,UACpB,QAAO,IACL,qBACA,0CACD;AAIH,KAAI,EAAE,WAAW,MAAM,EAAE,MAAM,GAAG,KAAK,MACrC,QAAO,IACL,qBACA,oCACD;AAIH,KAAI,EAAE,OAAO,eAAe,EAAE,CAC5B,QAAO,IACL,oBACA,iCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;AAEzC,QAAO;;;AAIT,MAAM,iBAAyB;AAC7B,UAAS;EAKP,MAAM,UAJW,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SACxC,GACA,IACD,GAC0B,aAAa,EAAE;EAC1C,MAAM,IAAI,UAAU,eAAe,QAAQ;AAC3C,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,aAAa;CAC9B,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,aACE;CACF,WACE;CACF,SAAS,CAAC,IAAI,GAAG;CACjB,UAAU,CAAC,cAAc,gBAAgB;CACzC;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,19 @@
1
+ import { ParsedPersonId, ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/za/idnr.d.ts
4
+
5
+ declare const compact: (value: string) => string;
6
+ declare const validate: (value: string) => ValidateResult;
7
+ declare const format: (value: string) => string;
8
+ /**
9
+ * Extract birth date and gender from a South African
10
+ * ID number. Returns null if the value is not valid.
11
+ */
12
+ declare const parse: (value: string) => ParsedPersonId | null;
13
+ /** Generate a random valid South African ID. */
14
+ declare const generate: () => string;
15
+ /** South African Identity Number. */
16
+ declare const idnr: Validator;
17
+ //#endregion
18
+ export { compact, idnr as default, format, generate, parse, validate };
19
+ //# sourceMappingURL=idnr.d.ts.map
@@ -0,0 +1,110 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits, randomInt } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ import { luhnChecksum, luhnValidate } from "../_checksums/luhn.js";
5
+ import { isdigits } from "../_util/strings.js";
6
+ import { isValidDate } from "../_util/date.js";
7
+ //#region src/za/idnr.ts
8
+ /**
9
+ * South African Identity Number.
10
+ *
11
+ * 13-digit number encoding date of birth, gender,
12
+ * citizenship, and a Luhn check digit.
13
+ * Format: YYMMDD SSSS C A Z
14
+ * - YYMMDD: date of birth
15
+ * - SSSS: sequence (0000-4999 female, 5000-9999 male)
16
+ * - C: citizenship (0 = citizen, 1 = permanent resident)
17
+ * - A: was used for race (now always 8 or 9)
18
+ * - Z: Luhn check digit
19
+ *
20
+ * @see https://en.wikipedia.org/wiki/South_African_identity_document
21
+ */
22
+ const compact = (value) => clean(value, " ");
23
+ /**
24
+ * Resolve the birth date from the 2-digit year.
25
+ * Years after the current year are assumed to be
26
+ * in the previous century.
27
+ */
28
+ const resolveBirthDate = (v) => {
29
+ const today = /* @__PURE__ */ new Date();
30
+ let year = Math.floor(today.getFullYear() / 100) * 100 + Number(v.slice(0, 2));
31
+ const month = Number(v.slice(2, 4));
32
+ const day = Number(v.slice(4, 6));
33
+ if (year > today.getFullYear()) year -= 100;
34
+ if (!isValidDate(year, month, day)) return null;
35
+ return {
36
+ year,
37
+ month,
38
+ day
39
+ };
40
+ };
41
+ const validate = (value) => {
42
+ const v = compact(value);
43
+ if (v.length !== 13) return err("INVALID_LENGTH", "SA ID must be exactly 13 digits");
44
+ if (!isdigits(v)) return err("INVALID_FORMAT", "SA ID must contain only digits");
45
+ if (resolveBirthDate(v) === null) return err("INVALID_COMPONENT", "SA ID contains an invalid date of birth");
46
+ const citizenship = v[10];
47
+ if (citizenship !== "0" && citizenship !== "1") return err("INVALID_COMPONENT", "SA ID citizenship digit must be 0 or 1");
48
+ if (!luhnValidate(v)) return err("INVALID_CHECKSUM", "SA ID Luhn check digit mismatch");
49
+ return {
50
+ valid: true,
51
+ compact: v
52
+ };
53
+ };
54
+ const format = (value) => {
55
+ const v = compact(value);
56
+ if (v.length === 13) return `${v.slice(0, 6)} ${v.slice(6, 10)} ${v.slice(10, 12)} ${v.slice(12)}`;
57
+ return v;
58
+ };
59
+ /**
60
+ * Extract birth date and gender from a South African
61
+ * ID number. Returns null if the value is not valid.
62
+ */
63
+ const parse = (value) => {
64
+ const result = validate(value);
65
+ if (!result.valid) return null;
66
+ const v = result.compact;
67
+ const bd = resolveBirthDate(v);
68
+ if (bd === null) return null;
69
+ const sequence = Number(v.slice(6, 10));
70
+ return {
71
+ birthDate: new Date(bd.year, bd.month - 1, bd.day),
72
+ gender: sequence < 5e3 ? "female" : "male"
73
+ };
74
+ };
75
+ /** Generate a random valid South African ID. */
76
+ const generate = () => {
77
+ for (;;) {
78
+ const yy = String(randomInt(50, 99)).padStart(2, "0");
79
+ const mm = String(randomInt(1, 12)).padStart(2, "0");
80
+ const dd = String(randomInt(1, 28)).padStart(2, "0");
81
+ const serial = randomDigits(4);
82
+ const citizen = String(randomInt(0, 1));
83
+ const payload = yy + mm + dd + serial + citizen + "8";
84
+ const cs = luhnChecksum(payload + "0");
85
+ const c = payload + String((10 - cs) % 10);
86
+ if (validate(c).valid) return c;
87
+ }
88
+ };
89
+ /** South African Identity Number. */
90
+ const idnr = {
91
+ name: "South African Identity Number",
92
+ localName: "South African Identity Number",
93
+ abbreviation: "SA ID",
94
+ aliases: ["ID number", "RSA ID"],
95
+ candidatePattern: "\\d{13}",
96
+ country: "ZA",
97
+ entityType: "person",
98
+ compact,
99
+ format,
100
+ validate,
101
+ description: "South African personal identification number",
102
+ sourceUrl: "https://en.wikipedia.org/wiki/South_African_identity_document",
103
+ lengths: [13],
104
+ examples: ["7503305044089", "8001015009087"],
105
+ generate
106
+ };
107
+ //#endregion
108
+ export { compact, idnr as default, format, generate, parse, validate };
109
+
110
+ //# sourceMappingURL=idnr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idnr.js","names":[],"sources":["../../src/za/idnr.ts"],"sourcesContent":["/**\n * South African Identity Number.\n *\n * 13-digit number encoding date of birth, gender,\n * citizenship, and a Luhn check digit.\n * Format: YYMMDD SSSS C A Z\n * - YYMMDD: date of birth\n * - SSSS: sequence (0000-4999 female, 5000-9999 male)\n * - C: citizenship (0 = citizen, 1 = permanent resident)\n * - A: was used for race (now always 8 or 9)\n * - Z: Luhn check digit\n *\n * @see https://en.wikipedia.org/wiki/South_African_identity_document\n */\n\nimport {\n luhnValidate,\n luhnChecksum,\n} from \"#checksums/luhn\";\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n Validator,\n} from \"../types\";\n\nconst compact = (value: string): string =>\n clean(value, \" \");\n\n/**\n * Resolve the birth date from the 2-digit year.\n * Years after the current year are assumed to be\n * in the previous century.\n */\nconst resolveBirthDate = (\n v: string,\n): { year: number; month: number; day: number } | null => {\n const today = new Date();\n const century = Math.floor(today.getFullYear() / 100);\n let year = century * 100 + Number(v.slice(0, 2));\n const month = Number(v.slice(2, 4));\n const day = Number(v.slice(4, 6));\n if (year > today.getFullYear()) {\n year -= 100;\n }\n if (!isValidDate(year, month, day)) return null;\n return { year, month, day };\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 13) {\n return err(\n \"INVALID_LENGTH\",\n \"SA ID must be exactly 13 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"SA ID must contain only digits\",\n );\n }\n if (resolveBirthDate(v) === null) {\n return err(\n \"INVALID_COMPONENT\",\n \"SA ID contains an invalid date of birth\",\n );\n }\n const citizenship = v[10];\n if (citizenship !== \"0\" && citizenship !== \"1\") {\n return err(\n \"INVALID_COMPONENT\",\n \"SA ID citizenship digit must be 0 or 1\",\n );\n }\n if (!luhnValidate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"SA ID Luhn check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 13) {\n return `${v.slice(0, 6)} ${v.slice(6, 10)} ${v.slice(10, 12)} ${v.slice(12)}`;\n }\n return v;\n};\n\n/**\n * Extract birth date and gender from a South African\n * ID number. Returns null if the value is not valid.\n */\nconst parse = (value: string): ParsedPersonId | null => {\n const result = validate(value);\n if (!result.valid) return null;\n\n const v = result.compact;\n const bd = resolveBirthDate(v);\n if (bd === null) return null;\n\n const sequence = Number(v.slice(6, 10));\n\n return {\n birthDate: new Date(bd.year, bd.month - 1, bd.day),\n gender: sequence < 5000 ? \"female\" : \"male\",\n };\n};\n\n/** Generate a random valid South African ID. */\nconst generate = (): string => {\n for (;;) {\n const yy = String(randomInt(50, 99)).padStart(2, \"0\");\n const mm = String(randomInt(1, 12)).padStart(2, \"0\");\n const dd = String(randomInt(1, 28)).padStart(2, \"0\");\n const serial = randomDigits(4);\n const citizen = String(randomInt(0, 1));\n const payload = yy + mm + dd + serial + citizen + \"8\";\n const cs = luhnChecksum(payload + \"0\");\n const c = payload + String((10 - cs) % 10);\n if (validate(c).valid) return c;\n }\n};\n\n/** South African Identity Number. */\nconst idnr: Validator = {\n name: \"South African Identity Number\",\n localName: \"South African Identity Number\",\n abbreviation: \"SA ID\",\n aliases: [\"ID number\", \"RSA ID\"] as const,\n candidatePattern: \"\\\\d{13}\",\n country: \"ZA\",\n entityType: \"person\",\n compact,\n format,\n validate,\n description:\n \"South African personal identification number\",\n sourceUrl:\n \"https://en.wikipedia.org/wiki/\" +\n \"South_African_identity_document\",\n lengths: [13] as const,\n examples: [\"7503305044089\", \"8001015009087\"] as const,\n generate,\n};\n\nexport default idnr;\nexport { compact, format, parse, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BA,MAAM,WAAW,UACf,MAAM,OAAO,IAAI;;;;;;AAOnB,MAAM,oBACJ,MACwD;CACxD,MAAM,wBAAQ,IAAI,MAAM;CAExB,IAAI,OADY,KAAK,MAAM,MAAM,aAAa,GAAG,IAAI,GAChC,MAAM,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChD,MAAM,QAAQ,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CACnC,MAAM,MAAM,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AACjC,KAAI,OAAO,MAAM,aAAa,CAC5B,SAAQ;AAEV,KAAI,CAAC,YAAY,MAAM,OAAO,IAAI,CAAE,QAAO;AAC3C,QAAO;EAAE;EAAM;EAAO;EAAK;;AAG7B,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,kCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,iCACD;AAEH,KAAI,iBAAiB,EAAE,KAAK,KAC1B,QAAO,IACL,qBACA,0CACD;CAEH,MAAM,cAAc,EAAE;AACtB,KAAI,gBAAgB,OAAO,gBAAgB,IACzC,QAAO,IACL,qBACA,yCACD;AAEH,KAAI,CAAC,aAAa,EAAE,CAClB,QAAO,IACL,oBACA,kCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;AAE7E,QAAO;;;;;;AAOT,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,MAAM;AAC9B,KAAI,CAAC,OAAO,MAAO,QAAO;CAE1B,MAAM,IAAI,OAAO;CACjB,MAAM,KAAK,iBAAiB,EAAE;AAC9B,KAAI,OAAO,KAAM,QAAO;CAExB,MAAM,WAAW,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;AAEvC,QAAO;EACL,WAAW,IAAI,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,IAAI;EAClD,QAAQ,WAAW,MAAO,WAAW;EACtC;;;AAIH,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,KAAK,OAAO,UAAU,IAAI,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACrD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,KAAK,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;EACpD,MAAM,SAAS,aAAa,EAAE;EAC9B,MAAM,UAAU,OAAO,UAAU,GAAG,EAAE,CAAC;EACvC,MAAM,UAAU,KAAK,KAAK,KAAK,SAAS,UAAU;EAClD,MAAM,KAAK,aAAa,UAAU,IAAI;EACtC,MAAM,IAAI,UAAU,QAAQ,KAAK,MAAM,GAAG;AAC1C,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;;;AAKlC,MAAM,OAAkB;CACtB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,aAAa,SAAS;CAChC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ;CACA;CACA;CACA,aACE;CACF,WACE;CAEF,SAAS,CAAC,GAAG;CACb,UAAU,CAAC,iBAAiB,gBAAgB;CAC5C;CACD"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import idnr from "./idnr.js";
3
+
4
+ //#region src/za/mod.d.ts
5
+
6
+ //#endregion
7
+ export { idnr, mod_d_exports };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/za/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import idnr from "./idnr.js";
3
+ //#region src/za/mod.ts
4
+ var za_exports = /* @__PURE__ */ __exportAll({ idnr: () => idnr });
5
+ //#endregion
6
+ export { idnr, za_exports };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/za/mod.ts"],"sourcesContent":["export { default as idnr } from \"./idnr\";\n"],"mappings":""}