@stll/stdnum 1.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (705) hide show
  1. package/README.md +1 -4
  2. package/dist/_checksums/luhn.js.map +1 -1
  3. package/dist/_checksums/mod1110.js +1 -1
  4. package/dist/_checksums/mod1110.js.map +1 -1
  5. package/dist/_checksums/mod112.js.map +1 -1
  6. package/dist/_checksums/mod97.js.map +1 -1
  7. package/dist/_checksums/verhoeff.js.map +1 -1
  8. package/dist/_checksums/weighted-sum.js.map +1 -1
  9. package/dist/_util/arabic.js.map +1 -1
  10. package/dist/_util/clean.js.map +1 -1
  11. package/dist/_util/date.js.map +1 -1
  12. package/dist/_util/generate.js.map +1 -1
  13. package/dist/_util/result.js.map +1 -1
  14. package/dist/_util/strings.js.map +1 -1
  15. package/dist/ad/nrt.d.ts +16 -2
  16. package/dist/ad/nrt.js +1 -14
  17. package/dist/ad/nrt.js.map +1 -1
  18. package/dist/ae/eid.d.ts +2 -2
  19. package/dist/ae/eid.js +2 -12
  20. package/dist/ae/eid.js.map +1 -1
  21. package/dist/ai/tin.d.ts +20 -2
  22. package/dist/ai/tin.js +1 -18
  23. package/dist/ai/tin.js.map +1 -1
  24. package/dist/al/nipt.d.ts +13 -2
  25. package/dist/al/nipt.js +1 -11
  26. package/dist/al/nipt.js.map +1 -1
  27. package/dist/am/tin.d.ts +16 -2
  28. package/dist/am/tin.js +1 -14
  29. package/dist/am/tin.js.map +1 -1
  30. package/dist/ar/cbu.d.ts +2 -2
  31. package/dist/ar/cbu.js +1 -9
  32. package/dist/ar/cbu.js.map +1 -1
  33. package/dist/ar/cuit.d.ts +2 -2
  34. package/dist/ar/cuit.js +1 -17
  35. package/dist/ar/cuit.js.map +1 -1
  36. package/dist/ar/dni.d.ts +11 -2
  37. package/dist/ar/dni.js +1 -9
  38. package/dist/ar/dni.js.map +1 -1
  39. package/dist/at/businessid.d.ts +10 -2
  40. package/dist/at/businessid.js +1 -8
  41. package/dist/at/businessid.js.map +1 -1
  42. package/dist/at/tin.d.ts +2 -2
  43. package/dist/at/tin.js +1 -11
  44. package/dist/at/tin.js.map +1 -1
  45. package/dist/at/uid.d.ts +2 -2
  46. package/dist/at/uid.js +2 -10
  47. package/dist/at/uid.js.map +1 -1
  48. package/dist/at/vnr.d.ts +2 -2
  49. package/dist/at/vnr.js +4 -14
  50. package/dist/at/vnr.js.map +1 -1
  51. package/dist/au/abn.d.ts +2 -2
  52. package/dist/au/abn.js +1 -10
  53. package/dist/au/abn.js.map +1 -1
  54. package/dist/au/acn.d.ts +2 -2
  55. package/dist/au/acn.js +1 -10
  56. package/dist/au/acn.js.map +1 -1
  57. package/dist/au/tfn.d.ts +2 -2
  58. package/dist/au/tfn.js +1 -10
  59. package/dist/au/tfn.js.map +1 -1
  60. package/dist/az/voen.d.ts +2 -2
  61. package/dist/az/voen.js +1 -14
  62. package/dist/az/voen.js.map +1 -1
  63. package/dist/ba/jmbg.d.ts +2 -2
  64. package/dist/ba/jmbg.js +3 -11
  65. package/dist/ba/jmbg.js.map +1 -1
  66. package/dist/bd/nid.d.ts +23 -2
  67. package/dist/bd/nid.js +1 -21
  68. package/dist/bd/nid.js.map +1 -1
  69. package/dist/be/bis.d.ts +2 -2
  70. package/dist/be/bis.js +1 -11
  71. package/dist/be/bis.js.map +1 -1
  72. package/dist/be/nn.d.ts +2 -2
  73. package/dist/be/nn.js +1 -11
  74. package/dist/be/nn.js.map +1 -1
  75. package/dist/be/vat.d.ts +2 -2
  76. package/dist/be/vat.js +1 -9
  77. package/dist/be/vat.js.map +1 -1
  78. package/dist/bg/egn.d.ts +2 -2
  79. package/dist/bg/egn.js +3 -18
  80. package/dist/bg/egn.js.map +1 -1
  81. package/dist/bg/pnf.d.ts +2 -2
  82. package/dist/bg/pnf.js +1 -8
  83. package/dist/bg/pnf.js.map +1 -1
  84. package/dist/bg/vat.d.ts +2 -2
  85. package/dist/bg/vat.js +3 -9
  86. package/dist/bg/vat.js.map +1 -1
  87. package/dist/bh/cpr.d.ts +2 -2
  88. package/dist/bh/cpr.js +1 -17
  89. package/dist/bh/cpr.js.map +1 -1
  90. package/dist/bic.d.ts +13 -2
  91. package/dist/bic.js +1 -11
  92. package/dist/bic.js.map +1 -1
  93. package/dist/br/cnpj.d.ts +2 -2
  94. package/dist/br/cnpj.js +1 -20
  95. package/dist/br/cnpj.js.map +1 -1
  96. package/dist/br/cpf.d.ts +2 -2
  97. package/dist/br/cpf.js +1 -14
  98. package/dist/br/cpf.js.map +1 -1
  99. package/dist/by/unp.d.ts +2 -2
  100. package/dist/by/unp.js +3 -14
  101. package/dist/by/unp.js.map +1 -1
  102. package/dist/bz/tin.d.ts +2 -2
  103. package/dist/bz/tin.js +1 -26
  104. package/dist/bz/tin.js.map +1 -1
  105. package/dist/ca/bn.d.ts +2 -2
  106. package/dist/ca/bn.js +2 -10
  107. package/dist/ca/bn.js.map +1 -1
  108. package/dist/ca/sin.d.ts +2 -2
  109. package/dist/ca/sin.js +2 -10
  110. package/dist/ca/sin.js.map +1 -1
  111. package/dist/ch/ssn.d.ts +2 -2
  112. package/dist/ch/ssn.js +1 -9
  113. package/dist/ch/ssn.js.map +1 -1
  114. package/dist/ch/uid.d.ts +2 -2
  115. package/dist/ch/uid.js +1 -9
  116. package/dist/ch/uid.js.map +1 -1
  117. package/dist/ch/vat.d.ts +2 -2
  118. package/dist/ch/vat.js +1 -9
  119. package/dist/ch/vat.js.map +1 -1
  120. package/dist/cl/rut.d.ts +2 -2
  121. package/dist/cl/rut.js +1 -14
  122. package/dist/cl/rut.js.map +1 -1
  123. package/dist/cn/ric.d.ts +2 -2
  124. package/dist/cn/ric.js +3 -14
  125. package/dist/cn/ric.js.map +1 -1
  126. package/dist/cn/uscc.d.ts +2 -2
  127. package/dist/cn/uscc.js +1 -10
  128. package/dist/cn/uscc.js.map +1 -1
  129. package/dist/co/nit.d.ts +2 -2
  130. package/dist/co/nit.js +2 -12
  131. package/dist/co/nit.js.map +1 -1
  132. package/dist/cr/cpf.d.ts +18 -2
  133. package/dist/cr/cpf.js +1 -16
  134. package/dist/cr/cpf.js.map +1 -1
  135. package/dist/creditcard.d.ts +2 -2
  136. package/dist/creditcard.js +5 -14
  137. package/dist/creditcard.js.map +1 -1
  138. package/dist/cu/ni.d.ts +2 -2
  139. package/dist/cu/ni.js +2 -17
  140. package/dist/cu/ni.js.map +1 -1
  141. package/dist/cy/vat.d.ts +2 -2
  142. package/dist/cy/vat.js +1 -8
  143. package/dist/cy/vat.js.map +1 -1
  144. package/dist/cz/dic.d.ts +2 -2
  145. package/dist/cz/dic.js +7 -13
  146. package/dist/cz/dic.js.map +1 -1
  147. package/dist/cz/ico.d.ts +2 -2
  148. package/dist/cz/ico.js +2 -10
  149. package/dist/cz/ico.js.map +1 -1
  150. package/dist/cz/rc.d.ts +2 -2
  151. package/dist/cz/rc.js +2 -26
  152. package/dist/cz/rc.js.map +1 -1
  153. package/dist/de/handelsreg.d.ts +19 -2
  154. package/dist/de/handelsreg.js +1 -17
  155. package/dist/de/handelsreg.js.map +1 -1
  156. package/dist/de/idnr.d.ts +2 -2
  157. package/dist/de/idnr.js +2 -12
  158. package/dist/de/idnr.js.map +1 -1
  159. package/dist/de/stnr.d.ts +17 -2
  160. package/dist/de/stnr.js +1 -15
  161. package/dist/de/stnr.js.map +1 -1
  162. package/dist/de/svnr.d.ts +2 -2
  163. package/dist/de/svnr.js +2 -11
  164. package/dist/de/svnr.js.map +1 -1
  165. package/dist/de/vat.d.ts +2 -2
  166. package/dist/de/vat.js +2 -11
  167. package/dist/de/vat.js.map +1 -1
  168. package/dist/dk/cpr.d.ts +2 -2
  169. package/dist/dk/cpr.js +2 -10
  170. package/dist/dk/cpr.js.map +1 -1
  171. package/dist/dk/cvr.d.ts +2 -2
  172. package/dist/dk/cvr.js +2 -15
  173. package/dist/dk/cvr.js.map +1 -1
  174. package/dist/dk/vat.d.ts +2 -2
  175. package/dist/dk/vat.js +3 -13
  176. package/dist/dk/vat.js.map +1 -1
  177. package/dist/do/rnc.d.ts +2 -2
  178. package/dist/do/rnc.js +2 -16
  179. package/dist/do/rnc.js.map +1 -1
  180. package/dist/ec/ruc.d.ts +2 -2
  181. package/dist/ec/ruc.js +1 -18
  182. package/dist/ec/ruc.js.map +1 -1
  183. package/dist/ee/ik.d.ts +2 -2
  184. package/dist/ee/ik.js +3 -20
  185. package/dist/ee/ik.js.map +1 -1
  186. package/dist/ee/registrikood.d.ts +2 -2
  187. package/dist/ee/registrikood.js +1 -8
  188. package/dist/ee/registrikood.js.map +1 -1
  189. package/dist/ee/vat.d.ts +2 -2
  190. package/dist/ee/vat.js +2 -10
  191. package/dist/ee/vat.js.map +1 -1
  192. package/dist/eg/tn.d.ts +11 -2
  193. package/dist/eg/tn.js +1 -9
  194. package/dist/eg/tn.js.map +1 -1
  195. package/dist/es/cif.d.ts +2 -2
  196. package/dist/es/cif.js +1 -10
  197. package/dist/es/cif.js.map +1 -1
  198. package/dist/es/dni.d.ts +2 -2
  199. package/dist/es/dni.js +1 -9
  200. package/dist/es/dni.js.map +1 -1
  201. package/dist/es/nie.d.ts +2 -2
  202. package/dist/es/nie.js +1 -9
  203. package/dist/es/nie.js.map +1 -1
  204. package/dist/es/nss.d.ts +2 -2
  205. package/dist/es/nss.js +1 -16
  206. package/dist/es/nss.js.map +1 -1
  207. package/dist/es/vat.d.ts +2 -2
  208. package/dist/es/vat.js +5 -10
  209. package/dist/es/vat.js.map +1 -1
  210. package/dist/eu/vat.d.ts +2 -2
  211. package/dist/eu/vat.js +1 -0
  212. package/dist/eu/vat.js.map +1 -1
  213. package/dist/fi/hetu.d.ts +2 -2
  214. package/dist/fi/hetu.js +2 -10
  215. package/dist/fi/hetu.js.map +1 -1
  216. package/dist/fi/vat.d.ts +2 -2
  217. package/dist/fi/vat.js +3 -10
  218. package/dist/fi/vat.js.map +1 -1
  219. package/dist/fi/ytunnus.d.ts +2 -2
  220. package/dist/fi/ytunnus.js +2 -10
  221. package/dist/fi/ytunnus.js.map +1 -1
  222. package/dist/fr/nif.d.ts +2 -2
  223. package/dist/fr/nif.js +1 -9
  224. package/dist/fr/nif.js.map +1 -1
  225. package/dist/fr/nir.d.ts +2 -2
  226. package/dist/fr/nir.js +2 -14
  227. package/dist/fr/nir.js.map +1 -1
  228. package/dist/fr/siren.d.ts +2 -2
  229. package/dist/fr/siren.js +2 -10
  230. package/dist/fr/siren.js.map +1 -1
  231. package/dist/fr/siret.d.ts +2 -2
  232. package/dist/fr/siret.js +2 -11
  233. package/dist/fr/siret.js.map +1 -1
  234. package/dist/fr/tva.d.ts +2 -2
  235. package/dist/fr/tva.js +2 -12
  236. package/dist/fr/tva.js.map +1 -1
  237. package/dist/gb/nino.d.ts +12 -2
  238. package/dist/gb/nino.js +1 -10
  239. package/dist/gb/nino.js.map +1 -1
  240. package/dist/gb/sedol.d.ts +2 -2
  241. package/dist/gb/sedol.js +1 -11
  242. package/dist/gb/sedol.js.map +1 -1
  243. package/dist/gb/utr.d.ts +2 -2
  244. package/dist/gb/utr.js +2 -10
  245. package/dist/gb/utr.js.map +1 -1
  246. package/dist/gb/vat.d.ts +2 -2
  247. package/dist/gb/vat.js +2 -11
  248. package/dist/gb/vat.js.map +1 -1
  249. package/dist/ge/pin.d.ts +14 -2
  250. package/dist/ge/pin.js +1 -12
  251. package/dist/ge/pin.js.map +1 -1
  252. package/dist/gh/tin.d.ts +2 -2
  253. package/dist/gh/tin.js +1 -15
  254. package/dist/gh/tin.js.map +1 -1
  255. package/dist/gr/amka.d.ts +2 -2
  256. package/dist/gr/amka.js +3 -11
  257. package/dist/gr/amka.js.map +1 -1
  258. package/dist/gr/vat.d.ts +2 -2
  259. package/dist/gr/vat.js +1 -10
  260. package/dist/gr/vat.js.map +1 -1
  261. package/dist/gt/nit.d.ts +2 -2
  262. package/dist/gt/nit.js +1 -12
  263. package/dist/gt/nit.js.map +1 -1
  264. package/dist/hk/hkid.d.ts +2 -2
  265. package/dist/hk/hkid.js +1 -10
  266. package/dist/hk/hkid.js.map +1 -1
  267. package/dist/hr/vat.d.ts +2 -2
  268. package/dist/hr/vat.js +2 -9
  269. package/dist/hr/vat.js.map +1 -1
  270. package/dist/hu/vat.d.ts +2 -2
  271. package/dist/hu/vat.js +3 -10
  272. package/dist/hu/vat.js.map +1 -1
  273. package/dist/iban.d.ts +2 -2
  274. package/dist/iban.js +2 -8
  275. package/dist/iban.js.map +1 -1
  276. package/dist/id/npwp.d.ts +2 -2
  277. package/dist/id/npwp.js +3 -13
  278. package/dist/id/npwp.js.map +1 -1
  279. package/dist/ie/pps.d.ts +2 -2
  280. package/dist/ie/pps.js +1 -10
  281. package/dist/ie/pps.js.map +1 -1
  282. package/dist/ie/vat.d.ts +2 -2
  283. package/dist/ie/vat.js +1 -9
  284. package/dist/ie/vat.js.map +1 -1
  285. package/dist/il/idnr.d.ts +2 -2
  286. package/dist/il/idnr.js +2 -9
  287. package/dist/il/idnr.js.map +1 -1
  288. package/dist/in/aadhaar.d.ts +2 -2
  289. package/dist/in/aadhaar.js +2 -12
  290. package/dist/in/aadhaar.js.map +1 -1
  291. package/dist/in/gstin.d.ts +2 -2
  292. package/dist/in/gstin.js +1 -10
  293. package/dist/in/gstin.js.map +1 -1
  294. package/dist/in/pan.d.ts +15 -2
  295. package/dist/in/pan.js +1 -13
  296. package/dist/in/pan.js.map +1 -1
  297. package/dist/index.d.ts +2 -2
  298. package/dist/index.js +6 -6
  299. package/dist/iq/nid.d.ts +16 -2
  300. package/dist/iq/nid.js +2 -15
  301. package/dist/iq/nid.js.map +1 -1
  302. package/dist/ir/nid.d.ts +2 -2
  303. package/dist/ir/nid.js +2 -24
  304. package/dist/ir/nid.js.map +1 -1
  305. package/dist/is/kennitala.d.ts +2 -2
  306. package/dist/is/kennitala.js +2 -13
  307. package/dist/is/kennitala.js.map +1 -1
  308. package/dist/is/vsk.d.ts +9 -2
  309. package/dist/is/vsk.js +1 -7
  310. package/dist/is/vsk.js.map +1 -1
  311. package/dist/isin.d.ts +2 -2
  312. package/dist/isin.js +2 -12
  313. package/dist/isin.js.map +1 -1
  314. package/dist/it/codicefiscale.d.ts +2 -2
  315. package/dist/it/codicefiscale.js +1 -21
  316. package/dist/it/codicefiscale.js.map +1 -1
  317. package/dist/it/iva.d.ts +2 -2
  318. package/dist/it/iva.js +2 -9
  319. package/dist/it/iva.js.map +1 -1
  320. package/dist/jp/cn.d.ts +2 -2
  321. package/dist/jp/cn.js +1 -9
  322. package/dist/jp/cn.js.map +1 -1
  323. package/dist/jp/mynumber.d.ts +2 -2
  324. package/dist/jp/mynumber.js +1 -10
  325. package/dist/jp/mynumber.js.map +1 -1
  326. package/dist/kr/brn.d.ts +11 -2
  327. package/dist/kr/brn.js +1 -9
  328. package/dist/kr/brn.js.map +1 -1
  329. package/dist/kr/rrn.d.ts +2 -2
  330. package/dist/kr/rrn.js +2 -11
  331. package/dist/kr/rrn.js.map +1 -1
  332. package/dist/kw/civil.d.ts +2 -2
  333. package/dist/kw/civil.js +2 -14
  334. package/dist/kw/civil.js.map +1 -1
  335. package/dist/kz/iin.d.ts +2 -2
  336. package/dist/kz/iin.js +3 -18
  337. package/dist/kz/iin.js.map +1 -1
  338. package/dist/lei.d.ts +2 -2
  339. package/dist/lei.js +2 -11
  340. package/dist/lei.js.map +1 -1
  341. package/dist/li/peid.d.ts +11 -2
  342. package/dist/li/peid.js +1 -9
  343. package/dist/li/peid.js.map +1 -1
  344. package/dist/lk/nic.d.ts +2 -2
  345. package/dist/lk/nic.js +2 -14
  346. package/dist/lk/nic.js.map +1 -1
  347. package/dist/lt/asmens.d.ts +2 -2
  348. package/dist/lt/asmens.js +2 -1
  349. package/dist/lt/asmens.js.map +1 -1
  350. package/dist/lt/vat.d.ts +2 -2
  351. package/dist/lt/vat.js +2 -10
  352. package/dist/lt/vat.js.map +1 -1
  353. package/dist/lu/vat.d.ts +2 -2
  354. package/dist/lu/vat.js +2 -8
  355. package/dist/lu/vat.js.map +1 -1
  356. package/dist/luhn.d.ts +2 -2
  357. package/dist/luhn.js +2 -9
  358. package/dist/luhn.js.map +1 -1
  359. package/dist/lv/vat.d.ts +2 -2
  360. package/dist/lv/vat.js +2 -28
  361. package/dist/lv/vat.js.map +1 -1
  362. package/dist/ma/ice.d.ts +2 -2
  363. package/dist/ma/ice.js +2 -11
  364. package/dist/ma/ice.js.map +1 -1
  365. package/dist/mc/tva.d.ts +2 -2
  366. package/dist/mc/tva.js +1 -0
  367. package/dist/mc/tva.js.map +1 -1
  368. package/dist/md/idno.d.ts +2 -2
  369. package/dist/md/idno.js +1 -10
  370. package/dist/md/idno.js.map +1 -1
  371. package/dist/me/pib.d.ts +2 -2
  372. package/dist/me/pib.js +2 -10
  373. package/dist/me/pib.js.map +1 -1
  374. package/dist/mk/edb.d.ts +2 -2
  375. package/dist/mk/edb.js +2 -11
  376. package/dist/mk/edb.js.map +1 -1
  377. package/dist/mt/vat.d.ts +2 -2
  378. package/dist/mt/vat.js +3 -10
  379. package/dist/mt/vat.js.map +1 -1
  380. package/dist/mu/brn.d.ts +23 -2
  381. package/dist/mu/brn.js +1 -21
  382. package/dist/mu/brn.js.map +1 -1
  383. package/dist/mx/clabe.d.ts +2 -2
  384. package/dist/mx/clabe.js +1 -14
  385. package/dist/mx/clabe.js.map +1 -1
  386. package/dist/mx/curp.d.ts +2 -2
  387. package/dist/mx/curp.js +3 -17
  388. package/dist/mx/curp.js.map +1 -1
  389. package/dist/mx/rfc.d.ts +2 -2
  390. package/dist/mx/rfc.js +3 -19
  391. package/dist/mx/rfc.js.map +1 -1
  392. package/dist/my/nric.d.ts +2 -2
  393. package/dist/my/nric.js +2 -14
  394. package/dist/my/nric.js.map +1 -1
  395. package/dist/ng/nin.d.ts +13 -2
  396. package/dist/ng/nin.js +1 -11
  397. package/dist/ng/nin.js.map +1 -1
  398. package/dist/ni/ruc.d.ts +2 -2
  399. package/dist/ni/ruc.js +1 -23
  400. package/dist/ni/ruc.js.map +1 -1
  401. package/dist/nl/bsn.d.ts +2 -2
  402. package/dist/nl/bsn.js +2 -10
  403. package/dist/nl/bsn.js.map +1 -1
  404. package/dist/nl/kvk.d.ts +9 -2
  405. package/dist/nl/kvk.js +1 -7
  406. package/dist/nl/kvk.js.map +1 -1
  407. package/dist/nl/vat.d.ts +2 -2
  408. package/dist/nl/vat.js +1 -13
  409. package/dist/nl/vat.js.map +1 -1
  410. package/dist/no/fodselsnummer.d.ts +2 -2
  411. package/dist/no/fodselsnummer.js +2 -10
  412. package/dist/no/fodselsnummer.js.map +1 -1
  413. package/dist/no/mva.d.ts +2 -2
  414. package/dist/no/mva.js +1 -8
  415. package/dist/no/mva.js.map +1 -1
  416. package/dist/no/orgnr.d.ts +2 -2
  417. package/dist/no/orgnr.js +2 -8
  418. package/dist/no/orgnr.js.map +1 -1
  419. package/dist/nz/ird.d.ts +2 -2
  420. package/dist/nz/ird.js +2 -11
  421. package/dist/nz/ird.js.map +1 -1
  422. package/dist/pa/ruc.d.ts +2 -2
  423. package/dist/pa/ruc.js +1 -18
  424. package/dist/pa/ruc.js.map +1 -1
  425. package/dist/patterns.d.ts +8 -7
  426. package/dist/patterns.js +3 -5
  427. package/dist/patterns.js.map +1 -1
  428. package/dist/pe/ruc.d.ts +2 -2
  429. package/dist/pe/ruc.js +1 -15
  430. package/dist/pe/ruc.js.map +1 -1
  431. package/dist/ph/philid.d.ts +14 -2
  432. package/dist/ph/philid.js +1 -12
  433. package/dist/ph/philid.js.map +1 -1
  434. package/dist/pk/cnic.d.ts +14 -2
  435. package/dist/pk/cnic.js +1 -12
  436. package/dist/pk/cnic.js.map +1 -1
  437. package/dist/pl/nip.d.ts +2 -2
  438. package/dist/pl/nip.js +2 -10
  439. package/dist/pl/nip.js.map +1 -1
  440. package/dist/pl/pesel.d.ts +2 -2
  441. package/dist/pl/pesel.js +3 -13
  442. package/dist/pl/pesel.js.map +1 -1
  443. package/dist/pl/regon.d.ts +2 -2
  444. package/dist/pl/regon.js +2 -11
  445. package/dist/pl/regon.js.map +1 -1
  446. package/dist/pt/cc.d.ts +2 -2
  447. package/dist/pt/cc.js +1 -9
  448. package/dist/pt/cc.js.map +1 -1
  449. package/dist/pt/vat.d.ts +2 -2
  450. package/dist/pt/vat.js +3 -11
  451. package/dist/pt/vat.js.map +1 -1
  452. package/dist/ro/cnp.d.ts +2 -2
  453. package/dist/ro/cnp.js +4 -14
  454. package/dist/ro/cnp.js.map +1 -1
  455. package/dist/ro/vat.d.ts +2 -2
  456. package/dist/ro/vat.js +13 -11
  457. package/dist/ro/vat.js.map +1 -1
  458. package/dist/rs/pib.d.ts +2 -2
  459. package/dist/rs/pib.js +1 -9
  460. package/dist/rs/pib.js.map +1 -1
  461. package/dist/ru/inn.d.ts +2 -2
  462. package/dist/ru/inn.js +1 -11
  463. package/dist/ru/inn.js.map +1 -1
  464. package/dist/se/orgnr.d.ts +2 -2
  465. package/dist/se/orgnr.js +2 -9
  466. package/dist/se/orgnr.js.map +1 -1
  467. package/dist/se/personnummer.d.ts +2 -2
  468. package/dist/se/personnummer.js +7 -15
  469. package/dist/se/personnummer.js.map +1 -1
  470. package/dist/se/vat.d.ts +2 -2
  471. package/dist/se/vat.js +3 -10
  472. package/dist/se/vat.js.map +1 -1
  473. package/dist/sg/uen.d.ts +2 -2
  474. package/dist/sg/uen.js +1 -15
  475. package/dist/sg/uen.js.map +1 -1
  476. package/dist/si/emso.d.ts +2 -2
  477. package/dist/si/emso.js +3 -18
  478. package/dist/si/emso.js.map +1 -1
  479. package/dist/si/vat.d.ts +2 -2
  480. package/dist/si/vat.js +3 -12
  481. package/dist/si/vat.js.map +1 -1
  482. package/dist/sk/dic.d.ts +2 -2
  483. package/dist/sk/dic.js +1 -0
  484. package/dist/sk/dic.js.map +1 -1
  485. package/dist/sk/ico.d.ts +2 -2
  486. package/dist/sk/ico.js +1 -0
  487. package/dist/sk/ico.js.map +1 -1
  488. package/dist/sk/rc.d.ts +2 -2
  489. package/dist/sk/rc.js +1 -0
  490. package/dist/sk/rc.js.map +1 -1
  491. package/dist/th/tin.d.ts +2 -2
  492. package/dist/th/tin.js +1 -11
  493. package/dist/th/tin.js.map +1 -1
  494. package/dist/tr/tckimlik.d.ts +2 -2
  495. package/dist/tr/tckimlik.js +1 -20
  496. package/dist/tr/tckimlik.js.map +1 -1
  497. package/dist/tr/vkn.d.ts +2 -2
  498. package/dist/tr/vkn.js +1 -20
  499. package/dist/tr/vkn.js.map +1 -1
  500. package/dist/tw/ubn.d.ts +2 -2
  501. package/dist/tw/ubn.js +1 -11
  502. package/dist/tw/ubn.js.map +1 -1
  503. package/dist/types.d.ts +26 -4
  504. package/dist/ua/edrpou.d.ts +2 -2
  505. package/dist/ua/edrpou.js +1 -11
  506. package/dist/ua/edrpou.js.map +1 -1
  507. package/dist/us/ein.d.ts +12 -2
  508. package/dist/us/ein.js +1 -10
  509. package/dist/us/ein.js.map +1 -1
  510. package/dist/us/itin.d.ts +13 -2
  511. package/dist/us/itin.js +1 -11
  512. package/dist/us/itin.js.map +1 -1
  513. package/dist/us/rtn.d.ts +2 -2
  514. package/dist/us/rtn.js +3 -18
  515. package/dist/us/rtn.js.map +1 -1
  516. package/dist/us/ssn.d.ts +13 -2
  517. package/dist/us/ssn.js +1 -11
  518. package/dist/us/ssn.js.map +1 -1
  519. package/dist/uy/rut.d.ts +2 -2
  520. package/dist/uy/rut.js +1 -14
  521. package/dist/uy/rut.js.map +1 -1
  522. package/dist/ve/rif.d.ts +2 -2
  523. package/dist/ve/rif.js +2 -15
  524. package/dist/ve/rif.js.map +1 -1
  525. package/dist/vn/mst.d.ts +2 -2
  526. package/dist/vn/mst.js +1 -12
  527. package/dist/vn/mst.js.map +1 -1
  528. package/dist/za/idnr.d.ts +2 -2
  529. package/dist/za/idnr.js +3 -16
  530. package/dist/za/idnr.js.map +1 -1
  531. package/package.json +22 -12
  532. package/src/_checksums/mod1110.ts +1 -1
  533. package/src/ad/nrt.ts +7 -3
  534. package/src/ae/eid.ts +7 -3
  535. package/src/ai/tin.ts +7 -3
  536. package/src/al/nipt.ts +7 -3
  537. package/src/am/tin.ts +7 -3
  538. package/src/ar/cbu.ts +7 -3
  539. package/src/ar/cuit.ts +7 -3
  540. package/src/ar/dni.ts +7 -3
  541. package/src/at/businessid.ts +7 -3
  542. package/src/at/tin.ts +7 -3
  543. package/src/at/uid.ts +7 -3
  544. package/src/at/vnr.ts +37 -9
  545. package/src/au/abn.ts +7 -3
  546. package/src/au/acn.ts +7 -3
  547. package/src/au/tfn.ts +7 -3
  548. package/src/az/voen.ts +7 -3
  549. package/src/ba/jmbg.ts +8 -7
  550. package/src/bd/nid.ts +7 -3
  551. package/src/be/bis.ts +8 -4
  552. package/src/be/nn.ts +7 -3
  553. package/src/be/vat.ts +7 -3
  554. package/src/bg/egn.ts +8 -7
  555. package/src/bg/pnf.ts +7 -3
  556. package/src/bg/vat.ts +8 -3
  557. package/src/bh/cpr.ts +7 -3
  558. package/src/bic.ts +7 -3
  559. package/src/br/cnpj.ts +7 -3
  560. package/src/br/cpf.ts +7 -3
  561. package/src/by/unp.ts +10 -5
  562. package/src/bz/tin.ts +7 -3
  563. package/src/ca/bn.ts +7 -3
  564. package/src/ca/sin.ts +7 -3
  565. package/src/ch/ssn.ts +7 -3
  566. package/src/ch/uid.ts +7 -3
  567. package/src/ch/vat.ts +9 -5
  568. package/src/cl/rut.ts +7 -3
  569. package/src/cn/ric.ts +8 -7
  570. package/src/cn/uscc.ts +7 -3
  571. package/src/co/nit.ts +8 -4
  572. package/src/cr/cpf.ts +7 -3
  573. package/src/creditcard.ts +10 -6
  574. package/src/cu/ni.ts +8 -7
  575. package/src/cy/vat.ts +7 -3
  576. package/src/cz/dic.ts +9 -4
  577. package/src/cz/ico.ts +7 -3
  578. package/src/cz/rc.ts +8 -7
  579. package/src/de/handelsreg.ts +7 -3
  580. package/src/de/idnr.ts +7 -3
  581. package/src/de/stnr.ts +7 -3
  582. package/src/de/svnr.ts +7 -3
  583. package/src/de/vat.ts +7 -3
  584. package/src/dk/cpr.ts +8 -7
  585. package/src/dk/cvr.ts +7 -3
  586. package/src/dk/vat.ts +8 -3
  587. package/src/do/rnc.ts +7 -3
  588. package/src/ec/ruc.ts +7 -3
  589. package/src/ee/ik.ts +8 -7
  590. package/src/ee/registrikood.ts +8 -4
  591. package/src/ee/vat.ts +7 -3
  592. package/src/eg/tn.ts +7 -3
  593. package/src/es/cif.ts +8 -4
  594. package/src/es/dni.ts +7 -3
  595. package/src/es/nie.ts +8 -4
  596. package/src/es/nss.ts +7 -3
  597. package/src/es/vat.ts +13 -5
  598. package/src/eu/vat.ts +10 -6
  599. package/src/fi/hetu.ts +8 -7
  600. package/src/fi/vat.ts +8 -3
  601. package/src/fi/ytunnus.ts +7 -3
  602. package/src/fr/nif.ts +7 -3
  603. package/src/fr/nir.ts +8 -7
  604. package/src/fr/siren.ts +7 -3
  605. package/src/fr/siret.ts +7 -3
  606. package/src/fr/tva.ts +7 -3
  607. package/src/gb/nino.ts +7 -3
  608. package/src/gb/sedol.ts +7 -3
  609. package/src/gb/utr.ts +7 -3
  610. package/src/gb/vat.ts +7 -3
  611. package/src/ge/pin.ts +7 -3
  612. package/src/gh/tin.ts +7 -3
  613. package/src/gr/amka.ts +7 -3
  614. package/src/gr/vat.ts +7 -3
  615. package/src/gt/nit.ts +7 -3
  616. package/src/hk/hkid.ts +7 -3
  617. package/src/hr/vat.ts +7 -3
  618. package/src/hu/vat.ts +8 -3
  619. package/src/iban.ts +7 -3
  620. package/src/id/npwp.ts +7 -3
  621. package/src/ie/pps.ts +7 -3
  622. package/src/ie/vat.ts +7 -3
  623. package/src/il/idnr.ts +7 -3
  624. package/src/in/aadhaar.ts +7 -3
  625. package/src/in/gstin.ts +7 -3
  626. package/src/in/pan.ts +7 -3
  627. package/src/index.ts +3 -0
  628. package/src/iq/nid.ts +7 -3
  629. package/src/ir/nid.ts +7 -3
  630. package/src/is/kennitala.ts +7 -3
  631. package/src/is/vsk.ts +7 -3
  632. package/src/isin.ts +7 -3
  633. package/src/it/codicefiscale.ts +11 -7
  634. package/src/it/iva.ts +7 -3
  635. package/src/jp/cn.ts +7 -3
  636. package/src/jp/mynumber.ts +7 -3
  637. package/src/kr/brn.ts +7 -3
  638. package/src/kr/rrn.ts +8 -7
  639. package/src/kw/civil.ts +8 -7
  640. package/src/kz/iin.ts +8 -8
  641. package/src/lei.ts +7 -3
  642. package/src/li/peid.ts +7 -3
  643. package/src/lk/nic.ts +8 -7
  644. package/src/lt/asmens.ts +8 -4
  645. package/src/lt/vat.ts +8 -3
  646. package/src/lu/vat.ts +8 -3
  647. package/src/luhn.ts +7 -3
  648. package/src/lv/vat.ts +7 -3
  649. package/src/ma/ice.ts +7 -3
  650. package/src/mc/tva.ts +9 -5
  651. package/src/md/idno.ts +7 -3
  652. package/src/me/pib.ts +7 -3
  653. package/src/mk/edb.ts +7 -3
  654. package/src/mt/vat.ts +8 -3
  655. package/src/mu/brn.ts +7 -3
  656. package/src/mx/clabe.ts +7 -3
  657. package/src/mx/curp.ts +9 -8
  658. package/src/mx/rfc.ts +8 -4
  659. package/src/my/nric.ts +8 -7
  660. package/src/ng/nin.ts +7 -3
  661. package/src/ni/ruc.ts +7 -3
  662. package/src/nl/bsn.ts +7 -3
  663. package/src/nl/kvk.ts +7 -3
  664. package/src/nl/vat.ts +7 -3
  665. package/src/no/fodselsnummer.ts +11 -7
  666. package/src/no/mva.ts +9 -5
  667. package/src/no/orgnr.ts +7 -3
  668. package/src/nz/ird.ts +8 -4
  669. package/src/pa/ruc.ts +7 -3
  670. package/src/patterns.ts +49 -18
  671. package/src/pe/ruc.ts +7 -3
  672. package/src/ph/philid.ts +7 -3
  673. package/src/pk/cnic.ts +7 -3
  674. package/src/pl/nip.ts +7 -3
  675. package/src/pl/pesel.ts +8 -7
  676. package/src/pl/regon.ts +7 -3
  677. package/src/pt/cc.ts +7 -3
  678. package/src/pt/vat.ts +8 -3
  679. package/src/ro/cnp.ts +15 -8
  680. package/src/ro/vat.ts +8 -3
  681. package/src/rs/pib.ts +7 -3
  682. package/src/ru/inn.ts +7 -3
  683. package/src/se/orgnr.ts +7 -3
  684. package/src/se/personnummer.ts +35 -33
  685. package/src/se/vat.ts +8 -3
  686. package/src/sg/uen.ts +7 -3
  687. package/src/si/emso.ts +8 -7
  688. package/src/si/vat.ts +8 -3
  689. package/src/sk/dic.ts +8 -4
  690. package/src/sk/ico.ts +3 -2
  691. package/src/sk/rc.ts +6 -2
  692. package/src/th/tin.ts +7 -3
  693. package/src/tr/tckimlik.ts +7 -3
  694. package/src/tr/vkn.ts +7 -3
  695. package/src/tw/ubn.ts +7 -3
  696. package/src/types.ts +34 -3
  697. package/src/ua/edrpou.ts +7 -3
  698. package/src/us/ein.ts +7 -3
  699. package/src/us/itin.ts +7 -3
  700. package/src/us/rtn.ts +16 -8
  701. package/src/us/ssn.ts +7 -3
  702. package/src/uy/rut.ts +7 -3
  703. package/src/ve/rif.ts +8 -6
  704. package/src/vn/mst.ts +7 -3
  705. package/src/za/idnr.ts +8 -7
package/src/cn/ric.ts CHANGED
@@ -11,6 +11,12 @@
11
11
  * @see https://en.wikipedia.org/wiki/Resident_Identity_Card
12
12
  */
13
13
 
14
+ import type {
15
+ ParsedPersonId,
16
+ ValidateResult,
17
+ CountryValidator,
18
+ } from "../types";
19
+
14
20
  import {
15
21
  mod112checkChar,
16
22
  mod112validate,
@@ -21,12 +27,6 @@ import { randomInt } from "#util/generate";
21
27
  import { err } from "#util/result";
22
28
  import { isdigits } from "#util/strings";
23
29
 
24
- import type {
25
- ParsedPersonId,
26
- ValidateResult,
27
- Validator,
28
- } from "../types";
29
-
30
30
  const compact = (value: string): string =>
31
31
  clean(value, " -").toUpperCase();
32
32
 
@@ -155,12 +155,13 @@ const generate = (): string => {
155
155
  };
156
156
 
157
157
  /** Chinese Resident Identity Card number. */
158
- const ric: Validator<ParsedPersonId> = {
158
+ const ric: CountryValidator<"CN", ParsedPersonId> = {
159
159
  name: "Chinese Resident Identity Card",
160
160
  localName: "居民身份证号码",
161
161
  abbreviation: "RIC",
162
162
  aliases: ["身份证", "居民身份证号码", "RIC"] as const,
163
163
  candidatePattern: "\\d{17}[\\dX]",
164
+ scope: "country",
164
165
  country: "CN",
165
166
  entityType: "person",
166
167
  description:
package/src/cn/uscc.ts CHANGED
@@ -9,6 +9,11 @@
9
9
  * @see https://zh.wikipedia.org/wiki/统一社会信用代码
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import { clean } from "#util/clean";
13
18
  import {
14
19
  randomChar,
@@ -18,8 +23,6 @@ import {
18
23
  import { err } from "#util/result";
19
24
  import { isdigits } from "#util/strings";
20
25
 
21
- import type { ValidateResult, Validator } from "../types";
22
-
23
26
  const ALPHABET = "0123456789ABCDEFGHJKLMNPQRTUWXY";
24
27
 
25
28
  const WEIGHTS = [
@@ -98,13 +101,14 @@ const generate = (): string => {
98
101
  };
99
102
 
100
103
  /** Chinese Unified Social Credit Code. */
101
- const uscc: Validator = {
104
+ const uscc: CountryValidator<"CN"> = {
102
105
  name: "Unified Social Credit Code",
103
106
  localName: "统一社会信用代码",
104
107
  abbreviation: "USCC",
105
108
  aliases: ["统一社会信用代码", "USCC"] as const,
106
109
  candidatePattern:
107
110
  "[0-9A-HJ-NP-RTUW-Y]{2}\\d{6}[0-9A-HJ-NP-RTUW-Y]{10}",
111
+ scope: "country",
108
112
  country: "CN",
109
113
  entityType: "company",
110
114
  description:
package/src/co/nit.ts CHANGED
@@ -10,13 +10,16 @@
10
10
  * @see https://es.wikipedia.org/wiki/Número_de_identificación_tributaria
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import { clean } from "#util/clean";
14
19
  import { randomDigits } from "#util/generate";
15
20
  import { err } from "#util/result";
16
21
  import { isdigits } from "#util/strings";
17
22
 
18
- import type { ValidateResult, Validator } from "../types";
19
-
20
23
  const WEIGHTS = [
21
24
  3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71,
22
25
  ] as const;
@@ -57,7 +60,7 @@ const validate = (value: string): ValidateResult => {
57
60
 
58
61
  const body = v.slice(0, -1);
59
62
  const check = calcCheckDigit(body);
60
- if (check !== Number(v[v.length - 1])) {
63
+ if (check !== Number(v.at(-1))) {
61
64
  return err(
62
65
  "INVALID_CHECKSUM",
63
66
  "NIT check digit does not match",
@@ -86,7 +89,7 @@ const generate = (): string => {
86
89
  };
87
90
 
88
91
  /** Colombian tax identification number. */
89
- const nit: Validator = {
92
+ const nit: CountryValidator<"CO"> = {
90
93
  name: "Número de Identificación Tributaria",
91
94
  localName: "Número de Identificación Tributaria",
92
95
  abbreviation: "NIT",
@@ -95,6 +98,7 @@ const nit: Validator = {
95
98
  "Número de Identificación Tributaria",
96
99
  ] as const,
97
100
  candidatePattern: "\\d{9,10}-?\\d",
101
+ scope: "country",
98
102
  country: "CO",
99
103
  entityType: "any",
100
104
  description: "Tax identifier issued by the DIAN",
package/src/cr/cpf.ts CHANGED
@@ -23,12 +23,15 @@ const generate = (): string => {
23
23
  * @see https://www.tse.go.cr/
24
24
  */
25
25
 
26
+ import type {
27
+ ValidateResult,
28
+ CountryValidator,
29
+ } from "../types";
30
+
26
31
  import { clean } from "#util/clean";
27
32
  import { randomDigits, randomInt } from "#util/generate";
28
33
  import { err } from "#util/result";
29
34
 
30
- import type { ValidateResult, Validator } from "../types";
31
-
32
35
  /**
33
36
  * Compact: strip spaces, pad hyphen-separated parts
34
37
  * (2-4-4), join, and prepend '0' if 9 digits.
@@ -91,12 +94,13 @@ const format = (value: string): string => {
91
94
  *
92
95
  * Examples sourced from python-stdnum test suite.
93
96
  */
94
- const cpf: Validator = {
97
+ const cpf: CountryValidator<"CR"> = {
95
98
  name: "Costa Rican Physical Person ID",
96
99
  localName: "Cédula de Persona Física",
97
100
  abbreviation: "CPF",
98
101
  aliases: ["CPF", "cédula de persona física"] as const,
99
102
  candidatePattern: "\\d{9,12}",
103
+ scope: "country",
100
104
  country: "CR",
101
105
  entityType: "person",
102
106
  lengths: [10] as const,
package/src/creditcard.ts CHANGED
@@ -9,6 +9,11 @@
9
9
  * @see https://www.iso.org/standard/70484.html
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ GlobalValidator,
15
+ } from "./types";
16
+
12
17
  import {
13
18
  luhnChecksum,
14
19
  luhnValidate,
@@ -18,8 +23,6 @@ import { randomDigits, randomInt } from "#util/generate";
18
23
  import { err } from "#util/result";
19
24
  import { isdigits } from "#util/strings";
20
25
 
21
- import type { ValidateResult, Validator } from "./types";
22
-
23
26
  /**
24
27
  * Card network identifiers returned by
25
28
  * {@link detectNetwork}.
@@ -74,9 +77,9 @@ const format = (value: string): string => {
74
77
  return groups.join(" ");
75
78
  };
76
79
 
77
- const MAESTRO_PREFIXES: readonly number[] = [
80
+ const MAESTRO_PREFIXES = new Set([
78
81
  5018, 5020, 5038, 5893, 6304, 6759, 6761, 6762, 6763,
79
- ];
82
+ ]);
80
83
 
81
84
  /**
82
85
  * Detect the card network from the BIN/IIN prefix.
@@ -112,7 +115,7 @@ const detectNetwork = (
112
115
 
113
116
  // Maestro (check before Mastercard; some share
114
117
  // the 50xx prefix space)
115
- if (MAESTRO_PREFIXES.includes(d4)) return "maestro";
118
+ if (MAESTRO_PREFIXES.has(d4)) return "maestro";
116
119
 
117
120
  // Mastercard: 51-55 or 2221-2720
118
121
  if (d2 >= 51 && d2 <= 55) return "mastercard";
@@ -162,7 +165,8 @@ const generate = (): string => {
162
165
  };
163
166
 
164
167
  /** Credit Card Number (Luhn). */
165
- const creditCard: Validator = {
168
+ const creditCard: GlobalValidator = {
169
+ scope: "global",
166
170
  name: "Credit Card Number",
167
171
  localName: "Credit Card Number",
168
172
  abbreviation: "CC",
package/src/cu/ni.ts CHANGED
@@ -15,17 +15,17 @@
15
15
  * @see https://www.ecured.cu/Carnet_de_Identidad
16
16
  */
17
17
 
18
- import { clean } from "#util/clean";
19
- import { isValidDate } from "#util/date";
20
- import { randomDigits, randomInt } from "#util/generate";
21
- import { err } from "#util/result";
22
-
23
18
  import type {
24
19
  ParsedPersonId,
25
20
  ValidateResult,
26
- Validator,
21
+ CountryValidator,
27
22
  } from "../types";
28
23
 
24
+ import { clean } from "#util/clean";
25
+ import { isValidDate } from "#util/date";
26
+ import { randomDigits, randomInt } from "#util/generate";
27
+ import { err } from "#util/result";
28
+
29
29
  const compact = (value: string): string =>
30
30
  clean(value, " -").trim();
31
31
 
@@ -119,7 +119,7 @@ const generate = (): string => {
119
119
  *
120
120
  * Examples sourced from python-stdnum test suite.
121
121
  */
122
- const ni: Validator<ParsedPersonId> = {
122
+ const ni: CountryValidator<"CU", ParsedPersonId> = {
123
123
  name: "Cuban Identity Card Number",
124
124
  localName: "Número de Identidad",
125
125
  abbreviation: "NI",
@@ -129,6 +129,7 @@ const ni: Validator<ParsedPersonId> = {
129
129
  "carnet de identidad",
130
130
  ] as const,
131
131
  candidatePattern: "\\d{11}",
132
+ scope: "country",
132
133
  country: "CU",
133
134
  entityType: "person",
134
135
  lengths: [11] as const,
package/src/cy/vat.ts CHANGED
@@ -7,13 +7,16 @@
7
7
  * @see https://www.oecd.org/content/dam/oecd/en/topics/policy-issue-focus/aeoi/cyprus-tin.pdf
8
8
  */
9
9
 
10
+ import type {
11
+ ValidateResult,
12
+ CountryValidator,
13
+ } from "../types";
14
+
10
15
  import { clean } from "#util/clean";
11
16
  import { randomDigits } from "#util/generate";
12
17
  import { err } from "#util/result";
13
18
  import { isdigits } from "#util/strings";
14
19
 
15
- import type { ValidateResult, Validator } from "../types";
16
-
17
20
  const ODD_MAP: Record<number, number> = {
18
21
  0: 1,
19
22
  1: 0,
@@ -110,12 +113,13 @@ const generate = (): string => {
110
113
  };
111
114
 
112
115
  /** Cypriot VAT Number. */
113
- const vat: Validator = {
116
+ const vat: CountryValidator<"CY"> = {
114
117
  name: "Cypriot VAT Number",
115
118
  localName: "Αριθμός Εγγραφής Φ.Π.Α.",
116
119
  abbreviation: "ΦΠΑ",
117
120
  aliases: ["ΦΠΑ", "VAT CY"] as const,
118
121
  candidatePattern: "CY\\d{8}[A-Z]",
122
+ scope: "country",
119
123
  country: "CY",
120
124
  entityType: "company",
121
125
  sourceUrl: "https://www.mof.gov.cy/",
package/src/cz/dic.ts CHANGED
@@ -11,15 +11,18 @@
11
11
  * @see https://adisspr.mfcr.cz/dpr/DphReg
12
12
  */
13
13
 
14
+ import type {
15
+ ValidateResult,
16
+ CountryValidator,
17
+ } from "../types";
18
+ import { validate as validateRc } from "./rc";
19
+
14
20
  import { weightedSum } from "#checksums/weighted-sum";
15
21
  import { clean } from "#util/clean";
16
22
  import { randomDigits, randomInt } from "#util/generate";
17
23
  import { err } from "#util/result";
18
24
  import { isdigits } from "#util/strings";
19
25
 
20
- import type { ValidateResult, Validator } from "../types";
21
- import { validate as validateRc } from "./rc";
22
-
23
26
  const ICO_WEIGHTS = [8, 7, 6, 5, 4, 3, 2] as const;
24
27
 
25
28
  const compact = (value: string): string => {
@@ -115,15 +118,17 @@ const generate = (): string => {
115
118
  };
116
119
 
117
120
  /** Czech VAT Number. */
118
- const dic: Validator = {
121
+ const dic: CountryValidator<"CZ"> = {
119
122
  name: "Czech VAT Number",
120
123
  localName: "Daňové identifikační číslo",
121
124
  abbreviation: "DIČ",
122
125
  aliases: ["DIČ", "daňové identifikační číslo"] as const,
123
126
  candidatePattern: "CZ\\d{8,10}",
127
+ scope: "country",
124
128
  country: "CZ",
125
129
  entityType: "any",
126
130
  sourceUrl: "https://adisspr.mfcr.cz/dpr/DphReg",
131
+ lengths: [8, 9, 10] as const,
127
132
  examples: ["25123891", "7103192745"] as const,
128
133
  compact,
129
134
  format,
package/src/cz/ico.ts CHANGED
@@ -8,14 +8,17 @@
8
8
  * @see https://www.czso.cz/
9
9
  */
10
10
 
11
+ import type {
12
+ ValidateResult,
13
+ CountryValidator,
14
+ } from "../types";
15
+
11
16
  import { weightedSum } from "#checksums/weighted-sum";
12
17
  import { clean } from "#util/clean";
13
18
  import { randomDigits } from "#util/generate";
14
19
  import { err } from "#util/result";
15
20
  import { isdigits } from "#util/strings";
16
21
 
17
- import type { ValidateResult, Validator } from "../types";
18
-
19
22
  const WEIGHTS = [8, 7, 6, 5, 4, 3, 2] as const;
20
23
 
21
24
  const compact = (value: string): string =>
@@ -59,12 +62,13 @@ const generate = (): string => {
59
62
  };
60
63
 
61
64
  /** Czech Company Identification Number. */
62
- const ico: Validator = {
65
+ const ico: CountryValidator<"CZ"> = {
63
66
  name: "Czech Company ID",
64
67
  localName: "Identifikační číslo osoby",
65
68
  abbreviation: "IČO",
66
69
  aliases: ["IČO", "IČ", "identifikační číslo"] as const,
67
70
  candidatePattern: "\\d{8}",
71
+ scope: "country",
68
72
  country: "CZ",
69
73
  entityType: "company",
70
74
  description:
package/src/cz/rc.ts CHANGED
@@ -24,18 +24,18 @@
24
24
  * @see Law 133/2000 Sb.
25
25
  */
26
26
 
27
+ import type {
28
+ ParsedPersonId,
29
+ ValidateResult,
30
+ CountryValidator,
31
+ } from "../types";
32
+
27
33
  import { clean } from "#util/clean";
28
34
  import { isValidDate } from "#util/date";
29
35
  import { randomInt } from "#util/generate";
30
36
  import { err } from "#util/result";
31
37
  import { isdigits } from "#util/strings";
32
38
 
33
- import type {
34
- ParsedPersonId,
35
- ValidateResult,
36
- Validator,
37
- } from "../types";
38
-
39
39
  const compact = (value: string): string =>
40
40
  clean(value, " /");
41
41
 
@@ -196,12 +196,13 @@ const generate = (): string => {
196
196
  };
197
197
 
198
198
  /** Czech/Slovak Birth Number. */
199
- const rc: Validator<ParsedPersonId> = {
199
+ const rc: CountryValidator<"CZ", ParsedPersonId> = {
200
200
  name: "Czech Birth Number",
201
201
  localName: "Rodné číslo",
202
202
  abbreviation: "RČ",
203
203
  aliases: ["rodné číslo", "RČ", "birth number"] as const,
204
204
  candidatePattern: "\\d{6}/\\d{3,4}",
205
+ scope: "country",
205
206
  country: "CZ",
206
207
  entityType: "person",
207
208
  description:
@@ -31,12 +31,15 @@ const generate = (): string => {
31
31
  * @see https://de.wikipedia.org/wiki/Handelsregister_(Deutschland)
32
32
  */
33
33
 
34
+ import type {
35
+ ValidateResult,
36
+ CountryValidator,
37
+ } from "../types";
38
+
34
39
  import { clean } from "#util/clean";
35
40
  import { randomDigits, randomPick } from "#util/generate";
36
41
  import { err } from "#util/result";
37
42
 
38
- import type { ValidateResult, Validator } from "../types";
39
-
40
43
  const REGISTER_TYPES = new Set([
41
44
  "HRA",
42
45
  "HRB",
@@ -92,7 +95,7 @@ const validate = (value: string): ValidateResult => {
92
95
  const format = (value: string): string => compact(value);
93
96
 
94
97
  /** German Company Register Number. */
95
- const handelsreg: Validator = {
98
+ const handelsreg: CountryValidator<"DE"> = {
96
99
  name: "German Company Register Number",
97
100
  localName: "Handelsregisternummer",
98
101
  abbreviation: "HReg",
@@ -103,6 +106,7 @@ const handelsreg: Validator = {
103
106
  "HRA",
104
107
  ] as const,
105
108
  candidatePattern: "(?:HRA|HRB|GnR|PR|VR)\\s*\\d{1,7}",
109
+ scope: "country",
106
110
  country: "DE",
107
111
  entityType: "company",
108
112
  sourceUrl:
package/src/de/idnr.ts CHANGED
@@ -10,6 +10,11 @@
10
10
  * @see https://www.bzst.de/DE/Privatpersonen/SteuerlicheIdentifikationsnummer/steuerlicheidentifikationsnummer_node.html
11
11
  */
12
12
 
13
+ import type {
14
+ ValidateResult,
15
+ CountryValidator,
16
+ } from "../types";
17
+
13
18
  import {
14
19
  mod1110validate,
15
20
  mod1110checkDigit,
@@ -19,8 +24,6 @@ import { randomInt } from "#util/generate";
19
24
  import { err } from "#util/result";
20
25
  import { isdigits } from "#util/strings";
21
26
 
22
- import type { ValidateResult, Validator } from "../types";
23
-
24
27
  const compact = (value: string): string =>
25
28
  clean(value, " -/");
26
29
 
@@ -118,7 +121,7 @@ const generate = (): string => {
118
121
  };
119
122
 
120
123
  /** German Personal Tax ID. */
121
- const idnr: Validator = {
124
+ const idnr: CountryValidator<"DE"> = {
122
125
  name: "German Tax ID",
123
126
  localName: "Steuerliche Identifikationsnummer",
124
127
  abbreviation: "IdNr",
@@ -128,6 +131,7 @@ const idnr: Validator = {
128
131
  "Steuer-ID",
129
132
  ] as const,
130
133
  candidatePattern: "\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{3}",
134
+ scope: "country",
131
135
  country: "DE",
132
136
  entityType: "person",
133
137
  sourceUrl:
package/src/de/stnr.ts CHANGED
@@ -26,13 +26,16 @@ const generate = (): string => {
26
26
  * @see https://de.wikipedia.org/wiki/Steuernummer
27
27
  */
28
28
 
29
+ import type {
30
+ ValidateResult,
31
+ CountryValidator,
32
+ } from "../types";
33
+
29
34
  import { clean } from "#util/clean";
30
35
  import { randomDigits } from "#util/generate";
31
36
  import { err } from "#util/result";
32
37
  import { isdigits } from "#util/strings";
33
38
 
34
- import type { ValidateResult, Validator } from "../types";
35
-
36
39
  /**
37
40
  * Format patterns per federal state.
38
41
  * [0] = regional format, [1] = unified (federal) format.
@@ -194,12 +197,13 @@ const charCat = (ch: string): string => {
194
197
  };
195
198
 
196
199
  /** German Tax Number (Steuernummer). */
197
- const stnr: Validator = {
200
+ const stnr: CountryValidator<"DE"> = {
198
201
  name: "German Tax Number",
199
202
  localName: "Steuernummer",
200
203
  abbreviation: "StNr",
201
204
  aliases: ["Steuernummer", "St.Nr."] as const,
202
205
  candidatePattern: "\\d{2,4}/\\d{3,4}/\\d{4,5}",
206
+ scope: "country",
203
207
  country: "DE",
204
208
  entityType: "any",
205
209
  description:
package/src/de/svnr.ts CHANGED
@@ -9,6 +9,11 @@
9
9
  * @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import { clean } from "#util/clean";
13
18
  import {
14
19
  isValidDate,
@@ -17,8 +22,6 @@ import {
17
22
  import { randomInt } from "#util/generate";
18
23
  import { err } from "#util/result";
19
24
 
20
- import type { ValidateResult, Validator } from "../types";
21
-
22
25
  const letterValue = (ch: string): number => {
23
26
  const code = ch.charCodeAt(0);
24
27
  if (code >= 65 && code <= 90) return code - 64;
@@ -137,7 +140,7 @@ const generate = (): string => {
137
140
  };
138
141
 
139
142
  /** German Social Insurance Number. */
140
- const svnr: Validator = {
143
+ const svnr: CountryValidator<"DE"> = {
141
144
  name: "German Social Insurance Number",
142
145
  localName: "Sozialversicherungsnummer",
143
146
  abbreviation: "SVNR",
@@ -147,6 +150,7 @@ const svnr: Validator = {
147
150
  "Versicherungsnummer",
148
151
  ] as const,
149
152
  candidatePattern: "\\d{2}\\s?\\d{6}\\s?[A-Z]\\s?\\d{3}",
153
+ scope: "country",
150
154
  country: "DE",
151
155
  entityType: "person",
152
156
  description:
package/src/de/vat.ts CHANGED
@@ -9,6 +9,11 @@
9
9
  * @see https://www.bzst.de/SharedDocs/Downloads/DE/Merkblaetter/ust_idnr_aufbau.pdf
10
10
  */
11
11
 
12
+ import type {
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
12
17
  import {
13
18
  mod1110checkDigit,
14
19
  mod1110validate,
@@ -18,8 +23,6 @@ import { randomDigits, randomInt } from "#util/generate";
18
23
  import { err } from "#util/result";
19
24
  import { isdigits } from "#util/strings";
20
25
 
21
- import type { ValidateResult, Validator } from "../types";
22
-
23
26
  const compact = (value: string): string => {
24
27
  const v = clean(value, " -/");
25
28
  if (v.startsWith("DE") || v.startsWith("de")) {
@@ -70,7 +73,7 @@ const generate = (): string => {
70
73
  };
71
74
 
72
75
  /** German VAT Identification Number. */
73
- const vat: Validator = {
76
+ const vat: CountryValidator<"DE"> = {
74
77
  name: "German VAT Number",
75
78
  localName: "Umsatzsteuer-Identifikationsnummer",
76
79
  abbreviation: "USt-IdNr.",
@@ -80,6 +83,7 @@ const vat: Validator = {
80
83
  "VAT DE",
81
84
  ] as const,
82
85
  candidatePattern: "DE\\d{9}",
86
+ scope: "country",
83
87
  country: "DE",
84
88
  entityType: "company",
85
89
  description:
package/src/dk/cpr.ts CHANGED
@@ -8,18 +8,18 @@
8
8
  * @see https://cpr.dk/
9
9
  */
10
10
 
11
+ import type {
12
+ ParsedPersonId,
13
+ ValidateResult,
14
+ CountryValidator,
15
+ } from "../types";
16
+
11
17
  import { clean } from "#util/clean";
12
18
  import { isValidDate } from "#util/date";
13
19
  import { randomDigits, randomInt } from "#util/generate";
14
20
  import { err } from "#util/result";
15
21
  import { isdigits } from "#util/strings";
16
22
 
17
- import type {
18
- ParsedPersonId,
19
- ValidateResult,
20
- Validator,
21
- } from "../types";
22
-
23
23
  const compact = (value: string): string =>
24
24
  clean(value, " -");
25
25
 
@@ -114,12 +114,13 @@ const generate = (): string => {
114
114
  };
115
115
 
116
116
  /** Danish Personal Identification Number. */
117
- const cpr: Validator<ParsedPersonId> = {
117
+ const cpr: CountryValidator<"DK", ParsedPersonId> = {
118
118
  name: "Danish Personal ID",
119
119
  localName: "Det Centrale Personregister",
120
120
  abbreviation: "CPR",
121
121
  aliases: ["CPR-nummer", "personnummer", "CPR"] as const,
122
122
  candidatePattern: "\\d{6}-?\\d{4}",
123
+ scope: "country",
123
124
  country: "DK",
124
125
  entityType: "person",
125
126
  sourceUrl: "https://cpr.dk/",
package/src/dk/cvr.ts CHANGED
@@ -13,14 +13,17 @@
13
13
  * for CVR.
14
14
  */
15
15
 
16
+ import type {
17
+ ValidateResult,
18
+ CountryValidator,
19
+ } from "../types";
20
+
16
21
  import { weightedSum } from "#checksums/weighted-sum";
17
22
  import { clean } from "#util/clean";
18
23
  import { randomDigits, randomInt } from "#util/generate";
19
24
  import { err } from "#util/result";
20
25
  import { isdigits } from "#util/strings";
21
26
 
22
- import type { ValidateResult, Validator } from "../types";
23
-
24
27
  const WEIGHTS = [2, 7, 6, 5, 4, 3, 2, 1];
25
28
 
26
29
  const compact = (value: string): string =>
@@ -67,12 +70,13 @@ const generate = (): string => {
67
70
  };
68
71
 
69
72
  /** Danish Central Business Register Number. */
70
- const cvr: Validator = {
73
+ const cvr: CountryValidator<"DK"> = {
71
74
  name: "Danish Business Register Number",
72
75
  localName: "CVR-nummer",
73
76
  abbreviation: "CVR",
74
77
  aliases: ["CVR-nummer", "CVR"] as const,
75
78
  candidatePattern: "\\d{8}",
79
+ scope: "country",
76
80
  country: "DK",
77
81
  entityType: "company",
78
82
  sourceUrl: "https://erhvervsstyrelsen.dk/",