@discretion/core 0.1.0

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 (885) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/LICENSE +21 -0
  3. package/README.md +319 -0
  4. package/dist/src/checksums/aba.d.ts +25 -0
  5. package/dist/src/checksums/aba.d.ts.map +1 -0
  6. package/dist/src/checksums/aba.js +47 -0
  7. package/dist/src/checksums/aba.js.map +1 -0
  8. package/dist/src/checksums/digits.d.ts +55 -0
  9. package/dist/src/checksums/digits.d.ts.map +1 -0
  10. package/dist/src/checksums/digits.js +114 -0
  11. package/dist/src/checksums/digits.js.map +1 -0
  12. package/dist/src/checksums/icao9303.d.ts +29 -0
  13. package/dist/src/checksums/icao9303.d.ts.map +1 -0
  14. package/dist/src/checksums/icao9303.js +56 -0
  15. package/dist/src/checksums/icao9303.js.map +1 -0
  16. package/dist/src/checksums/index.d.ts +21 -0
  17. package/dist/src/checksums/index.d.ts.map +1 -0
  18. package/dist/src/checksums/index.js +21 -0
  19. package/dist/src/checksums/index.js.map +1 -0
  20. package/dist/src/checksums/iso7064.d.ts +67 -0
  21. package/dist/src/checksums/iso7064.d.ts.map +1 -0
  22. package/dist/src/checksums/iso7064.js +159 -0
  23. package/dist/src/checksums/iso7064.js.map +1 -0
  24. package/dist/src/checksums/luhn.d.ts +32 -0
  25. package/dist/src/checksums/luhn.d.ts.map +1 -0
  26. package/dist/src/checksums/luhn.js +66 -0
  27. package/dist/src/checksums/luhn.js.map +1 -0
  28. package/dist/src/checksums/mod97.d.ts +55 -0
  29. package/dist/src/checksums/mod97.d.ts.map +1 -0
  30. package/dist/src/checksums/mod97.js +94 -0
  31. package/dist/src/checksums/mod97.js.map +1 -0
  32. package/dist/src/checksums/verhoeff.d.ts +28 -0
  33. package/dist/src/checksums/verhoeff.d.ts.map +1 -0
  34. package/dist/src/checksums/verhoeff.js +80 -0
  35. package/dist/src/checksums/verhoeff.js.map +1 -0
  36. package/dist/src/checksums/weighted.d.ts +64 -0
  37. package/dist/src/checksums/weighted.d.ts.map +1 -0
  38. package/dist/src/checksums/weighted.js +97 -0
  39. package/dist/src/checksums/weighted.js.map +1 -0
  40. package/dist/src/context/documentProfile.d.ts +34 -0
  41. package/dist/src/context/documentProfile.d.ts.map +1 -0
  42. package/dist/src/context/documentProfile.js +253 -0
  43. package/dist/src/context/documentProfile.js.map +1 -0
  44. package/dist/src/context/negativeRules.d.ts +60 -0
  45. package/dist/src/context/negativeRules.d.ts.map +1 -0
  46. package/dist/src/context/negativeRules.js +696 -0
  47. package/dist/src/context/negativeRules.js.map +1 -0
  48. package/dist/src/context/score.d.ts +52 -0
  49. package/dist/src/context/score.d.ts.map +1 -0
  50. package/dist/src/context/score.js +346 -0
  51. package/dist/src/context/score.js.map +1 -0
  52. package/dist/src/context/structure.d.ts +46 -0
  53. package/dist/src/context/structure.d.ts.map +1 -0
  54. package/dist/src/context/structure.js +528 -0
  55. package/dist/src/context/structure.js.map +1 -0
  56. package/dist/src/context/triggers.d.ts +73 -0
  57. package/dist/src/context/triggers.d.ts.map +1 -0
  58. package/dist/src/context/triggers.js +172 -0
  59. package/dist/src/context/triggers.js.map +1 -0
  60. package/dist/src/context/types.d.ts +137 -0
  61. package/dist/src/context/types.d.ts.map +1 -0
  62. package/dist/src/context/types.js +25 -0
  63. package/dist/src/context/types.js.map +1 -0
  64. package/dist/src/crypto/keccak256.d.ts +15 -0
  65. package/dist/src/crypto/keccak256.d.ts.map +1 -0
  66. package/dist/src/crypto/keccak256.js +89 -0
  67. package/dist/src/crypto/keccak256.js.map +1 -0
  68. package/dist/src/crypto/sha256.d.ts +16 -0
  69. package/dist/src/crypto/sha256.d.ts.map +1 -0
  70. package/dist/src/crypto/sha256.js +81 -0
  71. package/dist/src/crypto/sha256.js.map +1 -0
  72. package/dist/src/detect/detectors/bankcodes/auBsb.d.ts +11 -0
  73. package/dist/src/detect/detectors/bankcodes/auBsb.d.ts.map +1 -0
  74. package/dist/src/detect/detectors/bankcodes/auBsb.js +34 -0
  75. package/dist/src/detect/detectors/bankcodes/auBsb.js.map +1 -0
  76. package/dist/src/detect/detectors/bankcodes/brAgencia.d.ts +15 -0
  77. package/dist/src/detect/detectors/bankcodes/brAgencia.d.ts.map +1 -0
  78. package/dist/src/detect/detectors/bankcodes/brAgencia.js +43 -0
  79. package/dist/src/detect/detectors/bankcodes/brAgencia.js.map +1 -0
  80. package/dist/src/detect/detectors/bankcodes/caTransit.d.ts +13 -0
  81. package/dist/src/detect/detectors/bankcodes/caTransit.d.ts.map +1 -0
  82. package/dist/src/detect/detectors/bankcodes/caTransit.js +86 -0
  83. package/dist/src/detect/detectors/bankcodes/caTransit.js.map +1 -0
  84. package/dist/src/detect/detectors/bankcodes/inIfsc.d.ts +13 -0
  85. package/dist/src/detect/detectors/bankcodes/inIfsc.d.ts.map +1 -0
  86. package/dist/src/detect/detectors/bankcodes/inIfsc.js +37 -0
  87. package/dist/src/detect/detectors/bankcodes/inIfsc.js.map +1 -0
  88. package/dist/src/detect/detectors/bankcodes/index.d.ts +10 -0
  89. package/dist/src/detect/detectors/bankcodes/index.d.ts.map +1 -0
  90. package/dist/src/detect/detectors/bankcodes/index.js +10 -0
  91. package/dist/src/detect/detectors/bankcodes/index.js.map +1 -0
  92. package/dist/src/detect/detectors/bankcodes/ukSortCode.d.ts +13 -0
  93. package/dist/src/detect/detectors/bankcodes/ukSortCode.d.ts.map +1 -0
  94. package/dist/src/detect/detectors/bankcodes/ukSortCode.js +36 -0
  95. package/dist/src/detect/detectors/bankcodes/ukSortCode.js.map +1 -0
  96. package/dist/src/detect/detectors/bankcodes/usRouting.d.ts +12 -0
  97. package/dist/src/detect/detectors/bankcodes/usRouting.d.ts.map +1 -0
  98. package/dist/src/detect/detectors/bankcodes/usRouting.js +45 -0
  99. package/dist/src/detect/detectors/bankcodes/usRouting.js.map +1 -0
  100. package/dist/src/detect/detectors/contact/email.d.ts +16 -0
  101. package/dist/src/detect/detectors/contact/email.d.ts.map +1 -0
  102. package/dist/src/detect/detectors/contact/email.js +111 -0
  103. package/dist/src/detect/detectors/contact/email.js.map +1 -0
  104. package/dist/src/detect/detectors/contact/index.d.ts +11 -0
  105. package/dist/src/detect/detectors/contact/index.d.ts.map +1 -0
  106. package/dist/src/detect/detectors/contact/index.js +11 -0
  107. package/dist/src/detect/detectors/contact/index.js.map +1 -0
  108. package/dist/src/detect/detectors/contact/ipv4.d.ts +12 -0
  109. package/dist/src/detect/detectors/contact/ipv4.d.ts.map +1 -0
  110. package/dist/src/detect/detectors/contact/ipv4.js +109 -0
  111. package/dist/src/detect/detectors/contact/ipv4.js.map +1 -0
  112. package/dist/src/detect/detectors/contact/ipv6.d.ts +16 -0
  113. package/dist/src/detect/detectors/contact/ipv6.d.ts.map +1 -0
  114. package/dist/src/detect/detectors/contact/ipv6.js +187 -0
  115. package/dist/src/detect/detectors/contact/ipv6.js.map +1 -0
  116. package/dist/src/detect/detectors/contact/mac.d.ts +14 -0
  117. package/dist/src/detect/detectors/contact/mac.d.ts.map +1 -0
  118. package/dist/src/detect/detectors/contact/mac.js +64 -0
  119. package/dist/src/detect/detectors/contact/mac.js.map +1 -0
  120. package/dist/src/detect/detectors/contact/phone.d.ts +21 -0
  121. package/dist/src/detect/detectors/contact/phone.d.ts.map +1 -0
  122. package/dist/src/detect/detectors/contact/phone.js +76 -0
  123. package/dist/src/detect/detectors/contact/phone.js.map +1 -0
  124. package/dist/src/detect/detectors/contact/urlCredentials.d.ts +23 -0
  125. package/dist/src/detect/detectors/contact/urlCredentials.d.ts.map +1 -0
  126. package/dist/src/detect/detectors/contact/urlCredentials.js +123 -0
  127. package/dist/src/detect/detectors/contact/urlCredentials.js.map +1 -0
  128. package/dist/src/detect/detectors/crypto/ada.d.ts +13 -0
  129. package/dist/src/detect/detectors/crypto/ada.d.ts.map +1 -0
  130. package/dist/src/detect/detectors/crypto/ada.js +51 -0
  131. package/dist/src/detect/detectors/crypto/ada.js.map +1 -0
  132. package/dist/src/detect/detectors/crypto/btc.d.ts +15 -0
  133. package/dist/src/detect/detectors/crypto/btc.d.ts.map +1 -0
  134. package/dist/src/detect/detectors/crypto/btc.js +78 -0
  135. package/dist/src/detect/detectors/crypto/btc.js.map +1 -0
  136. package/dist/src/detect/detectors/crypto/dot.d.ts +13 -0
  137. package/dist/src/detect/detectors/crypto/dot.d.ts.map +1 -0
  138. package/dist/src/detect/detectors/crypto/dot.js +41 -0
  139. package/dist/src/detect/detectors/crypto/dot.js.map +1 -0
  140. package/dist/src/detect/detectors/crypto/eth.d.ts +15 -0
  141. package/dist/src/detect/detectors/crypto/eth.d.ts.map +1 -0
  142. package/dist/src/detect/detectors/crypto/eth.js +63 -0
  143. package/dist/src/detect/detectors/crypto/eth.js.map +1 -0
  144. package/dist/src/detect/detectors/crypto/index.d.ts +12 -0
  145. package/dist/src/detect/detectors/crypto/index.d.ts.map +1 -0
  146. package/dist/src/detect/detectors/crypto/index.js +12 -0
  147. package/dist/src/detect/detectors/crypto/index.js.map +1 -0
  148. package/dist/src/detect/detectors/crypto/ltc.d.ts +12 -0
  149. package/dist/src/detect/detectors/crypto/ltc.d.ts.map +1 -0
  150. package/dist/src/detect/detectors/crypto/ltc.js +71 -0
  151. package/dist/src/detect/detectors/crypto/ltc.js.map +1 -0
  152. package/dist/src/detect/detectors/crypto/sol.d.ts +13 -0
  153. package/dist/src/detect/detectors/crypto/sol.d.ts.map +1 -0
  154. package/dist/src/detect/detectors/crypto/sol.js +39 -0
  155. package/dist/src/detect/detectors/crypto/sol.js.map +1 -0
  156. package/dist/src/detect/detectors/crypto/trx.d.ts +8 -0
  157. package/dist/src/detect/detectors/crypto/trx.d.ts.map +1 -0
  158. package/dist/src/detect/detectors/crypto/trx.js +34 -0
  159. package/dist/src/detect/detectors/crypto/trx.js.map +1 -0
  160. package/dist/src/detect/detectors/crypto/xmr.d.ts +10 -0
  161. package/dist/src/detect/detectors/crypto/xmr.d.ts.map +1 -0
  162. package/dist/src/detect/detectors/crypto/xmr.js +51 -0
  163. package/dist/src/detect/detectors/crypto/xmr.js.map +1 -0
  164. package/dist/src/detect/detectors/documents/driversLicense.d.ts +24 -0
  165. package/dist/src/detect/detectors/documents/driversLicense.d.ts.map +1 -0
  166. package/dist/src/detect/detectors/documents/driversLicense.js +79 -0
  167. package/dist/src/detect/detectors/documents/driversLicense.js.map +1 -0
  168. package/dist/src/detect/detectors/documents/healthData.d.ts +23 -0
  169. package/dist/src/detect/detectors/documents/healthData.d.ts.map +1 -0
  170. package/dist/src/detect/detectors/documents/healthData.js +78 -0
  171. package/dist/src/detect/detectors/documents/healthData.js.map +1 -0
  172. package/dist/src/detect/detectors/documents/index.d.ts +9 -0
  173. package/dist/src/detect/detectors/documents/index.d.ts.map +1 -0
  174. package/dist/src/detect/detectors/documents/index.js +9 -0
  175. package/dist/src/detect/detectors/documents/index.js.map +1 -0
  176. package/dist/src/detect/detectors/documents/passportMrz.d.ts +20 -0
  177. package/dist/src/detect/detectors/documents/passportMrz.d.ts.map +1 -0
  178. package/dist/src/detect/detectors/documents/passportMrz.js +194 -0
  179. package/dist/src/detect/detectors/documents/passportMrz.js.map +1 -0
  180. package/dist/src/detect/detectors/documents/usNpi.d.ts +16 -0
  181. package/dist/src/detect/detectors/documents/usNpi.d.ts.map +1 -0
  182. package/dist/src/detect/detectors/documents/usNpi.js +48 -0
  183. package/dist/src/detect/detectors/documents/usNpi.js.map +1 -0
  184. package/dist/src/detect/detectors/documents/vin.d.ts +15 -0
  185. package/dist/src/detect/detectors/documents/vin.d.ts.map +1 -0
  186. package/dist/src/detect/detectors/documents/vin.js +64 -0
  187. package/dist/src/detect/detectors/documents/vin.js.map +1 -0
  188. package/dist/src/detect/detectors/financial/creditCard.d.ts +23 -0
  189. package/dist/src/detect/detectors/financial/creditCard.d.ts.map +1 -0
  190. package/dist/src/detect/detectors/financial/creditCard.js +157 -0
  191. package/dist/src/detect/detectors/financial/creditCard.js.map +1 -0
  192. package/dist/src/detect/detectors/financial/iban.d.ts +18 -0
  193. package/dist/src/detect/detectors/financial/iban.d.ts.map +1 -0
  194. package/dist/src/detect/detectors/financial/iban.js +80 -0
  195. package/dist/src/detect/detectors/financial/iban.js.map +1 -0
  196. package/dist/src/detect/detectors/financial/ibanRegistry.d.ts +35 -0
  197. package/dist/src/detect/detectors/financial/ibanRegistry.d.ts.map +1 -0
  198. package/dist/src/detect/detectors/financial/ibanRegistry.js +92 -0
  199. package/dist/src/detect/detectors/financial/ibanRegistry.js.map +1 -0
  200. package/dist/src/detect/detectors/financial/index.d.ts +7 -0
  201. package/dist/src/detect/detectors/financial/index.d.ts.map +1 -0
  202. package/dist/src/detect/detectors/financial/index.js +7 -0
  203. package/dist/src/detect/detectors/financial/index.js.map +1 -0
  204. package/dist/src/detect/detectors/financial/swiftBic.d.ts +17 -0
  205. package/dist/src/detect/detectors/financial/swiftBic.d.ts.map +1 -0
  206. package/dist/src/detect/detectors/financial/swiftBic.js +55 -0
  207. package/dist/src/detect/detectors/financial/swiftBic.js.map +1 -0
  208. package/dist/src/detect/detectors/index.d.ts +15 -0
  209. package/dist/src/detect/detectors/index.d.ts.map +1 -0
  210. package/dist/src/detect/detectors/index.js +15 -0
  211. package/dist/src/detect/detectors/index.js.map +1 -0
  212. package/dist/src/detect/detectors/location/coordinates.d.ts +14 -0
  213. package/dist/src/detect/detectors/location/coordinates.d.ts.map +1 -0
  214. package/dist/src/detect/detectors/location/coordinates.js +79 -0
  215. package/dist/src/detect/detectors/location/coordinates.js.map +1 -0
  216. package/dist/src/detect/detectors/location/index.d.ts +7 -0
  217. package/dist/src/detect/detectors/location/index.d.ts.map +1 -0
  218. package/dist/src/detect/detectors/location/index.js +7 -0
  219. package/dist/src/detect/detectors/location/index.js.map +1 -0
  220. package/dist/src/detect/detectors/location/postalCode.d.ts +13 -0
  221. package/dist/src/detect/detectors/location/postalCode.d.ts.map +1 -0
  222. package/dist/src/detect/detectors/location/postalCode.js +53 -0
  223. package/dist/src/detect/detectors/location/postalCode.js.map +1 -0
  224. package/dist/src/detect/detectors/location/postalRegistry.d.ts +19 -0
  225. package/dist/src/detect/detectors/location/postalRegistry.d.ts.map +1 -0
  226. package/dist/src/detect/detectors/location/postalRegistry.js +73 -0
  227. package/dist/src/detect/detectors/location/postalRegistry.js.map +1 -0
  228. package/dist/src/detect/detectors/location/streetAddress.d.ts +21 -0
  229. package/dist/src/detect/detectors/location/streetAddress.d.ts.map +1 -0
  230. package/dist/src/detect/detectors/location/streetAddress.js +70 -0
  231. package/dist/src/detect/detectors/location/streetAddress.js.map +1 -0
  232. package/dist/src/detect/detectors/natid/africa.d.ts +17 -0
  233. package/dist/src/detect/detectors/natid/africa.d.ts.map +1 -0
  234. package/dist/src/detect/detectors/natid/africa.js +106 -0
  235. package/dist/src/detect/detectors/natid/africa.js.map +1 -0
  236. package/dist/src/detect/detectors/natid/ar.d.ts +14 -0
  237. package/dist/src/detect/detectors/natid/ar.d.ts.map +1 -0
  238. package/dist/src/detect/detectors/natid/ar.js +62 -0
  239. package/dist/src/detect/detectors/natid/ar.js.map +1 -0
  240. package/dist/src/detect/detectors/natid/au.d.ts +13 -0
  241. package/dist/src/detect/detectors/natid/au.d.ts.map +1 -0
  242. package/dist/src/detect/detectors/natid/au.js +100 -0
  243. package/dist/src/detect/detectors/natid/au.js.map +1 -0
  244. package/dist/src/detect/detectors/natid/be.d.ts +8 -0
  245. package/dist/src/detect/detectors/natid/be.d.ts.map +1 -0
  246. package/dist/src/detect/detectors/natid/be.js +44 -0
  247. package/dist/src/detect/detectors/natid/be.js.map +1 -0
  248. package/dist/src/detect/detectors/natid/bg.d.ts +7 -0
  249. package/dist/src/detect/detectors/natid/bg.d.ts.map +1 -0
  250. package/dist/src/detect/detectors/natid/bg.js +44 -0
  251. package/dist/src/detect/detectors/natid/bg.js.map +1 -0
  252. package/dist/src/detect/detectors/natid/br.d.ts +8 -0
  253. package/dist/src/detect/detectors/natid/br.d.ts.map +1 -0
  254. package/dist/src/detect/detectors/natid/br.js +85 -0
  255. package/dist/src/detect/detectors/natid/br.js.map +1 -0
  256. package/dist/src/detect/detectors/natid/ca.d.ts +8 -0
  257. package/dist/src/detect/detectors/natid/ca.d.ts.map +1 -0
  258. package/dist/src/detect/detectors/natid/ca.js +41 -0
  259. package/dist/src/detect/detectors/natid/ca.js.map +1 -0
  260. package/dist/src/detect/detectors/natid/cl.d.ts +9 -0
  261. package/dist/src/detect/detectors/natid/cl.d.ts.map +1 -0
  262. package/dist/src/detect/detectors/natid/cl.js +47 -0
  263. package/dist/src/detect/detectors/natid/cl.js.map +1 -0
  264. package/dist/src/detect/detectors/natid/cn.d.ts +9 -0
  265. package/dist/src/detect/detectors/natid/cn.d.ts.map +1 -0
  266. package/dist/src/detect/detectors/natid/cn.js +49 -0
  267. package/dist/src/detect/detectors/natid/cn.js.map +1 -0
  268. package/dist/src/detect/detectors/natid/co.d.ts +10 -0
  269. package/dist/src/detect/detectors/natid/co.d.ts.map +1 -0
  270. package/dist/src/detect/detectors/natid/co.js +43 -0
  271. package/dist/src/detect/detectors/natid/co.js.map +1 -0
  272. package/dist/src/detect/detectors/natid/cz.d.ts +11 -0
  273. package/dist/src/detect/detectors/natid/cz.d.ts.map +1 -0
  274. package/dist/src/detect/detectors/natid/cz.js +44 -0
  275. package/dist/src/detect/detectors/natid/cz.js.map +1 -0
  276. package/dist/src/detect/detectors/natid/de.d.ts +16 -0
  277. package/dist/src/detect/detectors/natid/de.d.ts.map +1 -0
  278. package/dist/src/detect/detectors/natid/de.js +77 -0
  279. package/dist/src/detect/detectors/natid/de.js.map +1 -0
  280. package/dist/src/detect/detectors/natid/dk.d.ts +9 -0
  281. package/dist/src/detect/detectors/natid/dk.d.ts.map +1 -0
  282. package/dist/src/detect/detectors/natid/dk.js +31 -0
  283. package/dist/src/detect/detectors/natid/dk.js.map +1 -0
  284. package/dist/src/detect/detectors/natid/es.d.ts +12 -0
  285. package/dist/src/detect/detectors/natid/es.d.ts.map +1 -0
  286. package/dist/src/detect/detectors/natid/es.js +96 -0
  287. package/dist/src/detect/detectors/natid/es.js.map +1 -0
  288. package/dist/src/detect/detectors/natid/fi.d.ts +10 -0
  289. package/dist/src/detect/detectors/natid/fi.d.ts.map +1 -0
  290. package/dist/src/detect/detectors/natid/fi.js +40 -0
  291. package/dist/src/detect/detectors/natid/fi.js.map +1 -0
  292. package/dist/src/detect/detectors/natid/fr.d.ts +12 -0
  293. package/dist/src/detect/detectors/natid/fr.d.ts.map +1 -0
  294. package/dist/src/detect/detectors/natid/fr.js +61 -0
  295. package/dist/src/detect/detectors/natid/fr.js.map +1 -0
  296. package/dist/src/detect/detectors/natid/gb.d.ts +10 -0
  297. package/dist/src/detect/detectors/natid/gb.d.ts.map +1 -0
  298. package/dist/src/detect/detectors/natid/gb.js +72 -0
  299. package/dist/src/detect/detectors/natid/gb.js.map +1 -0
  300. package/dist/src/detect/detectors/natid/gr.d.ts +7 -0
  301. package/dist/src/detect/detectors/natid/gr.d.ts.map +1 -0
  302. package/dist/src/detect/detectors/natid/gr.js +36 -0
  303. package/dist/src/detect/detectors/natid/gr.js.map +1 -0
  304. package/dist/src/detect/detectors/natid/gulf.d.ts +16 -0
  305. package/dist/src/detect/detectors/natid/gulf.d.ts.map +1 -0
  306. package/dist/src/detect/detectors/natid/gulf.js +121 -0
  307. package/dist/src/detect/detectors/natid/gulf.js.map +1 -0
  308. package/dist/src/detect/detectors/natid/hk.d.ts +9 -0
  309. package/dist/src/detect/detectors/natid/hk.d.ts.map +1 -0
  310. package/dist/src/detect/detectors/natid/hk.js +41 -0
  311. package/dist/src/detect/detectors/natid/hk.js.map +1 -0
  312. package/dist/src/detect/detectors/natid/hr.d.ts +6 -0
  313. package/dist/src/detect/detectors/natid/hr.d.ts.map +1 -0
  314. package/dist/src/detect/detectors/natid/hr.js +32 -0
  315. package/dist/src/detect/detectors/natid/hr.js.map +1 -0
  316. package/dist/src/detect/detectors/natid/hu.d.ts +7 -0
  317. package/dist/src/detect/detectors/natid/hu.d.ts.map +1 -0
  318. package/dist/src/detect/detectors/natid/hu.js +37 -0
  319. package/dist/src/detect/detectors/natid/hu.js.map +1 -0
  320. package/dist/src/detect/detectors/natid/ie.d.ts +9 -0
  321. package/dist/src/detect/detectors/natid/ie.d.ts.map +1 -0
  322. package/dist/src/detect/detectors/natid/ie.js +36 -0
  323. package/dist/src/detect/detectors/natid/ie.js.map +1 -0
  324. package/dist/src/detect/detectors/natid/il.d.ts +10 -0
  325. package/dist/src/detect/detectors/natid/il.d.ts.map +1 -0
  326. package/dist/src/detect/detectors/natid/il.js +38 -0
  327. package/dist/src/detect/detectors/natid/il.js.map +1 -0
  328. package/dist/src/detect/detectors/natid/in.d.ts +17 -0
  329. package/dist/src/detect/detectors/natid/in.d.ts.map +1 -0
  330. package/dist/src/detect/detectors/natid/in.js +67 -0
  331. package/dist/src/detect/detectors/natid/in.js.map +1 -0
  332. package/dist/src/detect/detectors/natid/index.d.ts +55 -0
  333. package/dist/src/detect/detectors/natid/index.d.ts.map +1 -0
  334. package/dist/src/detect/detectors/natid/index.js +55 -0
  335. package/dist/src/detect/detectors/natid/index.js.map +1 -0
  336. package/dist/src/detect/detectors/natid/is.d.ts +8 -0
  337. package/dist/src/detect/detectors/natid/is.d.ts.map +1 -0
  338. package/dist/src/detect/detectors/natid/is.js +42 -0
  339. package/dist/src/detect/detectors/natid/is.js.map +1 -0
  340. package/dist/src/detect/detectors/natid/it.d.ts +12 -0
  341. package/dist/src/detect/detectors/natid/it.d.ts.map +1 -0
  342. package/dist/src/detect/detectors/natid/it.js +62 -0
  343. package/dist/src/detect/detectors/natid/it.js.map +1 -0
  344. package/dist/src/detect/detectors/natid/jp.d.ts +9 -0
  345. package/dist/src/detect/detectors/natid/jp.d.ts.map +1 -0
  346. package/dist/src/detect/detectors/natid/jp.js +46 -0
  347. package/dist/src/detect/detectors/natid/jp.js.map +1 -0
  348. package/dist/src/detect/detectors/natid/kr.d.ts +11 -0
  349. package/dist/src/detect/detectors/natid/kr.d.ts.map +1 -0
  350. package/dist/src/detect/detectors/natid/kr.js +40 -0
  351. package/dist/src/detect/detectors/natid/kr.js.map +1 -0
  352. package/dist/src/detect/detectors/natid/kz.d.ts +8 -0
  353. package/dist/src/detect/detectors/natid/kz.d.ts.map +1 -0
  354. package/dist/src/detect/detectors/natid/kz.js +46 -0
  355. package/dist/src/detect/detectors/natid/kz.js.map +1 -0
  356. package/dist/src/detect/detectors/natid/mx.d.ts +16 -0
  357. package/dist/src/detect/detectors/natid/mx.d.ts.map +1 -0
  358. package/dist/src/detect/detectors/natid/mx.js +82 -0
  359. package/dist/src/detect/detectors/natid/mx.js.map +1 -0
  360. package/dist/src/detect/detectors/natid/nl.d.ts +8 -0
  361. package/dist/src/detect/detectors/natid/nl.d.ts.map +1 -0
  362. package/dist/src/detect/detectors/natid/nl.js +40 -0
  363. package/dist/src/detect/detectors/natid/nl.js.map +1 -0
  364. package/dist/src/detect/detectors/natid/no.d.ts +9 -0
  365. package/dist/src/detect/detectors/natid/no.d.ts.map +1 -0
  366. package/dist/src/detect/detectors/natid/no.js +52 -0
  367. package/dist/src/detect/detectors/natid/no.js.map +1 -0
  368. package/dist/src/detect/detectors/natid/nz.d.ts +9 -0
  369. package/dist/src/detect/detectors/natid/nz.d.ts.map +1 -0
  370. package/dist/src/detect/detectors/natid/nz.js +52 -0
  371. package/dist/src/detect/detectors/natid/nz.js.map +1 -0
  372. package/dist/src/detect/detectors/natid/pe.d.ts +7 -0
  373. package/dist/src/detect/detectors/natid/pe.d.ts.map +1 -0
  374. package/dist/src/detect/detectors/natid/pe.js +26 -0
  375. package/dist/src/detect/detectors/natid/pe.js.map +1 -0
  376. package/dist/src/detect/detectors/natid/pl.d.ts +11 -0
  377. package/dist/src/detect/detectors/natid/pl.d.ts.map +1 -0
  378. package/dist/src/detect/detectors/natid/pl.js +105 -0
  379. package/dist/src/detect/detectors/natid/pl.js.map +1 -0
  380. package/dist/src/detect/detectors/natid/pt.d.ts +6 -0
  381. package/dist/src/detect/detectors/natid/pt.d.ts.map +1 -0
  382. package/dist/src/detect/detectors/natid/pt.js +35 -0
  383. package/dist/src/detect/detectors/natid/pt.js.map +1 -0
  384. package/dist/src/detect/detectors/natid/ro.d.ts +8 -0
  385. package/dist/src/detect/detectors/natid/ro.d.ts.map +1 -0
  386. package/dist/src/detect/detectors/natid/ro.js +48 -0
  387. package/dist/src/detect/detectors/natid/ro.js.map +1 -0
  388. package/dist/src/detect/detectors/natid/ru.d.ts +11 -0
  389. package/dist/src/detect/detectors/natid/ru.d.ts.map +1 -0
  390. package/dist/src/detect/detectors/natid/ru.js +86 -0
  391. package/dist/src/detect/detectors/natid/ru.js.map +1 -0
  392. package/dist/src/detect/detectors/natid/se.d.ts +9 -0
  393. package/dist/src/detect/detectors/natid/se.d.ts.map +1 -0
  394. package/dist/src/detect/detectors/natid/se.js +43 -0
  395. package/dist/src/detect/detectors/natid/se.js.map +1 -0
  396. package/dist/src/detect/detectors/natid/seasia.d.ts +19 -0
  397. package/dist/src/detect/detectors/natid/seasia.d.ts.map +1 -0
  398. package/dist/src/detect/detectors/natid/seasia.js +182 -0
  399. package/dist/src/detect/detectors/natid/seasia.js.map +1 -0
  400. package/dist/src/detect/detectors/natid/sg.d.ts +8 -0
  401. package/dist/src/detect/detectors/natid/sg.d.ts.map +1 -0
  402. package/dist/src/detect/detectors/natid/sg.js +39 -0
  403. package/dist/src/detect/detectors/natid/sg.js.map +1 -0
  404. package/dist/src/detect/detectors/natid/si.d.ts +8 -0
  405. package/dist/src/detect/detectors/natid/si.d.ts.map +1 -0
  406. package/dist/src/detect/detectors/natid/si.js +44 -0
  407. package/dist/src/detect/detectors/natid/si.js.map +1 -0
  408. package/dist/src/detect/detectors/natid/tr.d.ts +14 -0
  409. package/dist/src/detect/detectors/natid/tr.d.ts.map +1 -0
  410. package/dist/src/detect/detectors/natid/tr.js +79 -0
  411. package/dist/src/detect/detectors/natid/tr.js.map +1 -0
  412. package/dist/src/detect/detectors/natid/tw.d.ts +9 -0
  413. package/dist/src/detect/detectors/natid/tw.d.ts.map +1 -0
  414. package/dist/src/detect/detectors/natid/tw.js +40 -0
  415. package/dist/src/detect/detectors/natid/tw.js.map +1 -0
  416. package/dist/src/detect/detectors/natid/ua.d.ts +7 -0
  417. package/dist/src/detect/detectors/natid/ua.d.ts.map +1 -0
  418. package/dist/src/detect/detectors/natid/ua.js +38 -0
  419. package/dist/src/detect/detectors/natid/ua.js.map +1 -0
  420. package/dist/src/detect/detectors/natid/us.d.ts +15 -0
  421. package/dist/src/detect/detectors/natid/us.d.ts.map +1 -0
  422. package/dist/src/detect/detectors/natid/us.js +119 -0
  423. package/dist/src/detect/detectors/natid/us.js.map +1 -0
  424. package/dist/src/detect/detectors/natid/za.d.ts +9 -0
  425. package/dist/src/detect/detectors/natid/za.d.ts.map +1 -0
  426. package/dist/src/detect/detectors/natid/za.js +44 -0
  427. package/dist/src/detect/detectors/natid/za.js.map +1 -0
  428. package/dist/src/detect/detectors/secrets/apiKey.d.ts +14 -0
  429. package/dist/src/detect/detectors/secrets/apiKey.d.ts.map +1 -0
  430. package/dist/src/detect/detectors/secrets/apiKey.js +103 -0
  431. package/dist/src/detect/detectors/secrets/apiKey.js.map +1 -0
  432. package/dist/src/detect/detectors/secrets/connectionString.d.ts +12 -0
  433. package/dist/src/detect/detectors/secrets/connectionString.d.ts.map +1 -0
  434. package/dist/src/detect/detectors/secrets/connectionString.js +70 -0
  435. package/dist/src/detect/detectors/secrets/connectionString.js.map +1 -0
  436. package/dist/src/detect/detectors/secrets/genericSecret.d.ts +22 -0
  437. package/dist/src/detect/detectors/secrets/genericSecret.d.ts.map +1 -0
  438. package/dist/src/detect/detectors/secrets/genericSecret.js +77 -0
  439. package/dist/src/detect/detectors/secrets/genericSecret.js.map +1 -0
  440. package/dist/src/detect/detectors/secrets/index.d.ts +9 -0
  441. package/dist/src/detect/detectors/secrets/index.d.ts.map +1 -0
  442. package/dist/src/detect/detectors/secrets/index.js +9 -0
  443. package/dist/src/detect/detectors/secrets/index.js.map +1 -0
  444. package/dist/src/detect/detectors/secrets/jwt.d.ts +11 -0
  445. package/dist/src/detect/detectors/secrets/jwt.d.ts.map +1 -0
  446. package/dist/src/detect/detectors/secrets/jwt.js +111 -0
  447. package/dist/src/detect/detectors/secrets/jwt.js.map +1 -0
  448. package/dist/src/detect/detectors/secrets/pemPrivateKey.d.ts +16 -0
  449. package/dist/src/detect/detectors/secrets/pemPrivateKey.d.ts.map +1 -0
  450. package/dist/src/detect/detectors/secrets/pemPrivateKey.js +56 -0
  451. package/dist/src/detect/detectors/secrets/pemPrivateKey.js.map +1 -0
  452. package/dist/src/detect/detectors/vat/euVat.d.ts +17 -0
  453. package/dist/src/detect/detectors/vat/euVat.d.ts.map +1 -0
  454. package/dist/src/detect/detectors/vat/euVat.js +293 -0
  455. package/dist/src/detect/detectors/vat/euVat.js.map +1 -0
  456. package/dist/src/detect/detectors/vat/index.d.ts +5 -0
  457. package/dist/src/detect/detectors/vat/index.d.ts.map +1 -0
  458. package/dist/src/detect/detectors/vat/index.js +5 -0
  459. package/dist/src/detect/detectors/vat/index.js.map +1 -0
  460. package/dist/src/detect/entropy.d.ts +28 -0
  461. package/dist/src/detect/entropy.d.ts.map +1 -0
  462. package/dist/src/detect/entropy.js +64 -0
  463. package/dist/src/detect/entropy.js.map +1 -0
  464. package/dist/src/detect/isoCountries.d.ts +10 -0
  465. package/dist/src/detect/isoCountries.d.ts.map +1 -0
  466. package/dist/src/detect/isoCountries.js +25 -0
  467. package/dist/src/detect/isoCountries.js.map +1 -0
  468. package/dist/src/detect/registry.d.ts +50 -0
  469. package/dist/src/detect/registry.d.ts.map +1 -0
  470. package/dist/src/detect/registry.js +110 -0
  471. package/dist/src/detect/registry.js.map +1 -0
  472. package/dist/src/detect/runner.d.ts +64 -0
  473. package/dist/src/detect/runner.d.ts.map +1 -0
  474. package/dist/src/detect/runner.js +142 -0
  475. package/dist/src/detect/runner.js.map +1 -0
  476. package/dist/src/detect/types.d.ts +251 -0
  477. package/dist/src/detect/types.d.ts.map +1 -0
  478. package/dist/src/detect/types.js +59 -0
  479. package/dist/src/detect/types.js.map +1 -0
  480. package/dist/src/encoding/base58.d.ts +26 -0
  481. package/dist/src/encoding/base58.d.ts.map +1 -0
  482. package/dist/src/encoding/base58.js +77 -0
  483. package/dist/src/encoding/base58.js.map +1 -0
  484. package/dist/src/encoding/base58monero.d.ts +15 -0
  485. package/dist/src/encoding/base58monero.d.ts.map +1 -0
  486. package/dist/src/encoding/base58monero.js +87 -0
  487. package/dist/src/encoding/base58monero.js.map +1 -0
  488. package/dist/src/encoding/bech32.d.ts +28 -0
  489. package/dist/src/encoding/bech32.d.ts.map +1 -0
  490. package/dist/src/encoding/bech32.js +108 -0
  491. package/dist/src/encoding/bech32.js.map +1 -0
  492. package/dist/src/encoding/bytes.d.ts +15 -0
  493. package/dist/src/encoding/bytes.d.ts.map +1 -0
  494. package/dist/src/encoding/bytes.js +46 -0
  495. package/dist/src/encoding/bytes.js.map +1 -0
  496. package/dist/src/entityFamily.d.ts +18 -0
  497. package/dist/src/entityFamily.d.ts.map +1 -0
  498. package/dist/src/entityFamily.js +54 -0
  499. package/dist/src/entityFamily.js.map +1 -0
  500. package/dist/src/entityLabel.d.ts +18 -0
  501. package/dist/src/entityLabel.d.ts.map +1 -0
  502. package/dist/src/entityLabel.js +53 -0
  503. package/dist/src/entityLabel.js.map +1 -0
  504. package/dist/src/entityTypes.d.ts +64 -0
  505. package/dist/src/entityTypes.d.ts.map +1 -0
  506. package/dist/src/entityTypes.js +94 -0
  507. package/dist/src/entityTypes.js.map +1 -0
  508. package/dist/src/exposure/index.d.ts +86 -0
  509. package/dist/src/exposure/index.d.ts.map +1 -0
  510. package/dist/src/exposure/index.js +134 -0
  511. package/dist/src/exposure/index.js.map +1 -0
  512. package/dist/src/fuse/calibrate.d.ts +95 -0
  513. package/dist/src/fuse/calibrate.d.ts.map +1 -0
  514. package/dist/src/fuse/calibrate.js +165 -0
  515. package/dist/src/fuse/calibrate.js.map +1 -0
  516. package/dist/src/fuse/defaultCalibration.d.ts +52 -0
  517. package/dist/src/fuse/defaultCalibration.d.ts.map +1 -0
  518. package/dist/src/fuse/defaultCalibration.js +41 -0
  519. package/dist/src/fuse/defaultCalibration.js.map +1 -0
  520. package/dist/src/fuse/explain.d.ts +55 -0
  521. package/dist/src/fuse/explain.d.ts.map +1 -0
  522. package/dist/src/fuse/explain.js +91 -0
  523. package/dist/src/fuse/explain.js.map +1 -0
  524. package/dist/src/fuse/profiles.d.ts +80 -0
  525. package/dist/src/fuse/profiles.d.ts.map +1 -0
  526. package/dist/src/fuse/profiles.js +126 -0
  527. package/dist/src/fuse/profiles.js.map +1 -0
  528. package/dist/src/fuse/resolve.d.ts +73 -0
  529. package/dist/src/fuse/resolve.d.ts.map +1 -0
  530. package/dist/src/fuse/resolve.js +206 -0
  531. package/dist/src/fuse/resolve.js.map +1 -0
  532. package/dist/src/gazetteer/index.d.ts +41 -0
  533. package/dist/src/gazetteer/index.d.ts.map +1 -0
  534. package/dist/src/gazetteer/index.js +117 -0
  535. package/dist/src/gazetteer/index.js.map +1 -0
  536. package/dist/src/generate/bankcodes.d.ts +20 -0
  537. package/dist/src/generate/bankcodes.d.ts.map +1 -0
  538. package/dist/src/generate/bankcodes.js +71 -0
  539. package/dist/src/generate/bankcodes.js.map +1 -0
  540. package/dist/src/generate/contact.d.ts +31 -0
  541. package/dist/src/generate/contact.d.ts.map +1 -0
  542. package/dist/src/generate/contact.js +139 -0
  543. package/dist/src/generate/contact.js.map +1 -0
  544. package/dist/src/generate/crypto.d.ts +27 -0
  545. package/dist/src/generate/crypto.d.ts.map +1 -0
  546. package/dist/src/generate/crypto.js +88 -0
  547. package/dist/src/generate/crypto.js.map +1 -0
  548. package/dist/src/generate/documents.d.ts +24 -0
  549. package/dist/src/generate/documents.d.ts.map +1 -0
  550. package/dist/src/generate/documents.js +124 -0
  551. package/dist/src/generate/documents.js.map +1 -0
  552. package/dist/src/generate/financial.d.ts +26 -0
  553. package/dist/src/generate/financial.d.ts.map +1 -0
  554. package/dist/src/generate/financial.js +136 -0
  555. package/dist/src/generate/financial.js.map +1 -0
  556. package/dist/src/generate/index.d.ts +23 -0
  557. package/dist/src/generate/index.d.ts.map +1 -0
  558. package/dist/src/generate/index.js +23 -0
  559. package/dist/src/generate/index.js.map +1 -0
  560. package/dist/src/generate/location.d.ts +12 -0
  561. package/dist/src/generate/location.d.ts.map +1 -0
  562. package/dist/src/generate/location.js +75 -0
  563. package/dist/src/generate/location.js.map +1 -0
  564. package/dist/src/generate/natidAmOc.d.ts +22 -0
  565. package/dist/src/generate/natidAmOc.d.ts.map +1 -0
  566. package/dist/src/generate/natidAmOc.js +181 -0
  567. package/dist/src/generate/natidAmOc.js.map +1 -0
  568. package/dist/src/generate/natidAsia.d.ts +20 -0
  569. package/dist/src/generate/natidAsia.d.ts.map +1 -0
  570. package/dist/src/generate/natidAsia.js +147 -0
  571. package/dist/src/generate/natidAsia.js.map +1 -0
  572. package/dist/src/generate/natidCee.d.ts +21 -0
  573. package/dist/src/generate/natidCee.d.ts.map +1 -0
  574. package/dist/src/generate/natidCee.js +181 -0
  575. package/dist/src/generate/natidCee.js.map +1 -0
  576. package/dist/src/generate/natidMeCis.d.ts +17 -0
  577. package/dist/src/generate/natidMeCis.d.ts.map +1 -0
  578. package/dist/src/generate/natidMeCis.js +121 -0
  579. package/dist/src/generate/natidMeCis.js.map +1 -0
  580. package/dist/src/generate/natidWest.d.ts +32 -0
  581. package/dist/src/generate/natidWest.d.ts.map +1 -0
  582. package/dist/src/generate/natidWest.js +187 -0
  583. package/dist/src/generate/natidWest.js.map +1 -0
  584. package/dist/src/generate/prng.d.ts +10 -0
  585. package/dist/src/generate/prng.d.ts.map +1 -0
  586. package/dist/src/generate/prng.js +18 -0
  587. package/dist/src/generate/prng.js.map +1 -0
  588. package/dist/src/generate/secrets.d.ts +23 -0
  589. package/dist/src/generate/secrets.d.ts.map +1 -0
  590. package/dist/src/generate/secrets.js +126 -0
  591. package/dist/src/generate/secrets.js.map +1 -0
  592. package/dist/src/generate/vat.d.ts +11 -0
  593. package/dist/src/generate/vat.d.ts.map +1 -0
  594. package/dist/src/generate/vat.js +233 -0
  595. package/dist/src/generate/vat.js.map +1 -0
  596. package/dist/src/index.d.ts +81 -0
  597. package/dist/src/index.d.ts.map +1 -0
  598. package/dist/src/index.js +76 -0
  599. package/dist/src/index.js.map +1 -0
  600. package/dist/src/mask/egressGuard.d.ts +54 -0
  601. package/dist/src/mask/egressGuard.d.ts.map +1 -0
  602. package/dist/src/mask/egressGuard.js +67 -0
  603. package/dist/src/mask/egressGuard.js.map +1 -0
  604. package/dist/src/mask/masker.d.ts +76 -0
  605. package/dist/src/mask/masker.d.ts.map +1 -0
  606. package/dist/src/mask/masker.js +201 -0
  607. package/dist/src/mask/masker.js.map +1 -0
  608. package/dist/src/mask/restorer.d.ts +96 -0
  609. package/dist/src/mask/restorer.d.ts.map +1 -0
  610. package/dist/src/mask/restorer.js +263 -0
  611. package/dist/src/mask/restorer.js.map +1 -0
  612. package/dist/src/mask/surrogatePools.d.ts +33 -0
  613. package/dist/src/mask/surrogatePools.d.ts.map +1 -0
  614. package/dist/src/mask/surrogatePools.js +81 -0
  615. package/dist/src/mask/surrogatePools.js.map +1 -0
  616. package/dist/src/mask/surrogates.d.ts +45 -0
  617. package/dist/src/mask/surrogates.d.ts.map +1 -0
  618. package/dist/src/mask/surrogates.js +241 -0
  619. package/dist/src/mask/surrogates.js.map +1 -0
  620. package/dist/src/mask/vault.d.ts +76 -0
  621. package/dist/src/mask/vault.d.ts.map +1 -0
  622. package/dist/src/mask/vault.js +141 -0
  623. package/dist/src/mask/vault.js.map +1 -0
  624. package/dist/src/ner/align.d.ts +36 -0
  625. package/dist/src/ner/align.d.ts.map +1 -0
  626. package/dist/src/ner/align.js +73 -0
  627. package/dist/src/ner/align.js.map +1 -0
  628. package/dist/src/ner/chunk.d.ts +27 -0
  629. package/dist/src/ner/chunk.d.ts.map +1 -0
  630. package/dist/src/ner/chunk.js +55 -0
  631. package/dist/src/ner/chunk.js.map +1 -0
  632. package/dist/src/ner/chunkCache.d.ts +63 -0
  633. package/dist/src/ner/chunkCache.d.ts.map +1 -0
  634. package/dist/src/ner/chunkCache.js +99 -0
  635. package/dist/src/ner/chunkCache.js.map +1 -0
  636. package/dist/src/ner/engine.d.ts +53 -0
  637. package/dist/src/ner/engine.d.ts.map +1 -0
  638. package/dist/src/ner/engine.js +113 -0
  639. package/dist/src/ner/engine.js.map +1 -0
  640. package/dist/src/ner/merge.d.ts +26 -0
  641. package/dist/src/ner/merge.d.ts.map +1 -0
  642. package/dist/src/ner/merge.js +108 -0
  643. package/dist/src/ner/merge.js.map +1 -0
  644. package/dist/src/ner/runStage2.d.ts +17 -0
  645. package/dist/src/ner/runStage2.d.ts.map +1 -0
  646. package/dist/src/ner/runStage2.js +43 -0
  647. package/dist/src/ner/runStage2.js.map +1 -0
  648. package/dist/src/ner/stage2b.d.ts +59 -0
  649. package/dist/src/ner/stage2b.d.ts.map +1 -0
  650. package/dist/src/ner/stage2b.js +51 -0
  651. package/dist/src/ner/stage2b.js.map +1 -0
  652. package/dist/src/ner/transformersClassifier.d.ts +45 -0
  653. package/dist/src/ner/transformersClassifier.d.ts.map +1 -0
  654. package/dist/src/ner/transformersClassifier.js +40 -0
  655. package/dist/src/ner/transformersClassifier.js.map +1 -0
  656. package/dist/src/ner/types.d.ts +93 -0
  657. package/dist/src/ner/types.d.ts.map +1 -0
  658. package/dist/src/ner/types.js +12 -0
  659. package/dist/src/ner/types.js.map +1 -0
  660. package/dist/src/normalization.d.ts +24 -0
  661. package/dist/src/normalization.d.ts.map +1 -0
  662. package/dist/src/normalization.js +92 -0
  663. package/dist/src/normalization.js.map +1 -0
  664. package/dist/src/offsetMap.d.ts +165 -0
  665. package/dist/src/offsetMap.d.ts.map +1 -0
  666. package/dist/src/offsetMap.js +225 -0
  667. package/dist/src/offsetMap.js.map +1 -0
  668. package/dist/src/pipeline.d.ts +58 -0
  669. package/dist/src/pipeline.d.ts.map +1 -0
  670. package/dist/src/pipeline.js +57 -0
  671. package/dist/src/pipeline.js.map +1 -0
  672. package/dist/src/protect.d.ts +146 -0
  673. package/dist/src/protect.d.ts.map +1 -0
  674. package/dist/src/protect.js +161 -0
  675. package/dist/src/protect.js.map +1 -0
  676. package/dist/src/scripts.d.ts +37 -0
  677. package/dist/src/scripts.d.ts.map +1 -0
  678. package/dist/src/scripts.js +145 -0
  679. package/dist/src/scripts.js.map +1 -0
  680. package/dist/src/transforms/foldDigits.d.ts +49 -0
  681. package/dist/src/transforms/foldDigits.d.ts.map +1 -0
  682. package/dist/src/transforms/foldDigits.js +135 -0
  683. package/dist/src/transforms/foldDigits.js.map +1 -0
  684. package/dist/src/transforms/graphemes.d.ts +6 -0
  685. package/dist/src/transforms/graphemes.d.ts.map +1 -0
  686. package/dist/src/transforms/graphemes.js +6 -0
  687. package/dist/src/transforms/graphemes.js.map +1 -0
  688. package/dist/src/transforms/homoglyphFold.d.ts +5 -0
  689. package/dist/src/transforms/homoglyphFold.d.ts.map +1 -0
  690. package/dist/src/transforms/homoglyphFold.js +214 -0
  691. package/dist/src/transforms/homoglyphFold.js.map +1 -0
  692. package/dist/src/transforms/nfkc.d.ts +20 -0
  693. package/dist/src/transforms/nfkc.d.ts.map +1 -0
  694. package/dist/src/transforms/nfkc.js +48 -0
  695. package/dist/src/transforms/nfkc.js.map +1 -0
  696. package/dist/src/transforms/stripInvisibles.d.ts +37 -0
  697. package/dist/src/transforms/stripInvisibles.d.ts.map +1 -0
  698. package/dist/src/transforms/stripInvisibles.js +151 -0
  699. package/dist/src/transforms/stripInvisibles.js.map +1 -0
  700. package/dist/src/transforms/whitespacePunct.d.ts +21 -0
  701. package/dist/src/transforms/whitespacePunct.d.ts.map +1 -0
  702. package/dist/src/transforms/whitespacePunct.js +100 -0
  703. package/dist/src/transforms/whitespacePunct.js.map +1 -0
  704. package/dist/src/types.d.ts +212 -0
  705. package/dist/src/types.d.ts.map +1 -0
  706. package/dist/src/types.js +14 -0
  707. package/dist/src/types.js.map +1 -0
  708. package/package.json +67 -0
  709. package/src/checksums/aba.ts +45 -0
  710. package/src/checksums/digits.ts +108 -0
  711. package/src/checksums/icao9303.ts +53 -0
  712. package/src/checksums/index.ts +36 -0
  713. package/src/checksums/iso7064.ts +168 -0
  714. package/src/checksums/luhn.ts +66 -0
  715. package/src/checksums/mod97.ts +91 -0
  716. package/src/checksums/verhoeff.ts +84 -0
  717. package/src/checksums/weighted.ts +108 -0
  718. package/src/context/documentProfile.ts +293 -0
  719. package/src/context/negativeRules.ts +765 -0
  720. package/src/context/score.ts +430 -0
  721. package/src/context/structure.ts +611 -0
  722. package/src/context/triggers.ts +266 -0
  723. package/src/context/types.ts +150 -0
  724. package/src/crypto/keccak256.ts +98 -0
  725. package/src/crypto/sha256.ts +76 -0
  726. package/src/detect/AUTHORING.md +50 -0
  727. package/src/detect/detectors/bankcodes/auBsb.ts +36 -0
  728. package/src/detect/detectors/bankcodes/brAgencia.ts +46 -0
  729. package/src/detect/detectors/bankcodes/caTransit.ts +89 -0
  730. package/src/detect/detectors/bankcodes/inIfsc.ts +40 -0
  731. package/src/detect/detectors/bankcodes/index.ts +9 -0
  732. package/src/detect/detectors/bankcodes/ukSortCode.ts +38 -0
  733. package/src/detect/detectors/bankcodes/usRouting.ts +47 -0
  734. package/src/detect/detectors/contact/email.ts +113 -0
  735. package/src/detect/detectors/contact/index.ts +10 -0
  736. package/src/detect/detectors/contact/ipv4.ts +112 -0
  737. package/src/detect/detectors/contact/ipv6.ts +188 -0
  738. package/src/detect/detectors/contact/mac.ts +68 -0
  739. package/src/detect/detectors/contact/phone.ts +81 -0
  740. package/src/detect/detectors/contact/urlCredentials.ts +124 -0
  741. package/src/detect/detectors/crypto/ada.ts +52 -0
  742. package/src/detect/detectors/crypto/btc.ts +77 -0
  743. package/src/detect/detectors/crypto/dot.ts +42 -0
  744. package/src/detect/detectors/crypto/eth.ts +70 -0
  745. package/src/detect/detectors/crypto/index.ts +11 -0
  746. package/src/detect/detectors/crypto/ltc.ts +69 -0
  747. package/src/detect/detectors/crypto/sol.ts +41 -0
  748. package/src/detect/detectors/crypto/trx.ts +35 -0
  749. package/src/detect/detectors/crypto/xmr.ts +54 -0
  750. package/src/detect/detectors/documents/driversLicense.ts +83 -0
  751. package/src/detect/detectors/documents/healthData.ts +88 -0
  752. package/src/detect/detectors/documents/index.ts +8 -0
  753. package/src/detect/detectors/documents/passportMrz.ts +203 -0
  754. package/src/detect/detectors/documents/usNpi.ts +50 -0
  755. package/src/detect/detectors/documents/vin.ts +67 -0
  756. package/src/detect/detectors/financial/creditCard.ts +167 -0
  757. package/src/detect/detectors/financial/iban.ts +82 -0
  758. package/src/detect/detectors/financial/ibanRegistry.ts +112 -0
  759. package/src/detect/detectors/financial/index.ts +6 -0
  760. package/src/detect/detectors/financial/swiftBic.ts +61 -0
  761. package/src/detect/detectors/index.ts +14 -0
  762. package/src/detect/detectors/location/coordinates.ts +84 -0
  763. package/src/detect/detectors/location/index.ts +6 -0
  764. package/src/detect/detectors/location/postalCode.ts +56 -0
  765. package/src/detect/detectors/location/postalRegistry.ts +74 -0
  766. package/src/detect/detectors/location/streetAddress.ts +84 -0
  767. package/src/detect/detectors/natid/africa.ts +108 -0
  768. package/src/detect/detectors/natid/ar.ts +62 -0
  769. package/src/detect/detectors/natid/au.ts +99 -0
  770. package/src/detect/detectors/natid/be.ts +45 -0
  771. package/src/detect/detectors/natid/bg.ts +44 -0
  772. package/src/detect/detectors/natid/br.ts +81 -0
  773. package/src/detect/detectors/natid/ca.ts +40 -0
  774. package/src/detect/detectors/natid/cl.ts +47 -0
  775. package/src/detect/detectors/natid/cn.ts +48 -0
  776. package/src/detect/detectors/natid/co.ts +46 -0
  777. package/src/detect/detectors/natid/cz.ts +44 -0
  778. package/src/detect/detectors/natid/de.ts +75 -0
  779. package/src/detect/detectors/natid/dk.ts +31 -0
  780. package/src/detect/detectors/natid/es.ts +95 -0
  781. package/src/detect/detectors/natid/fi.ts +41 -0
  782. package/src/detect/detectors/natid/fr.ts +63 -0
  783. package/src/detect/detectors/natid/gb.ts +70 -0
  784. package/src/detect/detectors/natid/gr.ts +35 -0
  785. package/src/detect/detectors/natid/gulf.ts +116 -0
  786. package/src/detect/detectors/natid/hk.ts +42 -0
  787. package/src/detect/detectors/natid/hr.ts +32 -0
  788. package/src/detect/detectors/natid/hu.ts +36 -0
  789. package/src/detect/detectors/natid/ie.ts +37 -0
  790. package/src/detect/detectors/natid/il.ts +37 -0
  791. package/src/detect/detectors/natid/in.ts +67 -0
  792. package/src/detect/detectors/natid/index.ts +54 -0
  793. package/src/detect/detectors/natid/is.ts +42 -0
  794. package/src/detect/detectors/natid/it.ts +65 -0
  795. package/src/detect/detectors/natid/jp.ts +48 -0
  796. package/src/detect/detectors/natid/kr.ts +41 -0
  797. package/src/detect/detectors/natid/kz.ts +44 -0
  798. package/src/detect/detectors/natid/mx.ts +83 -0
  799. package/src/detect/detectors/natid/nl.ts +38 -0
  800. package/src/detect/detectors/natid/no.ts +50 -0
  801. package/src/detect/detectors/natid/nz.ts +53 -0
  802. package/src/detect/detectors/natid/pe.ts +28 -0
  803. package/src/detect/detectors/natid/pl.ts +100 -0
  804. package/src/detect/detectors/natid/pt.ts +36 -0
  805. package/src/detect/detectors/natid/ro.ts +47 -0
  806. package/src/detect/detectors/natid/ru.ts +82 -0
  807. package/src/detect/detectors/natid/se.ts +42 -0
  808. package/src/detect/detectors/natid/seasia.ts +174 -0
  809. package/src/detect/detectors/natid/sg.ts +39 -0
  810. package/src/detect/detectors/natid/si.ts +42 -0
  811. package/src/detect/detectors/natid/tr.ts +76 -0
  812. package/src/detect/detectors/natid/tw.ts +41 -0
  813. package/src/detect/detectors/natid/ua.ts +38 -0
  814. package/src/detect/detectors/natid/us.ts +118 -0
  815. package/src/detect/detectors/natid/za.ts +42 -0
  816. package/src/detect/detectors/secrets/apiKey.ts +115 -0
  817. package/src/detect/detectors/secrets/connectionString.ts +71 -0
  818. package/src/detect/detectors/secrets/genericSecret.ts +81 -0
  819. package/src/detect/detectors/secrets/index.ts +8 -0
  820. package/src/detect/detectors/secrets/jwt.ts +101 -0
  821. package/src/detect/detectors/secrets/pemPrivateKey.ts +59 -0
  822. package/src/detect/detectors/vat/euVat.ts +280 -0
  823. package/src/detect/detectors/vat/index.ts +4 -0
  824. package/src/detect/entropy.ts +60 -0
  825. package/src/detect/isoCountries.ts +30 -0
  826. package/src/detect/registry.ts +134 -0
  827. package/src/detect/runner.ts +187 -0
  828. package/src/detect/types.ts +296 -0
  829. package/src/encoding/base58.ts +85 -0
  830. package/src/encoding/base58monero.ts +90 -0
  831. package/src/encoding/bech32.ts +125 -0
  832. package/src/encoding/bytes.ts +48 -0
  833. package/src/entityFamily.ts +70 -0
  834. package/src/entityLabel.ts +56 -0
  835. package/src/entityTypes.ts +107 -0
  836. package/src/exposure/index.ts +189 -0
  837. package/src/fuse/calibrate.ts +224 -0
  838. package/src/fuse/defaultCalibration.ts +71 -0
  839. package/src/fuse/explain.ts +114 -0
  840. package/src/fuse/profiles.ts +187 -0
  841. package/src/fuse/resolve.ts +237 -0
  842. package/src/gazetteer/index.ts +139 -0
  843. package/src/generate/bankcodes.ts +82 -0
  844. package/src/generate/contact.ts +147 -0
  845. package/src/generate/crypto.ts +91 -0
  846. package/src/generate/documents.ts +142 -0
  847. package/src/generate/financial.ts +149 -0
  848. package/src/generate/index.ts +22 -0
  849. package/src/generate/location.ts +80 -0
  850. package/src/generate/natidAmOc.ts +198 -0
  851. package/src/generate/natidAsia.ts +162 -0
  852. package/src/generate/natidCee.ts +196 -0
  853. package/src/generate/natidMeCis.ts +131 -0
  854. package/src/generate/natidWest.ts +208 -0
  855. package/src/generate/prng.ts +17 -0
  856. package/src/generate/secrets.ts +141 -0
  857. package/src/generate/vat.ts +239 -0
  858. package/src/index.ts +186 -0
  859. package/src/mask/egressGuard.ts +88 -0
  860. package/src/mask/masker.ts +276 -0
  861. package/src/mask/restorer.ts +284 -0
  862. package/src/mask/surrogatePools.ts +96 -0
  863. package/src/mask/surrogates.ts +248 -0
  864. package/src/mask/vault.ts +153 -0
  865. package/src/ner/align.ts +86 -0
  866. package/src/ner/chunk.ts +65 -0
  867. package/src/ner/chunkCache.ts +110 -0
  868. package/src/ner/engine.ts +141 -0
  869. package/src/ner/merge.ts +123 -0
  870. package/src/ner/runStage2.ts +51 -0
  871. package/src/ner/stage2b.ts +73 -0
  872. package/src/ner/transformersClassifier.ts +79 -0
  873. package/src/ner/types.ts +99 -0
  874. package/src/normalization.ts +119 -0
  875. package/src/offsetMap.ts +271 -0
  876. package/src/pipeline.ts +96 -0
  877. package/src/protect.ts +284 -0
  878. package/src/scripts.ts +164 -0
  879. package/src/transforms/foldDigits.ts +138 -0
  880. package/src/transforms/graphemes.ts +5 -0
  881. package/src/transforms/homoglyphFold.ts +221 -0
  882. package/src/transforms/nfkc.ts +48 -0
  883. package/src/transforms/stripInvisibles.ts +158 -0
  884. package/src/transforms/whitespacePunct.ts +100 -0
  885. package/src/types.ts +339 -0
@@ -0,0 +1,77 @@
1
+ /**
2
+ * GENERIC_SECRET — high-entropy strings.
3
+ *
4
+ * SPEC.md is emphatic and specific: "Require a Shannon entropy threshold AND
5
+ * an assignment-context signal (see Stage 3) so that 'your-api-key-here',
6
+ * 'xxxxxxxxxxxx', UUIDs, git SHAs, and base64 image data do not trigger."
7
+ *
8
+ * Stage 3 does not exist in M2. So this detector is built in its FINAL shape
9
+ * but declares `requiresContext: true`, which the runner honours by capping
10
+ * it at CONFIDENCE.LOW until a context signal is supplied. It therefore
11
+ * never "fires on entropy alone" — the structural guarantee SPEC.md wants.
12
+ * The entropy computation and the known-non-secret suppressions are fully
13
+ * implemented and tested now; only the confidence ceiling is deferred.
14
+ *
15
+ * The threshold below is provisional. SPEC.md requires it be "tuned
16
+ * empirically against the eval corpus" with the precision/recall curve
17
+ * documented — that is M3 work. Until then it is deliberately conservative
18
+ * (high), because at LOW confidence a miss is cheap and a false positive is
19
+ * the thing SPEC.md warns hardest against.
20
+ */
21
+ import { registerDetector } from '../../registry.js';
22
+ import { CONFIDENCE, GLOBAL_REGION, invalid, valid } from '../../types.js';
23
+ import { shannonEntropy, distinctChars, isKnownNonSecret } from '../../entropy.js';
24
+ /**
25
+ * Provisional per-character entropy floor, in bits. A random base62 string
26
+ * approaches log2(62) ≈ 5.95; english prose sits near 3–4. 3.5 admits
27
+ * plausible keys while excluding words. Retuned against the corpus in M3.
28
+ */
29
+ const ENTROPY_FLOOR = 3.5;
30
+ /** A secret needs both length and character diversity, not just one. */
31
+ const MIN_LENGTH = 20;
32
+ const MIN_DISTINCT = 12;
33
+ function validateGenericSecret(ctx) {
34
+ const value = ctx.match[0];
35
+ if (value.length < MIN_LENGTH)
36
+ return invalid('too short');
37
+ if (isKnownNonSecret(value))
38
+ return invalid('known non-secret shape');
39
+ if (distinctChars(value) < MIN_DISTINCT)
40
+ return invalid('too few distinct characters');
41
+ const entropy = shannonEntropy(value);
42
+ if (entropy < ENTROPY_FLOOR)
43
+ return invalid('entropy below threshold');
44
+ // A run of a single character class that is all letters is far more likely
45
+ // an identifier or a word-ish token than a key; require mixed classes.
46
+ const classes = [/[a-z]/, /[A-Z]/, /[0-9]/, /[^A-Za-z0-9]/].filter((re) => re.test(value)).length;
47
+ if (classes < 2)
48
+ return invalid('single character class');
49
+ // Return the natural confidence (baseConfidence, MEDIUM) and let the runner
50
+ // apply the requiresContext cap: no Stage 3 signal → capped at LOW, a signal
51
+ // present → allowed up to base. Hardcoding LOW here would defeat the cap by
52
+ // pinning it even when context arrives, which the test below pins.
53
+ return valid({
54
+ // No canonicalization: a secret is matched verbatim.
55
+ metadata: {
56
+ entropyBitsPerChar: Number(entropy.toFixed(3)),
57
+ distinct: distinctChars(value),
58
+ // Flags for Stage 3 fusion to combine with an assignment signal.
59
+ awaitingContext: true,
60
+ },
61
+ validator: 'shannon-entropy',
62
+ });
63
+ }
64
+ registerDetector({
65
+ id: 'generic-secret',
66
+ entityType: 'GENERIC_SECRET',
67
+ regions: [GLOBAL_REGION],
68
+ // Long token-shaped runs: letters, digits, and the punctuation common in
69
+ // keys. Deliberately broad; the validator and the context requirement do
70
+ // the discriminating.
71
+ pattern: /\b[A-Za-z0-9+/_=-]{20,120}\b/g,
72
+ baseConfidence: CONFIDENCE.MEDIUM,
73
+ requiresContext: true,
74
+ description: 'High-entropy secrets: entropy gate now, Stage 3 assignment context required for confidence.',
75
+ validate: validateGenericSecret,
76
+ });
77
+ //# sourceMappingURL=genericSecret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genericSecret.js","sourceRoot":"","sources":["../../../../../src/detect/detectors/secrets/genericSecret.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEnF;;;;GAIG;AACH,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,wEAAwE;AACxE,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,SAAS,qBAAqB,CAAC,GAAsB;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU;QAAE,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtE,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,YAAY;QAAE,OAAO,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAEvF,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,aAAa;QAAE,OAAO,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEvE,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAClG,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAE1D,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,mEAAmE;IACnE,OAAO,KAAK,CAAC;QACX,qDAAqD;QACrD,QAAQ,EAAE;YACR,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9C,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;YAC9B,iEAAiE;YACjE,eAAe,EAAE,IAAI;SACtB;QACD,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,gBAAgB,CAAC;IACf,EAAE,EAAE,gBAAgB;IACpB,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,yEAAyE;IACzE,yEAAyE;IACzE,sBAAsB;IACtB,OAAO,EAAE,+BAA+B;IACxC,cAAc,EAAE,UAAU,CAAC,MAAM;IACjC,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,6FAA6F;IAC1G,QAAQ,EAAE,qBAAqB;CAChC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Secrets & credentials family. Side-effect imports only.
3
+ */
4
+ import './apiKey.js';
5
+ import './jwt.js';
6
+ import './pemPrivateKey.js';
7
+ import './connectionString.js';
8
+ import './genericSecret.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/detect/detectors/secrets/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,aAAa,CAAC;AACrB,OAAO,UAAU,CAAC;AAClB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Secrets & credentials family. Side-effect imports only.
3
+ */
4
+ import './apiKey.js';
5
+ import './jwt.js';
6
+ import './pemPrivateKey.js';
7
+ import './connectionString.js';
8
+ import './genericSecret.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/detect/detectors/secrets/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,aAAa,CAAC;AACrB,OAAO,UAAU,CAAC;AAClB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * JWT — structural validation.
3
+ *
4
+ * SPEC.md: "three base64url segments, header decodes to valid JSON with an
5
+ * alg field." That is exactly the bar: a JWT's signature cannot be verified
6
+ * without its key, so structure is all there is — but a well-formed header
7
+ * with a real `alg` is a strong and specific signal. base64url is decoded
8
+ * by hand (atob is a DOM global, banned in core).
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../../src/detect/detectors/secrets/jwt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * JWT — structural validation.
3
+ *
4
+ * SPEC.md: "three base64url segments, header decodes to valid JSON with an
5
+ * alg field." That is exactly the bar: a JWT's signature cannot be verified
6
+ * without its key, so structure is all there is — but a well-formed header
7
+ * with a real `alg` is a strong and specific signal. base64url is decoded
8
+ * by hand (atob is a DOM global, banned in core).
9
+ */
10
+ import { registerDetector } from '../../registry.js';
11
+ import { CONFIDENCE, GLOBAL_REGION, invalid, valid } from '../../types.js';
12
+ /** Registered JWS algorithms plus 'none'; a header alg must be one of these. */
13
+ const JWT_ALGS = new Set([
14
+ 'none',
15
+ 'HS256', 'HS384', 'HS512',
16
+ 'RS256', 'RS384', 'RS512',
17
+ 'ES256', 'ES256K', 'ES384', 'ES512',
18
+ 'PS256', 'PS384', 'PS512',
19
+ 'EdDSA',
20
+ ]);
21
+ function base64urlDecode(segment) {
22
+ if (!/^[A-Za-z0-9_-]+$/.test(segment))
23
+ return null;
24
+ const b64 = segment.replace(/-/g, '+').replace(/_/g, '/');
25
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
26
+ let bits = 0;
27
+ let acc = 0;
28
+ const bytes = [];
29
+ for (const ch of b64) {
30
+ const v = chars.indexOf(ch);
31
+ if (v < 0)
32
+ return null;
33
+ acc = (acc << 6) | v;
34
+ bits += 6;
35
+ if (bits >= 8) {
36
+ bits -= 8;
37
+ bytes.push((acc >> bits) & 0xff);
38
+ }
39
+ }
40
+ // Decode UTF-8 bytes to a string.
41
+ try {
42
+ let out = '';
43
+ let i = 0;
44
+ while (i < bytes.length) {
45
+ const b0 = bytes[i];
46
+ if (b0 < 0x80) {
47
+ out += String.fromCharCode(b0);
48
+ i += 1;
49
+ }
50
+ else if (b0 < 0xe0) {
51
+ out += String.fromCharCode(((b0 & 0x1f) << 6) | (bytes[i + 1] & 0x3f));
52
+ i += 2;
53
+ }
54
+ else if (b0 < 0xf0) {
55
+ out += String.fromCharCode(((b0 & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f));
56
+ i += 3;
57
+ }
58
+ else {
59
+ const cp = ((b0 & 0x07) << 18) | ((bytes[i + 1] & 0x3f) << 12) | ((bytes[i + 2] & 0x3f) << 6) | (bytes[i + 3] & 0x3f);
60
+ out += String.fromCodePoint(cp);
61
+ i += 4;
62
+ }
63
+ }
64
+ return out;
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ function validateJwt(ctx) {
71
+ const parts = ctx.match[0].split('.');
72
+ if (parts.length !== 3)
73
+ return invalid('not three segments');
74
+ const [headerSeg, payloadSeg, signatureSeg] = parts;
75
+ if (signatureSeg.length === 0)
76
+ return invalid('empty signature segment');
77
+ const headerJson = base64urlDecode(headerSeg);
78
+ if (headerJson === null)
79
+ return invalid('header is not base64url');
80
+ let header;
81
+ try {
82
+ header = JSON.parse(headerJson);
83
+ }
84
+ catch {
85
+ return invalid('header is not JSON');
86
+ }
87
+ if (typeof header !== 'object' || header === null)
88
+ return invalid('header is not a JSON object');
89
+ const alg = header['alg'];
90
+ if (typeof alg !== 'string' || !JWT_ALGS.has(alg))
91
+ return invalid('header has no valid alg');
92
+ // The payload must at least decode as base64url; it need not be JSON
93
+ // (though it usually is) — some tokens carry non-JSON claims sets.
94
+ if (base64urlDecode(payloadSeg) === null)
95
+ return invalid('payload is not base64url');
96
+ return valid({
97
+ canonical: ctx.match[0],
98
+ metadata: { alg },
99
+ validator: 'jwt-structural',
100
+ });
101
+ }
102
+ registerDetector({
103
+ id: 'jwt',
104
+ entityType: 'JWT',
105
+ regions: [GLOBAL_REGION],
106
+ pattern: /\beyJ[A-Za-z0-9_-]{5,}\.[A-Za-z0-9_-]{2,}\.[A-Za-z0-9_-]{2,}\b/g,
107
+ baseConfidence: CONFIDENCE.HIGH,
108
+ description: 'JSON Web Tokens: three base64url segments, header JSON carrying a valid alg.',
109
+ validate: validateJwt,
110
+ });
111
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../../../src/detect/detectors/secrets/jwt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * PRIVATE_KEY — PEM private-key blocks.
3
+ *
4
+ * A whole armored block, header through footer, is matched and the span
5
+ * covers all of it: a private key with its header stripped is still a
6
+ * private key, and substitution must replace the entire block. The type is
7
+ * PRIVATE_KEY (its own EntityType, split from API_KEY in ARCHITECTURE.md D4)
8
+ * because a leaked private key's blast radius and its surrogate differ from
9
+ * a token's. Confidence is MAXIMUM: a well-formed PEM private-key block is
10
+ * essentially never a false positive.
11
+ *
12
+ * PUBLIC-key blocks and CERTIFICATE blocks are deliberately excluded — they
13
+ * are not secret.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=pemPrivateKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pemPrivateKey.d.ts","sourceRoot":"","sources":["../../../../../src/detect/detectors/secrets/pemPrivateKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * PRIVATE_KEY — PEM private-key blocks.
3
+ *
4
+ * A whole armored block, header through footer, is matched and the span
5
+ * covers all of it: a private key with its header stripped is still a
6
+ * private key, and substitution must replace the entire block. The type is
7
+ * PRIVATE_KEY (its own EntityType, split from API_KEY in ARCHITECTURE.md D4)
8
+ * because a leaked private key's blast radius and its surrogate differ from
9
+ * a token's. Confidence is MAXIMUM: a well-formed PEM private-key block is
10
+ * essentially never a false positive.
11
+ *
12
+ * PUBLIC-key blocks and CERTIFICATE blocks are deliberately excluded — they
13
+ * are not secret.
14
+ */
15
+ import { registerDetector } from '../../registry.js';
16
+ import { CONFIDENCE, GLOBAL_REGION, invalid, valid } from '../../types.js';
17
+ const KEY_LABELS = [
18
+ 'PRIVATE KEY',
19
+ 'RSA PRIVATE KEY',
20
+ 'EC PRIVATE KEY',
21
+ 'DSA PRIVATE KEY',
22
+ 'OPENSSH PRIVATE KEY',
23
+ 'PGP PRIVATE KEY BLOCK',
24
+ 'ENCRYPTED PRIVATE KEY',
25
+ ];
26
+ function validatePem(ctx) {
27
+ const label = ctx.match[1];
28
+ const footerLabel = ctx.match[3];
29
+ if (label === undefined || !KEY_LABELS.includes(label))
30
+ return invalid('not a private-key label');
31
+ if (label !== footerLabel)
32
+ return invalid('header and footer labels differ');
33
+ const body = ctx.match[2] ?? '';
34
+ // The body between the armor lines must contain real base64 content, not
35
+ // just whitespace — an empty pair of armor lines is a template, not a key.
36
+ if (!/[A-Za-z0-9+/]{16,}/.test(body))
37
+ return invalid('no key material between armor lines');
38
+ return valid({
39
+ canonical: ctx.match[0].trim(),
40
+ confidence: CONFIDENCE.MAXIMUM,
41
+ metadata: { keyType: label },
42
+ validator: 'pem-armor',
43
+ });
44
+ }
45
+ registerDetector({
46
+ id: 'pem-private-key',
47
+ entityType: 'PRIVATE_KEY',
48
+ regions: [GLOBAL_REGION],
49
+ // Header, body, footer. [\s\S] so the body can cross newlines; the label
50
+ // is captured twice so the validator can require they match.
51
+ pattern: /-----BEGIN ([A-Z0-9 ]+?)-----([\s\S]*?)-----END ([A-Z0-9 ]+?)-----/g,
52
+ baseConfidence: CONFIDENCE.MAXIMUM,
53
+ description: 'PEM private-key blocks (RSA/EC/DSA/OpenSSH/PGP/PKCS8), whole-block span.',
54
+ validate: validatePem,
55
+ });
56
+ //# sourceMappingURL=pemPrivateKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pemPrivateKey.js","sourceRoot":"","sources":["../../../../../src/detect/detectors/secrets/pemPrivateKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG3E,MAAM,UAAU,GAAG;IACjB,aAAa;IACb,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF,SAAS,WAAW,CAAC,GAAsB;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAClG,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAE7E,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,qCAAqC,CAAC,CAAC;IAE5F,OAAO,KAAK,CAAC;QACX,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAC9B,UAAU,EAAE,UAAU,CAAC,OAAO;QAC9B,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC5B,SAAS,EAAE,WAAW;KACvB,CAAC,CAAC;AACL,CAAC;AAED,gBAAgB,CAAC;IACf,EAAE,EAAE,iBAAiB;IACrB,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,yEAAyE;IACzE,6DAA6D;IAC7D,OAAO,EAAE,qEAAqE;IAC9E,cAAc,EAAE,UAAU,CAAC,OAAO;IAClC,WAAW,EAAE,0EAA0E;IACvF,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * VAT_NUMBER — EU VAT identification numbers, all 27 member states.
3
+ *
4
+ * SPEC.md: "EU VAT numbers — per-country structure and checksum for all
5
+ * member states." A VAT number is quoted WITH its country prefix (Greece
6
+ * uses EL, not GR), which is what makes a single detector precise: the
7
+ * prefix selects the national rule, and every country that publishes a
8
+ * checksum has it verified here — many reusing the shared library (DE and
9
+ * HR are ISO 7064 MOD 11,10; EL is the AFM power-of-two rule; IT and SE
10
+ * close with Luhn; PL is the NIP weights; PT the NIF weights; IE the
11
+ * PPS-style mod-23 letter). Countries whose personal-number fallbacks are
12
+ * weaker (CZ 9-digit) accept those structurally, marked in metadata.
13
+ *
14
+ * Adding a member state (or successor scheme) is one entry in RULES.
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=euVat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"euVat.d.ts","sourceRoot":"","sources":["../../../../../src/detect/detectors/vat/euVat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * VAT_NUMBER — EU VAT identification numbers, all 27 member states.
3
+ *
4
+ * SPEC.md: "EU VAT numbers — per-country structure and checksum for all
5
+ * member states." A VAT number is quoted WITH its country prefix (Greece
6
+ * uses EL, not GR), which is what makes a single detector precise: the
7
+ * prefix selects the national rule, and every country that publishes a
8
+ * checksum has it verified here — many reusing the shared library (DE and
9
+ * HR are ISO 7064 MOD 11,10; EL is the AFM power-of-two rule; IT and SE
10
+ * close with Luhn; PL is the NIP weights; PT the NIF weights; IE the
11
+ * PPS-style mod-23 letter). Countries whose personal-number fallbacks are
12
+ * weaker (CZ 9-digit) accept those structurally, marked in metadata.
13
+ *
14
+ * Adding a member state (or successor scheme) is one entry in RULES.
15
+ */
16
+ import { toDigits, isAllDigits, weightedSum, weightedMod, weightedModBy, cyclicWeightedMod, luhnValid, mod11_10Valid, modString, } from '../../../checksums/index.js';
17
+ import { registerDetector } from '../../registry.js';
18
+ import { CONFIDENCE, invalid, valid } from '../../types.js';
19
+ const DNI_LETTERS = 'TRWAGMYFPDXBNJZSQVHLCKE';
20
+ const MOD23 = 'WABCDEFGHIJKLMNOPQRSTUV';
21
+ /** Spanish NIF/NIE/CIF check, shared by the ES entry. */
22
+ function esVatValid(body) {
23
+ if (/^\d{8}[A-Z]$/.test(body)) {
24
+ return body[8] === DNI_LETTERS[Number(body.slice(0, 8)) % 23];
25
+ }
26
+ if (/^[XYZ]\d{7}[A-Z]$/.test(body)) {
27
+ const prefix = { X: '0', Y: '1', Z: '2' }[body[0]];
28
+ return body[8] === DNI_LETTERS[Number(`${prefix}${body.slice(1, 8)}`) % 23];
29
+ }
30
+ if (/^[A-HJ-NP-SUVW]\d{7}[0-9A-J]$/.test(body)) {
31
+ let sum = 0;
32
+ for (let i = 1; i <= 7; i++) {
33
+ let v = Number(body[i]);
34
+ if (i % 2 === 1) {
35
+ v *= 2;
36
+ if (v > 9)
37
+ v -= 9;
38
+ }
39
+ sum += v;
40
+ }
41
+ const value = (10 - (sum % 10)) % 10;
42
+ return body[8] === String(value) || body[8] === 'JABCDEFGHI'[value];
43
+ }
44
+ return false;
45
+ }
46
+ const RULES = {
47
+ AT: (b) => {
48
+ // 'U' + 8 digits; c = (10 − (s + 4) mod 10) mod 10 with alternating
49
+ // 1,2 weights and digit-sum folding. Verified against ATU13585627.
50
+ if (!/^U\d{8}$/.test(b))
51
+ return false;
52
+ const d = toDigits(b.slice(1));
53
+ let s = 0;
54
+ for (let i = 0; i < 7; i++) {
55
+ const product = d[i] * (i % 2 === 0 ? 1 : 2);
56
+ s += product > 9 ? product - 9 : product;
57
+ }
58
+ return (10 - ((s + 4) % 10)) % 10 === d[7];
59
+ },
60
+ BE: (b) => {
61
+ if (!/^[01]\d{9}$/.test(b))
62
+ return false;
63
+ return Number(b.slice(8)) === 97 - (Number(b.slice(0, 8)) % 97);
64
+ },
65
+ BG: (b) => {
66
+ if (/^\d{9}$/.test(b)) {
67
+ const d = toDigits(b);
68
+ let r = weightedModBy(d.slice(0, 8), (i) => i + 1, 11);
69
+ if (r === 10) {
70
+ r = weightedModBy(d.slice(0, 8), (i) => i + 3, 11);
71
+ if (r === 10)
72
+ r = 0;
73
+ }
74
+ return r === d[8];
75
+ }
76
+ if (/^\d{10}$/.test(b)) {
77
+ const d = toDigits(b);
78
+ // Personal numbers: the PNF weight vector closes most; EGN-style
79
+ // numbers are also legal — accept either closing rule.
80
+ const pnf = weightedMod(d.slice(0, 9), [21, 19, 17, 13, 11, 9, 7, 3, 1], 10);
81
+ if (pnf === d[9])
82
+ return true;
83
+ let egn = weightedMod(d.slice(0, 9), [2, 4, 8, 5, 10, 9, 7, 3, 6], 11);
84
+ if (egn === 10)
85
+ egn = 0;
86
+ return egn === d[9];
87
+ }
88
+ return false;
89
+ },
90
+ CY: (b) => {
91
+ if (!/^\d{8}[A-Z]$/.test(b))
92
+ return false;
93
+ const TRANSFORM = [1, 0, 5, 7, 9, 13, 15, 17, 19, 21];
94
+ let sum = 0;
95
+ for (let i = 0; i < 8; i++) {
96
+ const d = Number(b[i]);
97
+ sum += i % 2 === 0 ? TRANSFORM[d] : d;
98
+ }
99
+ return b[8] === String.fromCharCode(65 + (sum % 26));
100
+ },
101
+ CZ: (b) => {
102
+ if (/^\d{8}$/.test(b)) {
103
+ const d = toDigits(b);
104
+ const r = weightedModBy(d.slice(0, 7), (i) => 8 - i, 11);
105
+ const c = r === 0 ? 1 : r === 1 ? 0 : 11 - r;
106
+ return c === d[7];
107
+ }
108
+ if (/^\d{10}$/.test(b))
109
+ return Number(b) % 11 === 0; // rodné číslo form
110
+ if (/^\d{9}$/.test(b))
111
+ return 'structural'; // pre-1954 personal, no check
112
+ return false;
113
+ },
114
+ DE: (b) => /^\d{9}$/.test(b) && mod11_10Valid(b.slice(0, 8), b[8]),
115
+ DK: (b) => {
116
+ if (!/^\d{8}$/.test(b))
117
+ return false;
118
+ return weightedMod(toDigits(b), [2, 7, 6, 5, 4, 3, 2, 1], 11) === 0;
119
+ },
120
+ EE: (b) => {
121
+ if (!/^\d{9}$/.test(b))
122
+ return false;
123
+ const d = toDigits(b);
124
+ const sum = cyclicWeightedMod(d.slice(0, 8), [3, 7, 1], 10);
125
+ return (10 - sum) % 10 === d[8];
126
+ },
127
+ EL: (b) => {
128
+ if (!/^\d{9}$/.test(b) || /^0+$/.test(b))
129
+ return false;
130
+ const d = toDigits(b);
131
+ return weightedModBy(d.slice(0, 8), (i) => 2 ** (8 - i), 11) % 10 === d[8];
132
+ },
133
+ ES: esVatValid,
134
+ FI: (b) => {
135
+ if (!/^\d{8}$/.test(b))
136
+ return false;
137
+ const d = toDigits(b);
138
+ const r = weightedMod(d.slice(0, 7), [7, 9, 10, 5, 8, 4, 2], 11);
139
+ if (r === 1)
140
+ return false;
141
+ return (r === 0 ? 0 : 11 - r) === d[7];
142
+ },
143
+ FR: (b) => {
144
+ if (!/^[0-9A-Z]{2}\d{9}$/.test(b))
145
+ return false;
146
+ const siren = b.slice(2);
147
+ if (!luhnValid(siren))
148
+ return false;
149
+ if (isAllDigits(b.slice(0, 2))) {
150
+ return Number(b.slice(0, 2)) === (12 + 3 * (Number(siren) % 97)) % 97;
151
+ }
152
+ return 'structural'; // letter keys: no published arithmetic
153
+ },
154
+ HR: (b) => /^\d{11}$/.test(b) && mod11_10Valid(b.slice(0, 10), b[10]),
155
+ HU: (b) => {
156
+ if (!/^\d{8}$/.test(b))
157
+ return false;
158
+ const d = toDigits(b);
159
+ const sum = weightedMod(d.slice(0, 7), [9, 7, 3, 1, 9, 7, 3], 10);
160
+ return (10 - sum) % 10 === d[7];
161
+ },
162
+ IE: (b) => {
163
+ const m = /^(\d{7})([A-W])([AH])?$/.exec(b);
164
+ if (m === null)
165
+ return false;
166
+ let sum = weightedSum(toDigits(m[1]), [8, 7, 6, 5, 4, 3, 2]);
167
+ if (m[3] !== undefined)
168
+ sum += 9 * (m[3].charCodeAt(0) - 64);
169
+ return m[2] === MOD23[sum % 23];
170
+ },
171
+ IT: (b) => /^\d{11}$/.test(b) && !/^0{7}/.test(b) && luhnValid(b),
172
+ LT: (b) => {
173
+ const twoPhase = (d, n) => {
174
+ let r = weightedModBy(d.slice(0, n), (i) => (i % 9) + 1, 11);
175
+ if (r === 10) {
176
+ r = weightedModBy(d.slice(0, n), (i) => ((i + 2) % 9) + 1, 11);
177
+ if (r === 10)
178
+ r = 0;
179
+ }
180
+ return r;
181
+ };
182
+ if (/^\d{9}$/.test(b)) {
183
+ const d = toDigits(b);
184
+ return twoPhase(d, 8) === d[8];
185
+ }
186
+ if (/^\d{12}$/.test(b)) {
187
+ const d = toDigits(b);
188
+ return twoPhase(d, 11) === d[11];
189
+ }
190
+ return false;
191
+ },
192
+ LU: (b) => /^\d{8}$/.test(b) && Number(b.slice(0, 6)) % 89 === Number(b.slice(6)),
193
+ LV: (b) => {
194
+ if (!/^\d{11}$/.test(b))
195
+ return false;
196
+ const d = toDigits(b);
197
+ let sum = 0;
198
+ const weights = [9, 1, 4, 8, 3, 10, 2, 5, 7, 6];
199
+ for (let i = 0; i < 10; i++)
200
+ sum += d[i] * weights[i];
201
+ const c = (((3 - sum) % 11) + 11) % 11;
202
+ if (c === 10)
203
+ return false;
204
+ return c === d[10];
205
+ },
206
+ MT: (b) => {
207
+ if (!/^\d{8}$/.test(b))
208
+ return false;
209
+ const d = toDigits(b);
210
+ const r = weightedMod(d.slice(0, 6), [3, 4, 6, 7, 8, 9], 37);
211
+ const expected = 37 - r === 0 ? 37 : 37 - r;
212
+ return expected === Number(b.slice(6));
213
+ },
214
+ NL: (b) => {
215
+ if (!/^\d{9}B\d{2}$/.test(b))
216
+ return false;
217
+ const d = toDigits(b.slice(0, 9));
218
+ const r = weightedModBy(d.slice(0, 8), (i) => 9 - i, 11);
219
+ if (r !== 10 && r === d[8])
220
+ return true;
221
+ // Post-2020 sole traders: base-36 mod-97 over "NL" + the full body.
222
+ const numeric = [...`NL${b}`]
223
+ .map((ch) => (/\d/.test(ch) ? ch : String(ch.charCodeAt(0) - 55)))
224
+ .join('');
225
+ return modString(numeric, 97) === 1;
226
+ },
227
+ PL: (b) => {
228
+ if (!/^\d{10}$/.test(b))
229
+ return false;
230
+ const d = toDigits(b);
231
+ const r = weightedMod(d.slice(0, 9), [6, 5, 7, 2, 3, 4, 5, 6, 7], 11);
232
+ return r !== 10 && r === d[9];
233
+ },
234
+ PT: (b) => {
235
+ if (!/^\d{9}$/.test(b))
236
+ return false;
237
+ const d = toDigits(b);
238
+ const r = weightedModBy(d.slice(0, 8), (i) => 9 - i, 11);
239
+ return (r < 2 ? 0 : 11 - r) === d[8];
240
+ },
241
+ RO: (b) => {
242
+ if (!/^\d{2,10}$/.test(b) || b[0] === '0')
243
+ return false;
244
+ const padded = b.padStart(10, '0');
245
+ const d = toDigits(padded);
246
+ const sum = weightedMod(d.slice(0, 9), [7, 5, 3, 2, 1, 7, 5, 3, 2], 11);
247
+ return ((sum * 10) % 11) % 10 === d[9];
248
+ },
249
+ SE: (b) => /^\d{10}01$/.test(b) && luhnValid(b.slice(0, 10)),
250
+ SI: (b) => {
251
+ if (!/^[1-9]\d{7}$/.test(b))
252
+ return false;
253
+ const d = toDigits(b);
254
+ const r = weightedModBy(d.slice(0, 7), (i) => 8 - i, 11);
255
+ const c = 11 - r;
256
+ if (c === 10)
257
+ return false;
258
+ return (c === 11 ? 0 : c) === d[7];
259
+ },
260
+ SK: (b) => /^[1-9]\d[234789]\d{7}$/.test(b) && Number(b) % 11 === 0,
261
+ };
262
+ const PREFIXES = Object.keys(RULES).join('|');
263
+ registerDetector({
264
+ id: 'eu-vat',
265
+ entityType: 'VAT_NUMBER',
266
+ regions: [
267
+ 'AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'GR', 'ES', 'FI', 'FR', 'HR',
268
+ 'HU', 'IE', 'IT', 'LT', 'LU', 'LV', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK',
269
+ ],
270
+ pattern: new RegExp(`\\b(${PREFIXES})[ ]?([0-9A-Z]{2,13})\\b`, 'g'),
271
+ baseConfidence: CONFIDENCE.HIGH,
272
+ description: 'EU VAT numbers: per-country structure and checksum for all 27 member states.',
273
+ validate(ctx) {
274
+ const country = ctx.match[1];
275
+ const body = ctx.match[2];
276
+ const rule = RULES[country];
277
+ if (rule === undefined)
278
+ return invalid('not a member-state prefix');
279
+ const result = rule(body);
280
+ if (result === false)
281
+ return invalid('national VAT rule failed');
282
+ return valid({
283
+ canonical: `${country}${body}`,
284
+ ...(result === 'structural' ? { confidence: CONFIDENCE.MEDIUM } : {}),
285
+ metadata: {
286
+ country: country === 'EL' ? 'GR' : country,
287
+ ...(result === 'structural' ? { checksum: 'structural-only' } : {}),
288
+ },
289
+ validator: result === 'structural' ? 'vat-structure' : 'vat-checksum',
290
+ });
291
+ },
292
+ });
293
+ //# sourceMappingURL=euVat.js.map