@prosopo/provider 3.13.6 → 3.15.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 (324) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +107 -0
  2. package/.turbo/turbo-build$colon$tsc.log +65 -0
  3. package/.turbo/turbo-build.log +110 -0
  4. package/CHANGELOG.md +185 -0
  5. package/dist/api/admin/apiAdminRoutesProvider.d.ts +9 -0
  6. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -0
  7. package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -0
  8. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +14 -0
  9. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +1 -0
  10. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +1 -0
  11. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +23 -0
  12. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -0
  13. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +1 -0
  14. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +13 -0
  15. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts.map +1 -0
  16. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js.map +1 -0
  17. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +14 -0
  18. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +1 -0
  19. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +1 -0
  20. package/dist/api/admin/createApiAdminRoutesProvider.d.ts +4 -0
  21. package/dist/api/admin/createApiAdminRoutesProvider.d.ts.map +1 -0
  22. package/dist/api/admin/createApiAdminRoutesProvider.js.map +1 -0
  23. package/dist/api/blacklistRequestInspector.d.ts +19 -0
  24. package/dist/api/blacklistRequestInspector.d.ts.map +1 -0
  25. package/dist/api/blacklistRequestInspector.js +4 -3
  26. package/dist/api/blacklistRequestInspector.js.map +1 -0
  27. package/dist/api/block.d.ts +3 -0
  28. package/dist/api/block.d.ts.map +1 -0
  29. package/dist/api/block.js.map +1 -0
  30. package/dist/api/captcha/contextAwareValidation.d.ts +4 -0
  31. package/dist/api/captcha/contextAwareValidation.d.ts.map +1 -0
  32. package/dist/api/captcha/contextAwareValidation.js +20 -0
  33. package/dist/api/captcha/contextAwareValidation.js.map +1 -0
  34. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts +8 -0
  35. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts.map +1 -0
  36. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +51 -30
  37. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js.map +1 -0
  38. package/dist/api/captcha/getImageCaptchaChallenge.d.ts +7 -0
  39. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -0
  40. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -0
  41. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts +7 -0
  42. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -0
  43. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -0
  44. package/dist/api/captcha/submitImageCaptchaSolution.d.ts +7 -0
  45. package/dist/api/captcha/submitImageCaptchaSolution.d.ts.map +1 -0
  46. package/dist/api/captcha/submitImageCaptchaSolution.js.map +1 -0
  47. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts +6 -0
  48. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -0
  49. package/dist/api/captcha/submitPoWCaptchaSolution.js +13 -2
  50. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -0
  51. package/dist/api/captcha.d.ts +4 -0
  52. package/dist/api/captcha.d.ts.map +1 -0
  53. package/dist/api/captcha.js.map +1 -0
  54. package/dist/api/domainMiddleware.d.ts +4 -0
  55. package/dist/api/domainMiddleware.d.ts.map +1 -0
  56. package/dist/api/domainMiddleware.js.map +1 -0
  57. package/dist/api/headerCheckMiddleware.d.ts +4 -0
  58. package/dist/api/headerCheckMiddleware.d.ts.map +1 -0
  59. package/dist/api/headerCheckMiddleware.js.map +1 -0
  60. package/dist/api/ignoreMiddleware.d.ts +3 -0
  61. package/dist/api/ignoreMiddleware.d.ts.map +1 -0
  62. package/dist/api/ignoreMiddleware.js.map +1 -0
  63. package/dist/api/ja4Middleware.d.ts +10 -0
  64. package/dist/api/ja4Middleware.d.ts.map +1 -0
  65. package/dist/api/ja4Middleware.js.map +1 -0
  66. package/dist/api/public.d.ts +4 -0
  67. package/dist/api/public.d.ts.map +1 -0
  68. package/dist/api/public.js.map +1 -0
  69. package/dist/api/robotsMiddleware.d.ts +3 -0
  70. package/dist/api/robotsMiddleware.d.ts.map +1 -0
  71. package/dist/api/robotsMiddleware.js.map +1 -0
  72. package/dist/api/validateAddress.d.ts +5 -0
  73. package/dist/api/validateAddress.d.ts.map +1 -0
  74. package/dist/api/validateAddress.js.map +1 -0
  75. package/dist/api/verify.d.ts +4 -0
  76. package/dist/api/verify.d.ts.map +1 -0
  77. package/dist/api/verify.js +3 -1
  78. package/dist/api/verify.js.map +1 -0
  79. package/dist/cjs/api/blacklistRequestInspector.cjs +4 -3
  80. package/dist/cjs/api/captcha/contextAwareValidation.cjs +20 -0
  81. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +50 -29
  82. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +13 -2
  83. package/dist/cjs/api/verify.cjs +3 -1
  84. package/dist/cjs/index.cjs +4 -0
  85. package/dist/cjs/tasks/client/clientTasks.cjs +33 -7
  86. package/dist/cjs/tasks/detection/decodeBehavior.cjs +328 -0
  87. package/dist/cjs/tasks/detection/decodeBehavior.js +15 -0
  88. package/dist/cjs/tasks/detection/decodePayload.cjs +687 -382
  89. package/dist/cjs/tasks/detection/decodePayload.js +15 -0
  90. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +6 -3
  91. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +210 -5
  92. package/dist/compositeIpAddress.d.ts +5 -0
  93. package/dist/compositeIpAddress.d.ts.map +1 -0
  94. package/dist/compositeIpAddress.js.map +1 -0
  95. package/dist/index.d.ts +19 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +4 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/pairs.d.ts +3 -0
  100. package/dist/pairs.d.ts.map +1 -0
  101. package/dist/pairs.js.map +1 -0
  102. package/dist/rules/lang.d.ts +3 -0
  103. package/dist/rules/lang.d.ts.map +1 -0
  104. package/dist/rules/lang.js.map +1 -0
  105. package/dist/schedulers/captchaScheduler.d.ts +4 -0
  106. package/dist/schedulers/captchaScheduler.d.ts.map +1 -0
  107. package/dist/schedulers/captchaScheduler.js.map +1 -0
  108. package/dist/schedulers/getClientList.d.ts +4 -0
  109. package/dist/schedulers/getClientList.d.ts.map +1 -0
  110. package/dist/schedulers/getClientList.js.map +1 -0
  111. package/dist/schedulers/setClientEntropy.d.ts +4 -0
  112. package/dist/schedulers/setClientEntropy.d.ts.map +1 -0
  113. package/dist/schedulers/setClientEntropy.js.map +1 -0
  114. package/dist/services/ipComparison.d.ts +3 -0
  115. package/dist/services/ipComparison.d.ts.map +1 -0
  116. package/dist/services/ipComparison.js.map +1 -0
  117. package/dist/services/ipInfo.d.ts +3 -0
  118. package/dist/services/ipInfo.d.ts.map +1 -0
  119. package/dist/services/ipInfo.js.map +1 -0
  120. package/dist/tasks/captchaManager.d.ts +34 -0
  121. package/dist/tasks/captchaManager.d.ts.map +1 -0
  122. package/dist/tasks/captchaManager.js.map +1 -0
  123. package/dist/tasks/client/clientTasks.d.ts +22 -0
  124. package/dist/tasks/client/clientTasks.d.ts.map +1 -0
  125. package/dist/tasks/client/clientTasks.js +34 -8
  126. package/dist/tasks/client/clientTasks.js.map +1 -0
  127. package/dist/tasks/dataset/datasetTasks.d.ts +13 -0
  128. package/dist/tasks/dataset/datasetTasks.d.ts.map +1 -0
  129. package/dist/tasks/dataset/datasetTasks.js.map +1 -0
  130. package/dist/tasks/dataset/datasetTasksUtils.d.ts +3 -0
  131. package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +1 -0
  132. package/dist/tasks/dataset/datasetTasksUtils.js.map +1 -0
  133. package/dist/tasks/detection/decodeBehavior.d.ts +3 -0
  134. package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -0
  135. package/dist/tasks/detection/decodeBehavior.js +15 -0
  136. package/dist/tasks/detection/decodeBehavior.js.map +1 -0
  137. package/dist/tasks/detection/decodePayload.d.ts +5 -0
  138. package/dist/tasks/detection/decodePayload.d.ts.map +1 -0
  139. package/dist/tasks/detection/decodePayload.js +15 -503
  140. package/dist/tasks/detection/decodePayload.js.map +1 -0
  141. package/dist/tasks/detection/getBehavioralData.d.ts +4 -0
  142. package/dist/tasks/detection/getBehavioralData.d.ts.map +1 -0
  143. package/dist/tasks/detection/getBehavioralData.js +51 -0
  144. package/dist/tasks/detection/getBehavioralData.js.map +1 -0
  145. package/dist/tasks/detection/getBotScore.d.ts +20 -0
  146. package/dist/tasks/detection/getBotScore.d.ts.map +1 -0
  147. package/dist/tasks/detection/getBotScore.js +2 -2
  148. package/dist/tasks/detection/getBotScore.js.map +1 -0
  149. package/dist/tasks/frictionless/frictionlessTasks.d.ts +63 -0
  150. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -0
  151. package/dist/tasks/frictionless/frictionlessTasks.js +6 -3
  152. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -0
  153. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +6 -0
  154. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +1 -0
  155. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +1 -0
  156. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +29 -0
  157. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -0
  158. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -0
  159. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +7 -0
  160. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +1 -0
  161. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +1 -0
  162. package/dist/tasks/index.d.ts +2 -0
  163. package/dist/tasks/index.d.ts.map +1 -0
  164. package/dist/tasks/index.js.map +1 -0
  165. package/dist/tasks/powCaptcha/powTasks.d.ts +20 -0
  166. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -0
  167. package/dist/tasks/powCaptcha/powTasks.js +211 -6
  168. package/dist/tasks/powCaptcha/powTasks.js.map +1 -0
  169. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +3 -0
  170. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -0
  171. package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -0
  172. package/dist/tasks/tasks.d.ts +25 -0
  173. package/dist/tasks/tasks.d.ts.map +1 -0
  174. package/dist/tasks/tasks.js.map +1 -0
  175. package/dist/tests/index.d.ts +2 -0
  176. package/dist/tests/index.d.ts.map +1 -0
  177. package/dist/tests/index.js +2 -0
  178. package/dist/tests/index.js.map +1 -0
  179. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts +2 -0
  180. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts.map +1 -0
  181. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +78 -0
  182. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -0
  183. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts +2 -0
  184. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts.map +1 -0
  185. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +486 -0
  186. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -0
  187. package/dist/tests/integration/imgCaptcha.integration.test.d.ts +2 -0
  188. package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +1 -0
  189. package/dist/tests/integration/imgCaptcha.integration.test.js +272 -0
  190. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -0
  191. package/dist/tests/integration/ipValidation.integration.test.d.ts +2 -0
  192. package/dist/tests/integration/ipValidation.integration.test.d.ts.map +1 -0
  193. package/dist/tests/integration/ipValidation.integration.test.js +75 -0
  194. package/dist/tests/integration/ipValidation.integration.test.js.map +1 -0
  195. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +32 -0
  196. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +1 -0
  197. package/dist/tests/integration/mocks/solvedTestCaptchas.js +1046 -0
  198. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +1 -0
  199. package/dist/tests/integration/powCaptcha.integration.test.d.ts +2 -0
  200. package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +1 -0
  201. package/dist/tests/integration/powCaptcha.integration.test.js +307 -0
  202. package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -0
  203. package/dist/tests/integration/registerSitekey.d.ts +3 -0
  204. package/dist/tests/integration/registerSitekey.d.ts.map +1 -0
  205. package/dist/tests/integration/registerSitekey.js +21 -0
  206. package/dist/tests/integration/registerSitekey.js.map +1 -0
  207. package/dist/tests/integration/userAccessPolicy.d.ts +2 -0
  208. package/dist/tests/integration/userAccessPolicy.d.ts.map +1 -0
  209. package/dist/tests/integration/userAccessPolicy.js +2 -0
  210. package/dist/tests/integration/userAccessPolicy.js.map +1 -0
  211. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts +2 -0
  212. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts.map +1 -0
  213. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +60 -0
  214. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -0
  215. package/dist/tests/unit/api/contextAwareValidation.unit.test.d.ts +2 -0
  216. package/dist/tests/unit/api/contextAwareValidation.unit.test.d.ts.map +1 -0
  217. package/dist/tests/unit/api/contextAwareValidation.unit.test.js +84 -0
  218. package/dist/tests/unit/api/contextAwareValidation.unit.test.js.map +1 -0
  219. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.d.ts +2 -0
  220. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.d.ts.map +1 -0
  221. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +242 -0
  222. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -0
  223. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts +2 -0
  224. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts.map +1 -0
  225. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +43 -0
  226. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +1 -0
  227. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts +2 -0
  228. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts.map +1 -0
  229. package/dist/tests/unit/api/ja4Middleware.unit.test.js +57 -0
  230. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +1 -0
  231. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts +2 -0
  232. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts.map +1 -0
  233. package/dist/tests/unit/compositeIpAddress.unit.test.js +86 -0
  234. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -0
  235. package/dist/tests/unit/pairs.unit.test.d.ts +2 -0
  236. package/dist/tests/unit/pairs.unit.test.d.ts.map +1 -0
  237. package/dist/tests/unit/pairs.unit.test.js +83 -0
  238. package/dist/tests/unit/pairs.unit.test.js.map +1 -0
  239. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +2 -0
  240. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +1 -0
  241. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +75 -0
  242. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -0
  243. package/dist/tests/unit/services/ipComparison.unit.test.d.ts +2 -0
  244. package/dist/tests/unit/services/ipComparison.unit.test.d.ts.map +1 -0
  245. package/dist/tests/unit/services/ipComparison.unit.test.js +258 -0
  246. package/dist/tests/unit/services/ipComparison.unit.test.js.map +1 -0
  247. package/dist/tests/unit/services/ipInfo.unit.test.d.ts +2 -0
  248. package/dist/tests/unit/services/ipInfo.unit.test.d.ts.map +1 -0
  249. package/dist/tests/unit/services/ipInfo.unit.test.js +210 -0
  250. package/dist/tests/unit/services/ipInfo.unit.test.js.map +1 -0
  251. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts +2 -0
  252. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts.map +1 -0
  253. package/dist/tests/unit/tasks/captchaManager.unit.test.js +321 -0
  254. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -0
  255. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +2 -0
  256. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +1 -0
  257. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +332 -0
  258. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -0
  259. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +2 -0
  260. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +1 -0
  261. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +92 -0
  262. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -0
  263. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +2 -0
  264. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +1 -0
  265. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +75 -0
  266. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +1 -0
  267. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts +2 -0
  268. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts.map +1 -0
  269. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js +109 -0
  270. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js.map +1 -0
  271. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts +2 -0
  272. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts.map +1 -0
  273. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +142 -0
  274. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +1 -0
  275. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts +2 -0
  276. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts.map +1 -0
  277. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +145 -0
  278. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -0
  279. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts +2 -0
  280. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts.map +1 -0
  281. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +68 -0
  282. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +1 -0
  283. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +2 -0
  284. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +1 -0
  285. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +388 -0
  286. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -0
  287. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +2 -0
  288. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +1 -0
  289. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +50 -0
  290. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -0
  291. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +2 -0
  292. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +1 -0
  293. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +498 -0
  294. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -0
  295. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +2 -0
  296. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +1 -0
  297. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +69 -0
  298. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -0
  299. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts +2 -0
  300. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts.map +1 -0
  301. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +505 -0
  302. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +1 -0
  303. package/dist/tests/unit/util.ipDistance.unit.test.d.ts +2 -0
  304. package/dist/tests/unit/util.ipDistance.unit.test.d.ts.map +1 -0
  305. package/dist/tests/unit/util.ipDistance.unit.test.js +93 -0
  306. package/dist/tests/unit/util.ipDistance.unit.test.js.map +1 -0
  307. package/dist/tests/unit/util.unit.test.d.ts +2 -0
  308. package/dist/tests/unit/util.unit.test.d.ts.map +1 -0
  309. package/dist/tests/unit/util.unit.test.js +170 -0
  310. package/dist/tests/unit/util.unit.test.js.map +1 -0
  311. package/dist/util.d.ts +24 -0
  312. package/dist/util.d.ts.map +1 -0
  313. package/dist/util.js.map +1 -0
  314. package/dist/utils/hashUserAgent.d.ts +2 -0
  315. package/dist/utils/hashUserAgent.d.ts.map +1 -0
  316. package/dist/utils/hashUserAgent.js.map +1 -0
  317. package/dist/utils/hashUserIp.d.ts +2 -0
  318. package/dist/utils/hashUserIp.d.ts.map +1 -0
  319. package/dist/utils/hashUserIp.js.map +1 -0
  320. package/package.json +20 -19
  321. package/vite.cjs.config.ts +17 -5
  322. package/vite.esm.config.ts +18 -4
  323. package/vite.test.config.ts +1 -1
  324. package/vite.threads.test.config.ts +1 -1
@@ -0,0 +1,498 @@
1
+ import { stringToHex, u8aToHex } from "@polkadot/util";
2
+ import { ApiParams, CaptchaStatus, CaptchaType, POW_SEPARATOR, } from "@prosopo/types";
3
+ import { AccessPolicyType, } from "@prosopo/user-access-policy";
4
+ import { getIPAddress, verifyRecency } from "@prosopo/util";
5
+ import { beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { getCompositeIpAddress } from "../../../../compositeIpAddress.js";
7
+ import { PowCaptchaManager } from "../../../../tasks/powCaptcha/powTasks.js";
8
+ import { checkPowSignature, validateSolution, } from "../../../../tasks/powCaptcha/powTasksUtils.js";
9
+ vi.mock("@prosopo/util-crypto", () => ({
10
+ signatureVerify: vi.fn(),
11
+ }));
12
+ vi.mock("@polkadot/util", () => ({
13
+ u8aToHex: vi.fn(),
14
+ stringToHex: vi.fn(),
15
+ }));
16
+ vi.mock("@prosopo/util", async (importOriginal) => {
17
+ const actual = (await importOriginal());
18
+ return {
19
+ ...actual,
20
+ verifyRecency: vi.fn(),
21
+ };
22
+ });
23
+ vi.mock("../../../../tasks/powCaptcha/powTasksUtils.js", () => ({
24
+ checkPowSignature: vi.fn(),
25
+ validateSolution: vi.fn(),
26
+ }));
27
+ describe("PowCaptchaManager", () => {
28
+ let db;
29
+ let pair;
30
+ let powCaptchaManager;
31
+ let mockEnv;
32
+ beforeEach(() => {
33
+ db = {
34
+ storePowCaptchaRecord: vi.fn(),
35
+ getPowCaptchaRecordByChallenge: vi.fn(),
36
+ updatePowCaptchaRecordResult: vi.fn(),
37
+ updatePowCaptchaRecord: vi.fn(),
38
+ markDappUserPoWCommitmentsChecked: vi.fn(),
39
+ };
40
+ pair = {
41
+ sign: vi.fn(),
42
+ address: "testAddress",
43
+ };
44
+ mockEnv = {
45
+ config: {
46
+ ipApi: {
47
+ apiKey: "testKey",
48
+ baseUrl: "https://api.ipapi.is",
49
+ },
50
+ },
51
+ };
52
+ powCaptchaManager = new PowCaptchaManager(db, pair, mockEnv.config);
53
+ vi.clearAllMocks();
54
+ });
55
+ describe("getPowCaptchaChallenge", () => {
56
+ it("should generate a PoW captcha challenge", async () => {
57
+ const userAccount = "userAccount";
58
+ const dappAccount = "dappAccount";
59
+ const origin = "origin";
60
+ const challengeRegExp = new RegExp(`[0-9]+___${userAccount}___${dappAccount}`);
61
+ pair.sign.mockReturnValueOnce("signedChallenge");
62
+ u8aToHex.mockReturnValueOnce("hexSignedChallenge");
63
+ const result = await powCaptchaManager.getPowCaptchaChallenge(userAccount, dappAccount, origin);
64
+ expect(result.challenge.match(challengeRegExp)).toBeTruthy();
65
+ expect(result.difficulty).toEqual(4);
66
+ expect(result.providerSignature).toEqual("hexSignedChallenge");
67
+ expect(pair.sign).toHaveBeenCalledWith(stringToHex(result.challenge));
68
+ });
69
+ });
70
+ describe("verifyPowCaptchaSolution", () => {
71
+ it("should verify a valid PoW captcha solution", async () => {
72
+ const requestedAtTimestamp = 123456789;
73
+ const userAccount = "testUserAccount";
74
+ const challenge = `${requestedAtTimestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${pair.address}`;
75
+ const difficulty = 4;
76
+ const providerSignature = "testSignature";
77
+ const userSignature = "testTimestampSignature";
78
+ const nonce = 12345;
79
+ const timeout = 1000;
80
+ const ipAddress = getIPAddress("1.1.1.1");
81
+ const headers = { a: "1", b: "2", c: "3" };
82
+ const challengeRecord = {
83
+ challenge,
84
+ difficulty,
85
+ dappAccount: pair.address,
86
+ userAccount,
87
+ requestedAtTimestamp: new Date(requestedAtTimestamp),
88
+ result: { status: CaptchaStatus.pending },
89
+ userSubmitted: false,
90
+ serverChecked: false,
91
+ ipAddress: getCompositeIpAddress(ipAddress),
92
+ headers,
93
+ ja4: "ja4",
94
+ providerSignature,
95
+ lastUpdatedTimestamp: new Date(),
96
+ };
97
+ verifyRecency.mockImplementation(() => true);
98
+ checkPowSignature.mockImplementation(() => true);
99
+ validateSolution.mockImplementation(() => true);
100
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
101
+ db.updatePowCaptchaRecordResult.mockResolvedValue(true);
102
+ db.markDappUserPoWCommitmentsChecked.mockResolvedValue(true);
103
+ const verifyPowCaptchaSolutionArgs = [
104
+ challenge,
105
+ providerSignature,
106
+ nonce,
107
+ timeout,
108
+ userSignature,
109
+ ipAddress,
110
+ headers,
111
+ undefined,
112
+ ];
113
+ const result = await powCaptchaManager.verifyPowCaptchaSolution(...verifyPowCaptchaSolutionArgs);
114
+ expect(result).toBe(true);
115
+ const verifyRecencyArgs = [
116
+ challenge,
117
+ timeout,
118
+ ];
119
+ expect(verifyRecency).toHaveBeenCalledWith(...verifyRecencyArgs);
120
+ const checKPowSignatureArgs1 = [
121
+ requestedAtTimestamp.toString(),
122
+ userSignature,
123
+ userAccount,
124
+ ApiParams.timestamp,
125
+ ];
126
+ expect(checkPowSignature).toHaveBeenCalledWith(...checKPowSignatureArgs1);
127
+ const checKPowSignatureArgs2 = [
128
+ challenge,
129
+ providerSignature,
130
+ pair.address,
131
+ ApiParams.challenge,
132
+ ];
133
+ expect(checkPowSignature).toHaveBeenCalledWith(...checKPowSignatureArgs2);
134
+ const validateSolutionArgs = [
135
+ nonce,
136
+ challenge,
137
+ difficulty,
138
+ ];
139
+ expect(validateSolution).toHaveBeenCalledWith(...validateSolutionArgs);
140
+ const updatePowCaptchaRecordArgs = [
141
+ challenge,
142
+ { status: CaptchaStatus.approved },
143
+ false,
144
+ true,
145
+ userSignature,
146
+ undefined,
147
+ ];
148
+ expect(db.updatePowCaptchaRecordResult).toHaveBeenCalledWith(...updatePowCaptchaRecordArgs);
149
+ });
150
+ it("should throw an error if PoW captcha solution is invalid", async () => {
151
+ const challenge = `${12345}${POW_SEPARATOR}userAccount${POW_SEPARATOR}dappAccount`;
152
+ const difficulty = 4;
153
+ const signature = "testSignature";
154
+ const nonce = 12345;
155
+ const timeout = 1000;
156
+ const timestampSignature = "testTimestampSignature";
157
+ const ipAddress = getIPAddress("1.1.1.1");
158
+ const headers = { a: "1", b: "2", c: "3" };
159
+ const challengeRecord = {
160
+ challenge,
161
+ dappAccount: pair.address,
162
+ userAccount: "testUserAccount",
163
+ requestedAtTimestamp: new Date(12345),
164
+ result: { status: CaptchaStatus.pending },
165
+ userSubmitted: false,
166
+ serverChecked: false,
167
+ ipAddress: getCompositeIpAddress(ipAddress),
168
+ headers,
169
+ ja4: "ja4",
170
+ providerSignature: "testSignature",
171
+ difficulty,
172
+ lastUpdatedTimestamp: new Date(0),
173
+ };
174
+ verifyRecency.mockImplementation(() => {
175
+ return true;
176
+ });
177
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
178
+ validateSolution.mockImplementation(() => false);
179
+ expect(await powCaptchaManager.verifyPowCaptchaSolution(challenge, signature, nonce, timeout, timestampSignature, ipAddress, headers, undefined)).toBe(false);
180
+ expect(verifyRecency).toHaveBeenCalledWith(challenge, timeout);
181
+ });
182
+ });
183
+ describe("serverVerifyPowCaptchaSolution", () => {
184
+ it("should verify a valid PoW captcha solution on the server", async () => {
185
+ const dappAccount = "dappAccount";
186
+ const timestamp = 123456789;
187
+ const userAccount = "testUserAccount";
188
+ const challenge = `${timestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${dappAccount}`;
189
+ const timeout = 1000;
190
+ const challengeRecord = {
191
+ challenge,
192
+ dappAccount,
193
+ userAccount,
194
+ requestedAtTimestamp: new Date(timestamp),
195
+ serverChecked: false,
196
+ result: { status: CaptchaStatus.approved },
197
+ };
198
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
199
+ verifyRecency.mockImplementation(() => true);
200
+ const result = await powCaptchaManager.serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout, mockEnv);
201
+ expect(result.verified).toBe(true);
202
+ expect(db.getPowCaptchaRecordByChallenge).toHaveBeenCalledWith(challenge);
203
+ expect(verifyRecency).toHaveBeenCalledWith(challenge, timeout);
204
+ const markDappUserPoWCommitmentsCheckedArgs = [[challenge]];
205
+ expect(db.markDappUserPoWCommitmentsChecked).toHaveBeenCalledWith(...markDappUserPoWCommitmentsCheckedArgs);
206
+ });
207
+ it("should return verified:false if a challenge cannot be found", async () => {
208
+ const dappAccount = "dappAccount";
209
+ const timestamp = 123456678;
210
+ const userAccount = "testUserAccount";
211
+ const challenge = `${timestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${dappAccount}`;
212
+ const timeout = 1000;
213
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(null);
214
+ const result = await powCaptchaManager.serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout, mockEnv);
215
+ expect(result.verified).toBe(false);
216
+ expect(db.getPowCaptchaRecordByChallenge).toHaveBeenCalledWith(challenge);
217
+ });
218
+ it("should return verified:false when user is blocked by access policy", async () => {
219
+ const dappAccount = "dappAccount";
220
+ const timestamp = 123456789;
221
+ const userAccount = "testUserAccount";
222
+ const challenge = `${timestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${dappAccount}`;
223
+ const timeout = 1000;
224
+ const ipAddress = getIPAddress("1.1.1.1");
225
+ const headers = { a: "1", b: "2", c: "3" };
226
+ const sessionId = "test-session-id";
227
+ const decryptedHeadHash = "abc123def456";
228
+ const challengeRecord = {
229
+ challenge,
230
+ difficulty: 4,
231
+ dappAccount,
232
+ userAccount,
233
+ requestedAtTimestamp: new Date(timestamp),
234
+ result: { status: CaptchaStatus.approved },
235
+ userSubmitted: true,
236
+ serverChecked: false,
237
+ ipAddress: getCompositeIpAddress(ipAddress),
238
+ headers,
239
+ ja4: "ja4",
240
+ providerSignature: "testSignature",
241
+ lastUpdatedTimestamp: new Date(),
242
+ sessionId,
243
+ };
244
+ const sessionRecord = {
245
+ sessionId,
246
+ createdAt: new Date(),
247
+ token: "test-token",
248
+ score: 0.5,
249
+ threshold: 0.5,
250
+ scoreComponents: { baseScore: 0.5 },
251
+ providerSelectEntropy: 13337,
252
+ ipAddress: getCompositeIpAddress(ipAddress),
253
+ captchaType: CaptchaType.pow,
254
+ webView: false,
255
+ iFrame: false,
256
+ decryptedHeadHash,
257
+ };
258
+ const mockAccessRulesStorage = {
259
+ findRules: vi.fn().mockResolvedValue([
260
+ {
261
+ type: AccessPolicyType.Block,
262
+ headHash: decryptedHeadHash,
263
+ },
264
+ ]),
265
+ insertRules: vi.fn(),
266
+ deleteRules: vi.fn(),
267
+ deleteAllRules: vi.fn(),
268
+ fetchRules: vi.fn(),
269
+ getMissingRuleIds: vi.fn(),
270
+ findRuleIds: vi.fn(),
271
+ fetchAllRuleIds: vi.fn(),
272
+ };
273
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
274
+ db.getSessionRecordBySessionId = vi
275
+ .fn()
276
+ .mockResolvedValue(sessionRecord);
277
+ verifyRecency.mockImplementation(() => true);
278
+ const result = await powCaptchaManager.serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout, mockEnv, undefined, mockAccessRulesStorage);
279
+ expect(result.verified).toBe(false);
280
+ });
281
+ it("should not block when access policy has captchaType (not a hard block)", async () => {
282
+ const dappAccount = "dappAccount";
283
+ const timestamp = 123456789;
284
+ const userAccount = "testUserAccount";
285
+ const challenge = `${timestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${dappAccount}`;
286
+ const timeout = 1000;
287
+ const ipAddress = getIPAddress("1.1.1.1");
288
+ const headers = { a: "1", b: "2", c: "3" };
289
+ const sessionId = "test-session-id";
290
+ const decryptedHeadHash = "abc123def456";
291
+ const challengeRecord = {
292
+ challenge,
293
+ difficulty: 4,
294
+ dappAccount,
295
+ userAccount,
296
+ requestedAtTimestamp: new Date(timestamp),
297
+ result: { status: CaptchaStatus.approved },
298
+ userSubmitted: true,
299
+ serverChecked: false,
300
+ ipAddress: getCompositeIpAddress(ipAddress),
301
+ headers,
302
+ ja4: "ja4",
303
+ providerSignature: "testSignature",
304
+ lastUpdatedTimestamp: new Date(),
305
+ sessionId,
306
+ };
307
+ const sessionRecord = {
308
+ sessionId,
309
+ createdAt: new Date(),
310
+ token: "test-token",
311
+ score: 0.5,
312
+ threshold: 0.5,
313
+ scoreComponents: { baseScore: 0.5 },
314
+ providerSelectEntropy: 13337,
315
+ ipAddress: getCompositeIpAddress(ipAddress),
316
+ captchaType: CaptchaType.pow,
317
+ webView: false,
318
+ iFrame: false,
319
+ decryptedHeadHash,
320
+ };
321
+ const mockAccessRulesStorage = {
322
+ findRules: vi.fn().mockResolvedValue([
323
+ {
324
+ type: AccessPolicyType.Block,
325
+ headHash: decryptedHeadHash,
326
+ captchaType: CaptchaType.image,
327
+ },
328
+ ]),
329
+ insertRules: vi.fn(),
330
+ deleteRules: vi.fn(),
331
+ deleteAllRules: vi.fn(),
332
+ fetchRules: vi.fn(),
333
+ getMissingRuleIds: vi.fn(),
334
+ findRuleIds: vi.fn(),
335
+ fetchAllRuleIds: vi.fn(),
336
+ };
337
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
338
+ db.getSessionRecordBySessionId = vi
339
+ .fn()
340
+ .mockResolvedValue(sessionRecord);
341
+ verifyRecency.mockImplementation(() => true);
342
+ const result = await powCaptchaManager.serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout, mockEnv, undefined, mockAccessRulesStorage);
343
+ expect(result.verified).toBe(true);
344
+ });
345
+ it("should verify successfully when no blocking access policy exists", async () => {
346
+ const dappAccount = "dappAccount";
347
+ const timestamp = 123456789;
348
+ const userAccount = "testUserAccount";
349
+ const challenge = `${timestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${dappAccount}`;
350
+ const timeout = 1000;
351
+ const ipAddress = getIPAddress("1.1.1.1");
352
+ const headers = { a: "1", b: "2", c: "3" };
353
+ const challengeRecord = {
354
+ challenge,
355
+ difficulty: 4,
356
+ dappAccount,
357
+ userAccount,
358
+ requestedAtTimestamp: new Date(timestamp),
359
+ result: { status: CaptchaStatus.approved },
360
+ userSubmitted: true,
361
+ serverChecked: false,
362
+ ipAddress: getCompositeIpAddress(ipAddress),
363
+ headers,
364
+ ja4: "ja4",
365
+ providerSignature: "testSignature",
366
+ lastUpdatedTimestamp: new Date(),
367
+ };
368
+ const mockAccessRulesStorage = {
369
+ findRules: vi.fn().mockResolvedValue([]),
370
+ insertRules: vi.fn(),
371
+ deleteRules: vi.fn(),
372
+ deleteAllRules: vi.fn(),
373
+ fetchRules: vi.fn(),
374
+ getMissingRuleIds: vi.fn(),
375
+ findRuleIds: vi.fn(),
376
+ fetchAllRuleIds: vi.fn(),
377
+ };
378
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
379
+ verifyRecency.mockImplementation(() => true);
380
+ const result = await powCaptchaManager.serverVerifyPowCaptchaSolution(dappAccount, challenge, timeout, mockEnv, undefined, mockAccessRulesStorage);
381
+ expect(result.verified).toBe(true);
382
+ });
383
+ });
384
+ describe("verifyPowCaptchaSolution with behavioral data", () => {
385
+ beforeEach(() => {
386
+ db.getDetectorKeys = vi.fn(() => Promise.resolve(["test-detector-key"]));
387
+ db.updatePowCaptchaRecord = vi.fn(() => Promise.resolve());
388
+ });
389
+ it("should process behavioral data when provided", async () => {
390
+ const requestedAtTimestamp = 123456789;
391
+ const userAccount = "testUserAccount";
392
+ const challenge = `${requestedAtTimestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${pair.address}`;
393
+ const difficulty = 4;
394
+ const providerSignature = "testSignature";
395
+ const userSignature = "testTimestampSignature";
396
+ const nonce = 12345;
397
+ const timeout = 1000;
398
+ const ipAddress = getIPAddress("1.1.1.1");
399
+ const headers = { a: "1", b: "2", c: "3" };
400
+ const behavioralData = "encrypted-behavioral-data";
401
+ const challengeRecord = {
402
+ challenge,
403
+ difficulty,
404
+ dappAccount: pair.address,
405
+ userAccount,
406
+ requestedAtTimestamp: new Date(requestedAtTimestamp),
407
+ result: { status: CaptchaStatus.pending },
408
+ userSubmitted: false,
409
+ serverChecked: false,
410
+ ipAddress: getCompositeIpAddress(ipAddress),
411
+ headers,
412
+ ja4: "ja4",
413
+ providerSignature,
414
+ lastUpdatedTimestamp: new Date(),
415
+ };
416
+ verifyRecency.mockImplementation(() => true);
417
+ checkPowSignature.mockImplementation(() => true);
418
+ validateSolution.mockImplementation(() => true);
419
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
420
+ db.updatePowCaptchaRecordResult.mockResolvedValue(true);
421
+ db.markDappUserPoWCommitmentsChecked.mockResolvedValue(true);
422
+ const result = await powCaptchaManager.verifyPowCaptchaSolution(challenge, providerSignature, nonce, timeout, userSignature, ipAddress, headers, behavioralData, undefined);
423
+ expect(result).toBe(true);
424
+ });
425
+ it("should handle behavioral data decryption failure gracefully", async () => {
426
+ const requestedAtTimestamp = 123456789;
427
+ const userAccount = "testUserAccount";
428
+ const challenge = `${requestedAtTimestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${pair.address}`;
429
+ const difficulty = 4;
430
+ const providerSignature = "testSignature";
431
+ const userSignature = "testTimestampSignature";
432
+ const nonce = 12345;
433
+ const timeout = 1000;
434
+ const ipAddress = getIPAddress("1.1.1.1");
435
+ const headers = { a: "1", b: "2", c: "3" };
436
+ const behavioralData = "invalid-encrypted-data";
437
+ const challengeRecord = {
438
+ challenge,
439
+ difficulty,
440
+ dappAccount: pair.address,
441
+ userAccount,
442
+ requestedAtTimestamp: new Date(requestedAtTimestamp),
443
+ result: { status: CaptchaStatus.pending },
444
+ userSubmitted: false,
445
+ serverChecked: false,
446
+ ipAddress: getCompositeIpAddress(ipAddress),
447
+ headers,
448
+ ja4: "ja4",
449
+ providerSignature,
450
+ lastUpdatedTimestamp: new Date(),
451
+ };
452
+ verifyRecency.mockImplementation(() => true);
453
+ checkPowSignature.mockImplementation(() => true);
454
+ validateSolution.mockImplementation(() => true);
455
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
456
+ db.updatePowCaptchaRecordResult.mockResolvedValue(true);
457
+ db.markDappUserPoWCommitmentsChecked.mockResolvedValue(true);
458
+ const result = await powCaptchaManager.verifyPowCaptchaSolution(challenge, providerSignature, nonce, timeout, userSignature, ipAddress, headers, behavioralData, undefined);
459
+ expect(result).toBe(true);
460
+ });
461
+ it("should work without behavioral data", async () => {
462
+ const requestedAtTimestamp = 123456789;
463
+ const userAccount = "testUserAccount";
464
+ const challenge = `${requestedAtTimestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${pair.address}`;
465
+ const difficulty = 4;
466
+ const providerSignature = "testSignature";
467
+ const userSignature = "testTimestampSignature";
468
+ const nonce = 12345;
469
+ const timeout = 1000;
470
+ const ipAddress = getIPAddress("1.1.1.1");
471
+ const headers = { a: "1", b: "2", c: "3" };
472
+ const challengeRecord = {
473
+ challenge,
474
+ difficulty,
475
+ dappAccount: pair.address,
476
+ userAccount,
477
+ requestedAtTimestamp: new Date(requestedAtTimestamp),
478
+ result: { status: CaptchaStatus.pending },
479
+ userSubmitted: false,
480
+ serverChecked: false,
481
+ ipAddress: getCompositeIpAddress(ipAddress),
482
+ headers,
483
+ ja4: "ja4",
484
+ providerSignature,
485
+ lastUpdatedTimestamp: new Date(),
486
+ };
487
+ verifyRecency.mockImplementation(() => true);
488
+ checkPowSignature.mockImplementation(() => true);
489
+ validateSolution.mockImplementation(() => true);
490
+ db.getPowCaptchaRecordByChallenge.mockResolvedValue(challengeRecord);
491
+ db.updatePowCaptchaRecordResult.mockResolvedValue(true);
492
+ db.markDappUserPoWCommitmentsChecked.mockResolvedValue(true);
493
+ const result = await powCaptchaManager.verifyPowCaptchaSolution(challenge, providerSignature, nonce, timeout, userSignature, ipAddress, headers, undefined, undefined);
494
+ expect(result).toBe(true);
495
+ });
496
+ });
497
+ });
498
+ //# sourceMappingURL=powTasks.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powTasks.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/powCaptcha/powTasks.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=powTasksUtils.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powTasksUtils.unit.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { ProsopoApiError } from "@prosopo/common";
2
+ import { signatureVerify } from "@prosopo/util-crypto";
3
+ import { describe, expect, it, vi } from "vitest";
4
+ import { checkPowSignature, validateSolution, } from "../../../../tasks/powCaptcha/powTasksUtils.js";
5
+ vi.mock("@prosopo/util-crypto", () => ({
6
+ signatureVerify: vi.fn(),
7
+ }));
8
+ vi.mock("@prosopo/util", () => ({
9
+ verifyRecency: vi.fn(),
10
+ }));
11
+ describe("Validation Functions", () => {
12
+ describe("validateSolution", () => {
13
+ it("should return true for a valid solution", () => {
14
+ const nonce = 377;
15
+ const challenge = "6678154___aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx___5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw";
16
+ const difficulty = 4;
17
+ const validSolution = validateSolution(nonce, challenge, difficulty);
18
+ expect(validSolution).toBe(true);
19
+ });
20
+ it("should return false for an invalid solution", () => {
21
+ const nonce = 0;
22
+ const challenge = "testChallenge";
23
+ const difficulty = 10;
24
+ const validSolution = validateSolution(nonce, challenge, difficulty);
25
+ expect(validSolution).toBe(false);
26
+ });
27
+ });
28
+ describe("checkPowSolution", () => {
29
+ it("should return true for a valid solution", () => {
30
+ const nonce = 377;
31
+ const challenge = "6678154___aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx___5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw";
32
+ const difficulty = 4;
33
+ expect(validateSolution(nonce, challenge, difficulty)).to.be.true;
34
+ });
35
+ it("should throw an error for an invalid solution", () => {
36
+ const nonce = 0;
37
+ const challenge = "testChallenge";
38
+ const difficulty = 10;
39
+ expect(validateSolution(nonce, challenge, difficulty)).to.be.false;
40
+ });
41
+ });
42
+ describe("checkPowSignature", () => {
43
+ it("should not throw an error for a valid signature", () => {
44
+ const challenge = "testChallenge";
45
+ const signature = "testSignature";
46
+ const providerAddress = "testAddress";
47
+ signatureVerify.mockReturnValueOnce({ isValid: true });
48
+ expect(() => checkPowSignature(challenge, signature, providerAddress)).not.toThrow();
49
+ });
50
+ it("should throw an error for an invalid signature", () => {
51
+ const challenge = "testChallenge";
52
+ const signature = "testSignature";
53
+ const providerAddress = "testAddress";
54
+ signatureVerify.mockReturnValueOnce({ isValid: false });
55
+ expect(() => checkPowSignature(challenge, signature, providerAddress)).toThrow(new ProsopoApiError("GENERAL.INVALID_SIGNATURE", {
56
+ context: {
57
+ ERROR: "Signature is invalid for this message: undefined",
58
+ failedFuncName: "checkPowSignature",
59
+ signature,
60
+ signatureType: undefined,
61
+ address: "testAddress",
62
+ message: "testChallenge",
63
+ code: 500,
64
+ },
65
+ }));
66
+ });
67
+ });
68
+ });
69
+ //# sourceMappingURL=powTasksUtils.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powTasksUtils.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=util.evaluateIpValidationRules.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.evaluateIpValidationRules.unit.test.d.ts","sourceRoot":"","sources":["../../../src/tests/unit/util.evaluateIpValidationRules.unit.test.ts"],"names":[],"mappings":""}