@prosopo/provider 3.12.14 → 3.13.6

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 (358) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +345 -0
  3. package/dist/api/captcha/getImageCaptchaChallenge.js +150 -0
  4. package/dist/api/captcha/getPoWCaptchaChallenge.js +156 -0
  5. package/dist/api/captcha/submitImageCaptchaSolution.js +87 -0
  6. package/dist/api/captcha/submitPoWCaptchaSolution.js +77 -0
  7. package/dist/api/captcha.js +18 -696
  8. package/dist/api/verify.js +2 -1
  9. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +344 -0
  10. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +149 -0
  11. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +155 -0
  12. package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +86 -0
  13. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +76 -0
  14. package/dist/cjs/api/captcha.cjs +17 -695
  15. package/dist/cjs/api/verify.cjs +2 -1
  16. package/dist/cjs/index.cjs +2 -0
  17. package/dist/cjs/schedulers/setClientEntropy.cjs +36 -0
  18. package/dist/cjs/tasks/captchaManager.cjs +2 -1
  19. package/dist/cjs/tasks/client/clientTasks.cjs +54 -1
  20. package/dist/cjs/tasks/detection/decodePayload.cjs +379 -609
  21. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +35 -11
  22. package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +4 -1
  23. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +8 -2
  24. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +2 -2
  25. package/dist/cjs/tasks/tasks.cjs +1 -0
  26. package/dist/cjs/utils/hashUserIp.cjs +9 -0
  27. package/dist/index.js +2 -0
  28. package/dist/schedulers/setClientEntropy.js +29 -24
  29. package/dist/tasks/captchaManager.js +2 -1
  30. package/dist/tasks/client/clientTasks.js +55 -2
  31. package/dist/tasks/detection/decodePayload.js +379 -609
  32. package/dist/tasks/detection/getBotScore.js +2 -2
  33. package/dist/tasks/frictionless/frictionlessTasks.js +36 -12
  34. package/dist/tasks/frictionless/frictionlessTasksUtils.js +4 -1
  35. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +8 -2
  36. package/dist/tasks/powCaptcha/powTasks.js +2 -2
  37. package/dist/tasks/tasks.js +1 -0
  38. package/dist/utils/hashUserIp.js +9 -0
  39. package/package.json +20 -20
  40. package/coverage/base.css +0 -224
  41. package/coverage/block-navigation.js +0 -87
  42. package/coverage/clover.xml +0 -4278
  43. package/coverage/coverage-final.json +0 -42
  44. package/coverage/favicon.png +0 -0
  45. package/coverage/index.html +0 -311
  46. package/coverage/prettify.css +0 -1
  47. package/coverage/prettify.js +0 -2
  48. package/coverage/sort-arrow-sprite.png +0 -0
  49. package/coverage/sorter.js +0 -210
  50. package/coverage/src/api/admin/apiAdminRoutesProvider.ts.html +0 -214
  51. package/coverage/src/api/admin/apiRegisterSiteKeyEndpoint.ts.html +0 -259
  52. package/coverage/src/api/admin/apiRemoveDetectorKeyEndpoint.ts.html +0 -283
  53. package/coverage/src/api/admin/apiToggleMaintenanceModeEndpoint.ts.html +0 -334
  54. package/coverage/src/api/admin/apiUpdateDetectorKeyEndpoint.ts.html +0 -298
  55. package/coverage/src/api/admin/createApiAdminRoutesProvider.ts.html +0 -163
  56. package/coverage/src/api/admin/index.html +0 -191
  57. package/coverage/src/api/blacklistRequestInspector.ts.html +0 -751
  58. package/coverage/src/api/block.ts.html +0 -187
  59. package/coverage/src/api/captcha.ts.html +0 -2803
  60. package/coverage/src/api/domainMiddleware.ts.html +0 -493
  61. package/coverage/src/api/headerCheckMiddleware.ts.html +0 -256
  62. package/coverage/src/api/ignoreMiddleware.ts.html +0 -181
  63. package/coverage/src/api/index.html +0 -266
  64. package/coverage/src/api/ja4Middleware.ts.html +0 -400
  65. package/coverage/src/api/public.ts.html +0 -343
  66. package/coverage/src/api/robotsMiddleware.ts.html +0 -157
  67. package/coverage/src/api/validateAddress.ts.html +0 -214
  68. package/coverage/src/api/verify.ts.html +0 -871
  69. package/coverage/src/compositeIpAddress.ts.html +0 -340
  70. package/coverage/src/index.html +0 -161
  71. package/coverage/src/index.ts.html +0 -175
  72. package/coverage/src/pairs.ts.html +0 -238
  73. package/coverage/src/rules/index.html +0 -116
  74. package/coverage/src/rules/lang.ts.html +0 -187
  75. package/coverage/src/schedulers/captchaScheduler.ts.html +0 -250
  76. package/coverage/src/schedulers/getClientList.ts.html +0 -271
  77. package/coverage/src/schedulers/index.html +0 -131
  78. package/coverage/src/services/index.html +0 -131
  79. package/coverage/src/services/ipComparison.ts.html +0 -685
  80. package/coverage/src/services/ipInfo.ts.html +0 -490
  81. package/coverage/src/tasks/captchaManager.ts.html +0 -865
  82. package/coverage/src/tasks/client/clientTasks.ts.html +0 -1381
  83. package/coverage/src/tasks/client/index.html +0 -116
  84. package/coverage/src/tasks/dataset/datasetTasks.ts.html +0 -268
  85. package/coverage/src/tasks/dataset/datasetTasksUtils.ts.html +0 -271
  86. package/coverage/src/tasks/dataset/index.html +0 -131
  87. package/coverage/src/tasks/detection/decodePayload.js.html +0 -127
  88. package/coverage/src/tasks/detection/getBotScore.ts.html +0 -244
  89. package/coverage/src/tasks/detection/index.html +0 -131
  90. package/coverage/src/tasks/frictionless/frictionlessTasks.ts.html +0 -1216
  91. package/coverage/src/tasks/frictionless/frictionlessTasksUtils.ts.html +0 -247
  92. package/coverage/src/tasks/frictionless/index.html +0 -131
  93. package/coverage/src/tasks/imgCaptcha/imgCaptchaTasks.ts.html +0 -1972
  94. package/coverage/src/tasks/imgCaptcha/imgCaptchaTasksUtils.ts.html +0 -232
  95. package/coverage/src/tasks/imgCaptcha/index.html +0 -131
  96. package/coverage/src/tasks/index.html +0 -146
  97. package/coverage/src/tasks/index.ts.html +0 -127
  98. package/coverage/src/tasks/powCaptcha/index.html +0 -131
  99. package/coverage/src/tasks/powCaptcha/powTasks.ts.html +0 -961
  100. package/coverage/src/tasks/powCaptcha/powTasksUtils.ts.html +0 -244
  101. package/coverage/src/tasks/tasks.ts.html +0 -388
  102. package/coverage/src/util.ts.html +0 -1627
  103. package/coverage/src/utils/hashUserAgent.ts.html +0 -184
  104. package/coverage/src/utils/index.html +0 -116
  105. package/dist/api/admin/apiAdminRoutesProvider.d.ts +0 -9
  106. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +0 -1
  107. package/dist/api/admin/apiAdminRoutesProvider.js.map +0 -1
  108. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +0 -14
  109. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +0 -1
  110. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +0 -1
  111. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +0 -23
  112. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +0 -1
  113. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +0 -1
  114. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +0 -13
  115. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts.map +0 -1
  116. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js.map +0 -1
  117. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +0 -14
  118. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +0 -1
  119. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +0 -1
  120. package/dist/api/admin/createApiAdminRoutesProvider.d.ts +0 -4
  121. package/dist/api/admin/createApiAdminRoutesProvider.d.ts.map +0 -1
  122. package/dist/api/admin/createApiAdminRoutesProvider.js.map +0 -1
  123. package/dist/api/blacklistRequestInspector.d.ts +0 -19
  124. package/dist/api/blacklistRequestInspector.d.ts.map +0 -1
  125. package/dist/api/blacklistRequestInspector.js.map +0 -1
  126. package/dist/api/block.d.ts +0 -3
  127. package/dist/api/block.d.ts.map +0 -1
  128. package/dist/api/block.js.map +0 -1
  129. package/dist/api/captcha.d.ts +0 -4
  130. package/dist/api/captcha.d.ts.map +0 -1
  131. package/dist/api/captcha.js.map +0 -1
  132. package/dist/api/domainMiddleware.d.ts +0 -4
  133. package/dist/api/domainMiddleware.d.ts.map +0 -1
  134. package/dist/api/domainMiddleware.js.map +0 -1
  135. package/dist/api/headerCheckMiddleware.d.ts +0 -4
  136. package/dist/api/headerCheckMiddleware.d.ts.map +0 -1
  137. package/dist/api/headerCheckMiddleware.js.map +0 -1
  138. package/dist/api/ignoreMiddleware.d.ts +0 -3
  139. package/dist/api/ignoreMiddleware.d.ts.map +0 -1
  140. package/dist/api/ignoreMiddleware.js.map +0 -1
  141. package/dist/api/ja4Middleware.d.ts +0 -10
  142. package/dist/api/ja4Middleware.d.ts.map +0 -1
  143. package/dist/api/ja4Middleware.js.map +0 -1
  144. package/dist/api/public.d.ts +0 -4
  145. package/dist/api/public.d.ts.map +0 -1
  146. package/dist/api/public.js.map +0 -1
  147. package/dist/api/robotsMiddleware.d.ts +0 -3
  148. package/dist/api/robotsMiddleware.d.ts.map +0 -1
  149. package/dist/api/robotsMiddleware.js.map +0 -1
  150. package/dist/api/validateAddress.d.ts +0 -5
  151. package/dist/api/validateAddress.d.ts.map +0 -1
  152. package/dist/api/validateAddress.js.map +0 -1
  153. package/dist/api/verify.d.ts +0 -4
  154. package/dist/api/verify.d.ts.map +0 -1
  155. package/dist/api/verify.js.map +0 -1
  156. package/dist/compositeIpAddress.d.ts +0 -5
  157. package/dist/compositeIpAddress.d.ts.map +0 -1
  158. package/dist/compositeIpAddress.js.map +0 -1
  159. package/dist/index.d.ts +0 -17
  160. package/dist/index.d.ts.map +0 -1
  161. package/dist/index.js.map +0 -1
  162. package/dist/pairs.d.ts +0 -3
  163. package/dist/pairs.d.ts.map +0 -1
  164. package/dist/pairs.js.map +0 -1
  165. package/dist/rules/lang.d.ts +0 -3
  166. package/dist/rules/lang.d.ts.map +0 -1
  167. package/dist/rules/lang.js.map +0 -1
  168. package/dist/schedulers/captchaScheduler.d.ts +0 -4
  169. package/dist/schedulers/captchaScheduler.d.ts.map +0 -1
  170. package/dist/schedulers/captchaScheduler.js.map +0 -1
  171. package/dist/schedulers/getClientList.d.ts +0 -4
  172. package/dist/schedulers/getClientList.d.ts.map +0 -1
  173. package/dist/schedulers/getClientList.js.map +0 -1
  174. package/dist/schedulers/setClientEntropy.d.ts +0 -4
  175. package/dist/schedulers/setClientEntropy.d.ts.map +0 -1
  176. package/dist/schedulers/setClientEntropy.js.map +0 -1
  177. package/dist/services/ipComparison.d.ts +0 -3
  178. package/dist/services/ipComparison.d.ts.map +0 -1
  179. package/dist/services/ipComparison.js.map +0 -1
  180. package/dist/services/ipInfo.d.ts +0 -3
  181. package/dist/services/ipInfo.d.ts.map +0 -1
  182. package/dist/services/ipInfo.js.map +0 -1
  183. package/dist/tasks/captchaManager.d.ts +0 -34
  184. package/dist/tasks/captchaManager.d.ts.map +0 -1
  185. package/dist/tasks/captchaManager.js.map +0 -1
  186. package/dist/tasks/client/clientTasks.d.ts +0 -21
  187. package/dist/tasks/client/clientTasks.d.ts.map +0 -1
  188. package/dist/tasks/client/clientTasks.js.map +0 -1
  189. package/dist/tasks/dataset/datasetTasks.d.ts +0 -13
  190. package/dist/tasks/dataset/datasetTasks.d.ts.map +0 -1
  191. package/dist/tasks/dataset/datasetTasks.js.map +0 -1
  192. package/dist/tasks/dataset/datasetTasksUtils.d.ts +0 -3
  193. package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +0 -1
  194. package/dist/tasks/dataset/datasetTasksUtils.js.map +0 -1
  195. package/dist/tasks/detection/decodePayload.d.ts +0 -5
  196. package/dist/tasks/detection/decodePayload.d.ts.map +0 -1
  197. package/dist/tasks/detection/decodePayload.js.map +0 -1
  198. package/dist/tasks/detection/getBotScore.d.ts +0 -20
  199. package/dist/tasks/detection/getBotScore.d.ts.map +0 -1
  200. package/dist/tasks/detection/getBotScore.js.map +0 -1
  201. package/dist/tasks/frictionless/frictionlessTasks.d.ts +0 -67
  202. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +0 -1
  203. package/dist/tasks/frictionless/frictionlessTasks.js.map +0 -1
  204. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +0 -6
  205. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +0 -1
  206. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +0 -1
  207. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +0 -30
  208. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +0 -1
  209. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +0 -1
  210. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +0 -7
  211. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +0 -1
  212. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +0 -1
  213. package/dist/tasks/index.d.ts +0 -2
  214. package/dist/tasks/index.d.ts.map +0 -1
  215. package/dist/tasks/index.js.map +0 -1
  216. package/dist/tasks/powCaptcha/powTasks.d.ts +0 -17
  217. package/dist/tasks/powCaptcha/powTasks.d.ts.map +0 -1
  218. package/dist/tasks/powCaptcha/powTasks.js.map +0 -1
  219. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +0 -3
  220. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +0 -1
  221. package/dist/tasks/powCaptcha/powTasksUtils.js.map +0 -1
  222. package/dist/tasks/tasks.d.ts +0 -25
  223. package/dist/tasks/tasks.d.ts.map +0 -1
  224. package/dist/tasks/tasks.js.map +0 -1
  225. package/dist/tests/index.d.ts +0 -2
  226. package/dist/tests/index.d.ts.map +0 -1
  227. package/dist/tests/index.js +0 -2
  228. package/dist/tests/index.js.map +0 -1
  229. package/dist/tests/integration/accessRules.integration.test.d.ts +0 -2
  230. package/dist/tests/integration/accessRules.integration.test.d.ts.map +0 -1
  231. package/dist/tests/integration/accessRules.integration.test.js +0 -588
  232. package/dist/tests/integration/accessRules.integration.test.js.map +0 -1
  233. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts +0 -2
  234. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts.map +0 -1
  235. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +0 -60
  236. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +0 -1
  237. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts +0 -2
  238. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts.map +0 -1
  239. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +0 -368
  240. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +0 -1
  241. package/dist/tests/integration/imgCaptcha.integration.test.d.ts +0 -2
  242. package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +0 -1
  243. package/dist/tests/integration/imgCaptcha.integration.test.js +0 -272
  244. package/dist/tests/integration/imgCaptcha.integration.test.js.map +0 -1
  245. package/dist/tests/integration/ipValidation.integration.test.d.ts +0 -2
  246. package/dist/tests/integration/ipValidation.integration.test.d.ts.map +0 -1
  247. package/dist/tests/integration/ipValidation.integration.test.js +0 -75
  248. package/dist/tests/integration/ipValidation.integration.test.js.map +0 -1
  249. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +0 -32
  250. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +0 -1
  251. package/dist/tests/integration/mocks/solvedTestCaptchas.js +0 -1046
  252. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +0 -1
  253. package/dist/tests/integration/powCaptcha.integration.test.d.ts +0 -2
  254. package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +0 -1
  255. package/dist/tests/integration/powCaptcha.integration.test.js +0 -308
  256. package/dist/tests/integration/powCaptcha.integration.test.js.map +0 -1
  257. package/dist/tests/integration/registerSitekey.d.ts +0 -3
  258. package/dist/tests/integration/registerSitekey.d.ts.map +0 -1
  259. package/dist/tests/integration/registerSitekey.js +0 -24
  260. package/dist/tests/integration/registerSitekey.js.map +0 -1
  261. package/dist/tests/integration/userAccessPolicy.d.ts +0 -2
  262. package/dist/tests/integration/userAccessPolicy.d.ts.map +0 -1
  263. package/dist/tests/integration/userAccessPolicy.js +0 -2
  264. package/dist/tests/integration/userAccessPolicy.js.map +0 -1
  265. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts +0 -2
  266. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts.map +0 -1
  267. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +0 -60
  268. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +0 -1
  269. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts +0 -2
  270. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts.map +0 -1
  271. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +0 -43
  272. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +0 -1
  273. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts +0 -2
  274. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts.map +0 -1
  275. package/dist/tests/unit/api/ja4Middleware.unit.test.js +0 -57
  276. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +0 -1
  277. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts +0 -2
  278. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts.map +0 -1
  279. package/dist/tests/unit/compositeIpAddress.unit.test.js +0 -86
  280. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +0 -1
  281. package/dist/tests/unit/pairs.unit.test.d.ts +0 -2
  282. package/dist/tests/unit/pairs.unit.test.d.ts.map +0 -1
  283. package/dist/tests/unit/pairs.unit.test.js +0 -83
  284. package/dist/tests/unit/pairs.unit.test.js.map +0 -1
  285. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +0 -2
  286. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +0 -1
  287. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +0 -75
  288. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +0 -1
  289. package/dist/tests/unit/services/ipComparison.unit.test.d.ts +0 -2
  290. package/dist/tests/unit/services/ipComparison.unit.test.d.ts.map +0 -1
  291. package/dist/tests/unit/services/ipComparison.unit.test.js +0 -258
  292. package/dist/tests/unit/services/ipComparison.unit.test.js.map +0 -1
  293. package/dist/tests/unit/services/ipInfo.unit.test.d.ts +0 -2
  294. package/dist/tests/unit/services/ipInfo.unit.test.d.ts.map +0 -1
  295. package/dist/tests/unit/services/ipInfo.unit.test.js +0 -210
  296. package/dist/tests/unit/services/ipInfo.unit.test.js.map +0 -1
  297. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts +0 -2
  298. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts.map +0 -1
  299. package/dist/tests/unit/tasks/captchaManager.unit.test.js +0 -311
  300. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +0 -1
  301. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +0 -2
  302. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +0 -1
  303. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +0 -289
  304. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +0 -1
  305. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +0 -2
  306. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +0 -1
  307. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +0 -92
  308. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +0 -1
  309. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +0 -2
  310. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +0 -1
  311. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +0 -75
  312. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +0 -1
  313. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts +0 -2
  314. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts.map +0 -1
  315. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +0 -143
  316. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +0 -1
  317. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts +0 -2
  318. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts.map +0 -1
  319. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +0 -145
  320. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +0 -1
  321. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts +0 -2
  322. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts.map +0 -1
  323. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +0 -64
  324. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +0 -1
  325. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +0 -2
  326. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +0 -1
  327. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +0 -388
  328. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +0 -1
  329. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +0 -2
  330. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +0 -1
  331. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +0 -46
  332. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +0 -1
  333. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +0 -2
  334. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +0 -1
  335. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +0 -216
  336. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +0 -1
  337. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +0 -2
  338. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +0 -1
  339. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +0 -69
  340. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +0 -1
  341. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts +0 -2
  342. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts.map +0 -1
  343. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +0 -505
  344. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +0 -1
  345. package/dist/tests/unit/util.ipDistance.unit.test.d.ts +0 -2
  346. package/dist/tests/unit/util.ipDistance.unit.test.d.ts.map +0 -1
  347. package/dist/tests/unit/util.ipDistance.unit.test.js +0 -93
  348. package/dist/tests/unit/util.ipDistance.unit.test.js.map +0 -1
  349. package/dist/tests/unit/util.unit.test.d.ts +0 -2
  350. package/dist/tests/unit/util.unit.test.d.ts.map +0 -1
  351. package/dist/tests/unit/util.unit.test.js +0 -170
  352. package/dist/tests/unit/util.unit.test.js.map +0 -1
  353. package/dist/util.d.ts +0 -24
  354. package/dist/util.d.ts.map +0 -1
  355. package/dist/util.js.map +0 -1
  356. package/dist/utils/hashUserAgent.d.ts +0 -2
  357. package/dist/utils/hashUserAgent.d.ts.map +0 -1
  358. package/dist/utils/hashUserAgent.js.map +0 -1
@@ -17,9 +17,18 @@ const getDefaultEntropy = () => {
17
17
  };
18
18
  const DEFAULT_MAX_TIMESTAMP_AGE = 60 * 10 * 1e3;
19
19
  const DEFAULT_ENTROPY = getDefaultEntropy();
20
+ var FrictionlessReason = /* @__PURE__ */ ((FrictionlessReason2) => {
21
+ FrictionlessReason2["CONTEXT_AWARE_VALIDATION_FAILED"] = "CONTEXT_AWARE_VALIDATION_FAILED";
22
+ FrictionlessReason2["USER_ACCESS_POLICY"] = "USER_ACCESS_POLICY";
23
+ FrictionlessReason2["USER_AGENT_MISMATCH"] = "USER_AGENT_MISMATCH";
24
+ FrictionlessReason2["OLD_TIMESTAMP"] = "OLD_TIMESTAMP";
25
+ FrictionlessReason2["BOT_SCORE_ABOVE_THRESHOLD"] = "BOT_SCORE_ABOVE_THRESHOLD";
26
+ FrictionlessReason2["WEBVIEW_DETECTED"] = "WEBVIEW_DETECTED";
27
+ return FrictionlessReason2;
28
+ })(FrictionlessReason || {});
20
29
  class FrictionlessManager extends captchaManager.CaptchaManager {
21
30
  constructor(db, pair, config, logger) {
22
- super(db, pair, logger);
31
+ super(db, pair, config, logger);
23
32
  this.config = config;
24
33
  }
25
34
  setSessionParams(params) {
@@ -44,7 +53,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
44
53
  checkLangRules(acceptLanguage) {
45
54
  return lang.checkLangRules(this.config, acceptLanguage);
46
55
  }
47
- async createSession(token, score, threshold, scoreComponents, providerSelectEntropy, ipAddress, captchaType, solvedImagesCount, powDifficulty, webView = false, iFrame = false, decryptedHeadHash = "") {
56
+ async createSession(token, score, threshold, scoreComponents, providerSelectEntropy, ipAddress, captchaType, solvedImagesCount, powDifficulty, userSitekeyIpHash, webView = false, iFrame = false, decryptedHeadHash = "", reason) {
48
57
  const sessionRecord = {
49
58
  sessionId: uuid.v4(),
50
59
  createdAt: /* @__PURE__ */ new Date(),
@@ -57,9 +66,11 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
57
66
  captchaType,
58
67
  solvedImagesCount,
59
68
  powDifficulty,
69
+ userSitekeyIpHash,
60
70
  webView,
61
71
  iFrame,
62
- decryptedHeadHash
72
+ decryptedHeadHash,
73
+ reason
63
74
  };
64
75
  await this.db.storeSessionRecord(sessionRecord);
65
76
  return sessionRecord;
@@ -97,11 +108,13 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
97
108
  effectiveParams.providerSelectEntropy,
98
109
  effectiveParams.ipAddress,
99
110
  types.CaptchaType.image,
100
- params?.solvedImagesCount,
111
+ effectiveParams.solvedImagesCount,
101
112
  void 0,
113
+ effectiveParams.userSitekeyIpHash,
102
114
  effectiveParams.webView ?? false,
103
115
  effectiveParams.iFrame ?? false,
104
- effectiveParams.decryptedHeadHash
116
+ effectiveParams.decryptedHeadHash,
117
+ effectiveParams.reason
105
118
  );
106
119
  return {
107
120
  [types.ApiParams.captchaType]: types.CaptchaType.image,
@@ -125,10 +138,12 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
125
138
  effectiveParams.ipAddress,
126
139
  types.CaptchaType.pow,
127
140
  void 0,
128
- params?.powDifficulty,
141
+ effectiveParams.powDifficulty,
142
+ effectiveParams.userSitekeyIpHash,
129
143
  effectiveParams.webView ?? false,
130
144
  effectiveParams.iFrame ?? false,
131
- effectiveParams.decryptedHeadHash
145
+ effectiveParams.decryptedHeadHash,
146
+ effectiveParams.reason
132
147
  );
133
148
  return {
134
149
  [types.ApiParams.captchaType]: types.CaptchaType.pow,
@@ -234,6 +249,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
234
249
  let webView;
235
250
  let iFrame;
236
251
  let decryptedHeadHash = "";
252
+ let decryptionFailed = false;
237
253
  for (const [keyIndex, key] of decryptKeys.entries()) {
238
254
  try {
239
255
  this.logger.info(() => ({
@@ -281,6 +297,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
281
297
  timestamp = 0;
282
298
  providerSelectEntropy = DEFAULT_ENTROPY + 1;
283
299
  decryptedHeadHash = "";
300
+ decryptionFailed = true;
284
301
  }
285
302
  }
286
303
  }
@@ -296,6 +313,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
296
313
  timestamp = 0;
297
314
  providerSelectEntropy = DEFAULT_ENTROPY - undefinedCount;
298
315
  decryptedHeadHash = "";
316
+ decryptionFailed = true;
299
317
  }
300
318
  this.logger.info(() => ({
301
319
  msg: "decryptPayload result",
@@ -307,7 +325,8 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
307
325
  userAgent,
308
326
  webView,
309
327
  iFrame,
310
- decryptedHeadHash
328
+ decryptedHeadHash,
329
+ decryptionFailed
311
330
  }
312
331
  }));
313
332
  return {
@@ -316,11 +335,16 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
316
335
  providerSelectEntropy: Number(providerSelectEntropy),
317
336
  userId,
318
337
  userAgent,
319
- webView,
320
- iFrame,
321
- decryptedHeadHash
338
+ webView: webView || false,
339
+ iFrame: iFrame || false,
340
+ decryptedHeadHash,
341
+ decryptionFailed
322
342
  };
323
343
  }
344
+ async getClientEntropy(siteKey) {
345
+ return this.db.getClientEntropy(siteKey);
346
+ }
324
347
  }
325
348
  exports.DEFAULT_ENTROPY = DEFAULT_ENTROPY;
326
349
  exports.FrictionlessManager = FrictionlessManager;
350
+ exports.FrictionlessReason = FrictionlessReason;
@@ -8,7 +8,10 @@ const computeFrictionlessScore = (scoreComponents) => {
8
8
  ).toFixed(2)
9
9
  );
10
10
  };
11
- const timestampDecayFunction = (timestamp) => {
11
+ const timestampDecayFunction = (timestamp, decryptionFailed) => {
12
+ if (decryptionFailed) {
13
+ return 6;
14
+ }
12
15
  const max = (/* @__PURE__ */ new Date()).getTime();
13
16
  if (max - timestamp > 36e5) {
14
17
  return 12;
@@ -11,11 +11,12 @@ const pairs = require("../../pairs.cjs");
11
11
  const lang = require("../../rules/lang.cjs");
12
12
  const util = require("../../util.cjs");
13
13
  const captchaManager = require("../captchaManager.cjs");
14
+ const frictionlessTasks = require("../frictionless/frictionlessTasks.cjs");
14
15
  const frictionlessTasksUtils = require("../frictionless/frictionlessTasksUtils.cjs");
15
16
  const imgCaptchaTasksUtils = require("./imgCaptchaTasksUtils.cjs");
16
17
  class ImgCaptchaManager extends captchaManager.CaptchaManager {
17
18
  constructor(db, pair, config, logger) {
18
- super(db, pair, logger);
19
+ super(db, pair, config, logger);
19
20
  this.config = config;
20
21
  }
21
22
  async getCaptchaWithProof(datasetId, solved, size) {
@@ -334,7 +335,7 @@ class ImgCaptchaManager extends captchaManager.CaptchaManager {
334
335
  }
335
336
  return void 0;
336
337
  }
337
- async verifyImageCaptchaSolution(user, dapp, commitmentId, env, maxVerifiedTime, ip, disallowWebView) {
338
+ async verifyImageCaptchaSolution(user, dapp, commitmentId, env, maxVerifiedTime, ip, disallowWebView, contextAwareEnabled = false) {
338
339
  const solution = await (commitmentId ? this.getDappUserCommitmentById(commitmentId) : this.getDappUserCommitmentByAccount(user, dapp));
339
340
  if (!solution) {
340
341
  this.logger.debug(() => ({
@@ -409,6 +410,11 @@ class ImgCaptchaManager extends captchaManager.CaptchaManager {
409
410
  }));
410
411
  return { status: "API.USER_NOT_VERIFIED", verified: false };
411
412
  }
413
+ if (contextAwareEnabled && sessionRecord.reason === frictionlessTasks.FrictionlessReason.CONTEXT_AWARE_VALIDATION_FAILED) {
414
+ this.logger.info(() => ({
415
+ msg: "Context aware validation failed"
416
+ }));
417
+ }
412
418
  }
413
419
  }
414
420
  return {
@@ -11,8 +11,8 @@ const frictionlessTasksUtils = require("../frictionless/frictionlessTasksUtils.c
11
11
  const powTasksUtils = require("./powTasksUtils.cjs");
12
12
  const DEFAULT_POW_DIFFICULTY = 4;
13
13
  class PowCaptchaManager extends captchaManager.CaptchaManager {
14
- constructor(db, pair, logger) {
15
- super(db, pair, logger);
14
+ constructor(db, pair, config, logger) {
15
+ super(db, pair, config, logger);
16
16
  this.POW_SEPARATOR = types.POW_SEPARATOR;
17
17
  }
18
18
  /**
@@ -21,6 +21,7 @@ class Tasks {
21
21
  this.powCaptchaManager = new powTasks.PowCaptchaManager(
22
22
  this.db,
23
23
  this.pair,
24
+ this.config,
24
25
  this.logger
25
26
  );
26
27
  this.datasetManager = new datasetTasks.DatasetManager(
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const node_crypto = require("node:crypto");
4
+ function hashUserIp(user, ip, sitekey) {
5
+ const hash = node_crypto.createHash("sha256");
6
+ hash.update(`${user}:${ip}:${sitekey}`, "utf8");
7
+ return hash.digest("hex");
8
+ }
9
+ exports.hashUserIp = hashUserIp;
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { publicRouter } from "./api/public.js";
8
8
  import { domainMiddleware } from "./api/domainMiddleware.js";
9
9
  import { storeCaptchasExternally } from "./schedulers/captchaScheduler.js";
10
10
  import { getClientList } from "./schedulers/getClientList.js";
11
+ import { setClientEntropy } from "./schedulers/setClientEntropy.js";
11
12
  import { headerCheckMiddleware } from "./api/headerCheckMiddleware.js";
12
13
  import { createApiAdminRoutesProvider } from "./api/admin/createApiAdminRoutesProvider.js";
13
14
  import { ignoreMiddleware } from "./api/ignoreMiddleware.js";
@@ -39,6 +40,7 @@ export {
39
40
  prosopoVerifyRouter,
40
41
  publicRouter,
41
42
  robotsMiddleware,
43
+ setClientEntropy,
42
44
  shuffleArray,
43
45
  storeCaptchasExternally,
44
46
  validateIpAddress
@@ -3,29 +3,34 @@ import { ScheduledTaskNames } from "@prosopo/types";
3
3
  import { CronJob } from "cron";
4
4
  import { Tasks } from "../tasks/tasks.js";
5
5
  import { checkIfTaskIsRunning } from "../util.js";
6
- export async function setClientEntropy(pair, cronSchedule, config) {
7
- const env = new ProviderEnvironment(config, pair);
8
- await env.isReady();
9
- const tasks = new Tasks(env);
10
- const job = new CronJob(cronSchedule, async () => {
11
- const taskRunning = await checkIfTaskIsRunning(ScheduledTaskNames.SetClientEntropy, env.getDb());
12
- env.logger.info(() => ({
13
- msg: `${ScheduledTaskNames.SetClientEntropy} task running: ${taskRunning}`,
14
- data: { taskRunning },
6
+ async function setClientEntropy(pair, cronSchedule, config) {
7
+ const env = new ProviderEnvironment(config, pair);
8
+ await env.isReady();
9
+ const tasks = new Tasks(env);
10
+ const job = new CronJob(cronSchedule, async () => {
11
+ const taskRunning = await checkIfTaskIsRunning(
12
+ ScheduledTaskNames.SetClientEntropy,
13
+ env.getDb()
14
+ );
15
+ env.logger.info(() => ({
16
+ msg: `${ScheduledTaskNames.SetClientEntropy} task running: ${taskRunning}`,
17
+ data: { taskRunning }
18
+ }));
19
+ if (!taskRunning) {
20
+ env.logger.info(() => ({
21
+ msg: `${ScheduledTaskNames.SetClientEntropy} task....`,
22
+ data: {}
23
+ }));
24
+ await tasks.clientTaskManager.calculateClientEntropy().catch((err) => {
25
+ env.logger.error(() => ({
26
+ err,
27
+ msg: "Error setting client entropy"
15
28
  }));
16
- if (!taskRunning) {
17
- env.logger.info(() => ({
18
- msg: `${ScheduledTaskNames.SetClientEntropy} task....`,
19
- data: {},
20
- }));
21
- await tasks.clientTaskManager.calculateClientEntropy().catch((err) => {
22
- env.logger.error(() => ({
23
- err,
24
- msg: "Error setting client entropy",
25
- }));
26
- });
27
- }
28
- });
29
- job.start();
29
+ });
30
+ }
31
+ });
32
+ job.start();
30
33
  }
31
- //# sourceMappingURL=setClientEntropy.js.map
34
+ export {
35
+ setClientEntropy
36
+ };
@@ -2,9 +2,10 @@ import { getLogger } from "@prosopo/common";
2
2
  import { CaptchaType, ApiParams, Tier } from "@prosopo/types";
3
3
  import { getPrioritisedAccessRule } from "../api/blacklistRequestInspector.js";
4
4
  class CaptchaManager {
5
- constructor(db, pair, logger) {
5
+ constructor(db, pair, config, logger) {
6
6
  this.pair = pair;
7
7
  this.db = db;
8
+ this.config = config;
8
9
  this.logger = logger || getLogger("info", import.meta.url);
9
10
  }
10
11
  async validateSessionIP(sessionRecord, currentIP, env) {
@@ -2,7 +2,7 @@ import { createPrivateKey } from "node:crypto";
2
2
  import { ProsopoApiError } from "@prosopo/common";
3
3
  import { CaptchaDatabase, ClientDatabase } from "@prosopo/database";
4
4
  import { ScheduledTaskNames, ScheduledTaskStatus } from "@prosopo/types";
5
- import { parseUrl } from "@prosopo/util";
5
+ import { majorityAverage, parseUrl } from "@prosopo/util";
6
6
  import { validateSiteKey } from "../../api/validateAddress.js";
7
7
  const isValidPrivateKey = (privateKeyString) => {
8
8
  const privateKey = Buffer.from(privateKeyString, "base64").toString("ascii");
@@ -161,7 +161,13 @@ class ClientTaskManager {
161
161
  this.logger
162
162
  );
163
163
  const tenMinuteWindow = 10 * 60 * 1e3;
164
- const updatedAtTimestamp = lastTask?.updated ? lastTask.updated.getTime() - tenMinuteWindow || 0 : 0;
164
+ const updatedAtTimestamp = (() => {
165
+ const raw = lastTask?.updated;
166
+ if (!raw) return 0;
167
+ const ts = raw instanceof Date ? raw.getTime() : Date.parse(String(raw));
168
+ if (Number.isNaN(ts)) return 0;
169
+ return Math.max(ts - tenMinuteWindow, 0);
170
+ })();
165
171
  this.logger.info(() => ({
166
172
  msg: `Getting updated client records since ${new Date(updatedAtTimestamp).toDateString()}`
167
173
  }));
@@ -194,6 +200,53 @@ class ClientTaskManager {
194
200
  );
195
201
  }
196
202
  }
203
+ /**
204
+ * @description Calculate client entropy scores and update in db
205
+ * @returns Promise<void>
206
+ */
207
+ async calculateClientEntropy() {
208
+ const taskID = await this.providerDB.createScheduledTaskStatus(
209
+ ScheduledTaskNames.SetClientEntropy,
210
+ ScheduledTaskStatus.Running
211
+ );
212
+ try {
213
+ const clients = await this.providerDB.getAllClientRecords();
214
+ for (const client of clients) {
215
+ const sampleEntropies = await this.providerDB.sampleEntropy(
216
+ 100,
217
+ client.account
218
+ );
219
+ const avgEntropy = majorityAverage(sampleEntropies);
220
+ await this.providerDB.setClientEntropy(client.account, avgEntropy);
221
+ }
222
+ await this.providerDB.updateScheduledTaskStatus(
223
+ taskID,
224
+ ScheduledTaskStatus.Completed,
225
+ {
226
+ data: {
227
+ clientRecords: clients.length
228
+ }
229
+ }
230
+ );
231
+ } catch (e) {
232
+ const calculateClientEntropiesError = new ProsopoApiError(
233
+ "DATABASE.UNKNOWN",
234
+ {
235
+ context: { error: e },
236
+ logger: this.logger
237
+ }
238
+ );
239
+ this.logger.error(() => ({
240
+ err: calculateClientEntropiesError,
241
+ msg: "Error calculating client entropy"
242
+ }));
243
+ await this.providerDB.updateScheduledTaskStatus(
244
+ taskID,
245
+ ScheduledTaskStatus.Failed,
246
+ { error: String(e) }
247
+ );
248
+ }
249
+ }
197
250
  async registerSiteKey(siteKey, tier, settings) {
198
251
  validateSiteKey(siteKey);
199
252
  await this.providerDB.updateClientRecords([