@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/cl/rut.js ADDED
@@ -0,0 +1,95 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ //#region src/cl/rut.ts
5
+ /**
6
+ * RUT (Rol Único Tributario).
7
+ *
8
+ * Chilean tax identification number assigned by the SII
9
+ * (Servicio de Impuestos Internos). The number consists
10
+ * of 7 or 8 digits followed by a check digit (0-9 or K),
11
+ * computed using a modulo 11 algorithm with weights
12
+ * [2, 3, 4, 5, 6, 7] cycling right-to-left.
13
+ *
14
+ * Format: XX.XXX.XXX-C (7-8 digits + check digit).
15
+ *
16
+ * @see https://www.sii.cl/
17
+ * @see https://en.wikipedia.org/wiki/Rol_%C3%9Anico_Tributario
18
+ */
19
+ const RUT_RE = /^\d{7,8}[\dK]$/;
20
+ const compact = (value) => {
21
+ let v = clean(value, " -.").trim().toUpperCase();
22
+ if (v.startsWith("CL")) v = v.slice(2);
23
+ return v;
24
+ };
25
+ /**
26
+ * Compute the RUT check digit using mod 11 with
27
+ * weights [2, 3, 4, 5, 6, 7] cycling right-to-left.
28
+ *
29
+ * remainder = 11 - (weighted sum % 11)
30
+ * 11 -> "0", 10 -> "K", else the digit as string.
31
+ */
32
+ const calcCheckDigit = (body) => {
33
+ const weights = [
34
+ 2,
35
+ 3,
36
+ 4,
37
+ 5,
38
+ 6,
39
+ 7
40
+ ];
41
+ let sum = 0;
42
+ for (let i = body.length - 1, w = 0; i >= 0; i--, w++) sum += Number(body[i]) * weights[w % 6];
43
+ const remainder = 11 - sum % 11;
44
+ if (remainder === 11) return "0";
45
+ if (remainder === 10) return "K";
46
+ return String(remainder);
47
+ };
48
+ const validate = (value) => {
49
+ const v = compact(value);
50
+ if (v.length !== 8 && v.length !== 9) return err("INVALID_LENGTH", "RUT must be 8 or 9 characters");
51
+ if (!RUT_RE.test(v)) return err("INVALID_FORMAT", "RUT must contain only digits and optionally K");
52
+ const expected = calcCheckDigit(v.slice(0, -1));
53
+ if (v.at(-1) !== expected) return err("INVALID_CHECKSUM", "RUT check digit does not match");
54
+ return {
55
+ valid: true,
56
+ compact: v
57
+ };
58
+ };
59
+ const format = (value) => {
60
+ const v = compact(value);
61
+ const check = v.at(-1);
62
+ const body = v.slice(0, -1);
63
+ return `${body.slice(0, -6)}.${body.slice(-6, -3)}.${body.slice(-3)}-${check}`;
64
+ };
65
+ /** Generate a random valid Chilean RUT. */
66
+ const generate = () => {
67
+ const body = randomDigits(8);
68
+ return body + calcCheckDigit(body);
69
+ };
70
+ /**
71
+ * Chilean RUT (tax identification number).
72
+ *
73
+ * Examples sourced from python-stdnum test suite
74
+ * (cl.rut module).
75
+ */
76
+ const rut = {
77
+ name: "Chilean Tax ID",
78
+ localName: "Rol Único Tributario",
79
+ abbreviation: "RUT",
80
+ aliases: ["RUT", "Rol Único Tributario"],
81
+ candidatePattern: "\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[\\dkK]",
82
+ country: "CL",
83
+ entityType: "any",
84
+ compact,
85
+ format,
86
+ validate,
87
+ sourceUrl: "https://www.sii.cl/",
88
+ lengths: [8, 9],
89
+ examples: ["760864285", "125319092"],
90
+ generate
91
+ };
92
+ //#endregion
93
+ export { compact, rut as default, format, generate, validate };
94
+
95
+ //# sourceMappingURL=rut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rut.js","names":[],"sources":["../../src/cl/rut.ts"],"sourcesContent":["/**\n * RUT (Rol Único Tributario).\n *\n * Chilean tax identification number assigned by the SII\n * (Servicio de Impuestos Internos). The number consists\n * of 7 or 8 digits followed by a check digit (0-9 or K),\n * computed using a modulo 11 algorithm with weights\n * [2, 3, 4, 5, 6, 7] cycling right-to-left.\n *\n * Format: XX.XXX.XXX-C (7-8 digits + check digit).\n *\n * @see https://www.sii.cl/\n * @see https://en.wikipedia.org/wiki/Rol_%C3%9Anico_Tributario\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst RUT_RE = /^\\d{7,8}[\\dK]$/;\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -.\").trim().toUpperCase();\n if (v.startsWith(\"CL\")) v = v.slice(2);\n return v;\n};\n\n/**\n * Compute the RUT check digit using mod 11 with\n * weights [2, 3, 4, 5, 6, 7] cycling right-to-left.\n *\n * remainder = 11 - (weighted sum % 11)\n * 11 -> \"0\", 10 -> \"K\", else the digit as string.\n */\nconst calcCheckDigit = (body: string): string => {\n const weights = [2, 3, 4, 5, 6, 7];\n let sum = 0;\n for (let i = body.length - 1, w = 0; i >= 0; i--, w++) {\n sum += Number(body[i]) * weights[w % 6]!;\n }\n const remainder = 11 - (sum % 11);\n if (remainder === 11) return \"0\";\n if (remainder === 10) return \"K\";\n return String(remainder);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 8 && v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"RUT must be 8 or 9 characters\",\n );\n }\n\n if (!RUT_RE.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"RUT must contain only digits and optionally K\",\n );\n }\n\n const body = v.slice(0, -1);\n const expected = calcCheckDigit(body);\n if (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 const check = v.at(-1);\n const body = v.slice(0, -1);\n return (\n `${body.slice(0, -6)}.${body.slice(-6, -3)}` +\n `.${body.slice(-3)}-${check}`\n );\n};\n\n/** Generate a random valid Chilean RUT. */\nconst generate = (): string => {\n const body = randomDigits(8);\n return body + calcCheckDigit(body);\n};\n\n/**\n * Chilean RUT (tax identification number).\n *\n * Examples sourced from python-stdnum test suite\n * (cl.rut module).\n */\nconst rut: Validator = {\n name: \"Chilean Tax ID\",\n localName: \"Rol Único Tributario\",\n abbreviation: \"RUT\",\n aliases: [\"RUT\", \"Rol Único Tributario\"] as const,\n candidatePattern: \"\\\\d{1,2}\\\\.?\\\\d{3}\\\\.?\\\\d{3}-?[\\\\dkK]\",\n country: \"CL\",\n entityType: \"any\",\n compact,\n format,\n validate,\n sourceUrl: \"https://www.sii.cl/\",\n lengths: [8, 9] as const,\n examples: [\"760864285\", \"125319092\"] as const,\n generate,\n};\n\nexport default rut;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,MAAM,SAAS;AAEf,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa;AAChD,KAAI,EAAE,WAAW,KAAK,CAAE,KAAI,EAAE,MAAM,EAAE;AACtC,QAAO;;;;;;;;;AAUT,MAAM,kBAAkB,SAAyB;CAC/C,MAAM,UAAU;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAE;CAClC,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,IAChD,QAAO,OAAO,KAAK,GAAG,GAAG,QAAQ,IAAI;CAEvC,MAAM,YAAY,KAAM,MAAM;AAC9B,KAAI,cAAc,GAAI,QAAO;AAC7B,KAAI,cAAc,GAAI,QAAO;AAC7B,QAAO,OAAO,UAAU;;AAG1B,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,EACjC,QAAO,IACL,kBACA,gCACD;AAGH,KAAI,CAAC,OAAO,KAAK,EAAE,CACjB,QAAO,IACL,kBACA,gDACD;CAIH,MAAM,WAAW,eADJ,EAAE,MAAM,GAAG,GAAG,CACU;AACrC,KAAI,EAAE,GAAG,GAAG,KAAK,SACf,QAAO,IACL,oBACA,iCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;CACxB,MAAM,QAAQ,EAAE,GAAG,GAAG;CACtB,MAAM,OAAO,EAAE,MAAM,GAAG,GAAG;AAC3B,QACE,GAAG,KAAK,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,CAAA,GACtC,KAAK,MAAM,GAAG,CAAC,GAAG;;;AAK1B,MAAM,iBAAyB;CAC7B,MAAM,OAAO,aAAa,EAAE;AAC5B,QAAO,OAAO,eAAe,KAAK;;;;;;;;AASpC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,uBAAuB;CACxC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ;CACA;CACA;CACA,WAAW;CACX,SAAS,CAAC,GAAG,EAAE;CACf,UAAU,CAAC,aAAa,YAAY;CACpC;CACD"}
@@ -0,0 +1,9 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import ric from "./ric.js";
3
+ import uscc from "./uscc.js";
4
+
5
+ //#region src/cn/mod.d.ts
6
+
7
+ //#endregion
8
+ export { mod_d_exports, ric, uscc };
9
+ //# sourceMappingURL=mod.d.ts.map
package/dist/cn/mod.js ADDED
@@ -0,0 +1,12 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import ric from "./ric.js";
3
+ import uscc from "./uscc.js";
4
+ //#region src/cn/mod.ts
5
+ var cn_exports = /* @__PURE__ */ __exportAll({
6
+ ric: () => ric,
7
+ uscc: () => uscc
8
+ });
9
+ //#endregion
10
+ export { cn_exports, ric, uscc };
11
+
12
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/cn/mod.ts"],"sourcesContent":["export { default as ric } from \"./ric\";\nexport { default as uscc } from \"./uscc\";\n"],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { ParsedPersonId, ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/cn/ric.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 an RIC number.
10
+ * Returns null if the value is not valid.
11
+ */
12
+ declare const parse: (value: string) => ParsedPersonId | null;
13
+ /** Generate a random valid 18-digit RIC. */
14
+ declare const generate: () => string;
15
+ /** Chinese Resident Identity Card number. */
16
+ declare const ric: Validator;
17
+ //#endregion
18
+ export { compact, ric as default, format, generate, parse, validate };
19
+ //# sourceMappingURL=ric.d.ts.map
package/dist/cn/ric.js ADDED
@@ -0,0 +1,108 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomInt } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ import { isdigits } from "../_util/strings.js";
5
+ import { isValidDate } from "../_util/date.js";
6
+ import { mod112checkChar, mod112validate } from "../_checksums/mod112.js";
7
+ //#region src/cn/ric.ts
8
+ /**
9
+ * RIC (Resident Identity Card number, 居民身份证号码).
10
+ *
11
+ * Chinese national identifier. 18 characters:
12
+ * 6 (area code) + 8 (YYYYMMDD birth) + 3 (sequence,
13
+ * odd = male) + 1 (check, 0-9 or X).
14
+ *
15
+ * Also accepts the legacy 15-digit format (no check
16
+ * digit, 2-digit year).
17
+ *
18
+ * @see https://en.wikipedia.org/wiki/Resident_Identity_Card
19
+ */
20
+ const compact = (value) => clean(value, " -").toUpperCase();
21
+ const validate = (value) => {
22
+ const v = compact(value);
23
+ if (v.length !== 15 && v.length !== 18) return err("INVALID_LENGTH", "RIC must be 15 or 18 characters");
24
+ if (v.length === 15) {
25
+ if (!isdigits(v)) return err("INVALID_FORMAT", "15-digit RIC must contain only digits");
26
+ if (!isValidDate(1900 + Number(v.slice(6, 8)), Number(v.slice(8, 10)), Number(v.slice(10, 12)))) return err("INVALID_COMPONENT", "RIC contains an invalid birth date");
27
+ return {
28
+ valid: true,
29
+ compact: v
30
+ };
31
+ }
32
+ if (!isdigits(v.slice(0, 17))) return err("INVALID_FORMAT", "RIC must contain only digits (plus check char)");
33
+ const lastChar = v[17];
34
+ if (!isdigits(lastChar) && lastChar !== "X") return err("INVALID_FORMAT", "RIC check character must be 0-9 or X");
35
+ if (!isValidDate(Number(v.slice(6, 10)), Number(v.slice(10, 12)), Number(v.slice(12, 14)))) return err("INVALID_COMPONENT", "RIC contains an invalid birth date");
36
+ if (!mod112validate(v)) return err("INVALID_CHECKSUM", "RIC check character does not match");
37
+ return {
38
+ valid: true,
39
+ compact: v
40
+ };
41
+ };
42
+ const format = (value) => compact(value);
43
+ /**
44
+ * Extract birth date and gender from an RIC number.
45
+ * Returns null if the value is not valid.
46
+ */
47
+ const parse = (value) => {
48
+ const result = validate(value);
49
+ if (!result.valid) return null;
50
+ const v = result.compact;
51
+ let year;
52
+ let month;
53
+ let day;
54
+ let seq;
55
+ if (v.length === 15) {
56
+ year = 1900 + Number(v.slice(6, 8));
57
+ month = Number(v.slice(8, 10));
58
+ day = Number(v.slice(10, 12));
59
+ seq = Number(v.slice(12, 15));
60
+ } else {
61
+ year = Number(v.slice(6, 10));
62
+ month = Number(v.slice(10, 12));
63
+ day = Number(v.slice(12, 14));
64
+ seq = Number(v.slice(14, 17));
65
+ }
66
+ const gender = seq % 2 === 1 ? "male" : "female";
67
+ return {
68
+ birthDate: new Date(year, month - 1, day),
69
+ gender
70
+ };
71
+ };
72
+ /** Generate a random valid 18-digit RIC. */
73
+ const generate = () => {
74
+ const area = String(randomInt(11e4, 659999));
75
+ const year = randomInt(1950, 2005);
76
+ const month = randomInt(1, 12);
77
+ const day = randomInt(1, 28);
78
+ const seqNum = randomInt(1, 999);
79
+ const seq = String(seqNum).padStart(3, "0");
80
+ const payload = `${area}${String(year)}${String(month).padStart(2, "0")}${String(day).padStart(2, "0")}${seq}`;
81
+ return `${payload}${mod112checkChar(payload)}`;
82
+ };
83
+ /** Chinese Resident Identity Card number. */
84
+ const ric = {
85
+ name: "Chinese Resident Identity Card",
86
+ localName: "居民身份证号码",
87
+ abbreviation: "RIC",
88
+ aliases: [
89
+ "身份证",
90
+ "居民身份证号码",
91
+ "RIC"
92
+ ],
93
+ candidatePattern: "\\d{17}[\\dX]",
94
+ country: "CN",
95
+ entityType: "person",
96
+ description: "18-character national ID encoding area, birth date, gender, and check digit",
97
+ sourceUrl: "https://en.wikipedia.org/wiki/Resident_Identity_Card",
98
+ lengths: [15, 18],
99
+ examples: ["11010519491231002X", "440524188001010014"],
100
+ compact,
101
+ format,
102
+ validate,
103
+ generate
104
+ };
105
+ //#endregion
106
+ export { compact, ric as default, format, generate, parse, validate };
107
+
108
+ //# sourceMappingURL=ric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ric.js","names":[],"sources":["../../src/cn/ric.ts"],"sourcesContent":["/**\n * RIC (Resident Identity Card number, 居民身份证号码).\n *\n * Chinese national identifier. 18 characters:\n * 6 (area code) + 8 (YYYYMMDD birth) + 3 (sequence,\n * odd = male) + 1 (check, 0-9 or X).\n *\n * Also accepts the legacy 15-digit format (no check\n * digit, 2-digit year).\n *\n * @see https://en.wikipedia.org/wiki/Resident_Identity_Card\n */\n\nimport {\n mod112checkChar,\n mod112validate,\n} from \"#checksums/mod112\";\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { 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, \" -\").toUpperCase();\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 15 && v.length !== 18) {\n return err(\n \"INVALID_LENGTH\",\n \"RIC must be 15 or 18 characters\",\n );\n }\n\n if (v.length === 15) {\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"15-digit RIC must contain only digits\",\n );\n }\n // Validate date: digits 6-11 are YYMMDD\n const year = 1900 + Number(v.slice(6, 8));\n const month = Number(v.slice(8, 10));\n const day = Number(v.slice(10, 12));\n if (!isValidDate(year, month, day)) {\n return err(\n \"INVALID_COMPONENT\",\n \"RIC contains an invalid birth date\",\n );\n }\n return { valid: true, compact: v };\n }\n\n // 18-character format\n if (!isdigits(v.slice(0, 17))) {\n return err(\n \"INVALID_FORMAT\",\n \"RIC must contain only digits (plus check char)\",\n );\n }\n const lastChar = v[17]!;\n if (!isdigits(lastChar) && lastChar !== \"X\") {\n return err(\n \"INVALID_FORMAT\",\n \"RIC check character must be 0-9 or X\",\n );\n }\n\n // Validate date: digits 6-13 are YYYYMMDD\n const year = Number(v.slice(6, 10));\n const month = Number(v.slice(10, 12));\n const day = Number(v.slice(12, 14));\n if (!isValidDate(year, month, day)) {\n return err(\n \"INVALID_COMPONENT\",\n \"RIC contains an invalid birth date\",\n );\n }\n\n if (!mod112validate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"RIC check character does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/**\n * Extract birth date and gender from an RIC number.\n * 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\n let year: number;\n let month: number;\n let day: number;\n let seq: number;\n\n if (v.length === 15) {\n year = 1900 + Number(v.slice(6, 8));\n month = Number(v.slice(8, 10));\n day = Number(v.slice(10, 12));\n seq = Number(v.slice(12, 15));\n } else {\n year = Number(v.slice(6, 10));\n month = Number(v.slice(10, 12));\n day = Number(v.slice(12, 14));\n seq = Number(v.slice(14, 17));\n }\n\n const gender = seq % 2 === 1 ? \"male\" : \"female\";\n\n return {\n birthDate: new Date(year, month - 1, day),\n gender,\n };\n};\n\n/** Generate a random valid 18-digit RIC. */\nconst generate = (): string => {\n // Use a simple area code prefix\n const area = String(randomInt(110000, 659999));\n const year = randomInt(1950, 2005);\n const month = randomInt(1, 12);\n const day = randomInt(1, 28);\n const seqNum = randomInt(1, 999);\n const seq = String(seqNum).padStart(3, \"0\");\n\n const yStr = String(year);\n const mStr = String(month).padStart(2, \"0\");\n const dStr = String(day).padStart(2, \"0\");\n\n const payload = `${area}${yStr}${mStr}${dStr}${seq}`;\n const check = mod112checkChar(payload);\n return `${payload}${check}`;\n};\n\n/** Chinese Resident Identity Card number. */\nconst ric: Validator = {\n name: \"Chinese Resident Identity Card\",\n localName: \"居民身份证号码\",\n abbreviation: \"RIC\",\n aliases: [\"身份证\", \"居民身份证号码\", \"RIC\"] as const,\n candidatePattern: \"\\\\d{17}[\\\\dX]\",\n country: \"CN\",\n entityType: \"person\",\n description:\n \"18-character national ID encoding area, birth date, gender, and check digit\",\n sourceUrl:\n \"https://en.wikipedia.org/wiki/Resident_Identity_Card\",\n lengths: [15, 18] as const,\n examples: [\n \"11010519491231002X\",\n \"440524188001010014\",\n ] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default ric;\nexport { compact, format, generate, parse, validate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA6BA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,aAAa;AAElC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,MAAM,EAAE,WAAW,GAClC,QAAO,IACL,kBACA,kCACD;AAGH,KAAI,EAAE,WAAW,IAAI;AACnB,MAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,wCACD;AAMH,MAAI,CAAC,YAHQ,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,EAC3B,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,EACxB,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC,CACD,CAChC,QAAO,IACL,qBACA,qCACD;AAEH,SAAO;GAAE,OAAO;GAAM,SAAS;GAAG;;AAIpC,KAAI,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,CAC3B,QAAO,IACL,kBACA,iDACD;CAEH,MAAM,WAAW,EAAE;AACnB,KAAI,CAAC,SAAS,SAAS,IAAI,aAAa,IACtC,QAAO,IACL,kBACA,uCACD;AAOH,KAAI,CAAC,YAHQ,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,EACrB,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC,EACzB,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC,CACD,CAChC,QAAO,IACL,qBACA,qCACD;AAGH,KAAI,CAAC,eAAe,EAAE,CACpB,QAAO,IACL,oBACA,qCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;;;;AAMxD,MAAM,SAAS,UAAyC;CACtD,MAAM,SAAS,SAAS,MAAM;AAC9B,KAAI,CAAC,OAAO,MAAO,QAAO;CAE1B,MAAM,IAAI,OAAO;CAEjB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AAEJ,KAAI,EAAE,WAAW,IAAI;AACnB,SAAO,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AACnC,UAAQ,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;AAC9B,QAAM,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;AAC7B,QAAM,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;QACxB;AACL,SAAO,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;AAC7B,UAAQ,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;AAC/B,QAAM,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;AAC7B,QAAM,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;;CAG/B,MAAM,SAAS,MAAM,MAAM,IAAI,SAAS;AAExC,QAAO;EACL,WAAW,IAAI,KAAK,MAAM,QAAQ,GAAG,IAAI;EACzC;EACD;;;AAIH,MAAM,iBAAyB;CAE7B,MAAM,OAAO,OAAO,UAAU,MAAQ,OAAO,CAAC;CAC9C,MAAM,OAAO,UAAU,MAAM,KAAK;CAClC,MAAM,QAAQ,UAAU,GAAG,GAAG;CAC9B,MAAM,MAAM,UAAU,GAAG,GAAG;CAC5B,MAAM,SAAS,UAAU,GAAG,IAAI;CAChC,MAAM,MAAM,OAAO,OAAO,CAAC,SAAS,GAAG,IAAI;CAM3C,MAAM,UAAU,GAAG,OAJN,OAAO,KAAK,GACZ,OAAO,MAAM,CAAC,SAAS,GAAG,IAAI,GAC9B,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,GAEM;AAE/C,QAAO,GAAG,UADI,gBAAgB,QAAQ;;;AAKxC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAO;EAAW;EAAM;CAClC,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,aACE;CACF,WACE;CACF,SAAS,CAAC,IAAI,GAAG;CACjB,UAAU,CACR,sBACA,qBACD;CACD;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/cn/uscc.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 USCC. */
9
+ declare const generate: () => string;
10
+ /** Chinese Unified Social Credit Code. */
11
+ declare const uscc: Validator;
12
+ //#endregion
13
+ export { compact, uscc as default, format, generate, validate };
14
+ //# sourceMappingURL=uscc.d.ts.map
@@ -0,0 +1,88 @@
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/cn/uscc.ts
6
+ /**
7
+ * USCC (Unified Social Credit Code, 统一社会信用代码).
8
+ *
9
+ * 18 alphanumeric characters (excluding I, O, Z, S, V):
10
+ * 1 (registering authority) + 1 (entity type) +
11
+ * 6 (region code, digits only) + 9 (organisation code) +
12
+ * 1 (mod 31 check character).
13
+ *
14
+ * @see https://zh.wikipedia.org/wiki/统一社会信用代码
15
+ */
16
+ const ALPHABET = "0123456789ABCDEFGHJKLMNPQRTUWXY";
17
+ const WEIGHTS = [
18
+ 1,
19
+ 3,
20
+ 9,
21
+ 27,
22
+ 19,
23
+ 26,
24
+ 16,
25
+ 17,
26
+ 20,
27
+ 29,
28
+ 25,
29
+ 13,
30
+ 8,
31
+ 24,
32
+ 10,
33
+ 30,
34
+ 28
35
+ ];
36
+ const compact = (value) => clean(value, " -").toUpperCase();
37
+ const calcCheckChar = (value) => {
38
+ let total = 0;
39
+ for (let i = 0; i < 17; i++) {
40
+ const idx = ALPHABET.indexOf(value[i]);
41
+ total += idx * WEIGHTS[i];
42
+ }
43
+ return ALPHABET[(31 - total % 31) % 31];
44
+ };
45
+ const validate = (value) => {
46
+ const v = compact(value);
47
+ if (v.length !== 18) return err("INVALID_LENGTH", "USCC must be 18 characters");
48
+ for (let i = 0; i < 18; i++) if (!ALPHABET.includes(v[i])) return err("INVALID_FORMAT", "USCC contains invalid character");
49
+ if (!isdigits(v.slice(2, 8))) return err("INVALID_FORMAT", "USCC region code (positions 3-8) must be digits");
50
+ if (v[17] !== calcCheckChar(v)) return err("INVALID_CHECKSUM", "USCC check character does not match");
51
+ return {
52
+ valid: true,
53
+ compact: v
54
+ };
55
+ };
56
+ const format = (value) => compact(value);
57
+ /** Generate a random valid USCC. */
58
+ const generate = () => {
59
+ const reg = ALPHABET[randomInt(1, 9)];
60
+ const etype = ALPHABET[randomInt(1, 9)];
61
+ const region = randomDigits(6);
62
+ let org = "";
63
+ for (let i = 0; i < 9; i++) org += ALPHABET[randomInt(0, 30)];
64
+ const payload = reg + etype + region + org;
65
+ return payload + calcCheckChar(payload);
66
+ };
67
+ /** Chinese Unified Social Credit Code. */
68
+ const uscc = {
69
+ name: "Unified Social Credit Code",
70
+ localName: "统一社会信用代码",
71
+ abbreviation: "USCC",
72
+ aliases: ["统一社会信用代码", "USCC"],
73
+ candidatePattern: "[0-9A-HJ-NP-RTUW-Y]{2}\\d{6}[0-9A-HJ-NP-RTUW-Y]{10}",
74
+ country: "CN",
75
+ entityType: "company",
76
+ description: "18-character tax/registration code for Chinese entities",
77
+ sourceUrl: "https://zh.wikipedia.org/wiki/统一社会信用代码",
78
+ lengths: [18],
79
+ examples: ["91110000600037341L"],
80
+ compact,
81
+ format,
82
+ validate,
83
+ generate
84
+ };
85
+ //#endregion
86
+ export { compact, uscc as default, format, generate, validate };
87
+
88
+ //# sourceMappingURL=uscc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uscc.js","names":[],"sources":["../../src/cn/uscc.ts"],"sourcesContent":["/**\n * USCC (Unified Social Credit Code, 统一社会信用代码).\n *\n * 18 alphanumeric characters (excluding I, O, Z, S, V):\n * 1 (registering authority) + 1 (entity type) +\n * 6 (region code, digits only) + 9 (organisation code) +\n * 1 (mod 31 check character).\n *\n * @see https://zh.wikipedia.org/wiki/统一社会信用代码\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 ALPHABET = \"0123456789ABCDEFGHJKLMNPQRTUWXY\";\n\nconst WEIGHTS = [\n 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10,\n 30, 28,\n] as const;\n\nconst compact = (value: string): string =>\n clean(value, \" -\").toUpperCase();\n\nconst calcCheckChar = (value: string): string => {\n let total = 0;\n for (let i = 0; i < 17; i++) {\n const idx = ALPHABET.indexOf(value[i]!);\n total += idx * WEIGHTS[i]!;\n }\n return ALPHABET[(31 - (total % 31)) % 31]!;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 18) {\n return err(\n \"INVALID_LENGTH\",\n \"USCC must be 18 characters\",\n );\n }\n\n for (let i = 0; i < 18; i++) {\n if (!ALPHABET.includes(v[i]!)) {\n return err(\n \"INVALID_FORMAT\",\n \"USCC contains invalid character\",\n );\n }\n }\n\n if (!isdigits(v.slice(2, 8))) {\n return err(\n \"INVALID_FORMAT\",\n \"USCC region code (positions 3-8) must be digits\",\n );\n }\n\n if (v[17] !== calcCheckChar(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"USCC check character does not match\",\n );\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid USCC. */\nconst generate = (): string => {\n const reg = ALPHABET[randomInt(1, 9)]!;\n const etype = ALPHABET[randomInt(1, 9)]!;\n const region = randomDigits(6);\n let org = \"\";\n for (let i = 0; i < 9; i++)\n org += ALPHABET[randomInt(0, ALPHABET.length - 1)]!;\n const payload = reg + etype + region + org;\n return payload + calcCheckChar(payload);\n};\n\n/** Chinese Unified Social Credit Code. */\nconst uscc: Validator = {\n name: \"Unified Social Credit Code\",\n localName: \"统一社会信用代码\",\n abbreviation: \"USCC\",\n aliases: [\"统一社会信用代码\", \"USCC\"] as const,\n candidatePattern:\n \"[0-9A-HJ-NP-RTUW-Y]{2}\\\\d{6}[0-9A-HJ-NP-RTUW-Y]{10}\",\n country: \"CN\",\n entityType: \"company\",\n description:\n \"18-character tax/registration code for Chinese entities\",\n sourceUrl:\n \"https://zh.wikipedia.org/wiki/统一社会信用代码\",\n lengths: [18] as const,\n examples: [\"91110000600037341L\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default uscc;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,WAAW;AAEjB,MAAM,UAAU;CACd;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAI;CACpD;CAAI;CACL;AAED,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,aAAa;AAElC,MAAM,iBAAiB,UAA0B;CAC/C,IAAI,QAAQ;AACZ,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EAC3B,MAAM,MAAM,SAAS,QAAQ,MAAM,GAAI;AACvC,WAAS,MAAM,QAAQ;;AAEzB,QAAO,UAAU,KAAM,QAAQ,MAAO;;AAGxC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,6BACD;AAGH,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,KAAI,CAAC,SAAS,SAAS,EAAE,GAAI,CAC3B,QAAO,IACL,kBACA,kCACD;AAIL,KAAI,CAAC,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,CAC1B,QAAO,IACL,kBACA,kDACD;AAGH,KAAI,EAAE,QAAQ,cAAc,EAAE,CAC5B,QAAO,IACL,oBACA,sCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;CAC7B,MAAM,MAAM,SAAS,UAAU,GAAG,EAAE;CACpC,MAAM,QAAQ,SAAS,UAAU,GAAG,EAAE;CACtC,MAAM,SAAS,aAAa,EAAE;CAC9B,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,QAAO,SAAS,UAAU,GAAG,GAAoB;CACnD,MAAM,UAAU,MAAM,QAAQ,SAAS;AACvC,QAAO,UAAU,cAAc,QAAQ;;;AAIzC,MAAM,OAAkB;CACtB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,YAAY,OAAO;CAC7B,kBACE;CACF,SAAS;CACT,YAAY;CACZ,aACE;CACF,WACE;CACF,SAAS,CAAC,GAAG;CACb,UAAU,CAAC,qBAAqB;CAChC;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import nit from "./nit.js";
3
+
4
+ //#region src/co/mod.d.ts
5
+
6
+ //#endregion
7
+ export { mod_d_exports, nit };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/co/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import nit from "./nit.js";
3
+ //#region src/co/mod.ts
4
+ var co_exports = /* @__PURE__ */ __exportAll({ nit: () => nit });
5
+ //#endregion
6
+ export { co_exports, nit };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/co/mod.ts"],"sourcesContent":["export { default as nit } from \"./nit\";\n"],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/co/nit.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 NIT (10 digits). */
9
+ declare const generate: () => string;
10
+ /** Colombian tax identification number. */
11
+ declare const nit: Validator;
12
+ //#endregion
13
+ export { compact, nit as default, format, generate, validate };
14
+ //# sourceMappingURL=nit.d.ts.map
package/dist/co/nit.js ADDED
@@ -0,0 +1,109 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ import { isdigits } from "../_util/strings.js";
5
+ //#region src/co/nit.ts
6
+ /**
7
+ * NIT (Número de Identificación Tributaria).
8
+ *
9
+ * Colombian tax identification number, also known as
10
+ * RUT (Registro Unico Tributario). The last digit is
11
+ * a check digit computed via a weighted sum mod 11
12
+ * with weights [3,7,13,17,19,23,29,37,41,43,47,53,
13
+ * 59,67,71] applied right-to-left.
14
+ *
15
+ * @see https://es.wikipedia.org/wiki/Número_de_identificación_tributaria
16
+ */
17
+ const WEIGHTS = [
18
+ 3,
19
+ 7,
20
+ 13,
21
+ 17,
22
+ 19,
23
+ 23,
24
+ 29,
25
+ 37,
26
+ 41,
27
+ 43,
28
+ 47,
29
+ 53,
30
+ 59,
31
+ 67,
32
+ 71
33
+ ];
34
+ /** Lookup table: remainder -> check digit. */
35
+ const CHECK_DIGITS = [
36
+ 0,
37
+ 1,
38
+ 9,
39
+ 8,
40
+ 7,
41
+ 6,
42
+ 5,
43
+ 4,
44
+ 3,
45
+ 2,
46
+ 1
47
+ ];
48
+ const compact = (value) => clean(value, " -.,");
49
+ const calcCheckDigit = (body) => {
50
+ let sum = 0;
51
+ const len = body.length;
52
+ for (let i = 0; i < len; i++) sum += Number(body[len - 1 - i]) * WEIGHTS[i];
53
+ return CHECK_DIGITS[sum % 11];
54
+ };
55
+ const validate = (value) => {
56
+ const v = compact(value);
57
+ if (v.length < 8 || v.length > 16) return err("INVALID_LENGTH", "NIT must be between 8 and 16 digits");
58
+ if (!isdigits(v)) return err("INVALID_FORMAT", "NIT must contain only digits");
59
+ if (calcCheckDigit(v.slice(0, -1)) !== Number(v[v.length - 1])) return err("INVALID_CHECKSUM", "NIT 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
+ const body = v.slice(0, -1);
68
+ const checkChar = v.slice(-1);
69
+ const groups = [];
70
+ for (let i = body.length; i > 0; i -= 3) groups.unshift(body.slice(Math.max(0, i - 3), i));
71
+ return `${groups.join(".")}-${checkChar}`;
72
+ };
73
+ /** Generate a random valid NIT (10 digits). */
74
+ const generate = () => {
75
+ const body = randomDigits(9);
76
+ return `${body}${calcCheckDigit(body)}`;
77
+ };
78
+ /** Colombian tax identification number. */
79
+ const nit = {
80
+ name: "Número de Identificación Tributaria",
81
+ localName: "Número de Identificación Tributaria",
82
+ abbreviation: "NIT",
83
+ aliases: ["NIT", "Número de Identificación Tributaria"],
84
+ candidatePattern: "\\d{9,10}-?\\d",
85
+ country: "CO",
86
+ entityType: "any",
87
+ description: "Tax identifier issued by the DIAN",
88
+ sourceUrl: "https://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_tributaria",
89
+ lengths: [
90
+ 8,
91
+ 9,
92
+ 10,
93
+ 11,
94
+ 12,
95
+ 13,
96
+ 14,
97
+ 15,
98
+ 16
99
+ ],
100
+ examples: ["2131234321", "8001234565"],
101
+ compact,
102
+ format,
103
+ validate,
104
+ generate
105
+ };
106
+ //#endregion
107
+ export { compact, nit as default, format, generate, validate };
108
+
109
+ //# sourceMappingURL=nit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nit.js","names":[],"sources":["../../src/co/nit.ts"],"sourcesContent":["/**\n * NIT (Número de Identificación Tributaria).\n *\n * Colombian tax identification number, also known as\n * RUT (Registro Unico Tributario). The last digit is\n * a check digit computed via a weighted sum mod 11\n * with weights [3,7,13,17,19,23,29,37,41,43,47,53,\n * 59,67,71] applied right-to-left.\n *\n * @see https://es.wikipedia.org/wiki/Número_de_identificación_tributaria\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\nconst WEIGHTS = [\n 3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71,\n] as const;\n\n/** Lookup table: remainder -> check digit. */\nconst CHECK_DIGITS = [0, 1, 9, 8, 7, 6, 5, 4, 3, 2, 1];\n\nconst compact = (value: string): string =>\n clean(value, \" -.,\");\n\nconst calcCheckDigit = (body: string): number => {\n let sum = 0;\n const len = body.length;\n for (let i = 0; i < len; i++) {\n sum += Number(body[len - 1 - i]) * WEIGHTS[i]!;\n }\n return CHECK_DIGITS[sum % 11]!;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length < 8 || v.length > 16) {\n return err(\n \"INVALID_LENGTH\",\n \"NIT must be between 8 and 16 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"NIT must contain only digits\",\n );\n }\n\n const body = v.slice(0, -1);\n const check = calcCheckDigit(body);\n if (check !== Number(v[v.length - 1])) {\n return err(\n \"INVALID_CHECKSUM\",\n \"NIT 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 const body = v.slice(0, -1);\n const checkChar = v.slice(-1);\n const groups: string[] = [];\n for (let i = body.length; i > 0; i -= 3) {\n groups.unshift(body.slice(Math.max(0, i - 3), i));\n }\n return `${groups.join(\".\")}-${checkChar}`;\n};\n\n/** Generate a random valid NIT (10 digits). */\nconst generate = (): string => {\n const body = randomDigits(9);\n const check = calcCheckDigit(body);\n return `${body}${check}`;\n};\n\n/** Colombian tax identification number. */\nconst nit: Validator = {\n name: \"Número de Identificación Tributaria\",\n localName: \"Número de Identificación Tributaria\",\n abbreviation: \"NIT\",\n aliases: [\n \"NIT\",\n \"Número de Identificación Tributaria\",\n ] as const,\n candidatePattern: \"\\\\d{9,10}-?\\\\d\",\n country: \"CO\",\n entityType: \"any\",\n description: \"Tax identifier issued by the DIAN\",\n sourceUrl:\n \"https://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_tributaria\",\n lengths: [8, 9, 10, 11, 12, 13, 14, 15, 16] as const,\n examples: [\"2131234321\", \"8001234565\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default nit;\nexport { compact, format, generate, validate };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,UAAU;CACd;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CACvD;;AAGD,MAAM,eAAe;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAEtD,MAAM,WAAW,UACf,MAAM,OAAO,OAAO;AAEtB,MAAM,kBAAkB,SAAyB;CAC/C,IAAI,MAAM;CACV,MAAM,MAAM,KAAK;AACjB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,IACvB,QAAO,OAAO,KAAK,MAAM,IAAI,GAAG,GAAG,QAAQ;AAE7C,QAAO,aAAa,MAAM;;AAG5B,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,SAAS,KAAK,EAAE,SAAS,GAC7B,QAAO,IACL,kBACA,sCACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;AAKH,KADc,eADD,EAAE,MAAM,GAAG,GAAG,CACO,KACpB,OAAO,EAAE,EAAE,SAAS,GAAG,CACnC,QAAO,IACL,oBACA,iCACD;AAGH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;CACxB,MAAM,OAAO,EAAE,MAAM,GAAG,GAAG;CAC3B,MAAM,YAAY,EAAE,MAAM,GAAG;CAC7B,MAAM,SAAmB,EAAE;AAC3B,MAAK,IAAI,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK,EACpC,QAAO,QAAQ,KAAK,MAAM,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;AAEnD,QAAO,GAAG,OAAO,KAAK,IAAI,CAAC,GAAG;;;AAIhC,MAAM,iBAAyB;CAC7B,MAAM,OAAO,aAAa,EAAE;AAE5B,QAAO,GAAG,OADI,eAAe,KAAK;;;AAKpC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,OACA,sCACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,aAAa;CACb,WACE;CACF,SAAS;EAAC;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;CAC3C,UAAU,CAAC,cAAc,aAAa;CACtC;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,21 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/cr/cpf.d.ts
4
+ /** Generate a random valid Costa Rican CPF. */
5
+ declare const generate: () => string;
6
+ /**
7
+ * Compact: strip spaces, pad hyphen-separated parts
8
+ * (2-4-4), join, and prepend '0' if 9 digits.
9
+ */
10
+ declare const compact: (value: string) => string;
11
+ declare const validate: (value: string) => ValidateResult;
12
+ declare const format: (value: string) => string;
13
+ /**
14
+ * Costa Rican physical person ID number (CPF).
15
+ *
16
+ * Examples sourced from python-stdnum test suite.
17
+ */
18
+ declare const cpf: Validator;
19
+ //#endregion
20
+ export { compact, cpf as default, format, generate, validate };
21
+ //# sourceMappingURL=cpf.d.ts.map
package/dist/cr/cpf.js ADDED
@@ -0,0 +1,79 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits, randomInt } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ //#region src/cr/cpf.ts
5
+ /**
6
+ * CPF (Cédula de Persona Física, Costa Rican
7
+ * physical person ID number).
8
+ *
9
+ * 10 digits: 0P-TTTT-AAAA where:
10
+ * - 0 = fixed leading zero
11
+ * - P = province digit
12
+ * - TTTT = volume (tomo), zero-padded
13
+ * - AAAA = entry (asiento), zero-padded
14
+ *
15
+ * No check digit; validation is by format only.
16
+ *
17
+ * Ported from python-stdnum cr.cpf module.
18
+ *
19
+ * @see https://www.tse.go.cr/
20
+ */
21
+ /** Generate a random valid Costa Rican CPF. */
22
+ const generate = () => {
23
+ return `0${String(randomInt(1, 9))}${randomDigits(4)}${randomDigits(4)}`;
24
+ };
25
+ /**
26
+ * Compact: strip spaces, pad hyphen-separated parts
27
+ * (2-4-4), join, and prepend '0' if 9 digits.
28
+ */
29
+ const compact = (value) => {
30
+ let number = clean(value, " ").trim().toUpperCase();
31
+ const parts = number.split("-");
32
+ if (parts.length === 3) {
33
+ const p0 = parts[0].padStart(2, "0");
34
+ const p1 = parts[1].padStart(4, "0");
35
+ const p2 = parts[2].padStart(4, "0");
36
+ number = p0 + p1 + p2;
37
+ } else number = number.replaceAll("-", "");
38
+ if (number.length === 9) number = "0" + number;
39
+ return number;
40
+ };
41
+ const validate = (value) => {
42
+ const v = compact(value);
43
+ if (v.length !== 10) return err("INVALID_LENGTH", "Costa Rican CPF must be 10 digits");
44
+ if (!/^\d{10}$/.test(v)) return err("INVALID_FORMAT", "Costa Rican CPF must contain only digits");
45
+ if (v[0] !== "0") return err("INVALID_COMPONENT", "Costa Rican CPF must start with 0");
46
+ return {
47
+ valid: true,
48
+ compact: v
49
+ };
50
+ };
51
+ const format = (value) => {
52
+ const v = compact(value);
53
+ return `${v.slice(0, 2)}-${v.slice(2, 6)}-${v.slice(6, 10)}`;
54
+ };
55
+ /**
56
+ * Costa Rican physical person ID number (CPF).
57
+ *
58
+ * Examples sourced from python-stdnum test suite.
59
+ */
60
+ const cpf = {
61
+ name: "Costa Rican Physical Person ID",
62
+ localName: "Cédula de Persona Física",
63
+ abbreviation: "CPF",
64
+ aliases: ["CPF", "cédula de persona física"],
65
+ candidatePattern: "\\d{9,12}",
66
+ country: "CR",
67
+ entityType: "person",
68
+ lengths: [10],
69
+ examples: ["0304550175", "0109130259"],
70
+ compact,
71
+ format,
72
+ validate,
73
+ sourceUrl: "https://www.tse.go.cr/",
74
+ generate
75
+ };
76
+ //#endregion
77
+ export { compact, cpf as default, format, generate, validate };
78
+
79
+ //# sourceMappingURL=cpf.js.map