@prosopo/provider 3.15.0 → 4.7.2

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 (623) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +104 -57
  2. package/.turbo/turbo-build$colon$tsc.log +30 -24
  3. package/.turbo/turbo-build.log +104 -58
  4. package/CHANGELOG.md +1328 -0
  5. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -1
  6. package/dist/api/admin/apiAdminRoutesProvider.js +31 -1
  7. package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -1
  8. package/dist/api/admin/apiClearAllCountersEndpoint.d.ts +14 -0
  9. package/dist/api/admin/apiClearAllCountersEndpoint.d.ts.map +1 -0
  10. package/dist/api/admin/apiClearAllCountersEndpoint.js +59 -0
  11. package/dist/api/admin/apiClearAllCountersEndpoint.js.map +1 -0
  12. package/dist/api/admin/apiDnsEventEndpoint.d.ts +15 -0
  13. package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -0
  14. package/dist/api/admin/apiDnsEventEndpoint.js +64 -0
  15. package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -0
  16. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts +13 -0
  17. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts.map +1 -0
  18. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js +49 -0
  19. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js.map +1 -0
  20. package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts +14 -0
  21. package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts.map +1 -0
  22. package/dist/api/admin/apiGetDecisionMachineEndpoint.js +42 -0
  23. package/dist/api/admin/apiGetDecisionMachineEndpoint.js.map +1 -0
  24. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +1 -1
  25. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +1 -1
  26. package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts +14 -0
  27. package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts.map +1 -0
  28. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js +33 -0
  29. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js.map +1 -0
  30. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts +13 -0
  31. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts.map +1 -0
  32. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js +41 -0
  33. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js.map +1 -0
  34. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts +14 -0
  35. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts.map +1 -0
  36. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js +42 -0
  37. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js.map +1 -0
  38. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +2 -2
  39. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
  40. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +1 -1
  41. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +1 -1
  42. package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts +14 -0
  43. package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts.map +1 -0
  44. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js +32 -0
  45. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js.map +1 -0
  46. package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts +14 -0
  47. package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts.map +1 -0
  48. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js +34 -0
  49. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js.map +1 -0
  50. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +1 -1
  51. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +1 -1
  52. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts +14 -0
  53. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts.map +1 -0
  54. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js +60 -0
  55. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js.map +1 -0
  56. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +1 -1
  57. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +1 -1
  58. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +1 -1
  59. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +1 -1
  60. package/dist/api/blacklistRequestInspector.d.ts +4 -3
  61. package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
  62. package/dist/api/blacklistRequestInspector.js +18 -5
  63. package/dist/api/blacklistRequestInspector.js.map +1 -1
  64. package/dist/api/block.d.ts +2 -1
  65. package/dist/api/block.d.ts.map +1 -1
  66. package/dist/api/block.js +19 -8
  67. package/dist/api/block.js.map +1 -1
  68. package/dist/api/captcha/checkSpamEmail.d.ts +6 -0
  69. package/dist/api/captcha/checkSpamEmail.d.ts.map +1 -0
  70. package/dist/api/captcha/checkSpamEmail.js +80 -0
  71. package/dist/api/captcha/checkSpamEmail.js.map +1 -0
  72. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts +31 -0
  73. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts.map +1 -0
  74. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +123 -0
  75. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js.map +1 -0
  76. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +3 -0
  77. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -0
  78. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +13 -0
  79. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -0
  80. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts +36 -0
  81. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts.map +1 -0
  82. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +287 -0
  83. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js.map +1 -0
  84. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts +4 -0
  85. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts.map +1 -0
  86. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +14 -0
  87. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js.map +1 -0
  88. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts +7 -0
  89. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -0
  90. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +316 -0
  91. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -0
  92. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts +5 -0
  93. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts.map +1 -0
  94. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js +17 -0
  95. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js.map +1 -0
  96. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts +14 -0
  97. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts.map +1 -0
  98. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js +28 -0
  99. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js.map +1 -0
  100. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +23 -0
  101. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -0
  102. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +61 -0
  103. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -0
  104. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts +1 -7
  105. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts.map +1 -1
  106. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +2 -364
  107. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js.map +1 -1
  108. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  109. package/dist/api/captcha/getImageCaptchaChallenge.js +36 -9
  110. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  111. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  112. package/dist/api/captcha/getPoWCaptchaChallenge.js +49 -7
  113. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  114. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts +7 -0
  115. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -0
  116. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +201 -0
  117. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -0
  118. package/dist/api/captcha/maintenanceModeResponses.d.ts +5 -0
  119. package/dist/api/captcha/maintenanceModeResponses.d.ts.map +1 -0
  120. package/dist/api/captcha/maintenanceModeResponses.js +42 -0
  121. package/dist/api/captcha/maintenanceModeResponses.js.map +1 -0
  122. package/dist/api/captcha/submitImageCaptchaSolution.d.ts +1 -2
  123. package/dist/api/captcha/submitImageCaptchaSolution.d.ts.map +1 -1
  124. package/dist/api/captcha/submitImageCaptchaSolution.js +19 -2
  125. package/dist/api/captcha/submitImageCaptchaSolution.js.map +1 -1
  126. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  127. package/dist/api/captcha/submitPoWCaptchaSolution.js +84 -7
  128. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  129. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts +6 -0
  130. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -0
  131. package/dist/api/captcha/submitPuzzleCaptchaSolution.js +108 -0
  132. package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -0
  133. package/dist/api/captcha.d.ts.map +1 -1
  134. package/dist/api/captcha.js +28 -3
  135. package/dist/api/captcha.js.map +1 -1
  136. package/dist/api/dnsEventUrl.d.ts +3 -0
  137. package/dist/api/dnsEventUrl.d.ts.map +1 -0
  138. package/dist/api/dnsEventUrl.js +25 -0
  139. package/dist/api/dnsEventUrl.js.map +1 -0
  140. package/dist/api/domainMiddleware.d.ts.map +1 -1
  141. package/dist/api/domainMiddleware.js +36 -5
  142. package/dist/api/domainMiddleware.js.map +1 -1
  143. package/dist/api/ipInfoMiddleware.d.ts +4 -0
  144. package/dist/api/ipInfoMiddleware.d.ts.map +1 -0
  145. package/dist/api/ipInfoMiddleware.js +20 -0
  146. package/dist/api/ipInfoMiddleware.js.map +1 -0
  147. package/dist/api/ja4Middleware.d.ts +1 -1
  148. package/dist/api/ja4Middleware.d.ts.map +1 -1
  149. package/dist/api/ja4Middleware.js +1 -1
  150. package/dist/api/ja4Middleware.js.map +1 -1
  151. package/dist/api/startProviderApi.d.ts +9 -0
  152. package/dist/api/startProviderApi.d.ts.map +1 -0
  153. package/dist/api/startProviderApi.js +217 -0
  154. package/dist/api/startProviderApi.js.map +1 -0
  155. package/dist/api/testSiteKey.d.ts +4 -0
  156. package/dist/api/testSiteKey.d.ts.map +1 -0
  157. package/dist/api/testSiteKey.js +17 -0
  158. package/dist/api/testSiteKey.js.map +1 -0
  159. package/dist/api/validateAddress.d.ts +1 -1
  160. package/dist/api/validateAddress.d.ts.map +1 -1
  161. package/dist/api/validateAddress.js.map +1 -1
  162. package/dist/api/verify.d.ts.map +1 -1
  163. package/dist/api/verify.js +145 -10
  164. package/dist/api/verify.js.map +1 -1
  165. package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +31 -1
  166. package/dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs +59 -0
  167. package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +65 -0
  168. package/dist/cjs/api/admin/apiGetAllDecisionMachinesEndpoint.cjs +49 -0
  169. package/dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs +42 -0
  170. package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +5 -5
  171. package/dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs +34 -0
  172. package/dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs +41 -0
  173. package/dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs +42 -0
  174. package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +6 -6
  175. package/dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs +33 -0
  176. package/dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs +35 -0
  177. package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +5 -5
  178. package/dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs +60 -0
  179. package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +7 -7
  180. package/dist/cjs/api/blacklistRequestInspector.cjs +18 -5
  181. package/dist/cjs/api/block.cjs +19 -8
  182. package/dist/cjs/api/captcha/checkSpamEmail.cjs +79 -0
  183. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +123 -0
  184. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +13 -0
  185. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +287 -0
  186. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +14 -0
  187. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +315 -0
  188. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.cjs +17 -0
  189. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs +28 -0
  190. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +61 -0
  191. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +2 -364
  192. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +35 -8
  193. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +48 -6
  194. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +200 -0
  195. package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +42 -0
  196. package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +19 -2
  197. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +82 -5
  198. package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +107 -0
  199. package/dist/cjs/api/captcha.cjs +29 -4
  200. package/dist/cjs/api/dnsEventUrl.cjs +25 -0
  201. package/dist/cjs/api/domainMiddleware.cjs +36 -5
  202. package/dist/cjs/api/ipInfoMiddleware.cjs +20 -0
  203. package/dist/cjs/api/ja4Middleware.cjs +7 -7
  204. package/dist/cjs/api/startProviderApi.cjs +240 -0
  205. package/dist/cjs/api/testSiteKey.cjs +17 -0
  206. package/dist/cjs/api/verify.cjs +144 -9
  207. package/dist/cjs/compositeIpAddress.cjs +6 -6
  208. package/dist/cjs/index.cjs +15 -0
  209. package/dist/cjs/rules/lang.cjs +1 -1
  210. package/dist/cjs/schedulers/updateSpamEmailDomains.cjs +46 -0
  211. package/dist/cjs/services/ipComparison.cjs +9 -10
  212. package/dist/cjs/tasks/captchaManager.cjs +338 -66
  213. package/dist/cjs/tasks/client/clientTasks.cjs +115 -4
  214. package/dist/cjs/tasks/decisionMachine/decisionMachineRunner.cjs +285 -0
  215. package/dist/cjs/tasks/detection/decodeBehavior.cjs +225 -228
  216. package/dist/cjs/tasks/detection/decodeBehavior.js +1 -1
  217. package/dist/cjs/tasks/detection/decodePayload.cjs +707 -635
  218. package/dist/cjs/tasks/detection/decodePayload.js +1 -1
  219. package/dist/cjs/tasks/detection/decodeSimd.cjs +348 -0
  220. package/dist/cjs/tasks/detection/decodeSimd.js +15 -0
  221. package/dist/cjs/tasks/detection/getBotScore.cjs +6 -2
  222. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +149 -43
  223. package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +10 -7
  224. package/dist/cjs/tasks/frictionless/routingMachine.cjs +58 -0
  225. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +371 -57
  226. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +357 -167
  227. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +525 -0
  228. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasksUtils.cjs +7 -0
  229. package/dist/cjs/tasks/spam/checkSpamEmail.cjs +147 -0
  230. package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +41 -0
  231. package/dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs +92 -0
  232. package/dist/cjs/tasks/spam/updateSpamEmailDomains.cjs +58 -0
  233. package/dist/cjs/tasks/tasks.cjs +111 -13
  234. package/dist/cjs/util/usageCounters.cjs +201 -0
  235. package/dist/cjs/util.cjs +3 -4
  236. package/dist/cjs/utils/devicePlatform.cjs +10 -0
  237. package/dist/cjs/utils/dns.cjs +102 -0
  238. package/dist/cjs/utils/honeypot/encoders.cjs +86 -0
  239. package/dist/cjs/utils/honeypot/phraseBank.cjs +47 -0
  240. package/dist/cjs/utils/normalizeRequestIp.cjs +27 -0
  241. package/dist/compositeIpAddress.d.ts +1 -1
  242. package/dist/compositeIpAddress.d.ts.map +1 -1
  243. package/dist/compositeIpAddress.js +1 -1
  244. package/dist/compositeIpAddress.js.map +1 -1
  245. package/dist/index.d.ts +4 -0
  246. package/dist/index.d.ts.map +1 -1
  247. package/dist/index.js +12 -0
  248. package/dist/index.js.map +1 -1
  249. package/dist/rules/lang.js +1 -1
  250. package/dist/rules/lang.js.map +1 -1
  251. package/dist/schedulers/updateSpamEmailDomains.d.ts +4 -0
  252. package/dist/schedulers/updateSpamEmailDomains.d.ts.map +1 -0
  253. package/dist/schedulers/updateSpamEmailDomains.js +46 -0
  254. package/dist/schedulers/updateSpamEmailDomains.js.map +1 -0
  255. package/dist/services/ipComparison.d.ts +2 -1
  256. package/dist/services/ipComparison.d.ts.map +1 -1
  257. package/dist/services/ipComparison.js +3 -4
  258. package/dist/services/ipComparison.js.map +1 -1
  259. package/dist/tasks/captchaManager.d.ts +24 -6
  260. package/dist/tasks/captchaManager.d.ts.map +1 -1
  261. package/dist/tasks/captchaManager.js +336 -64
  262. package/dist/tasks/captchaManager.js.map +1 -1
  263. package/dist/tasks/client/clientTasks.d.ts +49 -2
  264. package/dist/tasks/client/clientTasks.d.ts.map +1 -1
  265. package/dist/tasks/client/clientTasks.js +116 -5
  266. package/dist/tasks/client/clientTasks.js.map +1 -1
  267. package/dist/tasks/dataset/datasetTasks.d.ts +1 -1
  268. package/dist/tasks/dataset/datasetTasks.d.ts.map +1 -1
  269. package/dist/tasks/dataset/datasetTasks.js.map +1 -1
  270. package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts +20 -0
  271. package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts.map +1 -0
  272. package/dist/tasks/decisionMachine/decisionMachineRunner.js +285 -0
  273. package/dist/tasks/decisionMachine/decisionMachineRunner.js.map +1 -0
  274. package/dist/tasks/detection/decodeBehavior.d.ts +2 -2
  275. package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -1
  276. package/dist/tasks/detection/decodeBehavior.js +1 -1
  277. package/dist/tasks/detection/decodeBehavior.js.map +1 -1
  278. package/dist/tasks/detection/decodePayload.d.ts +2 -2
  279. package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
  280. package/dist/tasks/detection/decodePayload.js +1 -1
  281. package/dist/tasks/detection/decodePayload.js.map +1 -1
  282. package/dist/tasks/detection/decodeSimd.d.ts +3 -0
  283. package/dist/tasks/detection/decodeSimd.d.ts.map +1 -0
  284. package/dist/tasks/detection/decodeSimd.js +15 -0
  285. package/dist/tasks/detection/decodeSimd.js.map +1 -0
  286. package/dist/tasks/detection/getBehavioralData.d.ts +1 -1
  287. package/dist/tasks/detection/getBotScore.d.ts +4 -0
  288. package/dist/tasks/detection/getBotScore.d.ts.map +1 -1
  289. package/dist/tasks/detection/getBotScore.js +8 -4
  290. package/dist/tasks/detection/getBotScore.js.map +1 -1
  291. package/dist/tasks/frictionless/frictionlessTasks.d.ts +20 -13
  292. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  293. package/dist/tasks/frictionless/frictionlessTasks.js +147 -43
  294. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  295. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +2 -2
  296. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +1 -1
  297. package/dist/tasks/frictionless/frictionlessTasksUtils.js +10 -7
  298. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +1 -1
  299. package/dist/tasks/frictionless/routingMachine.d.ts +15 -0
  300. package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -0
  301. package/dist/tasks/frictionless/routingMachine.js +58 -0
  302. package/dist/tasks/frictionless/routingMachine.js.map +1 -0
  303. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +14 -10
  304. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  305. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +371 -57
  306. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  307. package/dist/tasks/powCaptcha/powTasks.d.ts +24 -8
  308. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  309. package/dist/tasks/powCaptcha/powTasks.js +358 -168
  310. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  311. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts +32 -0
  312. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -0
  313. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +525 -0
  314. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -0
  315. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts +2 -0
  316. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts.map +1 -0
  317. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js +7 -0
  318. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js.map +1 -0
  319. package/dist/tasks/spam/checkSpamEmail.d.ts +5 -0
  320. package/dist/tasks/spam/checkSpamEmail.d.ts.map +1 -0
  321. package/dist/tasks/spam/checkSpamEmail.js +147 -0
  322. package/dist/tasks/spam/checkSpamEmail.js.map +1 -0
  323. package/dist/tasks/spam/checkTrafficFilter.d.ts +10 -0
  324. package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -0
  325. package/dist/tasks/spam/checkTrafficFilter.js +41 -0
  326. package/dist/tasks/spam/checkTrafficFilter.js.map +1 -0
  327. package/dist/tasks/spam/evaluateEmailSpamRules.d.ts +16 -0
  328. package/dist/tasks/spam/evaluateEmailSpamRules.d.ts.map +1 -0
  329. package/dist/tasks/spam/evaluateEmailSpamRules.js +92 -0
  330. package/dist/tasks/spam/evaluateEmailSpamRules.js.map +1 -0
  331. package/dist/tasks/spam/updateSpamEmailDomains.d.ts +4 -0
  332. package/dist/tasks/spam/updateSpamEmailDomains.d.ts.map +1 -0
  333. package/dist/tasks/spam/updateSpamEmailDomains.js +58 -0
  334. package/dist/tasks/spam/updateSpamEmailDomains.js.map +1 -0
  335. package/dist/tasks/tasks.d.ts +12 -1
  336. package/dist/tasks/tasks.d.ts.map +1 -1
  337. package/dist/tasks/tasks.js +102 -4
  338. package/dist/tasks/tasks.js.map +1 -1
  339. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +4 -0
  340. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -1
  341. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts +2 -0
  342. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts.map +1 -0
  343. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js +107 -0
  344. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js.map +1 -0
  345. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +45 -6
  346. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
  347. package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts +2 -0
  348. package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts.map +1 -0
  349. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +165 -0
  350. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -0
  351. package/dist/tests/integration/decisionMachines.integration.test.d.ts +2 -0
  352. package/dist/tests/integration/decisionMachines.integration.test.d.ts.map +1 -0
  353. package/dist/tests/integration/decisionMachines.integration.test.js +511 -0
  354. package/dist/tests/integration/decisionMachines.integration.test.js.map +1 -0
  355. package/dist/tests/integration/imgCaptcha.integration.test.js +418 -44
  356. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -1
  357. package/dist/tests/integration/ipValidation.integration.test.js +10 -4
  358. package/dist/tests/integration/ipValidation.integration.test.js.map +1 -1
  359. package/dist/tests/integration/mocks/solvedTestCaptchas.js +16 -16
  360. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +1 -1
  361. package/dist/tests/integration/powCaptcha.integration.test.js +218 -23
  362. package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -1
  363. package/dist/tests/integration/registerSitekey.d.ts.map +1 -1
  364. package/dist/tests/integration/registerSitekey.js +2 -0
  365. package/dist/tests/integration/registerSitekey.js.map +1 -1
  366. package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts +2 -0
  367. package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts.map +1 -0
  368. package/dist/tests/integration/routingDecisionMachines.integration.test.js +276 -0
  369. package/dist/tests/integration/routingDecisionMachines.integration.test.js.map +1 -0
  370. package/dist/tests/integration/testUtils.d.ts +4 -0
  371. package/dist/tests/integration/testUtils.d.ts.map +1 -0
  372. package/dist/tests/integration/testUtils.js +15 -0
  373. package/dist/tests/integration/testUtils.js.map +1 -0
  374. package/dist/tests/integration/usageCounters.integration.test.d.ts +2 -0
  375. package/dist/tests/integration/usageCounters.integration.test.d.ts.map +1 -0
  376. package/dist/tests/integration/usageCounters.integration.test.js +103 -0
  377. package/dist/tests/integration/usageCounters.integration.test.js.map +1 -0
  378. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts +2 -0
  379. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts.map +1 -0
  380. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js +63 -0
  381. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js.map +1 -0
  382. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts +2 -0
  383. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts.map +1 -0
  384. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +55 -0
  385. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -0
  386. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts +2 -0
  387. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts.map +1 -0
  388. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js +67 -0
  389. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js.map +1 -0
  390. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts +2 -0
  391. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
  392. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js +56 -0
  393. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js.map +1 -0
  394. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts +2 -0
  395. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts.map +1 -0
  396. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js +90 -0
  397. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js.map +1 -0
  398. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts +2 -0
  399. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
  400. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js +59 -0
  401. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js.map +1 -0
  402. package/dist/tests/unit/api/adminRoutes.unit.test.d.ts +2 -0
  403. package/dist/tests/unit/api/adminRoutes.unit.test.d.ts.map +1 -0
  404. package/dist/tests/unit/api/adminRoutes.unit.test.js +131 -0
  405. package/dist/tests/unit/api/adminRoutes.unit.test.js.map +1 -0
  406. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +79 -2
  407. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
  408. package/dist/tests/unit/api/block.unit.test.d.ts +2 -0
  409. package/dist/tests/unit/api/block.unit.test.d.ts.map +1 -0
  410. package/dist/tests/unit/api/block.unit.test.js +60 -0
  411. package/dist/tests/unit/api/block.unit.test.js.map +1 -0
  412. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts +2 -0
  413. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts.map +1 -0
  414. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js +118 -0
  415. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js.map +1 -0
  416. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts +2 -0
  417. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts.map +1 -0
  418. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js +37 -0
  419. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js.map +1 -0
  420. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts +2 -0
  421. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts.map +1 -0
  422. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js +154 -0
  423. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js.map +1 -0
  424. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts +2 -0
  425. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts.map +1 -0
  426. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js +46 -0
  427. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js.map +1 -0
  428. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts +2 -0
  429. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts.map +1 -0
  430. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js +69 -0
  431. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js.map +1 -0
  432. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts +2 -0
  433. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts.map +1 -0
  434. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js +98 -0
  435. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js.map +1 -0
  436. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts +2 -0
  437. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts.map +1 -0
  438. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js +60 -0
  439. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js.map +1 -0
  440. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts +2 -0
  441. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts.map +1 -0
  442. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +134 -0
  443. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -0
  444. package/dist/tests/unit/api/captcha.unit.test.d.ts +2 -0
  445. package/dist/tests/unit/api/captcha.unit.test.d.ts.map +1 -0
  446. package/dist/tests/unit/api/captcha.unit.test.js +39 -0
  447. package/dist/tests/unit/api/captcha.unit.test.js.map +1 -0
  448. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +195 -2
  449. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  450. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts +2 -0
  451. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts.map +1 -0
  452. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js +126 -0
  453. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js.map +1 -0
  454. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +103 -33
  455. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +1 -1
  456. package/dist/tests/unit/api/ja4Middleware.unit.test.js +130 -49
  457. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +1 -1
  458. package/dist/tests/unit/api/public.unit.test.d.ts +2 -0
  459. package/dist/tests/unit/api/public.unit.test.d.ts.map +1 -0
  460. package/dist/tests/unit/api/public.unit.test.js +198 -0
  461. package/dist/tests/unit/api/public.unit.test.js.map +1 -0
  462. package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts +2 -0
  463. package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts.map +1 -0
  464. package/dist/tests/unit/api/robotsMiddleware.unit.test.js +50 -0
  465. package/dist/tests/unit/api/robotsMiddleware.unit.test.js.map +1 -0
  466. package/dist/tests/unit/api/testSiteKey.unit.test.d.ts +2 -0
  467. package/dist/tests/unit/api/testSiteKey.unit.test.d.ts.map +1 -0
  468. package/dist/tests/unit/api/testSiteKey.unit.test.js +51 -0
  469. package/dist/tests/unit/api/testSiteKey.unit.test.js.map +1 -0
  470. package/dist/tests/unit/api/validateAddress.unit.test.d.ts +2 -0
  471. package/dist/tests/unit/api/validateAddress.unit.test.d.ts.map +1 -0
  472. package/dist/tests/unit/api/validateAddress.unit.test.js +141 -0
  473. package/dist/tests/unit/api/validateAddress.unit.test.js.map +1 -0
  474. package/dist/tests/unit/compositeIpAddress.unit.test.js +132 -60
  475. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -1
  476. package/dist/tests/unit/pairs.unit.test.js +174 -28
  477. package/dist/tests/unit/pairs.unit.test.js.map +1 -1
  478. package/dist/tests/unit/rules/lang.unit.test.d.ts +2 -0
  479. package/dist/tests/unit/rules/lang.unit.test.d.ts.map +1 -0
  480. package/dist/tests/unit/rules/lang.unit.test.js +207 -0
  481. package/dist/tests/unit/rules/lang.unit.test.js.map +1 -0
  482. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +2 -2
  483. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -1
  484. package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts +2 -0
  485. package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts.map +1 -0
  486. package/dist/tests/unit/schedulers/getClientList.unit.test.js +114 -0
  487. package/dist/tests/unit/schedulers/getClientList.unit.test.js.map +1 -0
  488. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts +2 -0
  489. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts.map +1 -0
  490. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js +114 -0
  491. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js.map +1 -0
  492. package/dist/tests/unit/services/ipComparison.unit.test.js +49 -35
  493. package/dist/tests/unit/services/ipComparison.unit.test.js.map +1 -1
  494. package/dist/tests/unit/tasks/captchaManager.unit.test.js +260 -5
  495. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  496. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +16 -5
  497. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
  498. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +1 -1
  499. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -1
  500. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts +2 -0
  501. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts.map +1 -0
  502. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js +213 -0
  503. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js.map +1 -0
  504. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts +2 -0
  505. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts.map +1 -0
  506. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js +304 -0
  507. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js.map +1 -0
  508. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts +2 -0
  509. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts.map +1 -0
  510. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +115 -0
  511. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -0
  512. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +207 -2
  513. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
  514. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +83 -48
  515. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +1 -1
  516. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts +2 -0
  517. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts.map +1 -0
  518. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js +169 -0
  519. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js.map +1 -0
  520. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +719 -9
  521. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
  522. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +9 -3
  523. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -1
  524. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +1284 -68
  525. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
  526. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +152 -52
  527. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
  528. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts +2 -0
  529. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts.map +1 -0
  530. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +313 -0
  531. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -0
  532. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts +2 -0
  533. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts.map +1 -0
  534. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js +29 -0
  535. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js.map +1 -0
  536. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts +2 -0
  537. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts.map +1 -0
  538. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js +434 -0
  539. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js.map +1 -0
  540. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts +2 -0
  541. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts.map +1 -0
  542. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +112 -0
  543. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -0
  544. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts +2 -0
  545. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts.map +1 -0
  546. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js +94 -0
  547. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js.map +1 -0
  548. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts +2 -0
  549. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts.map +1 -0
  550. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js +94 -0
  551. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js.map +1 -0
  552. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts +2 -0
  553. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts.map +1 -0
  554. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +208 -0
  555. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -0
  556. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +26 -0
  557. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -0
  558. package/dist/tests/unit/testUtils/mockProviderEnv.js +149 -0
  559. package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -0
  560. package/dist/tests/unit/util/redisCache.unit.test.d.ts +2 -0
  561. package/dist/tests/unit/util/redisCache.unit.test.d.ts.map +1 -0
  562. package/dist/tests/unit/util/redisCache.unit.test.js +257 -0
  563. package/dist/tests/unit/util/redisCache.unit.test.js.map +1 -0
  564. package/dist/tests/unit/util/usageCounters.unit.test.d.ts +2 -0
  565. package/dist/tests/unit/util/usageCounters.unit.test.d.ts.map +1 -0
  566. package/dist/tests/unit/util/usageCounters.unit.test.js +242 -0
  567. package/dist/tests/unit/util/usageCounters.unit.test.js.map +1 -0
  568. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +2 -0
  569. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +1 -1
  570. package/dist/tests/unit/util.ipDistance.unit.test.js +9 -3
  571. package/dist/tests/unit/util.ipDistance.unit.test.js.map +1 -1
  572. package/dist/tests/unit/util.unit.test.js +152 -155
  573. package/dist/tests/unit/util.unit.test.js.map +1 -1
  574. package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts +2 -0
  575. package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts.map +1 -0
  576. package/dist/tests/unit/utils/devicePlatform.unit.test.js +58 -0
  577. package/dist/tests/unit/utils/devicePlatform.unit.test.js.map +1 -0
  578. package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts +2 -0
  579. package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts.map +1 -0
  580. package/dist/tests/unit/utils/hashUserAgent.unit.test.js +52 -0
  581. package/dist/tests/unit/utils/hashUserAgent.unit.test.js.map +1 -0
  582. package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts +2 -0
  583. package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts.map +1 -0
  584. package/dist/tests/unit/utils/hashUserIp.unit.test.js +81 -0
  585. package/dist/tests/unit/utils/hashUserIp.unit.test.js.map +1 -0
  586. package/dist/util/usageCounters.d.ts +22 -0
  587. package/dist/util/usageCounters.d.ts.map +1 -0
  588. package/dist/util/usageCounters.js +201 -0
  589. package/dist/util/usageCounters.js.map +1 -0
  590. package/dist/util.d.ts +3 -2
  591. package/dist/util.d.ts.map +1 -1
  592. package/dist/util.js +3 -4
  593. package/dist/util.js.map +1 -1
  594. package/dist/utils/devicePlatform.d.ts +5 -0
  595. package/dist/utils/devicePlatform.d.ts.map +1 -0
  596. package/dist/utils/devicePlatform.js +10 -0
  597. package/dist/utils/devicePlatform.js.map +1 -0
  598. package/dist/utils/dns.d.ts +22 -0
  599. package/dist/utils/dns.d.ts.map +1 -0
  600. package/dist/utils/dns.js +84 -0
  601. package/dist/utils/dns.js.map +1 -0
  602. package/dist/utils/honeypot/encoders.d.ts +3 -0
  603. package/dist/utils/honeypot/encoders.d.ts.map +1 -0
  604. package/dist/utils/honeypot/encoders.js +86 -0
  605. package/dist/utils/honeypot/encoders.js.map +1 -0
  606. package/dist/utils/honeypot/phraseBank.d.ts +3 -0
  607. package/dist/utils/honeypot/phraseBank.d.ts.map +1 -0
  608. package/dist/utils/honeypot/phraseBank.js +47 -0
  609. package/dist/utils/honeypot/phraseBank.js.map +1 -0
  610. package/dist/utils/normalizeRequestIp.d.ts +3 -0
  611. package/dist/utils/normalizeRequestIp.d.ts.map +1 -0
  612. package/dist/utils/normalizeRequestIp.js +27 -0
  613. package/dist/utils/normalizeRequestIp.js.map +1 -0
  614. package/package.json +27 -19
  615. package/dist/cjs/services/ipInfo.cjs +0 -87
  616. package/dist/services/ipInfo.d.ts +0 -3
  617. package/dist/services/ipInfo.d.ts.map +0 -1
  618. package/dist/services/ipInfo.js +0 -87
  619. package/dist/services/ipInfo.js.map +0 -1
  620. package/dist/tests/unit/services/ipInfo.unit.test.d.ts +0 -2
  621. package/dist/tests/unit/services/ipInfo.unit.test.d.ts.map +0 -1
  622. package/dist/tests/unit/services/ipInfo.unit.test.js +0 -210
  623. package/dist/tests/unit/services/ipInfo.unit.test.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { CaptchaType, FrictionlessPenalties, } from "@prosopo/types";
1
+ import { CaptchaType, ClientSettingsSchema, FrictionlessPenalties, imageMaxRoundsDefault, } from "@prosopo/types";
2
2
  import { AccessPolicyType, } from "@prosopo/user-access-policy";
3
3
  import { beforeEach, describe, expect, it, vi } from "vitest";
4
4
  import { getCompositeIpAddress } from "../../../../compositeIpAddress.js";
@@ -78,16 +78,89 @@ describe("Frictionless Task Manager", () => {
78
78
  const mockScoreComponents = { baseScore: 0.5 };
79
79
  const mockEntropy = 12345;
80
80
  const mockIpAddress = getCompositeIpAddress("127.0.0.1");
81
+ const mockSiteKey = "mockSiteKey";
81
82
  db.storeSessionRecord.mockResolvedValue(undefined);
82
- const session = await frictionlessTaskManager.createSession(mockToken, mockScore, mockThreshold, mockScoreComponents, mockEntropy, mockIpAddress, CaptchaType.image);
83
+ const session = await frictionlessTaskManager.createSession(mockToken, mockScore, mockThreshold, mockScoreComponents, mockEntropy, mockIpAddress, CaptchaType.image, mockSiteKey);
83
84
  expect(session).toHaveProperty("sessionId");
84
85
  expect(session).toHaveProperty("token", mockToken);
85
86
  expect(session).toHaveProperty("score", mockScore);
86
87
  expect(session).toHaveProperty("threshold", mockThreshold);
87
88
  expect(session).toHaveProperty("captchaType", CaptchaType.image);
88
89
  expect(session).toHaveProperty("createdAt");
90
+ expect(session).toHaveProperty("ipAddress", mockIpAddress);
91
+ expect(session).toHaveProperty("siteKey", mockSiteKey);
89
92
  expect(db.storeSessionRecord).toHaveBeenCalledWith(session);
90
93
  });
94
+ it("threads ipInfo from setSessionParams through to the stored session record", async () => {
95
+ const mockIpAddress = getCompositeIpAddress("1.2.3.4");
96
+ const stubIpInfo = {
97
+ ip: "1.2.3.4",
98
+ isValid: true,
99
+ isVPN: true,
100
+ isTor: false,
101
+ isProxy: false,
102
+ isDatacenter: true,
103
+ isAbuser: false,
104
+ isMobile: false,
105
+ isSatellite: false,
106
+ isCrawler: false,
107
+ countryCode: "DE",
108
+ asnNumber: 12345,
109
+ };
110
+ db.storeSessionRecord.mockResolvedValue(undefined);
111
+ frictionlessTaskManager.setSessionParams({
112
+ token: "tok-ipinfo",
113
+ score: 0.5,
114
+ threshold: 0.7,
115
+ scoreComponents: { baseScore: 0.5 },
116
+ providerSelectEntropy: 99,
117
+ ipAddress: mockIpAddress,
118
+ webView: false,
119
+ iFrame: false,
120
+ decryptedHeadHash: "",
121
+ siteKey: "siteKey-ipinfo",
122
+ ipInfo: stubIpInfo,
123
+ });
124
+ await frictionlessTaskManager.sendImageCaptcha({
125
+ solvedImagesCount: 0,
126
+ });
127
+ expect(db.storeSessionRecord).toHaveBeenCalledWith(expect.objectContaining({ ipInfo: stubIpInfo }));
128
+ });
129
+ it("threads ipInfo through registerBlockedSession too", async () => {
130
+ const mockIpAddress = getCompositeIpAddress("1.2.3.4");
131
+ const stubIpInfo = {
132
+ ip: "1.2.3.4",
133
+ isValid: true,
134
+ isVPN: false,
135
+ isTor: true,
136
+ isProxy: false,
137
+ isDatacenter: false,
138
+ isAbuser: false,
139
+ isMobile: false,
140
+ isSatellite: false,
141
+ isCrawler: false,
142
+ countryCode: "GB",
143
+ };
144
+ db.storeSessionRecord.mockResolvedValue(undefined);
145
+ frictionlessTaskManager.setSessionParams({
146
+ token: "tok-blocked",
147
+ score: 0.9,
148
+ threshold: 0.5,
149
+ scoreComponents: { baseScore: 0.9 },
150
+ providerSelectEntropy: 1,
151
+ ipAddress: mockIpAddress,
152
+ webView: false,
153
+ iFrame: false,
154
+ decryptedHeadHash: "",
155
+ siteKey: "siteKey-blocked",
156
+ ipInfo: stubIpInfo,
157
+ });
158
+ await frictionlessTaskManager.registerBlockedSession({});
159
+ expect(db.storeSessionRecord).toHaveBeenCalledWith(expect.objectContaining({
160
+ ipInfo: stubIpInfo,
161
+ blocked: true,
162
+ }));
163
+ });
91
164
  it("should create image captcha session correctly", async () => {
92
165
  const mockToken = "mockToken123";
93
166
  const mockScore = 0.5;
@@ -95,6 +168,7 @@ describe("Frictionless Task Manager", () => {
95
168
  const mockScoreComponents = { baseScore: 0.5 };
96
169
  const mockEntropy = 12345;
97
170
  const mockIpAddress = getCompositeIpAddress("127.0.0.1");
171
+ const mockSiteKey = "mockSiteKey";
98
172
  db.storeSessionRecord.mockResolvedValue(undefined);
99
173
  frictionlessTaskManager.setSessionParams({
100
174
  token: mockToken,
@@ -106,6 +180,7 @@ describe("Frictionless Task Manager", () => {
106
180
  webView: false,
107
181
  iFrame: false,
108
182
  decryptedHeadHash: "",
183
+ siteKey: mockSiteKey,
109
184
  });
110
185
  const response = await frictionlessTaskManager.sendImageCaptcha({
111
186
  solvedImagesCount: 0,
@@ -121,6 +196,7 @@ describe("Frictionless Task Manager", () => {
121
196
  const mockScoreComponents = { baseScore: 0.5 };
122
197
  const mockEntropy = 12345;
123
198
  const mockIpAddress = getCompositeIpAddress("127.0.0.1");
199
+ const mockSiteKey = "mockSiteKey";
124
200
  db.storeSessionRecord.mockResolvedValue(undefined);
125
201
  frictionlessTaskManager.setSessionParams({
126
202
  token: mockToken,
@@ -132,6 +208,7 @@ describe("Frictionless Task Manager", () => {
132
208
  webView: false,
133
209
  iFrame: false,
134
210
  decryptedHeadHash: "",
211
+ siteKey: mockSiteKey,
135
212
  });
136
213
  const response = await frictionlessTaskManager.sendPowCaptcha({
137
214
  powDifficulty: undefined,
@@ -140,6 +217,134 @@ describe("Frictionless Task Manager", () => {
140
217
  expect(response).toHaveProperty("sessionId");
141
218
  expect(response).toHaveProperty("status", "ok");
142
219
  });
220
+ it("should create puzzle captcha session correctly", async () => {
221
+ const mockToken = "mockToken123";
222
+ const mockScore = 0.5;
223
+ const mockThreshold = 0.7;
224
+ const mockScoreComponents = { baseScore: 0.5 };
225
+ const mockEntropy = 12345;
226
+ const mockIpAddress = getCompositeIpAddress("127.0.0.1");
227
+ const mockSiteKey = "mockSiteKey";
228
+ db.storeSessionRecord.mockResolvedValue(undefined);
229
+ frictionlessTaskManager.setSessionParams({
230
+ token: mockToken,
231
+ score: mockScore,
232
+ threshold: mockThreshold,
233
+ scoreComponents: mockScoreComponents,
234
+ providerSelectEntropy: mockEntropy,
235
+ ipAddress: mockIpAddress,
236
+ webView: false,
237
+ iFrame: false,
238
+ decryptedHeadHash: "",
239
+ siteKey: mockSiteKey,
240
+ });
241
+ const response = await frictionlessTaskManager.sendPuzzleCaptcha();
242
+ expect(response).toHaveProperty("captchaType", CaptchaType.puzzle);
243
+ expect(response).toHaveProperty("sessionId");
244
+ expect(response).toHaveProperty("status", "ok");
245
+ });
246
+ it("should throw when sendPuzzleCaptcha is called without session params", async () => {
247
+ await expect(frictionlessTaskManager.sendPuzzleCaptcha()).rejects.toThrow(/Session parameters must be set/);
248
+ });
249
+ });
250
+ describe("ClientSettingsSchema defaults", () => {
251
+ it("defaults imageMaxRounds to 32", () => {
252
+ expect(imageMaxRoundsDefault).toBe(32);
253
+ const parsed = ClientSettingsSchema.parse({
254
+ captchaType: CaptchaType.image,
255
+ domains: ["localhost"],
256
+ });
257
+ expect(parsed.imageMaxRounds).toBe(32);
258
+ });
259
+ });
260
+ describe("Session caching with RedisWriteQueue", () => {
261
+ it("should cache session in Redis after creation when writeQueue is set", async () => {
262
+ const mockWriteQueue = {
263
+ cacheSession: vi.fn().mockResolvedValue(true),
264
+ cacheSessionByHash: vi.fn().mockResolvedValue(true),
265
+ getCachedSession: vi.fn().mockResolvedValue(null),
266
+ getCachedSessionByHash: vi.fn().mockResolvedValue(null),
267
+ invalidateCachedSession: vi.fn().mockResolvedValue(undefined),
268
+ queueSessionRecord: vi.fn().mockResolvedValue(true),
269
+ drainSessionRecords: vi.fn().mockResolvedValue([]),
270
+ startPeriodicFlush: vi.fn(),
271
+ stopPeriodicFlush: vi.fn(),
272
+ isReady: vi.fn().mockReturnValue(true),
273
+ };
274
+ frictionlessTaskManager.writeQueue =
275
+ mockWriteQueue;
276
+ frictionlessTaskManager.setSessionParams({
277
+ token: "test-token",
278
+ score: 0.5,
279
+ threshold: 0.5,
280
+ scoreComponents: { baseScore: 0.5 },
281
+ providerSelectEntropy: 13337,
282
+ ipAddress: getCompositeIpAddress("1.1.1.1"),
283
+ webView: false,
284
+ iFrame: false,
285
+ decryptedHeadHash: "abc",
286
+ siteKey: "test-dapp",
287
+ });
288
+ const response = await frictionlessTaskManager.sendPowCaptcha();
289
+ expect(response).toHaveProperty("captchaType", CaptchaType.pow);
290
+ expect(db.storeSessionRecord).toHaveBeenCalledOnce();
291
+ await new Promise((resolve) => setTimeout(resolve, 10));
292
+ expect(mockWriteQueue.cacheSession).toHaveBeenCalledOnce();
293
+ const cacheArgs = mockWriteQueue.cacheSession.mock.calls[0];
294
+ expect(cacheArgs[0]).toBe(response.sessionId);
295
+ });
296
+ it("should cache session by hash when userSitekeyIpHash is provided", async () => {
297
+ const mockWriteQueue = {
298
+ cacheSession: vi.fn().mockResolvedValue(true),
299
+ cacheSessionByHash: vi.fn().mockResolvedValue(true),
300
+ getCachedSession: vi.fn().mockResolvedValue(null),
301
+ getCachedSessionByHash: vi.fn().mockResolvedValue(null),
302
+ invalidateCachedSession: vi.fn().mockResolvedValue(undefined),
303
+ queueSessionRecord: vi.fn().mockResolvedValue(true),
304
+ drainSessionRecords: vi.fn().mockResolvedValue([]),
305
+ startPeriodicFlush: vi.fn(),
306
+ stopPeriodicFlush: vi.fn(),
307
+ isReady: vi.fn().mockReturnValue(true),
308
+ };
309
+ frictionlessTaskManager.writeQueue =
310
+ mockWriteQueue;
311
+ frictionlessTaskManager.setSessionParams({
312
+ token: "test-token",
313
+ score: 0.5,
314
+ threshold: 0.5,
315
+ scoreComponents: { baseScore: 0.5 },
316
+ providerSelectEntropy: 13337,
317
+ ipAddress: getCompositeIpAddress("1.1.1.1"),
318
+ webView: false,
319
+ iFrame: false,
320
+ decryptedHeadHash: "abc",
321
+ siteKey: "test-dapp",
322
+ });
323
+ const userSitekeyIpHash = "test-hash-123";
324
+ await frictionlessTaskManager.sendPowCaptcha({
325
+ userSitekeyIpHash,
326
+ });
327
+ await new Promise((resolve) => setTimeout(resolve, 10));
328
+ expect(mockWriteQueue.cacheSession).toHaveBeenCalledOnce();
329
+ expect(mockWriteQueue.cacheSessionByHash).toHaveBeenCalledWith(userSitekeyIpHash, expect.any(String));
330
+ });
331
+ it("should not cache when writeQueue is not set", async () => {
332
+ frictionlessTaskManager.setSessionParams({
333
+ token: "test-token",
334
+ score: 0.5,
335
+ threshold: 0.5,
336
+ scoreComponents: { baseScore: 0.5 },
337
+ providerSelectEntropy: 13337,
338
+ ipAddress: getCompositeIpAddress("1.1.1.1"),
339
+ webView: false,
340
+ iFrame: false,
341
+ decryptedHeadHash: "abc",
342
+ siteKey: "test-dapp",
343
+ });
344
+ const response = await frictionlessTaskManager.sendPowCaptcha();
345
+ expect(response).toHaveProperty("captchaType", CaptchaType.pow);
346
+ expect(db.storeSessionRecord).toHaveBeenCalledOnce();
347
+ });
143
348
  });
144
349
  });
145
350
  //# sourceMappingURL=frictionlessTasks.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frictionlessTasks.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frictionlessTasks.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,67 +1,102 @@
1
- import { describe, expect, it } from "vitest";
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
2
  import { computeFrictionlessScore, timestampDecayFunction, } from "../../../../tasks/frictionless/frictionlessTasksUtils.js";
3
- describe("Frictionless Task Utils", () => {
3
+ describe("frictionlessTasksUtils", () => {
4
4
  describe("computeFrictionlessScore", () => {
5
- it("should return the minimum of 1 and the sum of all score components", async () => {
6
- const scoreComponents = {
7
- a: 0.2,
8
- b: 0.3,
9
- c: 0.4,
10
- d: 0.1,
11
- };
12
- const result = computeFrictionlessScore(scoreComponents);
5
+ it("should return a score between 0 and 1 for valid components", () => {
6
+ const result = computeFrictionlessScore({
7
+ baseScore: 0.3,
8
+ penalty: 0.2,
9
+ });
10
+ expect(result).toBe(0.5);
11
+ });
12
+ it("should cap the score at 1", () => {
13
+ const result = computeFrictionlessScore({
14
+ baseScore: 0.8,
15
+ penalty: 0.5,
16
+ });
13
17
  expect(result).toBe(1);
14
18
  });
15
- it("should return the minimum of 1 and the sum of all score components", async () => {
16
- const scoreComponents = {
17
- a: 0.1,
18
- b: 0.1,
19
- c: 0.1,
20
- d: 0.1,
21
- };
22
- const result = computeFrictionlessScore(scoreComponents);
23
- expect(result).toBe(0.4);
24
- });
25
- it("should return 1 if the sum of all score components is greater than 1", async () => {
26
- const scoreComponents = {
27
- a: 1,
28
- b: 0.3,
29
- c: 0.4,
30
- d: 0.2,
19
+ it("should skip undefined components", () => {
20
+ const components = {
21
+ baseScore: 0.3,
31
22
  };
32
- const result = computeFrictionlessScore(scoreComponents);
33
- expect(result).toBe(1);
23
+ Object.defineProperty(components, "missing", {
24
+ value: undefined,
25
+ enumerable: true,
26
+ });
27
+ const result = computeFrictionlessScore(components);
28
+ expect(result).toBe(0.3);
29
+ });
30
+ it("should return NaN if a score component is NaN", () => {
31
+ const result = computeFrictionlessScore({
32
+ baseScore: Number.NaN,
33
+ penalty: 0.2,
34
+ });
35
+ expect(result).toBeNaN();
36
+ });
37
+ it("should return NaN if all score components are NaN", () => {
38
+ const result = computeFrictionlessScore({
39
+ baseScore: Number.NaN,
40
+ penalty: Number.NaN,
41
+ });
42
+ expect(result).toBeNaN();
43
+ });
44
+ it("should return 0 for empty components", () => {
45
+ const result = computeFrictionlessScore({});
46
+ expect(result).toBe(0);
34
47
  });
35
48
  });
36
49
  describe("timestampDecayFunction", () => {
37
- it("returns at least 2 for age 0", () => {
38
- expect(timestampDecayFunction(0, false)).toBeGreaterThanOrEqual(2);
50
+ let mockNow;
51
+ beforeEach(() => {
52
+ mockNow = Date.now();
53
+ vi.spyOn(Date, "now").mockReturnValue(mockNow);
39
54
  });
40
- it("returns a number for positive age", () => {
41
- const result = timestampDecayFunction(1000, false);
42
- expect(typeof result).toBe("number");
55
+ afterEach(() => {
56
+ vi.restoreAllMocks();
57
+ });
58
+ it("should return 6 when decryption failed", () => {
59
+ const result = timestampDecayFunction(mockNow - 1000, true, 6);
60
+ expect(result).toBe(6);
43
61
  });
44
- it("returns higher values for larger age", () => {
45
- const smallAge = timestampDecayFunction(1000, false);
46
- const largeAge = timestampDecayFunction(1000000, false);
47
- expect(largeAge).toBeGreaterThanOrEqual(smallAge);
62
+ it("should return 5 when decryption failed but max rounds is set to 5", () => {
63
+ const result = timestampDecayFunction(mockNow - 1000, true, 5);
64
+ expect(result).toBe(5);
48
65
  });
49
- it("handles very large age values", () => {
50
- const result = timestampDecayFunction(Number.MAX_SAFE_INTEGER, false);
66
+ it("should return 12 when timestamp is more than 1 hour old", () => {
67
+ const oldTimestamp = mockNow - 3600001;
68
+ const result = timestampDecayFunction(oldTimestamp, false, 12);
69
+ expect(result).toBe(12);
70
+ });
71
+ it("should return a number for recent timestamps", () => {
72
+ const recentTimestamp = mockNow - 1000;
73
+ const result = timestampDecayFunction(recentTimestamp, false, 12);
74
+ expect(typeof result).toBe("number");
51
75
  expect(result).toBeGreaterThanOrEqual(2);
76
+ expect(result).toBeLessThanOrEqual(12);
52
77
  });
53
- it("returns 12 for age of approximately 55 years", () => {
54
- const result = timestampDecayFunction(new Date("1970-01-01").getTime(), false);
78
+ it("should return a number for older timestamps within 1 hour", () => {
79
+ const thirtyMinOld = mockNow - 1800000;
80
+ const result = timestampDecayFunction(thirtyMinOld, false, 12);
81
+ expect(typeof result).toBe("number");
82
+ expect(result).toBeGreaterThanOrEqual(2);
83
+ expect(result).toBeLessThanOrEqual(12);
84
+ });
85
+ it("should handle very old timestamps", () => {
86
+ const veryOldTimestamp = mockNow - 24 * 60 * 60 * 1000;
87
+ const result = timestampDecayFunction(veryOldTimestamp, false, 12);
55
88
  expect(result).toBe(12);
56
89
  });
57
- it("should return 3 for a timestamp equal to current time", async () => {
58
- const now = Date.now();
59
- const result = timestampDecayFunction(now, false);
60
- expect(result).toBe(3);
90
+ it("should handle future timestamps", () => {
91
+ const futureTimestamp = mockNow + 10000;
92
+ const result = timestampDecayFunction(futureTimestamp, false, 12);
93
+ expect(typeof result).toBe("number");
94
+ expect(result).toBeGreaterThanOrEqual(2);
95
+ expect(result).toBeLessThanOrEqual(12);
61
96
  });
62
- it("returns 6 for decryption failure", () => {
63
- const result = timestampDecayFunction(0, true);
64
- expect(result).toBe(6);
97
+ it("should return NaN when timestamp is NaN", () => {
98
+ const result = timestampDecayFunction(Number.NaN, false, 12);
99
+ expect(result).toBeNaN();
65
100
  });
66
101
  });
67
102
  });
@@ -1 +1 @@
1
- {"version":3,"file":"frictionlessTasksUtils.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frictionlessTasksUtils.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=routingMachine.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routingMachine.unit.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/frictionless/routingMachine.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,169 @@
1
+ import { CaptchaType, } from "@prosopo/types";
2
+ import { beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { applyRouter, } from "../../../../tasks/frictionless/routingMachine.js";
4
+ const buildLogger = () => ({
5
+ debug: vi.fn(),
6
+ info: vi.fn(),
7
+ warn: vi.fn(),
8
+ error: vi.fn(),
9
+ });
10
+ const buildCtx = (overrides = {}) => ({
11
+ dappAccount: "5GCP...",
12
+ userAccount: "0xuser",
13
+ ip: "1.2.3.4",
14
+ countryCode: "GB",
15
+ score: 0.4,
16
+ platform: { isApple: false, isWebView: false, isMobile: false },
17
+ raw: { headers: {}, userAgent: "Mozilla/5.0" },
18
+ ...overrides,
19
+ });
20
+ const baseline = {
21
+ captchaType: CaptchaType.pow,
22
+ powDifficulty: 1000,
23
+ };
24
+ const buildRunner = () => ({
25
+ getRequiredCounters: vi.fn().mockResolvedValue([]),
26
+ route: vi.fn().mockResolvedValue(undefined),
27
+ });
28
+ const buildCounters = () => ({
29
+ batchGet: vi.fn().mockResolvedValue({}),
30
+ });
31
+ describe("applyRouter", () => {
32
+ let logger;
33
+ let runner;
34
+ let counters;
35
+ beforeEach(() => {
36
+ logger = buildLogger();
37
+ runner = buildRunner();
38
+ counters = buildCounters();
39
+ });
40
+ const run = (ctx = buildCtx(), base = baseline) => applyRouter(runner, counters, base, ctx, logger);
41
+ it("returns baseline when no machine is configured (route returns undefined)", async () => {
42
+ const result = await run();
43
+ expect(result).toEqual(baseline);
44
+ expect(runner.route).toHaveBeenCalled();
45
+ });
46
+ it("returns the machine's output when route succeeds", async () => {
47
+ runner.route.mockResolvedValueOnce({
48
+ captchaType: CaptchaType.image,
49
+ solvedImagesCount: 2,
50
+ });
51
+ const result = await run();
52
+ expect(result).toEqual({
53
+ captchaType: CaptchaType.image,
54
+ solvedImagesCount: 2,
55
+ });
56
+ });
57
+ it("fetches counters only when the machine declares them", async () => {
58
+ runner.getRequiredCounters.mockResolvedValueOnce([]);
59
+ await run();
60
+ expect(counters.batchGet).not.toHaveBeenCalled();
61
+ const specs = [
62
+ {
63
+ kind: "served",
64
+ captchaType: CaptchaType.pow,
65
+ dimension: "ip",
66
+ window: "10m",
67
+ },
68
+ ];
69
+ runner.getRequiredCounters.mockResolvedValueOnce(specs);
70
+ runner.route.mockResolvedValueOnce({ captchaType: CaptchaType.image });
71
+ const result = await run();
72
+ expect(counters.batchGet).toHaveBeenCalledTimes(1);
73
+ expect(result.captchaType).toBe(CaptchaType.image);
74
+ });
75
+ it("maps declared counter dimensions to ip / userAccount values", async () => {
76
+ const specs = [
77
+ {
78
+ kind: "served",
79
+ captchaType: CaptchaType.pow,
80
+ dimension: "ip",
81
+ window: "10m",
82
+ },
83
+ {
84
+ kind: "solved",
85
+ captchaType: CaptchaType.pow,
86
+ dimension: "userAccount",
87
+ window: "3h",
88
+ },
89
+ ];
90
+ runner.getRequiredCounters.mockResolvedValueOnce(specs);
91
+ await run(buildCtx({ ip: "9.9.9.9", userAccount: "0xabc" }));
92
+ const arg = counters.batchGet.mock.calls[0];
93
+ if (!arg)
94
+ throw new Error("expected batchGet to be called");
95
+ const reads = arg[1];
96
+ expect(reads).toHaveLength(2);
97
+ expect(reads[0]?.value).toBe("9.9.9.9");
98
+ expect(reads[1]?.value).toBe("0xabc");
99
+ });
100
+ it("falls back to baseline when batchGet returns null (Redis down)", async () => {
101
+ runner.getRequiredCounters.mockResolvedValueOnce([
102
+ {
103
+ kind: "served",
104
+ captchaType: CaptchaType.pow,
105
+ dimension: "ip",
106
+ window: "10m",
107
+ },
108
+ ]);
109
+ counters.batchGet.mockResolvedValueOnce(null);
110
+ const result = await run();
111
+ expect(result).toEqual(baseline);
112
+ expect(runner.route).not.toHaveBeenCalled();
113
+ expect(logger.warn).toHaveBeenCalled();
114
+ });
115
+ it("falls back to baseline when route output is invalid (route returns undefined)", async () => {
116
+ runner.route.mockResolvedValueOnce(undefined);
117
+ const result = await run();
118
+ expect(result).toEqual(baseline);
119
+ });
120
+ it("falls back to baseline when route rejects", async () => {
121
+ runner.route.mockRejectedValueOnce(new Error("boom"));
122
+ const result = await run();
123
+ expect(result).toEqual(baseline);
124
+ expect(logger.error).toHaveBeenCalled();
125
+ });
126
+ it("falls back to baseline when getRequiredCounters rejects", async () => {
127
+ runner.getRequiredCounters.mockRejectedValueOnce(new Error("nope"));
128
+ const result = await run();
129
+ expect(result).toEqual(baseline);
130
+ expect(logger.error).toHaveBeenCalled();
131
+ });
132
+ it("falls back to baseline when machine declares counters but UsageCounters is null", async () => {
133
+ const specs = [
134
+ {
135
+ kind: "served",
136
+ captchaType: CaptchaType.pow,
137
+ dimension: "ip",
138
+ window: "10m",
139
+ },
140
+ ];
141
+ runner.getRequiredCounters.mockResolvedValueOnce(specs);
142
+ const result = await applyRouter(runner, null, baseline, buildCtx(), logger);
143
+ expect(result).toEqual(baseline);
144
+ expect(runner.route).not.toHaveBeenCalled();
145
+ expect(logger.warn).toHaveBeenCalled();
146
+ });
147
+ it("passes the resolved counters into route() input", async () => {
148
+ const specs = [
149
+ {
150
+ kind: "served",
151
+ captchaType: CaptchaType.pow,
152
+ dimension: "ip",
153
+ window: "10m",
154
+ },
155
+ ];
156
+ runner.getRequiredCounters.mockResolvedValueOnce(specs);
157
+ counters.batchGet.mockResolvedValueOnce({
158
+ "cnt:5GCP...:served:pow:ip:1.2.3.4:10m": 4,
159
+ });
160
+ runner.route.mockImplementationOnce(async (input) => ({
161
+ captchaType: input.counters["cnt:5GCP...:served:pow:ip:1.2.3.4:10m"] >= 3
162
+ ? CaptchaType.image
163
+ : CaptchaType.pow,
164
+ }));
165
+ const result = await run();
166
+ expect(result.captchaType).toBe(CaptchaType.image);
167
+ });
168
+ });
169
+ //# sourceMappingURL=routingMachine.unit.test.js.map