@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,151 @@
1
+ /**
2
+ * Transform 1: STRIP INVISIBLES.
3
+ *
4
+ * Removes zero-width and bidi control characters:
5
+ * U+200B–U+200F (ZWSP, ZWNJ, ZWJ, LRM, RLM)
6
+ * U+202A–U+202E (bidi embedding/override controls)
7
+ * U+2060–U+2064 (word joiner, invisible operators)
8
+ * U+FEFF (BOM / zero-width no-break space)
9
+ * U+00AD (soft hyphen)
10
+ *
11
+ * These are pure noise for detection and are the classic obfuscation vector
12
+ * (a ZWSP dropped into the middle of "john@example.com"), so they go first —
13
+ * they interfere with every transform downstream.
14
+ *
15
+ * TWO CHARACTERS IN THE SET ARE SOMETIMES STRUCTURAL, NOT NOISE:
16
+ *
17
+ * THE EMOJI EXCEPTION — ZWJ (U+200D) inside an emoji sequence joins the
18
+ * sequence together; stripping it would corrupt 👨‍👩‍👧 into 👨👩👧. Per UAX #29,
19
+ * ZWJ and ZWNJ are the only characters in the strip set that can sit INSIDE
20
+ * a grapheme cluster (all the others have Grapheme_Cluster_Break=Control and
21
+ * form their own clusters), so the rule is: leave any cluster containing an
22
+ * Extended_Pictographic code point completely untouched.
23
+ *
24
+ * THE JOINING-SCRIPT EXCEPTION — ZWNJ (U+200C) is linguistically MEANINGFUL
25
+ * in scripts with cursive joining or conjunct formation: in Persian/Urdu and
26
+ * other Arabic-script languages it controls letter shaping and word
27
+ * segmentation (می‌خواهم), and in Indic scripts it suppresses conjuncts
28
+ * (क्‌ष renders dead consonant + ssa instead of the kṣa ligature). Stripping
29
+ * it there CORRUPTS the text. Rule (mirroring the emoji reasoning): preserve
30
+ * ZWNJ when its nearest substantive neighbors on BOTH sides — skipping other
31
+ * invisibles and combining marks — belong to a ZWNJ-using script. Everywhere
32
+ * else (Latin ligature suppression, obfuscation, stray controls) it is noise
33
+ * and is stripped.
34
+ */
35
+ import { MappedTextBuilder } from '../offsetMap.js';
36
+ import { graphemeSegmenter } from './graphemes.js';
37
+ // The character class is assembled from code points rather than written as
38
+ // literals so no invisible characters hide in this source file.
39
+ const cc = (cp) => String.fromCharCode(cp);
40
+ const INVISIBLE = new RegExp(`[${cc(0x00ad)}${cc(0x200b)}-${cc(0x200f)}${cc(0x202a)}-${cc(0x202e)}` +
41
+ `${cc(0x2060)}-${cc(0x2064)}${cc(0xfeff)}]`);
42
+ const EXTENDED_PICTOGRAPHIC = /\p{Extended_Pictographic}/u;
43
+ /**
44
+ * Scripts in which ZWNJ carries meaning: the cursive-joining family (Arabic
45
+ * script as used by Persian, Urdu, Kurdish, …; Syriac; Mongolian) and the
46
+ * Brahmic/Indic family (conjunct and ligature control). Note these are
47
+ * Unicode Script properties, deliberately independent of the coarser
48
+ * ScriptName buckets used for dominance elsewhere.
49
+ */
50
+ const ZWNJ_SCRIPT = /[\p{Script=Arabic}\p{Script=Syriac}\p{Script=Mongolian}\p{Script=Devanagari}\p{Script=Bengali}\p{Script=Gurmukhi}\p{Script=Gujarati}\p{Script=Oriya}\p{Script=Tamil}\p{Script=Telugu}\p{Script=Kannada}\p{Script=Malayalam}\p{Script=Sinhala}\p{Script=Myanmar}\p{Script=Khmer}]/u;
51
+ const COMBINING_MARK = /\p{M}/u;
52
+ function isInvisible(cp) {
53
+ return (cp === 0x00ad ||
54
+ (cp >= 0x200b && cp <= 0x200f) ||
55
+ (cp >= 0x202a && cp <= 0x202e) ||
56
+ (cp >= 0x2060 && cp <= 0x2064) ||
57
+ cp === 0xfeff);
58
+ }
59
+ /**
60
+ * Walk from `from` in `step` direction to the nearest code point that is
61
+ * neither a strippable invisible nor a combining mark, and report whether it
62
+ * belongs to a ZWNJ-using script.
63
+ *
64
+ * Marks are skippable because ZWNJ legitimately follows them (the canonical
65
+ * Hindi use is ZWNJ directly after the virama; Arabic harakat may also sit
66
+ * between the letter and the ZWNJ) — but a mark that itself carries a
67
+ * ZWNJ-script Script property (like the virama, Script=Devanagari) already
68
+ * answers the question and short-circuits to true.
69
+ */
70
+ function neighborSupportsZwnj(text, from, step) {
71
+ let i = from;
72
+ while (step === -1 ? i > 0 : i < text.length) {
73
+ let j;
74
+ let cp;
75
+ if (step === -1) {
76
+ // Move one code point left, respecting surrogate pairs.
77
+ j = i - 1;
78
+ cp = text.charCodeAt(j);
79
+ if (cp >= 0xdc00 && cp <= 0xdfff && j > 0) {
80
+ const high = text.charCodeAt(j - 1);
81
+ if (high >= 0xd800 && high <= 0xdbff) {
82
+ j -= 1;
83
+ cp = text.codePointAt(j);
84
+ }
85
+ }
86
+ }
87
+ else {
88
+ j = i;
89
+ cp = text.codePointAt(j);
90
+ }
91
+ const char = String.fromCodePoint(cp);
92
+ if (ZWNJ_SCRIPT.test(char))
93
+ return true;
94
+ if (!isInvisible(cp) && !COMBINING_MARK.test(char))
95
+ return false;
96
+ i = step === -1 ? j : j + char.length;
97
+ }
98
+ return false; // ran off the edge of the text
99
+ }
100
+ /** True when the ZWNJ at `zwnjIndex` sits between ZWNJ-using-script text. */
101
+ function shouldPreserveZwnj(text, zwnjIndex) {
102
+ return neighborSupportsZwnj(text, zwnjIndex, -1) && neighborSupportsZwnj(text, zwnjIndex + 1, 1);
103
+ }
104
+ export function stripInvisibles(text) {
105
+ if (!INVISIBLE.test(text))
106
+ return null; // fast path: nothing to strip
107
+ const builder = new MappedTextBuilder();
108
+ const changes = [];
109
+ for (const { segment, index } of graphemeSegmenter.segment(text)) {
110
+ const segmentEnd = index + segment.length;
111
+ if (!INVISIBLE.test(segment)) {
112
+ builder.copyVerbatim(text, index, segmentEnd);
113
+ continue;
114
+ }
115
+ if (EXTENDED_PICTOGRAPHIC.test(segment)) {
116
+ // Emoji cluster: its ZWJs (and any variation selectors) are structural.
117
+ builder.copyVerbatim(text, index, segmentEnd);
118
+ continue;
119
+ }
120
+ // Non-emoji cluster containing at least one invisible: strip code-point-wise.
121
+ let pos = index;
122
+ for (const char of segment) {
123
+ const charEnd = pos + char.length;
124
+ const cp = char.codePointAt(0);
125
+ if (cp === 0x200c && shouldPreserveZwnj(text, pos)) {
126
+ // Joining-script ZWNJ: structural, keep it (see header).
127
+ builder.copyVerbatim(text, pos, charEnd);
128
+ }
129
+ else if (isInvisible(cp)) {
130
+ builder.deleteRange(pos, charEnd);
131
+ changes.push({
132
+ kind: 'strip-invisibles',
133
+ start: pos,
134
+ end: charEnd,
135
+ before: char,
136
+ after: '',
137
+ });
138
+ }
139
+ else {
140
+ builder.copyVerbatim(text, pos, charEnd);
141
+ }
142
+ pos = charEnd;
143
+ }
144
+ }
145
+ // Every invisible was structural (emoji ZWJ / joining-script ZWNJ).
146
+ if (changes.length === 0)
147
+ return null;
148
+ const { text: out, map } = builder.finish(text.length);
149
+ return { text: out, map, changes };
150
+ }
151
+ //# sourceMappingURL=stripInvisibles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripInvisibles.js","sourceRoot":"","sources":["../../../src/transforms/stripInvisibles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Transform 4: WHITESPACE AND PUNCTUATION NORMALIZATION.
3
+ *
4
+ * • exotic space characters → U+0020 regular space
5
+ * • dash variants (hyphen, non-breaking hyphen, figure/en/em dash,
6
+ * horizontal bar, minus sign) → '-' hyphen-minus
7
+ * • curly and angle quotes → straight ' and "
8
+ *
9
+ * All replacements are strictly 1 code unit → 1 code unit, so this transform
10
+ * never changes offsets relative to its input. Runs of spaces are NOT
11
+ * collapsed and nothing is trimmed — that would change offsets in ways that
12
+ * damage code and formatted text.
13
+ *
14
+ * Most exotic spaces are already folded to U+0020 by NFKC; this transform
15
+ * exists so the guarantee holds even when the NFKC step is disabled, and for
16
+ * the few characters NFKC leaves alone (e.g. U+1680 OGHAM SPACE MARK and the
17
+ * dash/quote variants, which are not compatibility-decomposable).
18
+ */
19
+ import { type TransformStepResult } from '../offsetMap.js';
20
+ export declare function normalizeWhitespacePunct(text: string): TransformStepResult | null;
21
+ //# sourceMappingURL=whitespacePunct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitespacePunct.d.ts","sourceRoot":"","sources":["../../../src/transforms/whitespacePunct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAqB,KAAK,mBAAmB,EAAmB,MAAM,iBAAiB,CAAC;AAkD/F,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CA+BjF"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Transform 4: WHITESPACE AND PUNCTUATION NORMALIZATION.
3
+ *
4
+ * • exotic space characters → U+0020 regular space
5
+ * • dash variants (hyphen, non-breaking hyphen, figure/en/em dash,
6
+ * horizontal bar, minus sign) → '-' hyphen-minus
7
+ * • curly and angle quotes → straight ' and "
8
+ *
9
+ * All replacements are strictly 1 code unit → 1 code unit, so this transform
10
+ * never changes offsets relative to its input. Runs of spaces are NOT
11
+ * collapsed and nothing is trimmed — that would change offsets in ways that
12
+ * damage code and formatted text.
13
+ *
14
+ * Most exotic spaces are already folded to U+0020 by NFKC; this transform
15
+ * exists so the guarantee holds even when the NFKC step is disabled, and for
16
+ * the few characters NFKC leaves alone (e.g. U+1680 OGHAM SPACE MARK and the
17
+ * dash/quote variants, which are not compatibility-decomposable).
18
+ */
19
+ import { MappedTextBuilder } from '../offsetMap.js';
20
+ /**
21
+ * code unit → replacement. Every source is a BMP non-surrogate code point and
22
+ * every replacement is a single ASCII character, keeping the transform 1:1.
23
+ * Invisible-looking space characters are keyed by code point to keep literal
24
+ * invisibles out of this file; dashes and quotes are visible and literal.
25
+ */
26
+ const REPLACEMENTS = new Map([
27
+ // Spaces (the complete Zs category except U+0020 itself).
28
+ [0x00a0, ' '], // NO-BREAK SPACE
29
+ [0x1680, ' '], // OGHAM SPACE MARK
30
+ [0x2000, ' '], // EN QUAD
31
+ [0x2001, ' '], // EM QUAD
32
+ [0x2002, ' '], // EN SPACE
33
+ [0x2003, ' '], // EM SPACE
34
+ [0x2004, ' '], // THREE-PER-EM SPACE
35
+ [0x2005, ' '], // FOUR-PER-EM SPACE
36
+ [0x2006, ' '], // SIX-PER-EM SPACE
37
+ [0x2007, ' '], // FIGURE SPACE
38
+ [0x2008, ' '], // PUNCTUATION SPACE
39
+ [0x2009, ' '], // THIN SPACE
40
+ [0x200a, ' '], // HAIR SPACE
41
+ [0x202f, ' '], // NARROW NO-BREAK SPACE
42
+ [0x205f, ' '], // MEDIUM MATHEMATICAL SPACE
43
+ [0x3000, ' '], // IDEOGRAPHIC SPACE
44
+ // Dashes.
45
+ ['‐'.charCodeAt(0), '-'], // U+2010 HYPHEN
46
+ ['‑'.charCodeAt(0), '-'], // U+2011 NON-BREAKING HYPHEN
47
+ ['‒'.charCodeAt(0), '-'], // U+2012 FIGURE DASH
48
+ ['–'.charCodeAt(0), '-'], // U+2013 EN DASH
49
+ ['—'.charCodeAt(0), '-'], // U+2014 EM DASH
50
+ ['―'.charCodeAt(0), '-'], // U+2015 HORIZONTAL BAR
51
+ ['−'.charCodeAt(0), '-'], // U+2212 MINUS SIGN
52
+ // Single quotes.
53
+ ['‘'.charCodeAt(0), "'"], // U+2018
54
+ ['’'.charCodeAt(0), "'"], // U+2019
55
+ ['‚'.charCodeAt(0), "'"], // U+201A
56
+ ['‛'.charCodeAt(0), "'"], // U+201B
57
+ ['‹'.charCodeAt(0), "'"], // U+2039
58
+ ['›'.charCodeAt(0), "'"], // U+203A
59
+ // Double quotes.
60
+ ['“'.charCodeAt(0), '"'], // U+201C
61
+ ['”'.charCodeAt(0), '"'], // U+201D
62
+ ['„'.charCodeAt(0), '"'], // U+201E
63
+ ['‟'.charCodeAt(0), '"'], // U+201F
64
+ ['«'.charCodeAt(0), '"'], // U+00AB
65
+ ['»'.charCodeAt(0), '"'], // U+00BB
66
+ ]);
67
+ export function normalizeWhitespacePunct(text) {
68
+ // Fast path: scan for the first replaceable unit; most text has none.
69
+ let first = -1;
70
+ for (let i = 0; i < text.length; i++) {
71
+ if (REPLACEMENTS.has(text.charCodeAt(i))) {
72
+ first = i;
73
+ break;
74
+ }
75
+ }
76
+ if (first === -1)
77
+ return null;
78
+ const builder = new MappedTextBuilder();
79
+ const changes = [];
80
+ let cursor = 0;
81
+ for (let i = first; i < text.length; i++) {
82
+ const replacement = REPLACEMENTS.get(text.charCodeAt(i));
83
+ if (replacement === undefined)
84
+ continue;
85
+ builder.copyVerbatim(text, cursor, i);
86
+ builder.replaceRange(replacement, i, i + 1);
87
+ changes.push({
88
+ kind: 'whitespace-punct',
89
+ start: i,
90
+ end: i + 1,
91
+ before: text[i],
92
+ after: replacement,
93
+ });
94
+ cursor = i + 1;
95
+ }
96
+ builder.copyVerbatim(text, cursor, text.length);
97
+ const { text: out, map } = builder.finish(text.length);
98
+ return { text: out, map, changes };
99
+ }
100
+ //# sourceMappingURL=whitespacePunct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitespacePunct.js","sourceRoot":"","sources":["../../../src/transforms/whitespacePunct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Shared types for the whole Discretion project.
3
+ *
4
+ * These are contracts that later milestones (detectors, fusion, vault,
5
+ * substitution, egress guard, extension, playground) depend on. This file
6
+ * defines TYPES ONLY — no logic, no constants with behavior.
7
+ *
8
+ * EntityType membership comes directly from SPEC.md: the Stage 1 "Validated
9
+ * identifier detection" detector list and the Stage 2 NER types. Names use
10
+ * the spec's own SCREAMING_SNAKE_CASE spelling so a detector's declared
11
+ * entity type reads identically in the spec and in the code.
12
+ */
13
+ /**
14
+ * Every entity type the pipeline can detect, grouped as SPEC.md groups them.
15
+ *
16
+ * Three deliberate design choices, each recorded in ARCHITECTURE.md:
17
+ *
18
+ * 1. National identifiers are FAMILIES, not one member per country. SPEC.md
19
+ * requires that "adding a new national identifier must require touching
20
+ * exactly one new file" — a per-country union member would force every
21
+ * new scheme to edit this file too, breaking that requirement. The
22
+ * concrete scheme (SSN, TCKN, PESEL, Aadhaar, …) and its country travel
23
+ * in Candidate.metadata. The substitution section's singular
24
+ * "NATIONAL_ID → a value passing that country's checksum" confirms the
25
+ * family reading.
26
+ * 2. Tax and VAT registrations are split out from NATIONAL_ID because their
27
+ * sensitivity genuinely differs — a company VAT number is often public
28
+ * registry data, a personal national ID never is — so the sensitivity
29
+ * profiles must be able to threshold them independently.
30
+ * 3. PEM private keys get their own member rather than sharing API_KEY.
31
+ * SPEC.md lists them in the same bullet, but a leaked private key and a
32
+ * leaked API key differ in blast radius and in how each is surrogated.
33
+ */
34
+ export type EntityType = 'EMAIL' | 'PHONE' | 'IP_ADDRESS' | 'MAC_ADDRESS' | 'URL_WITH_CREDENTIALS' | 'CREDIT_CARD' | 'IBAN' | 'SWIFT_BIC' | 'US_ROUTING_NUMBER' | 'UK_SORT_CODE' | 'CA_TRANSIT_NUMBER' | 'AU_BSB' | 'IN_IFSC' | 'BR_AGENCIA' | 'CRYPTO_WALLET' | 'NATIONAL_ID' | 'TAX_ID' | 'VAT_NUMBER' | 'PASSPORT_MRZ' | 'DRIVERS_LICENSE' | 'VIN' | 'US_NPI' | 'HEALTH_DATA' | 'API_KEY' | 'PRIVATE_KEY' | 'JWT' | 'GENERIC_SECRET' | 'CONNECTION_STRING' | 'POSTAL_CODE' | 'STREET_ADDRESS' | 'COORDINATES' | 'PERSON' | 'ORG' | 'LOCATION' | 'DATE_OF_BIRTH';
35
+ /**
36
+ * Which pipeline stage produced a candidate, or contributed to an entity.
37
+ * One member per stage of SPEC.md's core detection pipeline.
38
+ */
39
+ export type DetectionStage = 'stage0-normalization' | 'stage1-validated-identifier' | 'stage2-ner' | 'stage2b-gazetteer' | 'stage2c-verification' | 'stage3-context' | 'stage4-fusion';
40
+ /**
41
+ * A pre-fusion detection produced by a single detector.
42
+ * Offsets are indices into the NORMALIZED text (see NormalizationResult for
43
+ * how they map back to the original).
44
+ */
45
+ export interface Candidate {
46
+ /** The matched substring of the normalized text. */
47
+ text: string;
48
+ type: EntityType;
49
+ /** Start offset (inclusive), UTF-16 code units into the normalized text. */
50
+ start: number;
51
+ /** End offset (exclusive). */
52
+ end: number;
53
+ /** Detector-local confidence in [0, 1]; NOT calibrated across detectors. */
54
+ rawConfidence: number;
55
+ stage: DetectionStage;
56
+ /** Stable identifier of the detector that produced this, e.g. "email-rfc5322". */
57
+ detectorId: string;
58
+ /** Detector-specific extras (e.g. { scheme: 'ssn', country: 'US' } for national_id). */
59
+ metadata?: Readonly<Record<string, unknown>>;
60
+ }
61
+ /** Why an entity was reported — surfaced in the review UI and in eval output. */
62
+ export interface EntityExplanation {
63
+ /** Which stages fired for this entity. */
64
+ stages: readonly DetectionStage[];
65
+ /** Which triggers matched (detector ids, trigger names, context words). */
66
+ triggers: readonly string[];
67
+ /** Name of the validator that passed (checksum, format check), if any. */
68
+ validatorPassed?: string;
69
+ }
70
+ /** A post-fusion entity: what the pipeline actually reports. */
71
+ export interface DetectedEntity {
72
+ /** The matched substring of the normalized text. */
73
+ text: string;
74
+ type: EntityType;
75
+ /** Start offset (inclusive), UTF-16 code units into the normalized text. */
76
+ start: number;
77
+ /** End offset (exclusive). */
78
+ end: number;
79
+ /** Calibrated confidence in [0, 1], comparable across types and stages. */
80
+ calibratedConfidence: number;
81
+ explanation: EntityExplanation;
82
+ }
83
+ export type SubstitutionMode = 'surrogate' | 'token';
84
+ /** One masked value held locally so the original can be restored later. */
85
+ export interface VaultEntry {
86
+ /** Stable unique id of this entry. */
87
+ id: string;
88
+ type: EntityType;
89
+ /** The original text that was masked (first-seen writing). */
90
+ original: string;
91
+ /** What it was replaced with (a surrogate value or an opaque token). */
92
+ replacement: string;
93
+ /** Epoch milliseconds when the entry was created. */
94
+ createdAt: number;
95
+ /**
96
+ * Canonical form of the original (separators stripped, case-normalized by
97
+ * the detector) — the consistency key that makes "4111 1111…" and
98
+ * "4111-1111…" share one entry, and the egress guard's
99
+ * separator-insensitive search term. Added in M4; optional because token
100
+ * bracket entries for unknown shapes have no canonical beyond the text.
101
+ */
102
+ canonical?: string;
103
+ /**
104
+ * True when no sensible surrogate could be produced and a bracket token
105
+ * was used instead — SPEC.md requires the fallback be recorded in the
106
+ * session record. Added in M4.
107
+ */
108
+ fallback?: boolean;
109
+ }
110
+ /** Result of masking a piece of text. */
111
+ export interface MaskResult {
112
+ maskedText: string;
113
+ /** The entities that were substituted. */
114
+ entities: readonly DetectedEntity[];
115
+ /** Vault entries created for this mask operation. */
116
+ vaultEntries: readonly VaultEntry[];
117
+ }
118
+ /** Result of restoring masked values in a piece of text. */
119
+ export interface RestoreResult {
120
+ restoredText: string;
121
+ /** How many replacements were restored to their originals. */
122
+ restoredCount: number;
123
+ /** Replacements found in the text with no matching vault entry. */
124
+ unmatchedReplacements: readonly string[];
125
+ }
126
+ /** Writing systems the pipeline distinguishes. Everything else is 'other'. */
127
+ export type ScriptName = 'latin' | 'cyrillic' | 'arabic' | 'hebrew' | 'han' | 'kana' | 'hangul' | 'devanagari' | 'greek' | 'thai' | 'armenian' | 'georgian' | 'ethiopic' | 'other';
128
+ /** Per-script breakdown of a piece of text. */
129
+ export interface ScriptInfo {
130
+ /**
131
+ * Letter counts per script. Script-neutral characters — whitespace, digits,
132
+ * punctuation, symbols, combining marks — are not counted at all; letters of
133
+ * scripts outside the supported list are counted under 'other'.
134
+ */
135
+ counts: Readonly<Record<ScriptName, number>>;
136
+ /**
137
+ * The script with the strictly highest letter count among the supported
138
+ * (non-'other') scripts, or null when the text has no such letters or the
139
+ * top count is tied.
140
+ */
141
+ dominant: ScriptName | null;
142
+ /** True when letters of two or more supported scripts are present. */
143
+ mixed: boolean;
144
+ }
145
+ /** The individual transforms of the Stage 0 pipeline, in execution order. */
146
+ export type TransformKind = 'strip-invisibles' | 'nfkc' | 'homoglyph-fold' | 'whitespace-punct' | 'fold-digits';
147
+ /** One transform application, recorded for debugging and for the review UI. */
148
+ export interface TransformationRecord {
149
+ kind: TransformKind;
150
+ /** Start of the affected range in the ORIGINAL text (inclusive). */
151
+ originalStart: number;
152
+ /** End of the affected range in the ORIGINAL text (exclusive). */
153
+ originalEnd: number;
154
+ /** The affected slice of the ORIGINAL text. */
155
+ original: string;
156
+ /** What this transform emitted for that range ('' for deletions). */
157
+ replacement: string;
158
+ }
159
+ /** Every transform can be disabled individually; all default to enabled. */
160
+ export interface NormalizationOptions {
161
+ stripInvisibles?: boolean;
162
+ nfkc?: boolean;
163
+ homoglyphFold?: boolean;
164
+ whitespacePunct?: boolean;
165
+ /** Fold non-ASCII decimal digits (Arabic-Indic, Devanagari, Thai, …) to ASCII. */
166
+ foldDigits?: boolean;
167
+ }
168
+ /**
169
+ * The result of Stage 0 normalization.
170
+ *
171
+ * THE OFFSET MAP CONTRACT
172
+ * ───────────────────────
173
+ * Detection runs on `normalizedText`; substitution edits the ORIGINAL text.
174
+ * `offsetMap` connects the two:
175
+ *
176
+ * offsetMap[i] = index in the original string where the cluster that
177
+ * produced normalized index i begins.
178
+ * offsetMap[normalizedText.length] = originalText.length (sentinel)
179
+ *
180
+ * A normalized span [s, e) therefore maps to the original span
181
+ * [offsetMap[s], offsetMap[e]). Invariants (tested exhaustively):
182
+ * • offsetMap is monotonically non-decreasing
183
+ * • offsetMap[0] === 0 whenever normalizedText is non-empty
184
+ * • offsetMap[normalizedLength] === originalLength
185
+ * • every value is a valid index into the original string (0..length incl.)
186
+ * • identity inputs produce offsetMap[i] === i for every i
187
+ *
188
+ * Deleted characters (invisibles) do not appear in offsetMap; each deleted
189
+ * run is attributed to the cluster that FOLLOWS it (or to the sentinel when
190
+ * the run is at the very end), which is what makes offsetMap[0] === 0 hold.
191
+ *
192
+ * `reverseMap` goes the other way:
193
+ * reverseMap[j] = normalized index of the start of the cluster whose
194
+ * original extent contains original index j; for a deleted
195
+ * character this is the normalized position where it was
196
+ * removed.
197
+ * reverseMap[originalText.length] = normalizedText.length (sentinel)
198
+ */
199
+ export interface NormalizationResult {
200
+ normalizedText: string;
201
+ /** normalized index → original index; length is normalizedText.length + 1. */
202
+ offsetMap: Int32Array;
203
+ /** original index → normalized index; length is originalText.length + 1. */
204
+ reverseMap: Int32Array;
205
+ /** Script breakdown of the NORMALIZED text. */
206
+ scripts: ScriptInfo;
207
+ /** Every transform that fired, with ranges in original-text coordinates. */
208
+ transformations: readonly TransformationRecord[];
209
+ originalLength: number;
210
+ normalizedLength: number;
211
+ }
212
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared types for the whole Discretion project.
3
+ *
4
+ * These are contracts that later milestones (detectors, fusion, vault,
5
+ * substitution, egress guard, extension, playground) depend on. This file
6
+ * defines TYPES ONLY — no logic, no constants with behavior.
7
+ *
8
+ * EntityType membership comes directly from SPEC.md: the Stage 1 "Validated
9
+ * identifier detection" detector list and the Stage 2 NER types. Names use
10
+ * the spec's own SCREAMING_SNAKE_CASE spelling so a detector's declared
11
+ * entity type reads identically in the spec and in the code.
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@discretion/core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Local-first detection and masking of PII, credentials and secrets in text. No network access, no DOM, no Node built-ins.",
6
+ "keywords": [
7
+ "pii",
8
+ "redaction",
9
+ "masking",
10
+ "anonymization",
11
+ "gdpr",
12
+ "secret-detection",
13
+ "data-loss-prevention",
14
+ "privacy"
15
+ ],
16
+ "license": "MIT",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/horozbabasi/discretion.git",
20
+ "directory": "packages/core"
21
+ },
22
+ "homepage": "https://github.com/horozbabasi/discretion/tree/main/packages/core#readme",
23
+ "bugs": "https://github.com/horozbabasi/discretion/issues",
24
+ "engines": {
25
+ "node": ">=20"
26
+ },
27
+ "sideEffects": true,
28
+ "main": "./dist/src/index.js",
29
+ "types": "./dist/src/index.d.ts",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/src/index.d.ts",
33
+ "default": "./dist/src/index.js"
34
+ },
35
+ "./ner-transformers": {
36
+ "types": "./dist/src/ner/transformersClassifier.d.ts",
37
+ "default": "./dist/src/ner/transformersClassifier.js"
38
+ },
39
+ "./package.json": "./package.json"
40
+ },
41
+ "files": [
42
+ "dist/src",
43
+ "src",
44
+ "README.md",
45
+ "LICENSE",
46
+ "CHANGELOG.md"
47
+ ],
48
+ "publishConfig": {
49
+ "access": "public",
50
+ "provenance": true
51
+ },
52
+ "dependencies": {
53
+ "@discretion/data": "0.1.0",
54
+ "libphonenumber-js": "^1.13.11"
55
+ },
56
+ "peerDependencies": {
57
+ "@huggingface/transformers": "^4.2.0"
58
+ },
59
+ "peerDependenciesMeta": {
60
+ "@huggingface/transformers": {
61
+ "optional": true
62
+ }
63
+ },
64
+ "devDependencies": {
65
+ "@huggingface/transformers": "^4.2.0"
66
+ }
67
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The ABA routing transit number checksum (US_ROUTING_NUMBER).
3
+ *
4
+ * A nine-digit number whose positional weights cycle 3, 7, 1. The number is
5
+ * valid when the weighted sum is divisible by 10.
6
+ *
7
+ * Kept in its own module rather than inlined in the detector because the same
8
+ * 3-7-1 pattern appears in other North American banking identifiers, and
9
+ * because "which weight goes first" is exactly the kind of detail that is
10
+ * worth pinning with its own tests.
11
+ */
12
+
13
+ import { toDigits } from './digits.js';
14
+ import { cyclicWeightedMod } from './weighted.js';
15
+
16
+ /** ABA positional weights, cycling across the nine digits. */
17
+ const ABA_WEIGHTS: readonly number[] = [3, 7, 1];
18
+
19
+ /**
20
+ * Validate a nine-digit ABA routing number.
21
+ *
22
+ * Length is enforced here because the checksum alone is weak — a shorter or
23
+ * longer digit run can satisfy it by chance, and every real routing number is
24
+ * exactly nine digits.
25
+ */
26
+ export function abaValid(value: string): boolean {
27
+ if (value.length !== 9) return false;
28
+ const digits = toDigits(value);
29
+ if (digits === null) return false;
30
+ return cyclicWeightedMod(digits, ABA_WEIGHTS, 10) === 0;
31
+ }
32
+
33
+ /**
34
+ * The final ABA check digit for the first eight digits of a routing number.
35
+ * Returns `null` if the payload is not exactly eight digits.
36
+ */
37
+ export function abaCheckDigit(payload: string): number | null {
38
+ if (payload.length !== 8) return null;
39
+ const digits = toDigits(payload);
40
+ if (digits === null) return null;
41
+ const partial = cyclicWeightedMod(digits, ABA_WEIGHTS, 10);
42
+ if (partial === null) return null;
43
+ // The ninth position carries weight 1 (index 8 → 8 % 3 === 2 → weight 1).
44
+ return (10 - partial) % 10;
45
+ }