@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":"bic.js","names":[],"sources":["../src/bic.ts"],"sourcesContent":["/** Generate a random valid BIC (8-character). */\nconst generate = (): string => {\n const randomLetter = (): string =>\n String.fromCodePoint(65 + randomInt(0, 25));\n const randomAlphaNum = (): string => {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n return chars[randomInt(0, chars.length - 1)]!;\n };\n const countries = [\n \"DE\",\n \"GB\",\n \"US\",\n \"FR\",\n \"CH\",\n \"NL\",\n \"AT\",\n ];\n const country =\n countries[randomInt(0, countries.length - 1)]!;\n const bank =\n randomLetter() +\n randomLetter() +\n randomLetter() +\n randomLetter();\n const location = randomAlphaNum() + randomAlphaNum();\n return `${bank}${country}${location}`;\n};\n\n/**\n * BIC (Business Identifier Code).\n *\n * ISO 9362. 8 or 11 character code identifying\n * financial institutions. Format:\n * [A-Z]{4} (institution) + [A-Z]{2} (country) +\n * [0-9A-Z]{2} (location) + [0-9A-Z]{3} (branch,\n * optional).\n *\n * @see https://www.swift.com/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\n\nimport type { ValidateResult, Validator } from \"./types\";\n\nconst BIC_RE =\n /^[A-Z]{4}[A-Z]{2}[0-9A-Z]{2}([0-9A-Z]{3})?$/;\n\nconst compact = (value: string): string =>\n clean(value, \" -\").toUpperCase();\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 8 && v.length !== 11) {\n return err(\n \"INVALID_LENGTH\",\n \"BIC must be 8 or 11 characters\",\n );\n }\n if (!BIC_RE.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"BIC must be 8 or 11 alphanumeric characters\",\n );\n }\n // Country code at positions 4-5 is already\n // validated as [A-Z]{2} by the regex above.\n // SWIFT accepts all ISO 3166-1 alpha-2 codes\n // plus XK (Kosovo); we don't restrict further.\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length === 11) {\n return `${v.slice(0, 4)} ${v.slice(4, 6)} ${v.slice(6, 8)} ${v.slice(8)}`;\n }\n return `${v.slice(0, 4)} ${v.slice(4, 6)} ${v.slice(6)}`;\n};\n\n/** Business Identifier Code (SWIFT/BIC). */\nconst bic: Validator = {\n name: \"Business Identifier Code\",\n localName: \"Business Identifier Code\",\n abbreviation: \"BIC\",\n aliases: [\"BIC\", \"SWIFT\", \"BIC/SWIFT\"] as const,\n candidatePattern: \"[A-Z]{6}[A-Z0-9]{2}(?:[A-Z0-9]{3})?\",\n entityType: \"company\",\n sourceUrl: \"https://www.swift.com/\",\n examples: [\"DEUTDEFF\", \"DEUTDEFF500\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default bic;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;AACA,MAAM,iBAAyB;CAC7B,MAAM,qBACJ,OAAO,cAAc,KAAK,UAAU,GAAG,GAAG,CAAC;CAC7C,MAAM,uBAA+B;AAEnC,SADc,uCACD,UAAU,GAAG,GAAiB;;CAE7C,MAAM,YAAY;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,MAAM,UACJ,UAAU,UAAU,GAAG,UAAU,SAAS,EAAE;AAO9C,QAAO,GALL,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,GAEC,UADA,gBAAgB,GAAG,gBAAgB;;AAsBtD,MAAM,SACJ;AAEF,MAAM,WAAW,UACf,MAAM,OAAO,KAAK,CAAC,aAAa;AAElC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,GACjC,QAAO,IACL,kBACA,iCACD;AAEH,KAAI,CAAC,OAAO,KAAK,EAAE,CACjB,QAAO,IACL,kBACA,8CACD;AAMH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;AAEzE,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;AAIxD,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS;EAAC;EAAO;EAAS;EAAY;CACtC,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,YAAY,cAAc;CACrC;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,21 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/br/cnpj.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 CNPJ. */
9
+ declare const generate: () => string;
10
+ /**
11
+ * Brazilian CNPJ (company tax ID).
12
+ *
13
+ * Examples sourced from publicly available Brazilian
14
+ * corporate registries:
15
+ * - Petrobras: 33.000.167/0001-01
16
+ * - Banco do Brasil: 00.000.000/0001-91
17
+ */
18
+ declare const cnpj: Validator;
19
+ //#endregion
20
+ export { compact, cnpj as default, format, generate, validate };
21
+ //# sourceMappingURL=cnpj.d.ts.map
@@ -0,0 +1,132 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { randomDigits } from "../_util/generate.js";
3
+ import { err } from "../_util/result.js";
4
+ //#region src/br/cnpj.ts
5
+ /**
6
+ * CNPJ (Cadastro Nacional da Pessoa Jurídica).
7
+ *
8
+ * Brazilian company tax identification number assigned by
9
+ * the Receita Federal (Federal Revenue Service). The
10
+ * number consists of 14 characters: 8 identifying the
11
+ * company, 4 identifying the establishment (0001 for
12
+ * headquarters), and 2 check digits computed using a
13
+ * weighted modulo 11 algorithm.
14
+ *
15
+ * As of July 2026 the Receita Federal will begin issuing
16
+ * alphanumeric CNPJs (letters A-Z in place of some
17
+ * digits). The check digit algorithm uses ordinal values
18
+ * (0-9 = 0-9, A-Z = 17-42) to support this.
19
+ *
20
+ * Format: NN.NNN.NNN/NNNN-DD (14 characters).
21
+ *
22
+ * @see https://www.gov.br/en/categories/finance-taxes-and-public-management/cpf-cnpj-and-other-records
23
+ * @see https://en.wikipedia.org/wiki/CNPJ
24
+ */
25
+ const CNPJ_RE = /^[\dA-Z]+$/;
26
+ const compact = (value) => clean(value, " -./").trim().toUpperCase();
27
+ /**
28
+ * Convert a CNPJ character to its numeric value.
29
+ * Digits 0-9 map to 0-9; letters A-Z map to their
30
+ * char code minus 48 (matching python-stdnum's
31
+ * `ord(n) - 48` convention: A=17, B=18, ..., Z=42).
32
+ */
33
+ const charToValue = (ch) => ch.charCodeAt(0) - 48;
34
+ /**
35
+ * Calculate the two CNPJ check digits using the
36
+ * Receita Federal modulo 11 algorithm.
37
+ *
38
+ * First check digit: weights [5,4,3,2,9,8,7,6,5,4,3,2]
39
+ * applied to the first 12 characters.
40
+ *
41
+ * Second check digit: weights [6,5,4,3,2,9,8,7,6,5,4,3,2]
42
+ * applied to the first 12 characters plus the first
43
+ * check digit.
44
+ */
45
+ const calcCheckDigits = (number) => {
46
+ const w1 = [
47
+ 5,
48
+ 4,
49
+ 3,
50
+ 2,
51
+ 9,
52
+ 8,
53
+ 7,
54
+ 6,
55
+ 5,
56
+ 4,
57
+ 3,
58
+ 2
59
+ ];
60
+ let sum = 0;
61
+ for (let i = 0; i < 12; i++) sum += (w1[i] ?? 0) * charToValue(number.charAt(i));
62
+ const d1 = (11 - sum % 11) % 11 % 10;
63
+ const w2 = [
64
+ 6,
65
+ 5,
66
+ 4,
67
+ 3,
68
+ 2,
69
+ 9,
70
+ 8,
71
+ 7,
72
+ 6,
73
+ 5,
74
+ 4,
75
+ 3,
76
+ 2
77
+ ];
78
+ sum = 0;
79
+ for (let i = 0; i < 12; i++) sum += (w2[i] ?? 0) * charToValue(number.charAt(i));
80
+ sum += (w2[12] ?? 0) * d1;
81
+ return `${d1}${(11 - sum % 11) % 11 % 10}`;
82
+ };
83
+ const validate = (value) => {
84
+ const v = compact(value);
85
+ if (v.length !== 14) return err("INVALID_LENGTH", "CNPJ must be 14 characters");
86
+ if (!CNPJ_RE.test(v)) return err("INVALID_FORMAT", "CNPJ must contain only digits and uppercase letters");
87
+ if (v.startsWith("000000000000")) return err("INVALID_FORMAT", "CNPJ base must not be all zeros");
88
+ if (calcCheckDigits(v) !== v.slice(12)) return err("INVALID_CHECKSUM", "CNPJ check digit mismatch");
89
+ return {
90
+ valid: true,
91
+ compact: v
92
+ };
93
+ };
94
+ const format = (value) => {
95
+ const v = compact(value);
96
+ return `${v.slice(0, 2)}.${v.slice(2, 5)}.${v.slice(5, 8)}/${v.slice(8, 12)}-${v.slice(12)}`;
97
+ };
98
+ /** Generate a random valid CNPJ. */
99
+ const generate = () => {
100
+ for (;;) {
101
+ const base = randomDigits(12);
102
+ if (base === "000000000000") continue;
103
+ return base + calcCheckDigits(base);
104
+ }
105
+ };
106
+ /**
107
+ * Brazilian CNPJ (company tax ID).
108
+ *
109
+ * Examples sourced from publicly available Brazilian
110
+ * corporate registries:
111
+ * - Petrobras: 33.000.167/0001-01
112
+ * - Banco do Brasil: 00.000.000/0001-91
113
+ */
114
+ const cnpj = {
115
+ name: "Brazilian CNPJ",
116
+ localName: "Cadastro Nacional da Pessoa Jurídica",
117
+ abbreviation: "CNPJ",
118
+ aliases: ["CNPJ", "Cadastro Nacional da Pessoa Jurídica"],
119
+ candidatePattern: "\\d{2}\\.?\\d{3}\\.?\\d{3}/?\\d{4}-?\\d{2}",
120
+ country: "BR",
121
+ entityType: "company",
122
+ sourceUrl: "https://www.gov.br/receitafederal/",
123
+ examples: ["33000167000101", "00000000000191"],
124
+ compact,
125
+ format,
126
+ validate,
127
+ generate
128
+ };
129
+ //#endregion
130
+ export { compact, cnpj as default, format, generate, validate };
131
+
132
+ //# sourceMappingURL=cnpj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cnpj.js","names":[],"sources":["../../src/br/cnpj.ts"],"sourcesContent":["/**\n * CNPJ (Cadastro Nacional da Pessoa Jurídica).\n *\n * Brazilian company tax identification number assigned by\n * the Receita Federal (Federal Revenue Service). The\n * number consists of 14 characters: 8 identifying the\n * company, 4 identifying the establishment (0001 for\n * headquarters), and 2 check digits computed using a\n * weighted modulo 11 algorithm.\n *\n * As of July 2026 the Receita Federal will begin issuing\n * alphanumeric CNPJs (letters A-Z in place of some\n * digits). The check digit algorithm uses ordinal values\n * (0-9 = 0-9, A-Z = 17-42) to support this.\n *\n * Format: NN.NNN.NNN/NNNN-DD (14 characters).\n *\n * @see https://www.gov.br/en/categories/finance-taxes-and-public-management/cpf-cnpj-and-other-records\n * @see https://en.wikipedia.org/wiki/CNPJ\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 CNPJ_RE = /^[\\dA-Z]+$/;\n\nconst compact = (value: string): string =>\n clean(value, \" -./\").trim().toUpperCase();\n\n/**\n * Convert a CNPJ character to its numeric value.\n * Digits 0-9 map to 0-9; letters A-Z map to their\n * char code minus 48 (matching python-stdnum's\n * `ord(n) - 48` convention: A=17, B=18, ..., Z=42).\n */\nconst charToValue = (ch: string): number =>\n ch.charCodeAt(0) - 48;\n\n/**\n * Calculate the two CNPJ check digits using the\n * Receita Federal modulo 11 algorithm.\n *\n * First check digit: weights [5,4,3,2,9,8,7,6,5,4,3,2]\n * applied to the first 12 characters.\n *\n * Second check digit: weights [6,5,4,3,2,9,8,7,6,5,4,3,2]\n * applied to the first 12 characters plus the first\n * check digit.\n */\nconst calcCheckDigits = (number: string): string => {\n const w1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let sum = 0;\n for (let i = 0; i < 12; i++) {\n sum += (w1[i] ?? 0) * charToValue(number.charAt(i));\n }\n const d1 = ((11 - (sum % 11)) % 11) % 10;\n\n const w2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n sum = 0;\n for (let i = 0; i < 12; i++) {\n sum += (w2[i] ?? 0) * charToValue(number.charAt(i));\n }\n // Use the computed d1 (not the stored digit at\n // number[12]) so both check digits are derived\n // from the base alone.\n sum += (w2[12] ?? 0) * d1;\n const d2 = ((11 - (sum % 11)) % 11) % 10;\n\n return `${d1}${d2}`;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 14) {\n return err(\n \"INVALID_LENGTH\",\n \"CNPJ must be 14 characters\",\n );\n }\n if (!CNPJ_RE.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"CNPJ must contain only digits and uppercase letters\",\n );\n }\n // Reject all-zero base (first 12 chars).\n // Unlike CPF, we do not reject all-same-digit CNPJs;\n // python-stdnum only blocks the all-zero base, and\n // there is no official Receita Federal list of\n // blocked same-digit CNPJ sequences.\n if (v.startsWith(\"000000000000\")) {\n return err(\n \"INVALID_FORMAT\",\n \"CNPJ base must not be all zeros\",\n );\n }\n if (calcCheckDigits(v) !== v.slice(12)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"CNPJ check digit mismatch\",\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, 5)}.${v.slice(5, 8)}/${v.slice(8, 12)}-${v.slice(12)}`;\n};\n\n/** Generate a random valid CNPJ. */\nconst generate = (): string => {\n for (;;) {\n const base = randomDigits(12);\n if (base === \"000000000000\") continue;\n return base + calcCheckDigits(base);\n }\n};\n\n/**\n * Brazilian CNPJ (company tax ID).\n *\n * Examples sourced from publicly available Brazilian\n * corporate registries:\n * - Petrobras: 33.000.167/0001-01\n * - Banco do Brasil: 00.000.000/0001-91\n */\nconst cnpj: Validator = {\n name: \"Brazilian CNPJ\",\n localName: \"Cadastro Nacional da Pessoa Jurídica\",\n abbreviation: \"CNPJ\",\n aliases: [\n \"CNPJ\",\n \"Cadastro Nacional da Pessoa Jurídica\",\n ] as const,\n candidatePattern:\n \"\\\\d{2}\\\\.?\\\\d{3}\\\\.?\\\\d{3}/?\\\\d{4}-?\\\\d{2}\",\n country: \"BR\",\n entityType: \"company\",\n sourceUrl: \"https://www.gov.br/receitafederal/\",\n examples: [\"33000167000101\", \"00000000000191\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default cnpj;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,UAAU;AAEhB,MAAM,WAAW,UACf,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa;;;;;;;AAQ3C,MAAM,eAAe,OACnB,GAAG,WAAW,EAAE,GAAG;;;;;;;;;;;;AAarB,MAAM,mBAAmB,WAA2B;CAClD,MAAM,KAAK;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAE;CAC/C,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,SAAQ,GAAG,MAAM,KAAK,YAAY,OAAO,OAAO,EAAE,CAAC;CAErD,MAAM,MAAO,KAAM,MAAM,MAAO,KAAM;CAEtC,MAAM,KAAK;EAAC;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAE;AAClD,OAAM;AACN,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,SAAQ,GAAG,MAAM,KAAK,YAAY,OAAO,OAAO,EAAE,CAAC;AAKrD,SAAQ,GAAG,OAAO,KAAK;AAGvB,QAAO,GAAG,MAFG,KAAM,MAAM,MAAO,KAAM;;AAKxC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IACL,kBACA,6BACD;AAEH,KAAI,CAAC,QAAQ,KAAK,EAAE,CAClB,QAAO,IACL,kBACA,sDACD;AAOH,KAAI,EAAE,WAAW,eAAe,CAC9B,QAAO,IACL,kBACA,kCACD;AAEH,KAAI,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,CACpC,QAAO,IACL,oBACA,4BACD;AAEH,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,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG;;;AAI5F,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,OAAO,aAAa,GAAG;AAC7B,MAAI,SAAS,eAAgB;AAC7B,SAAO,OAAO,gBAAgB,KAAK;;;;;;;;;;;AAYvC,MAAM,OAAkB;CACtB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CACP,QACA,uCACD;CACD,kBACE;CACF,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,kBAAkB,iBAAiB;CAC9C;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/br/cpf.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 CPF. */
9
+ declare const generate: () => string;
10
+ /** Brazilian CPF (personal tax ID). */
11
+ declare const cpf: Validator;
12
+ //#endregion
13
+ export { compact, cpf as default, format, generate, validate };
14
+ //# sourceMappingURL=cpf.d.ts.map
package/dist/br/cpf.js ADDED
@@ -0,0 +1,83 @@
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/br/cpf.ts
6
+ /**
7
+ * CPF (Cadastro de Pessoas Físicas).
8
+ *
9
+ * Brazilian personal tax identification number assigned
10
+ * by the Receita Federal (Federal Revenue Service) to
11
+ * individuals. The number consists of 11 digits: 9 base
12
+ * digits followed by 2 check digits computed using a
13
+ * weighted modulo 11 algorithm.
14
+ *
15
+ * Format: NNN.NNN.NNN-DD (11 digits, purely numeric).
16
+ *
17
+ * @see https://www.gov.br/en/categories/finance-taxes-and-public-management/cpf-cnpj-and-other-records
18
+ * @see https://en.wikipedia.org/wiki/CPF_number
19
+ */
20
+ const compact = (value) => clean(value, " -.").trim();
21
+ /**
22
+ * Calculate the two CPF check digits using the
23
+ * Receita Federal modulo 11 algorithm.
24
+ *
25
+ * First check digit: multiply digits 0..8 by weights
26
+ * 10..2, sum, then (11 - sum % 11) % 11 % 10.
27
+ *
28
+ * Second check digit: multiply digits 0..8 by weights
29
+ * 11..3, add 2 * first check digit, then
30
+ * (11 - sum % 11) % 11 % 10.
31
+ */
32
+ const calcCheckDigits = (number) => {
33
+ let sum = 0;
34
+ for (let i = 0; i < 9; i++) sum += (10 - i) * Number(number[i]);
35
+ const d1 = (11 - sum % 11) % 11 % 10;
36
+ sum = 0;
37
+ for (let i = 0; i < 9; i++) sum += (11 - i) * Number(number[i]);
38
+ sum += 2 * d1;
39
+ return `${d1}${(11 - sum % 11) % 11 % 10}`;
40
+ };
41
+ const validate = (value) => {
42
+ const v = compact(value);
43
+ if (v.length !== 11) return err("INVALID_LENGTH", "CPF must be 11 digits");
44
+ if (!isdigits(v)) return err("INVALID_FORMAT", "CPF must contain only digits");
45
+ if (/^(\d)\1{10}$/.test(v)) return err("INVALID_FORMAT", "CPF must not be a repeated digit sequence");
46
+ if (calcCheckDigits(v) !== v.slice(9)) return err("INVALID_CHECKSUM", "CPF check digit mismatch");
47
+ return {
48
+ valid: true,
49
+ compact: v
50
+ };
51
+ };
52
+ const format = (value) => {
53
+ const v = compact(value);
54
+ return `${v.slice(0, 3)}.${v.slice(3, 6)}.${v.slice(6, 9)}-${v.slice(9)}`;
55
+ };
56
+ /** Generate a random valid CPF. */
57
+ const generate = () => {
58
+ for (;;) {
59
+ const base = randomDigits(9);
60
+ if (/^(\d)\1{8}$/.test(base)) continue;
61
+ return base + calcCheckDigits(base);
62
+ }
63
+ };
64
+ /** Brazilian CPF (personal tax ID). */
65
+ const cpf = {
66
+ name: "Brazilian CPF",
67
+ localName: "Cadastro de Pessoas Físicas",
68
+ abbreviation: "CPF",
69
+ aliases: ["CPF", "Cadastro de Pessoas Físicas"],
70
+ candidatePattern: "\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}",
71
+ country: "BR",
72
+ entityType: "person",
73
+ sourceUrl: "https://www.gov.br/receitafederal/",
74
+ examples: ["39053344705"],
75
+ compact,
76
+ format,
77
+ validate,
78
+ generate
79
+ };
80
+ //#endregion
81
+ export { compact, cpf as default, format, generate, validate };
82
+
83
+ //# sourceMappingURL=cpf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpf.js","names":[],"sources":["../../src/br/cpf.ts"],"sourcesContent":["/**\n * CPF (Cadastro de Pessoas Físicas).\n *\n * Brazilian personal tax identification number assigned\n * by the Receita Federal (Federal Revenue Service) to\n * individuals. The number consists of 11 digits: 9 base\n * digits followed by 2 check digits computed using a\n * weighted modulo 11 algorithm.\n *\n * Format: NNN.NNN.NNN-DD (11 digits, purely numeric).\n *\n * @see https://www.gov.br/en/categories/finance-taxes-and-public-management/cpf-cnpj-and-other-records\n * @see https://en.wikipedia.org/wiki/CPF_number\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 compact = (value: string): string =>\n clean(value, \" -.\").trim();\n\n/**\n * Calculate the two CPF check digits using the\n * Receita Federal modulo 11 algorithm.\n *\n * First check digit: multiply digits 0..8 by weights\n * 10..2, sum, then (11 - sum % 11) % 11 % 10.\n *\n * Second check digit: multiply digits 0..8 by weights\n * 11..3, add 2 * first check digit, then\n * (11 - sum % 11) % 11 % 10.\n */\nconst calcCheckDigits = (number: string): string => {\n let sum = 0;\n for (let i = 0; i < 9; i++) {\n sum += (10 - i) * Number(number[i]);\n }\n const d1 = ((11 - (sum % 11)) % 11) % 10;\n\n sum = 0;\n for (let i = 0; i < 9; i++) {\n sum += (11 - i) * Number(number[i]);\n }\n sum += 2 * d1;\n const d2 = ((11 - (sum % 11)) % 11) % 10;\n\n return `${d1}${d2}`;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 11) {\n return err(\"INVALID_LENGTH\", \"CPF must be 11 digits\");\n }\n if (!isdigits(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"CPF must contain only digits\",\n );\n }\n // All-same-digit CPFs (e.g. 000.000.000-00) pass the\n // checksum but are not valid registrations.\n if (/^(\\d)\\1{10}$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"CPF must not be a repeated digit sequence\",\n );\n }\n if (calcCheckDigits(v) !== v.slice(9)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"CPF check digit mismatch\",\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, 3)}.${v.slice(3, 6)}.${v.slice(6, 9)}-${v.slice(9)}`;\n};\n\n/** Generate a random valid CPF. */\nconst generate = (): string => {\n for (;;) {\n const base = randomDigits(9);\n if (/^(\\d)\\1{8}$/.test(base)) continue;\n return base + calcCheckDigits(base);\n }\n};\n\n/** Brazilian CPF (personal tax ID). */\nconst cpf: Validator = {\n name: \"Brazilian CPF\",\n localName: \"Cadastro de Pessoas Físicas\",\n abbreviation: \"CPF\",\n aliases: [\"CPF\", \"Cadastro de Pessoas Físicas\"] as const,\n candidatePattern: \"\\\\d{3}\\\\.?\\\\d{3}\\\\.?\\\\d{3}-?\\\\d{2}\",\n country: \"BR\",\n entityType: \"person\",\n sourceUrl: \"https://www.gov.br/receitafederal/\",\n examples: [\"39053344705\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default cpf;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,MAAM,WAAW,UACf,MAAM,OAAO,MAAM,CAAC,MAAM;;;;;;;;;;;;AAa5B,MAAM,mBAAmB,WAA2B;CAClD,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,SAAQ,KAAK,KAAK,OAAO,OAAO,GAAG;CAErC,MAAM,MAAO,KAAM,MAAM,MAAO,KAAM;AAEtC,OAAM;AACN,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IACrB,SAAQ,KAAK,KAAK,OAAO,OAAO,GAAG;AAErC,QAAO,IAAI;AAGX,QAAO,GAAG,MAFG,KAAM,MAAM,MAAO,KAAM;;AAKxC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,GACf,QAAO,IAAI,kBAAkB,wBAAwB;AAEvD,KAAI,CAAC,SAAS,EAAE,CACd,QAAO,IACL,kBACA,+BACD;AAIH,KAAI,eAAe,KAAK,EAAE,CACxB,QAAO,IACL,kBACA,4CACD;AAEH,KAAI,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CACnC,QAAO,IACL,oBACA,2BACD;AAEH,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,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;AAIzE,MAAM,iBAAyB;AAC7B,UAAS;EACP,MAAM,OAAO,aAAa,EAAE;AAC5B,MAAI,cAAc,KAAK,KAAK,CAAE;AAC9B,SAAO,OAAO,gBAAgB,KAAK;;;;AAKvC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,8BAA8B;CAC/C,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,cAAc;CACzB;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,9 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import cnpj from "./cnpj.js";
3
+ import cpf from "./cpf.js";
4
+
5
+ //#region src/br/mod.d.ts
6
+
7
+ //#endregion
8
+ export { cnpj, cpf, mod_d_exports };
9
+ //# sourceMappingURL=mod.d.ts.map
package/dist/br/mod.js ADDED
@@ -0,0 +1,12 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import cnpj from "./cnpj.js";
3
+ import cpf from "./cpf.js";
4
+ //#region src/br/mod.ts
5
+ var br_exports = /* @__PURE__ */ __exportAll({
6
+ cnpj: () => cnpj,
7
+ cpf: () => cpf
8
+ });
9
+ //#endregion
10
+ export { br_exports, cnpj, cpf };
11
+
12
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/br/mod.ts"],"sourcesContent":["export { default as cnpj } from \"./cnpj\";\nexport { default as cpf } from \"./cpf\";\n"],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import unp from "./unp.js";
3
+
4
+ //#region src/by/mod.d.ts
5
+
6
+ //#endregion
7
+ export { mod_d_exports, unp };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/by/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import unp from "./unp.js";
3
+ //#region src/by/mod.ts
4
+ var by_exports = /* @__PURE__ */ __exportAll({ unp: () => unp });
5
+ //#endregion
6
+ export { by_exports, unp };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/by/mod.ts"],"sourcesContent":["export { default as unp } from \"./unp\";\n"],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/by/unp.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 Belarus UNP. */
9
+ declare const generate: () => string;
10
+ /** Belarus UNP (Учётный номер плательщика). */
11
+ declare const unp: Validator;
12
+ //#endregion
13
+ export { compact, unp as default, format, generate, validate };
14
+ //# sourceMappingURL=unp.d.ts.map
package/dist/by/unp.js ADDED
@@ -0,0 +1,114 @@
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/by/unp.ts
6
+ /**
7
+ * UNP (Учётный номер плательщика, Belarus tax number).
8
+ *
9
+ * 9 characters: the first two identify the region (numeric
10
+ * for organisations, letters from ABCEHKMOPT for
11
+ * individuals), followed by 7 digits. The last digit is a
12
+ * weighted check digit (mod 11; if remainder > 9 the
13
+ * number is invalid).
14
+ *
15
+ * @see https://be.wikipedia.org/wiki/Уліковы_нумар_плацельшчыка
16
+ * @see https://www.nalog.gov.by/
17
+ */
18
+ /** Cyrillic to Latin mapping for the letter positions. */
19
+ const CYRILLIC_TO_LATIN = {
20
+ А: "A",
21
+ В: "B",
22
+ Е: "E",
23
+ К: "K",
24
+ М: "M",
25
+ Н: "H",
26
+ О: "O",
27
+ Р: "P",
28
+ С: "C",
29
+ Т: "T"
30
+ };
31
+ const WEIGHTS = [
32
+ 29,
33
+ 23,
34
+ 19,
35
+ 17,
36
+ 13,
37
+ 7,
38
+ 5,
39
+ 3
40
+ ];
41
+ const ALPHA_SET = "ABCEHKMOPT";
42
+ const VALID_FIRST = "1234567ABCEHKM";
43
+ const ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
44
+ const compact = (value) => {
45
+ let v = clean(value, " ").toUpperCase().trim();
46
+ if (v.startsWith("УНП")) v = v.slice(3);
47
+ else if (v.startsWith("UNP")) v = v.slice(3);
48
+ return [...v].map((ch) => CYRILLIC_TO_LATIN[ch] ?? ch).join("");
49
+ };
50
+ const calcCheckDigit = (number) => {
51
+ let work = number;
52
+ if (!isdigits(number)) {
53
+ const idx = ALPHA_SET.indexOf(number[1]);
54
+ if (idx === -1) return null;
55
+ work = number[0] + String(idx) + number.slice(2);
56
+ }
57
+ let sum = 0;
58
+ for (let i = 0; i < 8; i++) {
59
+ const ch = work[i];
60
+ const val = ALPHABET.indexOf(ch);
61
+ if (val === -1) return null;
62
+ sum += (WEIGHTS[i] ?? 0) * val;
63
+ }
64
+ const remainder = sum % 11;
65
+ if (remainder > 9) return null;
66
+ return remainder;
67
+ };
68
+ const validate = (value) => {
69
+ const v = compact(value);
70
+ if (v.length !== 9) return err("INVALID_LENGTH", "Belarus UNP must be 9 characters");
71
+ if (!isdigits(v.slice(2))) return err("INVALID_FORMAT", "Belarus UNP positions 3-9 must be digits");
72
+ const first2 = v.slice(0, 2);
73
+ if (!isdigits(first2) && ![...first2].every((ch) => ALPHA_SET.includes(ch))) return err("INVALID_FORMAT", "Belarus UNP first two characters must be digits or letters from ABCEHKMOPT");
74
+ if (!VALID_FIRST.includes(v[0])) return err("INVALID_COMPONENT", "Belarus UNP has an invalid region prefix");
75
+ const expected = calcCheckDigit(v);
76
+ if (expected === null) return err("INVALID_CHECKSUM", "Belarus UNP check digit is invalid (mod 11 remainder > 9)");
77
+ if (v[8] !== String(expected)) return err("INVALID_CHECKSUM", "Belarus UNP check digit mismatch");
78
+ return {
79
+ valid: true,
80
+ compact: v
81
+ };
82
+ };
83
+ const format = (value) => compact(value);
84
+ /** Generate a random valid Belarus UNP. */
85
+ const generate = () => {
86
+ for (let i = 0; i < 100; i++) {
87
+ const payload = String(randomInt(1, 7)) + randomDigits(7);
88
+ const check = calcCheckDigit(payload);
89
+ if (check === null) continue;
90
+ const c = payload.slice(0, 8) + String(check);
91
+ if (validate(c).valid) return c;
92
+ }
93
+ throw new Error("Failed to generate valid UNP");
94
+ };
95
+ /** Belarus UNP (Учётный номер плательщика). */
96
+ const unp = {
97
+ name: "Belarus Tax Number",
98
+ localName: "Учётный номер плательщика",
99
+ abbreviation: "УНП",
100
+ aliases: ["УНП", "UNP"],
101
+ candidatePattern: "\\d{9}",
102
+ country: "BY",
103
+ entityType: "any",
104
+ sourceUrl: "https://www.nalog.gov.by/",
105
+ examples: ["200988541", "MA1953684"],
106
+ compact,
107
+ format,
108
+ validate,
109
+ generate
110
+ };
111
+ //#endregion
112
+ export { compact, unp as default, format, generate, validate };
113
+
114
+ //# sourceMappingURL=unp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unp.js","names":[],"sources":["../../src/by/unp.ts"],"sourcesContent":["/**\n * UNP (Учётный номер плательщика, Belarus tax number).\n *\n * 9 characters: the first two identify the region (numeric\n * for organisations, letters from ABCEHKMOPT for\n * individuals), followed by 7 digits. The last digit is a\n * weighted check digit (mod 11; if remainder > 9 the\n * number is invalid).\n *\n * @see https://be.wikipedia.org/wiki/Уліковы_нумар_плацельшчыка\n * @see https://www.nalog.gov.by/\n */\n\nimport { clean } from \"#util/clean\";\nimport { randomDigits, randomInt } from \"#util/generate\";\nimport { err } from \"#util/result\";\nimport { isdigits } from \"#util/strings\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\n/** Cyrillic to Latin mapping for the letter positions. */\nconst CYRILLIC_TO_LATIN: Record<string, string> = {\n А: \"A\",\n В: \"B\",\n Е: \"E\",\n К: \"K\",\n М: \"M\",\n Н: \"H\",\n О: \"O\",\n Р: \"P\",\n С: \"C\",\n Т: \"T\",\n};\n\nconst WEIGHTS = [29, 23, 19, 17, 13, 7, 5, 3] as const;\nconst ALPHA_SET = \"ABCEHKMOPT\";\nconst VALID_FIRST = \"1234567ABCEHKM\";\nconst ALPHABET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nconst compact = (value: string): string => {\n let v = clean(value, \" \").toUpperCase().trim();\n if (v.startsWith(\"УНП\")) {\n v = v.slice(3);\n } else if (v.startsWith(\"UNP\")) {\n v = v.slice(3);\n }\n return [...v]\n .map((ch) => CYRILLIC_TO_LATIN[ch] ?? ch)\n .join(\"\");\n};\n\nconst calcCheckDigit = (number: string): number | null => {\n let work = number;\n if (!isdigits(number)) {\n const idx = ALPHA_SET.indexOf(number[1]!);\n if (idx === -1) return null;\n work = number[0] + String(idx) + number.slice(2);\n }\n let sum = 0;\n for (let i = 0; i < 8; i++) {\n const ch = work[i]!;\n const val = ALPHABET.indexOf(ch);\n if (val === -1) return null;\n sum += (WEIGHTS[i] ?? 0) * val;\n }\n const remainder = sum % 11;\n if (remainder > 9) return null;\n return remainder;\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n if (v.length !== 9) {\n return err(\n \"INVALID_LENGTH\",\n \"Belarus UNP must be 9 characters\",\n );\n }\n if (!isdigits(v.slice(2))) {\n return err(\n \"INVALID_FORMAT\",\n \"Belarus UNP positions 3-9 must be digits\",\n );\n }\n const first2 = v.slice(0, 2);\n if (\n !isdigits(first2) &&\n ![...first2].every((ch) => ALPHA_SET.includes(ch))\n ) {\n return err(\n \"INVALID_FORMAT\",\n \"Belarus UNP first two characters must be\" +\n \" digits or letters from ABCEHKMOPT\",\n );\n }\n if (!VALID_FIRST.includes(v[0]!)) {\n return err(\n \"INVALID_COMPONENT\",\n \"Belarus UNP has an invalid region prefix\",\n );\n }\n const expected = calcCheckDigit(v);\n if (expected === null) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Belarus UNP check digit is invalid\" +\n \" (mod 11 remainder > 9)\",\n );\n }\n if (v[8] !== String(expected)) {\n return err(\n \"INVALID_CHECKSUM\",\n \"Belarus UNP check digit mismatch\",\n );\n }\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => compact(value);\n\n/** Generate a random valid Belarus UNP. */\nconst generate = (): string => {\n for (let i = 0; i < 100; i++) {\n const prefix = String(randomInt(1, 7));\n const rest = randomDigits(7);\n const payload = prefix + rest;\n const check = calcCheckDigit(payload);\n if (check === null) continue;\n const c = payload.slice(0, 8) + String(check);\n if (validate(c).valid) return c;\n }\n throw new Error(\"Failed to generate valid UNP\");\n};\n\n/** Belarus UNP (Учётный номер плательщика). */\nconst unp: Validator = {\n name: \"Belarus Tax Number\",\n localName: \"Учётный номер плательщика\",\n abbreviation: \"УНП\",\n aliases: [\"УНП\", \"UNP\"] as const,\n candidatePattern: \"\\\\d{9}\",\n country: \"BY\",\n entityType: \"any\",\n sourceUrl: \"https://www.nalog.gov.by/\",\n examples: [\"200988541\", \"MA1953684\"] as const,\n compact,\n format,\n validate,\n generate,\n};\n\nexport default unp;\nexport { compact, format, validate, generate };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAqBA,MAAM,oBAA4C;CAChD,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACJ;AAED,MAAM,UAAU;CAAC;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAE;AAC7C,MAAM,YAAY;AAClB,MAAM,cAAc;AACpB,MAAM,WAAW;AAEjB,MAAM,WAAW,UAA0B;CACzC,IAAI,IAAI,MAAM,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM;AAC9C,KAAI,EAAE,WAAW,MAAM,CACrB,KAAI,EAAE,MAAM,EAAE;UACL,EAAE,WAAW,MAAM,CAC5B,KAAI,EAAE,MAAM,EAAE;AAEhB,QAAO,CAAC,GAAG,EAAE,CACV,KAAK,OAAO,kBAAkB,OAAO,GAAG,CACxC,KAAK,GAAG;;AAGb,MAAM,kBAAkB,WAAkC;CACxD,IAAI,OAAO;AACX,KAAI,CAAC,SAAS,OAAO,EAAE;EACrB,MAAM,MAAM,UAAU,QAAQ,OAAO,GAAI;AACzC,MAAI,QAAQ,GAAI,QAAO;AACvB,SAAO,OAAO,KAAK,OAAO,IAAI,GAAG,OAAO,MAAM,EAAE;;CAElD,IAAI,MAAM;AACV,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;EAC1B,MAAM,KAAK,KAAK;EAChB,MAAM,MAAM,SAAS,QAAQ,GAAG;AAChC,MAAI,QAAQ,GAAI,QAAO;AACvB,UAAQ,QAAQ,MAAM,KAAK;;CAE7B,MAAM,YAAY,MAAM;AACxB,KAAI,YAAY,EAAG,QAAO;AAC1B,QAAO;;AAGT,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,WAAW,EACf,QAAO,IACL,kBACA,mCACD;AAEH,KAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CACvB,QAAO,IACL,kBACA,2CACD;CAEH,MAAM,SAAS,EAAE,MAAM,GAAG,EAAE;AAC5B,KACE,CAAC,SAAS,OAAO,IACjB,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,OAAO,UAAU,SAAS,GAAG,CAAC,CAElD,QAAO,IACL,kBACA,6EAED;AAEH,KAAI,CAAC,YAAY,SAAS,EAAE,GAAI,CAC9B,QAAO,IACL,qBACA,2CACD;CAEH,MAAM,WAAW,eAAe,EAAE;AAClC,KAAI,aAAa,KACf,QAAO,IACL,oBACA,4DAED;AAEH,KAAI,EAAE,OAAO,OAAO,SAAS,CAC3B,QAAO,IACL,oBACA,mCACD;AAEH,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B,QAAQ,MAAM;;AAGxD,MAAM,iBAAyB;AAC7B,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;EAG5B,MAAM,UAFS,OAAO,UAAU,GAAG,EAAE,CAAC,GACzB,aAAa,EAAE;EAE5B,MAAM,QAAQ,eAAe,QAAQ;AACrC,MAAI,UAAU,KAAM;EACpB,MAAM,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG,OAAO,MAAM;AAC7C,MAAI,SAAS,EAAE,CAAC,MAAO,QAAO;;AAEhC,OAAM,IAAI,MAAM,+BAA+B;;;AAIjD,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,OAAO,MAAM;CACvB,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,WAAW;CACX,UAAU,CAAC,aAAa,YAAY;CACpC;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import tin from "./tin.js";
3
+
4
+ //#region src/bz/mod.d.ts
5
+
6
+ //#endregion
7
+ export { mod_d_exports, tin };
8
+ //# sourceMappingURL=mod.d.ts.map
package/dist/bz/mod.js ADDED
@@ -0,0 +1,8 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import tin from "./tin.js";
3
+ //#region src/bz/mod.ts
4
+ var bz_exports = /* @__PURE__ */ __exportAll({ tin: () => tin });
5
+ //#endregion
6
+ export { bz_exports, tin };
7
+
8
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../../src/bz/mod.ts"],"sourcesContent":["export { default as tin } from \"./tin\";\n"],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/bz/tin.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
+ * Belize Tax Identification Number.
10
+ *
11
+ * Examples derived from stdnum-js test suite.
12
+ */
13
+ declare const tin: Validator;
14
+ //#endregion
15
+ export { compact, tin as default, format, validate };
16
+ //# sourceMappingURL=tin.d.ts.map
package/dist/bz/tin.js ADDED
@@ -0,0 +1,85 @@
1
+ import { clean } from "../_util/clean.js";
2
+ import { err } from "../_util/result.js";
3
+ //#region src/bz/tin.ts
4
+ /**
5
+ * TIN (Belize Tax Identification Number).
6
+ *
7
+ * Issued by the Belize Tax Service Department to
8
+ * individuals, sole proprietors, partnerships, and
9
+ * companies. The base number is 6 digits generated
10
+ * by the Revenue Management System. A 2-digit
11
+ * suffix code may be appended to indicate entity
12
+ * type:
13
+ * - 10: individual
14
+ * - 13: company
15
+ * - 66: company (alternate)
16
+ *
17
+ * The OECD spec mentions a 7th check digit that is
18
+ * not visible to the taxpayer; in practice the
19
+ * number circulates as 6 or 8 digits (6 + suffix).
20
+ *
21
+ * Formatted as NNNNNN-SS (when suffix is present).
22
+ *
23
+ * Source: OECD CRS TIN information sheet; Belize
24
+ * Tax Service (https://bts.gov.bz/).
25
+ *
26
+ * PERSON/ENTITY
27
+ *
28
+ * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf
29
+ */
30
+ /** Valid 2-digit suffix codes. */
31
+ const SUFFIX_CODES = [
32
+ "10",
33
+ "13",
34
+ "66"
35
+ ];
36
+ const compact = (value) => {
37
+ return clean(value, " -").trim();
38
+ };
39
+ const validate = (value) => {
40
+ const v = compact(value);
41
+ if (v.length !== 6 && v.length !== 8) return err("INVALID_LENGTH", "Belize TIN must be 6 or 8 digits");
42
+ if (!/^\d+$/.test(v)) return err("INVALID_FORMAT", "Belize TIN must contain only digits");
43
+ if (v.length === 8) {
44
+ const suffix = v.slice(6);
45
+ if (!SUFFIX_CODES.includes(suffix)) return err("INVALID_COMPONENT", "Belize TIN suffix must be 10, 13, or 66");
46
+ }
47
+ return {
48
+ valid: true,
49
+ compact: v
50
+ };
51
+ };
52
+ const format = (value) => {
53
+ const v = compact(value);
54
+ if (v.length <= 6) return v;
55
+ return `${v.slice(0, 6)}-${v.slice(6)}`;
56
+ };
57
+ /**
58
+ * Belize Tax Identification Number.
59
+ *
60
+ * Examples derived from stdnum-js test suite.
61
+ */
62
+ const tin = {
63
+ name: "Belize Tax Identification Number",
64
+ localName: "Tax Identification Number",
65
+ abbreviation: "TIN",
66
+ aliases: ["TIN"],
67
+ candidatePattern: "\\d{6}",
68
+ country: "BZ",
69
+ entityType: "any",
70
+ lengths: [6, 8],
71
+ examples: [
72
+ "000005",
73
+ "00000510",
74
+ "00000513"
75
+ ],
76
+ compact,
77
+ format,
78
+ validate,
79
+ description: "Belize tax number issued by the Belize Tax Service Department",
80
+ sourceUrl: "https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf"
81
+ };
82
+ //#endregion
83
+ export { compact, tin as default, format, validate };
84
+
85
+ //# sourceMappingURL=tin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tin.js","names":[],"sources":["../../src/bz/tin.ts"],"sourcesContent":["/**\n * TIN (Belize Tax Identification Number).\n *\n * Issued by the Belize Tax Service Department to\n * individuals, sole proprietors, partnerships, and\n * companies. The base number is 6 digits generated\n * by the Revenue Management System. A 2-digit\n * suffix code may be appended to indicate entity\n * type:\n * - 10: individual\n * - 13: company\n * - 66: company (alternate)\n *\n * The OECD spec mentions a 7th check digit that is\n * not visible to the taxpayer; in practice the\n * number circulates as 6 or 8 digits (6 + suffix).\n *\n * Formatted as NNNNNN-SS (when suffix is present).\n *\n * Source: OECD CRS TIN information sheet; Belize\n * Tax Service (https://bts.gov.bz/).\n *\n * PERSON/ENTITY\n *\n * @see https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf\n */\n\nimport { clean } from \"#util/clean\";\nimport { err } from \"#util/result\";\n\nimport type { ValidateResult, Validator } from \"../types\";\n\n/** Valid 2-digit suffix codes. */\nconst SUFFIX_CODES = [\"10\", \"13\", \"66\"] as const;\n\nconst compact = (value: string): string => {\n return clean(value, \" -\").trim();\n};\n\nconst validate = (value: string): ValidateResult => {\n const v = compact(value);\n\n if (v.length !== 6 && v.length !== 8) {\n return err(\n \"INVALID_LENGTH\",\n \"Belize TIN must be 6 or 8 digits\",\n );\n }\n\n if (!/^\\d+$/.test(v)) {\n return err(\n \"INVALID_FORMAT\",\n \"Belize TIN must contain only digits\",\n );\n }\n\n if (v.length === 8) {\n const suffix = v.slice(6);\n if (\n !SUFFIX_CODES.includes(\n suffix as (typeof SUFFIX_CODES)[number],\n )\n ) {\n return err(\n \"INVALID_COMPONENT\",\n \"Belize TIN suffix must be 10, 13, or 66\",\n );\n }\n }\n\n return { valid: true, compact: v };\n};\n\nconst format = (value: string): string => {\n const v = compact(value);\n if (v.length <= 6) {\n return v;\n }\n return `${v.slice(0, 6)}-${v.slice(6)}`;\n};\n\n/**\n * Belize Tax Identification Number.\n *\n * Examples derived from stdnum-js test suite.\n */\nconst tin: Validator = {\n name: \"Belize Tax Identification Number\",\n localName: \"Tax Identification Number\",\n abbreviation: \"TIN\",\n aliases: [\"TIN\"] as const,\n candidatePattern: \"\\\\d{6}\",\n country: \"BZ\",\n entityType: \"any\",\n lengths: [6, 8] as const,\n examples: [\"000005\", \"00000510\", \"00000513\"] as const,\n compact,\n format,\n validate,\n description:\n \"Belize tax number issued by the Belize Tax Service Department\",\n sourceUrl:\n \"https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Belize-TIN.pdf\",\n};\n\nexport default tin;\nexport { compact, format, validate };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,eAAe;CAAC;CAAM;CAAM;CAAK;AAEvC,MAAM,WAAW,UAA0B;AACzC,QAAO,MAAM,OAAO,KAAK,CAAC,MAAM;;AAGlC,MAAM,YAAY,UAAkC;CAClD,MAAM,IAAI,QAAQ,MAAM;AAExB,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,EACjC,QAAO,IACL,kBACA,mCACD;AAGH,KAAI,CAAC,QAAQ,KAAK,EAAE,CAClB,QAAO,IACL,kBACA,sCACD;AAGH,KAAI,EAAE,WAAW,GAAG;EAClB,MAAM,SAAS,EAAE,MAAM,EAAE;AACzB,MACE,CAAC,aAAa,SACZ,OACD,CAED,QAAO,IACL,qBACA,0CACD;;AAIL,QAAO;EAAE,OAAO;EAAM,SAAS;EAAG;;AAGpC,MAAM,UAAU,UAA0B;CACxC,MAAM,IAAI,QAAQ,MAAM;AACxB,KAAI,EAAE,UAAU,EACd,QAAO;AAET,QAAO,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE;;;;;;;AAQvC,MAAM,MAAiB;CACrB,MAAM;CACN,WAAW;CACX,cAAc;CACd,SAAS,CAAC,MAAM;CAChB,kBAAkB;CAClB,SAAS;CACT,YAAY;CACZ,SAAS,CAAC,GAAG,EAAE;CACf,UAAU;EAAC;EAAU;EAAY;EAAW;CAC5C;CACA;CACA;CACA,aACE;CACF,WACE;CACH"}
@@ -0,0 +1,14 @@
1
+ import { ValidateResult, Validator } from "../types.js";
2
+
3
+ //#region src/ca/bn.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 Canadian BN. */
9
+ declare const generate: () => string;
10
+ /** Canadian Business Number. */
11
+ declare const bn: Validator;
12
+ //#endregion
13
+ export { compact, bn as default, format, generate, validate };
14
+ //# sourceMappingURL=bn.d.ts.map