@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpf.js","names":[],"sources":["../../src/cr/cpf.ts"],"sourcesContent":["/** Generate a random valid Costa Rican CPF. */\nconst generate = (): string => {\n const province = String(randomInt(1, 9));\n const volume = randomDigits(4);\n const entry = randomDigits(4);\n return `0${province}${volume}${entry}`;\n};\n\n/**\n * CPF (Cédula de Persona Física, Costa Rican\n * physical person ID number).\n *\n * 10 digits: 0P-TTTT-AAAA where:\n * - 0 = fixed leading zero\n * - P = province digit\n * - TTTT = volume (tomo), zero-padded\n * - AAAA = entry (asiento), zero-padded\n *\n * No check digit; validation is by format only.\n *\n * Ported from python-stdnum cr.cpf module.\n *\n * @see https://www.tse.go.cr/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\n/**\n * Compact: strip spaces, pad hyphen-separated parts\n * (2-4-4), join, and prepend '0' if 9 digits.\n */\nconst compact = (value: string): string => {\n let number = clean(value, \" \").trim().toUpperCase();\n\n const parts = number.split(\"-\");\n if (parts.length === 3) {\n const p0 = parts[0]!.padStart(2, \"0\");\n const p1 = parts[1]!.padStart(4, \"0\");\n const p2 = parts[2]!.padStart(4, \"0\");\n number = p0 + p1 + p2;\n } else {\n number = number.replaceAll(\"-\", \"\");\n }\n\n if (number.length === 9) {\n number = \"0\" + number;\n }\n\n return number;\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 \"Costa Rican CPF must be 10 digits\",\n );\n }\n\n if (!/^\\d{10}$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Costa Rican CPF must contain only digits\",\n );\n }\n\n if (v[0] !== \"0\") {\n return err(\n \"INVALID_COMPONENT\",\n \"Costa Rican CPF must start with 0\",\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, 6)}-${v.slice(6, 10)}`;\n};\n\n/**\n * Costa Rican physical person ID number (CPF).\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst cpf: Validator = {\n name: \"Costa Rican Physical Person ID\",\n localName: \"Cédula de Persona Física\",\n abbreviation: \"CPF\",\n aliases: [\"CPF\", \"cédula de persona física\"] as const,\n candidatePattern: \"\\\\d{9,12}\",\n country: \"CR\",\n entityType: \"person\",\n lengths: [10] as const,\n examples: [\"0304550175\", \"0109130259\"] as const,\n compact,\n format,\n validate,\n sourceUrl: \"https://www.tse.go.cr/\",\n generate,\n};\n\nexport default cpf;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,MAAM,iBAAyB;AAI7B,QAAO,IAHU,OAAO,UAAU,GAAG,EAAE,CAAC,GACzB,aAAa,EAAE,GAChB,aAAa,EAAE;;;;;;AA+B/B,MAAM,WAAW,UAA0B;CACzC,IAAI,SAAS,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa;CAEnD,MAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,KAAI,MAAM,WAAW,GAAG;EACtB,MAAM,KAAK,MAAM,GAAI,SAAS,GAAG,IAAI;EACrC,MAAM,KAAK,MAAM,GAAI,SAAS,GAAG,IAAI;EACrC,MAAM,KAAK,MAAM,GAAI,SAAS,GAAG,IAAI;AACrC,WAAS,KAAK,KAAK;OAEnB,UAAS,OAAO,WAAW,KAAK,GAAG;AAGrC,KAAI,OAAO,WAAW,EACpB,UAAS,MAAM;AAGjB,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,oCACD;AAGH,KAAI,CAAC,WAAW,KAAK,EAAE,CACrB,QAAO,IACL,kBACA,2CACD;AAGH,KAAI,EAAE,OAAO,IACX,QAAO,IACL,qBACA,oCACD;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;;;;;;;AAQ5D,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,2BAA2B;CAC5C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG;CACb,UAAU,CAAC,cAAc,aAAa;CACtC;CACA;CACA;CACA,WAAW;CACX;CACD"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import cpf from "./cpf.js";
3
+
4
+ //#region src/cr/mod.d.ts
5
+
6
+ //#endregion
7
+ export { cpf, mod_d_exports };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/cr/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import cpf from "./cpf.js";
3
+ //#region src/cr/mod.ts
4
+ var cr_exports = /* @__PURE__ */ __exportAll({ cpf: () => cpf });
5
+ //#endregion
6
+ export { cpf, cr_exports };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/cr/mod.ts"],"sourcesContent":["export { default as cpf } from \"./cpf\";\n"],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { ValidateResult, Validator } from "./types.js";
2
+
3
+ //#region src/creditcard.d.ts
4
+
5
+ /**
6
+ * Card network identifiers returned by
7
+ * {@link detectNetwork}.
8
+ */
9
+ type CardNetwork = "visa" | "mastercard" | "amex" | "discover" | "diners" | "jcb" | "unionpay" | "maestro";
10
+ declare const compact: (value: string) => string;
11
+ declare const validate: (value: string) => ValidateResult;
12
+ declare const format: (value: string) => string;
13
+ /**
14
+ * Detect the card network from the BIN/IIN prefix.
15
+ *
16
+ * Accepts both formatted ("4111 1111 1111 1111")
17
+ * and compact ("4111111111111111") inputs.
18
+ * Returns null for unrecognized prefixes.
19
+ */
20
+ declare const detectNetwork: (value: string) => CardNetwork | null;
21
+ /** Credit Card Number (Luhn). */
22
+ declare const creditCard: Validator;
23
+ //#endregion
24
+ export { type CardNetwork, compact, creditCard as default, detectNetwork, format, validate };
25
+ //# sourceMappingURL=creditcard.d.ts.map
@@ -0,0 +1,121 @@
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
+ //#region src/creditcard.ts
7
+ /**
8
+ * Credit card number validation (Luhn algorithm).
9
+ *
10
+ * Validates card numbers using the Luhn checksum
11
+ * (ISO/IEC 7812-1). Supports Visa, Mastercard,
12
+ * Amex, Discover, and other networks (13-19
13
+ * digits).
14
+ *
15
+ * @see https://www.iso.org/standard/70484.html
16
+ */
17
+ const compact = (value) => clean(value, " -.");
18
+ const validate = (value) => {
19
+ const v = compact(value);
20
+ if (v.length < 13 || v.length > 19) return err("INVALID_LENGTH", "Credit card number must be 13-19 digits");
21
+ if (!isdigits(v)) return err("INVALID_FORMAT", "Credit card number must contain only digits");
22
+ if (!luhnValidate(v)) return err("INVALID_CHECKSUM", "Credit card number fails Luhn check");
23
+ return {
24
+ valid: true,
25
+ compact: v
26
+ };
27
+ };
28
+ const format = (value) => {
29
+ const v = compact(value);
30
+ if (v.length === 15 && v[0] === "3") return `${v.slice(0, 4)} ${v.slice(4, 10)} ${v.slice(10)}`;
31
+ const groups = [];
32
+ for (let i = 0; i < v.length; i += 4) groups.push(v.slice(i, i + 4));
33
+ return groups.join(" ");
34
+ };
35
+ const MAESTRO_PREFIXES = [
36
+ 5018,
37
+ 5020,
38
+ 5038,
39
+ 5893,
40
+ 6304,
41
+ 6759,
42
+ 6761,
43
+ 6762,
44
+ 6763
45
+ ];
46
+ /**
47
+ * Detect the card network from the BIN/IIN prefix.
48
+ *
49
+ * Accepts both formatted ("4111 1111 1111 1111")
50
+ * and compact ("4111111111111111") inputs.
51
+ * Returns null for unrecognized prefixes.
52
+ */
53
+ const detectNetwork = (value) => {
54
+ const v = compact(value);
55
+ if (v.length === 0) return null;
56
+ if (!isdigits(v)) return null;
57
+ const d2 = Number(v.slice(0, 2));
58
+ const d3 = Number(v.slice(0, 3));
59
+ const d4 = Number(v.slice(0, 4));
60
+ const d6 = Number(v.slice(0, 6));
61
+ if (d2 === 34 || d2 === 37) return "amex";
62
+ if (d2 === 36 || d2 === 38) return "diners";
63
+ if (d3 >= 300 && d3 <= 305) return "diners";
64
+ if (d4 >= 3528 && d4 <= 3589) return "jcb";
65
+ if (v[0] === "4") return "visa";
66
+ if (MAESTRO_PREFIXES.includes(d4)) return "maestro";
67
+ if (d2 >= 51 && d2 <= 55) return "mastercard";
68
+ if (d4 >= 2221 && d4 <= 2720) return "mastercard";
69
+ if (d4 === 6011) return "discover";
70
+ if (d6 >= 622126 && d6 <= 622925) return "discover";
71
+ if (d3 >= 644 && d3 <= 649) return "discover";
72
+ if (d2 === 65) return "discover";
73
+ if (d2 === 62) return "unionpay";
74
+ return null;
75
+ };
76
+ /**
77
+ * Visa/Mastercard IIN prefixes. Each entry is
78
+ * [prefix, totalLength].
79
+ */
80
+ const CARD_PREFIXES = [
81
+ ["4", 16],
82
+ ["51", 16],
83
+ ["52", 16],
84
+ ["53", 16],
85
+ ["54", 16],
86
+ ["55", 16]
87
+ ];
88
+ /**
89
+ * Generate a random valid Visa or Mastercard
90
+ * number (16 digits, Luhn-valid).
91
+ */
92
+ const generate = () => {
93
+ const [prefix, length] = CARD_PREFIXES[randomInt(0, CARD_PREFIXES.length - 1)];
94
+ const payload = `${prefix}${randomDigits(length - prefix.length - 1)}`;
95
+ const check = (10 - luhnChecksum(`${payload}0`)) % 10;
96
+ return `${payload}${String(check)}`;
97
+ };
98
+ /** Credit Card Number (Luhn). */
99
+ const creditCard = {
100
+ name: "Credit Card Number",
101
+ localName: "Credit Card Number",
102
+ abbreviation: "CC",
103
+ aliases: [
104
+ "credit card",
105
+ "card number",
106
+ "kreditní karta",
107
+ "Kreditkarte"
108
+ ],
109
+ candidatePattern: "(?:\\d[\\s-]?){13,19}",
110
+ entityType: "any",
111
+ sourceUrl: "https://www.iso.org/standard/70484.html",
112
+ examples: ["4111111111111111", "5500000000000004"],
113
+ compact,
114
+ format,
115
+ validate,
116
+ generate
117
+ };
118
+ //#endregion
119
+ export { compact, creditCard as default, detectNetwork, format, validate };
120
+
121
+ //# sourceMappingURL=creditcard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creditcard.js","names":[],"sources":["../src/creditcard.ts"],"sourcesContent":["/**\n * Credit card number validation (Luhn algorithm).\n *\n * Validates card numbers using the Luhn checksum\n * (ISO/IEC 7812-1). Supports Visa, Mastercard,\n * Amex, Discover, and other networks (13-19\n * digits).\n *\n * @see https://www.iso.org/standard/70484.html\n */\n\nimport {\n luhnChecksum,\n luhnValidate,\n} from \"#checksums/luhn\";\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 * Card network identifiers returned by\n * {@link detectNetwork}.\n */\ntype CardNetwork =\n | \"visa\"\n | \"mastercard\"\n | \"amex\"\n | \"discover\"\n | \"diners\"\n | \"jcb\"\n | \"unionpay\"\n | \"maestro\";\n\nconst compact = (value: string): string =>\n clean(value, \" -.\");\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length < 13 || v.length > 19) {\n return err(\n \"INVALID_LENGTH\",\n \"Credit card number must be 13-19 digits\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Credit card number must contain only digits\",\n );\n }\n if (!luhnValidate(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Credit card number fails Luhn check\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n // Amex: 4-6-5 grouping\n if (v.length === 15 && v[0] === \"3\") {\n return `${v.slice(0, 4)} ${v.slice(4, 10)} ${v.slice(10)}`;\n }\n // Standard: groups of 4\n const groups: string[] = [];\n for (let i = 0; i < v.length; i += 4) {\n groups.push(v.slice(i, i + 4));\n }\n return groups.join(\" \");\n};\n\nconst MAESTRO_PREFIXES: readonly number[] = [\n 5018, 5020, 5038, 5893, 6304, 6759, 6761, 6762, 6763,\n];\n\n/**\n * Detect the card network from the BIN/IIN prefix.\n *\n * Accepts both formatted (\"4111 1111 1111 1111\")\n * and compact (\"4111111111111111\") inputs.\n * Returns null for unrecognized prefixes.\n */\nconst detectNetwork = (\n value: string,\n): CardNetwork | null => {\n const v = compact(value);\n if (v.length === 0) return null;\n if (!isdigits(v)) return null;\n\n const d2 = Number(v.slice(0, 2));\n const d3 = Number(v.slice(0, 3));\n const d4 = Number(v.slice(0, 4));\n const d6 = Number(v.slice(0, 6));\n\n // Amex: 34, 37\n if (d2 === 34 || d2 === 37) return \"amex\";\n\n // Diners Club: 300-305, 36, 38\n if (d2 === 36 || d2 === 38) return \"diners\";\n if (d3 >= 300 && d3 <= 305) return \"diners\";\n\n // JCB: 3528-3589\n if (d4 >= 3528 && d4 <= 3589) return \"jcb\";\n\n // Visa: starts with 4\n if (v[0] === \"4\") return \"visa\";\n\n // Maestro (check before Mastercard; some share\n // the 50xx prefix space)\n if (MAESTRO_PREFIXES.includes(d4)) return \"maestro\";\n\n // Mastercard: 51-55 or 2221-2720\n if (d2 >= 51 && d2 <= 55) return \"mastercard\";\n if (d4 >= 2221 && d4 <= 2720) return \"mastercard\";\n\n // Discover: 6011, 622126-622925, 644-649, 65\n if (d4 === 6011) return \"discover\";\n if (d6 >= 622126 && d6 <= 622925) return \"discover\";\n if (d3 >= 644 && d3 <= 649) return \"discover\";\n if (d2 === 65) return \"discover\";\n\n // UnionPay: starts with 62 (excluding Discover\n // ranges already matched above)\n if (d2 === 62) return \"unionpay\";\n\n return null;\n};\n\n/**\n * Visa/Mastercard IIN prefixes. Each entry is\n * [prefix, totalLength].\n */\nconst CARD_PREFIXES = [\n [\"4\", 16], // Visa\n [\"51\", 16], // Mastercard\n [\"52\", 16], // Mastercard\n [\"53\", 16], // Mastercard\n [\"54\", 16], // Mastercard\n [\"55\", 16], // Mastercard\n] as const;\n\n/**\n * Generate a random valid Visa or Mastercard\n * number (16 digits, Luhn-valid).\n */\nconst generate = (): string => {\n const idx = randomInt(0, CARD_PREFIXES.length - 1);\n const [prefix, length] = CARD_PREFIXES[\n idx\n ] as (typeof CARD_PREFIXES)[number];\n const remaining = length - prefix.length - 1;\n const payload = `${prefix}${randomDigits(remaining)}`;\n const partial = `${payload}0`;\n const remainder = luhnChecksum(partial);\n const check = (10 - remainder) % 10;\n return `${payload}${String(check)}`;\n};\n\n/** Credit Card Number (Luhn). */\nconst creditCard: Validator = {\n name: \"Credit Card Number\",\n localName: \"Credit Card Number\",\n abbreviation: \"CC\",\n aliases: [\n \"credit card\",\n \"card number\",\n \"kreditní karta\",\n \"Kreditkarte\",\n ] as const,\n candidatePattern: \"(?:\\\\d[\\\\s-]?){13,19}\",\n entityType: \"any\",\n sourceUrl: \"https://www.iso.org/standard/70484.html\",\n examples: [\n \"4111111111111111\",\n \"5500000000000004\",\n ] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default creditCard;\nexport { compact, detectNetwork, format, validate };\nexport type { CardNetwork };\n"],"mappings":";;;;;;;;;;;;;;;;AAoCA,MAAM,WAAW,UACf,MAAM,OAAO,MAAM;AAErB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,SAAS,MAAM,EAAE,SAAS,GAC9B,QAAO,IACL,kBACA,0CACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,8CACD;AAEH,KAAI,CAAC,aAAa,EAAE,CAClB,QAAO,IACL,oBACA,sCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,MAAM,EAAE,OAAO,IAC9B,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;CAG1D,MAAM,SAAmB,EAAE;AAC3B,MAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,EACjC,QAAO,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;AAEhC,QAAO,OAAO,KAAK,IAAI;;AAGzB,MAAM,mBAAsC;CAC1C;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CACjD;;;;;;;;AASD,MAAM,iBACJ,UACuB;CACvB,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EAAG,QAAO;AAC3B,KAAI,CAAC,SAAS,EAAE,CAAE,QAAO;CAEzB,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAGhC,KAAI,OAAO,MAAM,OAAO,GAAI,QAAO;AAGnC,KAAI,OAAO,MAAM,OAAO,GAAI,QAAO;AACnC,KAAI,MAAM,OAAO,MAAM,IAAK,QAAO;AAGnC,KAAI,MAAM,QAAQ,MAAM,KAAM,QAAO;AAGrC,KAAI,EAAE,OAAO,IAAK,QAAO;AAIzB,KAAI,iBAAiB,SAAS,GAAG,CAAE,QAAO;AAG1C,KAAI,MAAM,MAAM,MAAM,GAAI,QAAO;AACjC,KAAI,MAAM,QAAQ,MAAM,KAAM,QAAO;AAGrC,KAAI,OAAO,KAAM,QAAO;AACxB,KAAI,MAAM,UAAU,MAAM,OAAQ,QAAO;AACzC,KAAI,MAAM,OAAO,MAAM,IAAK,QAAO;AACnC,KAAI,OAAO,GAAI,QAAO;AAItB,KAAI,OAAO,GAAI,QAAO;AAEtB,QAAO;;;;;;AAOT,MAAM,gBAAgB;CACpB,CAAC,KAAK,GAAG;CACT,CAAC,MAAM,GAAG;CACV,CAAC,MAAM,GAAG;CACV,CAAC,MAAM,GAAG;CACV,CAAC,MAAM,GAAG;CACV,CAAC,MAAM,GAAG;CACX;;;;;AAMD,MAAM,iBAAyB;CAE7B,MAAM,CAAC,QAAQ,UAAU,cADb,UAAU,GAAG,cAAc,SAAS,EAAE;CAKlD,MAAM,UAAU,GAAG,SAAS,aADV,SAAS,OAAO,SAAS,EACQ;CAGnD,MAAM,SAAS,KADG,aADF,GAAG,QAAQ,GACY,IACN;AACjC,QAAO,GAAG,UAAU,OAAO,MAAM;;;AAInC,MAAM,aAAwB;CAC5B,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACA;EACD;CACD,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,UAAU,CACR,oBACA,mBACD;CACD;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import ni from "./ni.js";
3
+
4
+ //#region src/cu/mod.d.ts
5
+
6
+ //#endregion
7
+ export { mod_d_exports, ni };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/cu/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import ni from "./ni.js";
3
+ //#region src/cu/mod.ts
4
+ var cu_exports = /* @__PURE__ */ __exportAll({ ni: () => ni });
5
+ //#endregion
6
+ export { cu_exports, ni };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/cu/mod.ts"],"sourcesContent":["export { default as ni } from \"./ni\";\n"],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { ParsedPersonId, ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/cu/ni.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 Cuban NI.
10
+ * Returns null if the value is not valid.
11
+ */
12
+ declare const parse: (value: string) => ParsedPersonId | null;
13
+ /**
14
+ * Cuban identity card number (NI).
15
+ *
16
+ * Examples sourced from python-stdnum test suite.
17
+ */
18
+ declare const ni: Validator;
19
+ //#endregion
20
+ export { compact, ni as default, format, parse, validate };
21
+ //# sourceMappingURL=ni.d.ts.map
package/dist/cu/ni.js ADDED
@@ -0,0 +1,90 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { err } from "../_util/result.js";
3
+ import { isValidDate } from "../_util/date.js";
4
+ //#region src/cu/ni.ts
5
+ /**
6
+ * NI (Número de Identidad, Cuban identity card number).
7
+ *
8
+ * 11 digits encoding birth date, century, sequence, and
9
+ * gender. Structure: YYMMDDXNNNN where:
10
+ * - YYMMDD = birth date
11
+ * - X = century digit (9=1800s, 0-5=1900s, 6-8=2000s)
12
+ * - NNNN = sequence (digit at position 9 encodes gender:
13
+ * even=male, odd=female)
14
+ *
15
+ * No check digit; validation is by date and format only.
16
+ *
17
+ * Ported from python-stdnum cu.ni module.
18
+ *
19
+ * @see https://www.ecured.cu/Carnet_de_Identidad
20
+ */
21
+ const compact = (value) => clean(value, " -").trim();
22
+ /**
23
+ * Derive the full birth year from the two-digit year
24
+ * and the century indicator at position 6.
25
+ */
26
+ const centuryOffset = (digit) => {
27
+ if (digit === "9") return 1800;
28
+ if (digit >= "0" && digit <= "5") return 1900;
29
+ return 2e3;
30
+ };
31
+ const validate = (value) => {
32
+ const v = compact(value);
33
+ if (v.length !== 11) return err("INVALID_LENGTH", "Cuban NI must be 11 digits");
34
+ if (!/^\d{11}$/.test(v)) return err("INVALID_FORMAT", "Cuban NI must contain only digits");
35
+ const yy = Number(v.slice(0, 2));
36
+ const mm = Number(v.slice(2, 4));
37
+ const dd = Number(v.slice(4, 6));
38
+ if (!isValidDate(centuryOffset(v[6]) + yy, mm, dd)) return err("INVALID_COMPONENT", "Cuban NI contains an invalid birth date");
39
+ return {
40
+ valid: true,
41
+ compact: v
42
+ };
43
+ };
44
+ const format = (value) => compact(value);
45
+ /**
46
+ * Extract birth date and gender from a Cuban NI.
47
+ * Returns null if the value is not valid.
48
+ */
49
+ const parse = (value) => {
50
+ const result = validate(value);
51
+ if (!result.valid) return null;
52
+ const v = result.compact;
53
+ const yy = Number(v.slice(0, 2));
54
+ const mm = Number(v.slice(2, 4));
55
+ const dd = Number(v.slice(4, 6));
56
+ const year = centuryOffset(v[6]) + yy;
57
+ const gender = Number(v[9]) % 2 === 0 ? "male" : "female";
58
+ return {
59
+ birthDate: new Date(year, mm - 1, dd),
60
+ gender
61
+ };
62
+ };
63
+ /**
64
+ * Cuban identity card number (NI).
65
+ *
66
+ * Examples sourced from python-stdnum test suite.
67
+ */
68
+ const ni = {
69
+ name: "Cuban Identity Card Number",
70
+ localName: "Número de Identidad",
71
+ abbreviation: "NI",
72
+ aliases: [
73
+ "NI",
74
+ "número de identidad",
75
+ "carnet de identidad"
76
+ ],
77
+ candidatePattern: "\\d{11}",
78
+ country: "CU",
79
+ entityType: "person",
80
+ lengths: [11],
81
+ examples: ["91021027775", "72062506561"],
82
+ compact,
83
+ format,
84
+ validate,
85
+ sourceUrl: "https://www.ecured.cu/Carnet_de_Identidad"
86
+ };
87
+ //#endregion
88
+ export { compact, ni as default, format, parse, validate };
89
+
90
+ //# sourceMappingURL=ni.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ni.js","names":[],"sources":["../../src/cu/ni.ts"],"sourcesContent":["/**\n * NI (Número de Identidad, Cuban identity card number).\n *\n * 11 digits encoding birth date, century, sequence, and\n * gender. Structure: YYMMDDXNNNN where:\n * - YYMMDD = birth date\n * - X = century digit (9=1800s, 0-5=1900s, 6-8=2000s)\n * - NNNN = sequence (digit at position 9 encodes gender:\n * even=male, odd=female)\n *\n * No check digit; validation is by date and format only.\n *\n * Ported from python-stdnum cu.ni module.\n *\n * @see https://www.ecured.cu/Carnet_de_Identidad\n */\n\nimport { clean } from \"#util/clean\";\nimport { isValidDate } from \"#util/date\";\nimport { err } from \"#util/result\";\n\nimport type {\n ParsedPersonId,\n ValidateResult,\n Validator,\n} from \"../types\";\n\nconst compact = (value: string): string =>\n clean(value, \" -\").trim();\n\n/**\n * Derive the full birth year from the two-digit year\n * and the century indicator at position 6.\n */\nconst centuryOffset = (digit: string): number => {\n if (digit === \"9\") return 1800;\n if (digit >= \"0\" && digit <= \"5\") return 1900;\n return 2000;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"Cuban NI must be 11 digits\",\n );\n }\n\n if (!/^\\d{11}$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Cuban NI must contain only digits\",\n );\n }\n\n const yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n const year = centuryOffset(v[6]!) + yy;\n\n if (!isValidDate(year, mm, dd)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Cuban NI contains an invalid birth date\",\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 a Cuban NI.\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 const yy = Number(v.slice(0, 2));\n const mm = Number(v.slice(2, 4));\n const dd = Number(v.slice(4, 6));\n const year = centuryOffset(v[6]!) + yy;\n\n const genderDigit = Number(v[9]);\n const gender: \"male\" | \"female\" =\n genderDigit % 2 === 0 ? \"male\" : \"female\";\n\n return {\n birthDate: new Date(year, mm - 1, dd),\n gender,\n };\n};\n\n/**\n * Cuban identity card number (NI).\n *\n * Examples sourced from python-stdnum test suite.\n */\nconst ni: Validator = {\n name: \"Cuban Identity Card Number\",\n localName: \"Número de Identidad\",\n abbreviation: \"NI\",\n aliases: [\n \"NI\",\n \"número de identidad\",\n \"carnet de identidad\",\n ] as const,\n candidatePattern: \"\\\\d{11}\",\n country: \"CU\",\n entityType: \"person\",\n lengths: [11] as const,\n examples: [\"91021027775\", \"72062506561\"] as const,\n compact,\n format,\n validate,\n sourceUrl: \"https://www.ecured.cu/Carnet_de_Identidad\",\n};\n\nexport default ni;\nexport { compact, format, parse, validate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,MAAM;;;;;AAM3B,MAAM,iBAAiB,UAA0B;AAC/C,KAAI,UAAU,IAAK,QAAO;AAC1B,KAAI,SAAS,OAAO,SAAS,IAAK,QAAO;AACzC,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,6BACD;AAGH,KAAI,CAAC,WAAW,KAAK,EAAE,CACrB,QAAO,IACL,kBACA,oCACD;CAGH,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AAGhC,KAAI,CAAC,YAFQ,cAAc,EAAE,GAAI,GAAG,IAEb,IAAI,GAAG,CAC5B,QAAO,IACL,qBACA,0CACD;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;CACjB,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CAChC,MAAM,OAAO,cAAc,EAAE,GAAI,GAAG;CAGpC,MAAM,SADc,OAAO,EAAE,GAAG,GAEhB,MAAM,IAAI,SAAS;AAEnC,QAAO;EACL,WAAW,IAAI,KAAK,MAAM,KAAK,GAAG,GAAG;EACrC;EACD;;;;;;;AAQH,MAAM,KAAgB;CACpB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EACP;EACA;EACA;EACD;CACD,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG;CACb,UAAU,CAAC,eAAe,cAAc;CACxC;CACA;CACA;CACA,WAAW;CACZ"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import vat from "./vat.js";
3
+
4
+ //#region src/cy/mod.d.ts
5
+
6
+ //#endregion
7
+ export { mod_d_exports, vat };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/cy/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import vat from "./vat.js";
3
+ //#region src/cy/mod.ts
4
+ var cy_exports = /* @__PURE__ */ __exportAll({ vat: () => vat });
5
+ //#endregion
6
+ export { cy_exports, vat };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/cy/mod.ts"],"sourcesContent":["export { default as vat } from \"./vat\";\n"],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/cy/vat.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 Cypriot VAT number. */
9
+ declare const generate: () => string;
10
+ /** Cypriot VAT Number. */
11
+ declare const vat: Validator;
12
+ //#endregion
13
+ export { compact, vat as default, format, generate, validate };
14
+ //# sourceMappingURL=vat.d.ts.map
package/dist/cy/vat.js ADDED
@@ -0,0 +1,88 @@
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/cy/vat.ts
6
+ /**
7
+ * ΦΠΑ (Cypriot VAT number).
8
+ *
9
+ * 8 digits + 1 check letter. Cannot start with "12".
10
+ *
11
+ * @see https://www.vatify.eu/cyprus-vat-number.html
12
+ * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/cyprus-tin.pdf
13
+ */
14
+ const ODD_MAP = {
15
+ 0: 1,
16
+ 1: 0,
17
+ 2: 5,
18
+ 3: 7,
19
+ 4: 9,
20
+ 5: 13,
21
+ 6: 15,
22
+ 7: 17,
23
+ 8: 19,
24
+ 9: 21
25
+ };
26
+ const LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
27
+ const compact = (value) => {
28
+ let v = clean(value, " -/.");
29
+ if (v.startsWith("CY") || v.startsWith("cy")) v = v.slice(2);
30
+ return v.toUpperCase();
31
+ };
32
+ const validate = (value) => {
33
+ const v = compact(value);
34
+ if (v.length !== 9) return err("INVALID_LENGTH", "Cypriot VAT number must be 8 digits + 1 letter");
35
+ const digits = v.slice(0, 8);
36
+ const checkLetter = v[8];
37
+ if (!isdigits(digits)) return err("INVALID_FORMAT", "Cypriot VAT number must start with 8 digits");
38
+ if (checkLetter === void 0 || !LETTERS.includes(checkLetter)) return err("INVALID_FORMAT", "Cypriot VAT number must end with a letter");
39
+ if (v.startsWith("12")) return err("INVALID_COMPONENT", "Cypriot VAT number cannot start with 12");
40
+ let odd = 0;
41
+ let even = 0;
42
+ for (let i = 0; i < 8; i++) {
43
+ const d = Number(digits.charAt(i));
44
+ if (i % 2 === 0) odd += ODD_MAP[d] ?? 0;
45
+ else even += d;
46
+ }
47
+ if (checkLetter !== LETTERS.charAt((odd + even) % 26)) return err("INVALID_CHECKSUM", "Cypriot VAT number check letter mismatch");
48
+ return {
49
+ valid: true,
50
+ compact: v
51
+ };
52
+ };
53
+ const format = (value) => `CY${compact(value)}`;
54
+ /** Generate a random valid Cypriot VAT number. */
55
+ const generate = () => {
56
+ for (;;) {
57
+ const digits = randomDigits(8);
58
+ if (digits.startsWith("12")) continue;
59
+ let odd = 0;
60
+ let even = 0;
61
+ for (let i = 0; i < 8; i++) {
62
+ const d = Number(digits.charAt(i));
63
+ if (i % 2 === 0) odd += ODD_MAP[d] ?? 0;
64
+ else even += d;
65
+ }
66
+ return digits + LETTERS.charAt((odd + even) % 26);
67
+ }
68
+ };
69
+ /** Cypriot VAT Number. */
70
+ const vat = {
71
+ name: "Cypriot VAT Number",
72
+ localName: "Αριθμός Εγγραφής Φ.Π.Α.",
73
+ abbreviation: "ΦΠΑ",
74
+ aliases: ["ΦΠΑ", "VAT CY"],
75
+ candidatePattern: "CY\\d{8}[A-Z]",
76
+ country: "CY",
77
+ entityType: "company",
78
+ sourceUrl: "https://www.mof.gov.cy/",
79
+ examples: ["10259033P"],
80
+ compact,
81
+ format,
82
+ validate,
83
+ generate
84
+ };
85
+ //#endregion
86
+ export { compact, vat as default, format, generate, validate };
87
+
88
+ //# sourceMappingURL=vat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vat.js","names":[],"sources":["../../src/cy/vat.ts"],"sourcesContent":["/**\n * ΦΠΑ (Cypriot VAT number).\n *\n * 8 digits + 1 check letter. Cannot start with \"12\".\n *\n * @see https://www.vatify.eu/cyprus-vat-number.html\n * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/cyprus-tin.pdf\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 ODD_MAP: Record<number, number> = {\n 0: 1,\n 1: 0,\n 2: 5,\n 3: 7,\n 4: 9,\n 5: 13,\n 6: 15,\n 7: 17,\n 8: 19,\n 9: 21,\n};\n\nconst LETTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" -/.\");\n if (v.startsWith(\"CY\") || v.startsWith(\"cy\")) {\n v = v.slice(2);\n }\n return v.toUpperCase();\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Cypriot VAT number must be 8 digits + 1 letter\",\n );\n }\n const digits = v.slice(0, 8);\n const checkLetter = v[8];\n if (!isdigits(digits)) {\n return err(\n \"INVALID_FORMAT\",\n \"Cypriot VAT number must start with 8 digits\",\n );\n }\n if (\n checkLetter === undefined ||\n !LETTERS.includes(checkLetter)\n ) {\n return err(\n \"INVALID_FORMAT\",\n \"Cypriot VAT number must end with a letter\",\n );\n }\n if (v.startsWith(\"12\")) {\n return err(\n \"INVALID_COMPONENT\",\n \"Cypriot VAT number cannot start with 12\",\n );\n }\n let odd = 0;\n let even = 0;\n for (let i = 0; i < 8; i++) {\n const d = Number(digits.charAt(i));\n if (i % 2 === 0) {\n // Odd position (1-indexed: 1,3,5,7)\n odd += ODD_MAP[d] ?? 0;\n } else {\n // Even position (1-indexed: 2,4,6,8)\n even += d;\n }\n }\n const expected = LETTERS.charAt((odd + even) % 26);\n if (checkLetter !== expected) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Cypriot VAT number check letter mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string =>\n `CY${compact(value)}`;\n\n/** Generate a random valid Cypriot VAT number. */\nconst generate = (): string => {\n for (;;) {\n const digits = randomDigits(8);\n if (digits.startsWith(\"12\")) continue;\n let odd = 0;\n let even = 0;\n for (let i = 0; i < 8; i++) {\n const d = Number(digits.charAt(i));\n if (i % 2 === 0) odd += ODD_MAP[d] ?? 0;\n else even += d;\n }\n return digits + LETTERS.charAt((odd + even) % 26);\n }\n};\n\n/** Cypriot VAT Number. */\nconst vat: Validator = {\n name: \"Cypriot VAT Number\",\n localName: \"Αριθμός Εγγραφής Φ.Π.Α.\",\n abbreviation: \"ΦΠΑ\",\n aliases: [\"ΦΠΑ\", \"VAT CY\"] as const,\n candidatePattern: \"CY\\\\d{8}[A-Z]\",\n country: \"CY\",\n entityType: \"company\",\n sourceUrl: \"https://www.mof.gov.cy/\",\n examples: [\"10259033P\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default vat;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,UAAkC;CACtC,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACJ;AAED,MAAM,UAAU;AAEhB,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,OAAO;AAC5B,KAAI,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,CAC1C,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO,EAAE,aAAa;;AAGxB,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,iDACD;CAEH,MAAM,SAAS,EAAE,MAAM,GAAG,EAAE;CAC5B,MAAM,cAAc,EAAE;AACtB,KAAI,CAAC,SAAS,OAAO,CACnB,QAAO,IACL,kBACA,8CACD;AAEH,KACE,gBAAgB,KAAA,KAChB,CAAC,QAAQ,SAAS,YAAY,CAE9B,QAAO,IACL,kBACA,4CACD;AAEH,KAAI,EAAE,WAAW,KAAK,CACpB,QAAO,IACL,qBACA,0CACD;CAEH,IAAI,MAAM;CACV,IAAI,OAAO;AACX,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;EAC1B,MAAM,IAAI,OAAO,OAAO,OAAO,EAAE,CAAC;AAClC,MAAI,IAAI,MAAM,EAEZ,QAAO,QAAQ,MAAM;MAGrB,SAAQ;;AAIZ,KAAI,gBADa,QAAQ,QAAQ,MAAM,QAAQ,GAAG,CAEhD,QAAO,IACL,oBACA,2CACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UACd,KAAK,QAAQ,MAAM;;AAGrB,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,SAAS,aAAa,EAAE;AAC9B,MAAI,OAAO,WAAW,KAAK,CAAE;EAC7B,IAAI,MAAM;EACV,IAAI,OAAO;AACX,OAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;GAC1B,MAAM,IAAI,OAAO,OAAO,OAAO,EAAE,CAAC;AAClC,OAAI,IAAI,MAAM,EAAG,QAAO,QAAQ,MAAM;OACjC,SAAQ;;AAEf,SAAO,SAAS,QAAQ,QAAQ,MAAM,QAAQ,GAAG;;;;AAKrD,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,SAAS;CAC1B,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,YAAY;CACvB;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/cz/dic.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 8-digit DIČ. */
9
+ declare const generate: () => string;
10
+ /** Czech VAT Number. */
11
+ declare const dic: Validator;
12
+ //#endregion
13
+ export { compact, dic as default, format, generate, validate };
14
+ //# sourceMappingURL=dic.d.ts.map
package/dist/cz/dic.js ADDED
@@ -0,0 +1,97 @@
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
+ import { weightedSum } from "../_checksums/weighted-sum.js";
6
+ import { validate as validate$1 } from "./rc.js";
7
+ //#region src/cz/dic.ts
8
+ /**
9
+ * DIČ (Daňové identifikační číslo).
10
+ *
11
+ * Czech tax identification number / VAT number.
12
+ * Format: "CZ" prefix + 8, 9, or 10 digits.
13
+ * - 8 digits: company (same checksum as IČO,
14
+ * but first digit cannot be 9)
15
+ * - 9 digits starting with 6: special entity
16
+ * - 9-10 digits: individual (birth number)
17
+ *
18
+ * @see https://adisspr.mfcr.cz/dpr/DphReg
19
+ */
20
+ const ICO_WEIGHTS = [
21
+ 8,
22
+ 7,
23
+ 6,
24
+ 5,
25
+ 4,
26
+ 3,
27
+ 2
28
+ ];
29
+ const compact = (value) => {
30
+ const v = clean(value, " -");
31
+ if (v.startsWith("CZ") || v.startsWith("cz")) return v.slice(2);
32
+ return v;
33
+ };
34
+ const checkLegal = (value) => {
35
+ const v11 = (11 - weightedSum(value.slice(0, 7), ICO_WEIGHTS, 11)) % 11;
36
+ return (v11 === 0 ? 1 : v11 % 10) === Number(value[7]);
37
+ };
38
+ const checkSpecial = (value) => {
39
+ return ((8 - ((10 - weightedSum(value.slice(1, 8), [
40
+ 8,
41
+ 7,
42
+ 6,
43
+ 5,
44
+ 4,
45
+ 3,
46
+ 2
47
+ ], 11)) % 11 + 11) % 11) % 10 + 10) % 10 === Number(value[8]);
48
+ };
49
+ const validate = (value) => {
50
+ const v = compact(value);
51
+ if (v.length < 8 || v.length > 10) return err("INVALID_LENGTH", "DIČ must be 8-10 digits (without CZ prefix)");
52
+ if (!isdigits(v)) return err("INVALID_FORMAT", "DIČ must contain only digits");
53
+ if (v.length === 8) {
54
+ if (v[0] === "9") return err("INVALID_COMPONENT", "8-digit DIČ cannot start with 9");
55
+ if (!checkLegal(v)) return err("INVALID_CHECKSUM", "DIČ check digit does not match");
56
+ return {
57
+ valid: true,
58
+ compact: v
59
+ };
60
+ }
61
+ if (v.length === 9 && v[0] === "6") {
62
+ if (!checkSpecial(v)) return err("INVALID_CHECKSUM", "DIČ special entity check digit mismatch");
63
+ return {
64
+ valid: true,
65
+ compact: v
66
+ };
67
+ }
68
+ return validate$1(v);
69
+ };
70
+ const format = (value) => `CZ${compact(value)}`;
71
+ /** Generate a random valid 8-digit DIČ. */
72
+ const generate = () => {
73
+ const payload = String(randomInt(1, 8)) + randomDigits(6);
74
+ const v11 = (11 - weightedSum(payload, ICO_WEIGHTS, 11)) % 11;
75
+ const check = v11 === 0 ? 1 : v11 % 10;
76
+ return payload + String(check);
77
+ };
78
+ /** Czech VAT Number. */
79
+ const dic = {
80
+ name: "Czech VAT Number",
81
+ localName: "Daňové identifikační číslo",
82
+ abbreviation: "DIČ",
83
+ aliases: ["DIČ", "daňové identifikační číslo"],
84
+ candidatePattern: "CZ\\d{8,10}",
85
+ country: "CZ",
86
+ entityType: "any",
87
+ sourceUrl: "https://adisspr.mfcr.cz/dpr/DphReg",
88
+ examples: ["25123891", "7103192745"],
89
+ compact,
90
+ format,
91
+ validate,
92
+ generate
93
+ };
94
+ //#endregion
95
+ export { compact, dic as default, format, generate, validate };
96
+
97
+ //# sourceMappingURL=dic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dic.js","names":["validateRc"],"sources":["../../src/cz/dic.ts"],"sourcesContent":["/**\n * DIČ (Daňové identifikační číslo).\n *\n * Czech tax identification number / VAT number.\n * Format: \"CZ\" prefix + 8, 9, or 10 digits.\n * - 8 digits: company (same checksum as IČO,\n * but first digit cannot be 9)\n * - 9 digits starting with 6: special entity\n * - 9-10 digits: individual (birth number)\n *\n * @see https://adisspr.mfcr.cz/dpr/DphReg\n */\n\nimport { weightedSum } from \"#checksums/weighted-sum\";\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\";\nimport { validate as validateRc } from \"./rc\";\n\nconst ICO_WEIGHTS = [8, 7, 6, 5, 4, 3, 2] as const;\n\nconst compact = (value: string): string => {\n const v = clean(value, \" -\");\n if (v.startsWith(\"CZ\") || v.startsWith(\"cz\")) {\n return v.slice(2);\n }\n return v;\n};\n\nconst checkLegal = (value: string): boolean => {\n const sum = weightedSum(\n value.slice(0, 7),\n ICO_WEIGHTS,\n 11,\n );\n const v11 = (11 - sum) % 11;\n const check = v11 === 0 ? 1 : v11 % 10;\n return check === Number(value[7]);\n};\n\nconst checkSpecial = (value: string): boolean => {\n // Skip the leading \"6\"; check digits 1..7\n const sum = weightedSum(\n value.slice(1, 8),\n [8, 7, 6, 5, 4, 3, 2],\n 11,\n );\n const check =\n (((8 - ((((10 - sum) % 11) + 11) % 11)) % 10) + 10) %\n 10;\n return check === Number(value[8]);\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length < 8 || v.length > 10) {\n return err(\n \"INVALID_LENGTH\",\n \"DIČ must be 8-10 digits (without CZ prefix)\",\n );\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"DIČ must contain only digits\",\n );\n }\n\n // 8-digit: legal entity (IČO-like checksum)\n if (v.length === 8) {\n if (v[0] === \"9\") {\n return err(\n \"INVALID_COMPONENT\",\n \"8-digit DIČ cannot start with 9\",\n );\n }\n if (!checkLegal(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"DIČ check digit does not match\",\n );\n }\n return { valid: true, compact: v };\n }\n\n // 9-digit starting with 6: special entity\n if (v.length === 9 && v[0] === \"6\") {\n if (!checkSpecial(v)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"DIČ special entity check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n }\n\n // 9-10 digit: birth number\n return validateRc(v);\n};\n\nconst format = (value: string): string =>\n `CZ${compact(value)}`;\n\n/** Generate a random valid 8-digit DIČ. */\nconst generate = (): string => {\n const first = String(randomInt(1, 8));\n const payload = first + randomDigits(6);\n const sum = weightedSum(payload, ICO_WEIGHTS, 11);\n const v11 = (11 - sum) % 11;\n const check = v11 === 0 ? 1 : v11 % 10;\n return payload + String(check);\n};\n\n/** Czech VAT Number. */\nconst dic: Validator = {\n name: \"Czech VAT Number\",\n localName: \"Daňové identifikační číslo\",\n abbreviation: \"DIČ\",\n aliases: [\"DIČ\", \"daňové identifikační číslo\"] as const,\n candidatePattern: \"CZ\\\\d{8,10}\",\n country: \"CZ\",\n entityType: \"any\",\n sourceUrl: \"https://adisspr.mfcr.cz/dpr/DphReg\",\n examples: [\"25123891\", \"7103192745\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default dic;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,MAAM,cAAc;CAAC;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAE;AAEzC,MAAM,WAAW,UAA0B;CACzC,MAAM,IAAI,MAAM,OAAO,KAAK;AAC5B,KAAI,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,KAAK,CAC1C,QAAO,EAAE,MAAM,EAAE;AAEnB,QAAO;;AAGT,MAAM,cAAc,UAA2B;CAM7C,MAAM,OAAO,KALD,YACV,MAAM,MAAM,GAAG,EAAE,EACjB,aACA,GACD,IACwB;AAEzB,SADc,QAAQ,IAAI,IAAI,MAAM,QACnB,OAAO,MAAM,GAAG;;AAGnC,MAAM,gBAAgB,UAA2B;AAU/C,UAFK,MAAQ,KAND,YACV,MAAM,MAAM,GAAG,EAAE,EACjB;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAE,EACrB,GACD,IAEwB,KAAM,MAAM,MAAO,KAAM,MAChD,OACe,OAAO,MAAM,GAAG;;AAGnC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,SAAS,KAAK,EAAE,SAAS,GAC7B,QAAO,IACL,kBACA,8CACD;AAEH,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;AAIH,KAAI,EAAE,WAAW,GAAG;AAClB,MAAI,EAAE,OAAO,IACX,QAAO,IACL,qBACA,kCACD;AAEH,MAAI,CAAC,WAAW,EAAE,CAChB,QAAO,IACL,oBACA,iCACD;AAEH,SAAO;GAAE,OAAO;GAAM,SAAS;GAAG;;AAIpC,KAAI,EAAE,WAAW,KAAK,EAAE,OAAO,KAAK;AAClC,MAAI,CAAC,aAAa,EAAE,CAClB,QAAO,IACL,oBACA,0CACD;AAEH,SAAO;GAAE,OAAO;GAAM,SAAS;GAAG;;AAIpC,QAAOA,WAAW,EAAE;;AAGtB,MAAM,UAAU,UACd,KAAK,QAAQ,MAAM;;AAGrB,MAAM,iBAAyB;CAE7B,MAAM,UADQ,OAAO,UAAU,GAAG,EAAE,CAAC,GACb,aAAa,EAAE;CAEvC,MAAM,OAAO,KADD,YAAY,SAAS,aAAa,GAAG,IACxB;CACzB,MAAM,QAAQ,QAAQ,IAAI,IAAI,MAAM;AACpC,QAAO,UAAU,OAAO,MAAM;;;AAIhC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,6BAA6B;CAC9C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,YAAY,aAAa;CACpC;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/cz/ico.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 ICO. */
9
+ declare const generate: () => string;
10
+ /** Czech Company Identification Number. */
11
+ declare const ico: Validator;
12
+ //#endregion
13
+ export { compact, ico as default, format, generate, validate };
14
+ //# sourceMappingURL=ico.d.ts.map