@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,486 @@
1
+ import { ProviderEnvironment } from "@prosopo/env";
2
+ import { generateMnemonic } from "@prosopo/keyring";
3
+ import { DatabaseTypes, ProsopoConfigSchema } from "@prosopo/types";
4
+ import { AccessPolicyType, FilterScopeMatch, accessRuleInput, userScopeInput, } from "@prosopo/user-access-policy";
5
+ import { getIPAddressFromBigInt } from "@prosopo/util";
6
+ import { randomAsHex } from "@prosopo/util-crypto";
7
+ import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
8
+ import { getPrioritisedAccessRule } from "../../../api/blacklistRequestInspector.js";
9
+ describe("blacklistRequestInspector Integration Tests", () => {
10
+ describe("getPrioritisedAccessRule", () => {
11
+ let env;
12
+ let accessRulesStorage;
13
+ const userAgent1 = "testuseragent1";
14
+ const userAgent2 = "testuseragent2";
15
+ const userAgent3 = "testuseragent3";
16
+ const ja4Hash1 = "t13d1516h2_8daaf6152771_8eba31f8906f";
17
+ const ja4Hash2 = "t13d1516h2_8daaf6152771_8eba31f8906g";
18
+ let siteKey;
19
+ let siteKeyMnemonic;
20
+ beforeAll(async () => {
21
+ const config = ProsopoConfigSchema.parse({
22
+ defaultEnvironment: "development",
23
+ host: "http://localhost:9229",
24
+ account: {
25
+ secret: process.env.PROVIDER_MNEMONIC ||
26
+ "puppy cream effort carbon despair leg pyramid cotton endorse immense drill peasant",
27
+ },
28
+ authAccount: {
29
+ secret: process.env.ADMIN_MNEMONIC ||
30
+ "puppy cream effort carbon despair leg pyramid cotton endorse immense drill peasant",
31
+ },
32
+ database: {
33
+ development: {
34
+ type: DatabaseTypes.enum.provider,
35
+ endpoint: "mongodb://127.0.0.1:27017",
36
+ dbname: process.env.PROSOPO_DATABASE_NAME || "prosopo_test",
37
+ authSource: process.env.PROSOPO_DATABASE_AUTH_SOURCE,
38
+ },
39
+ },
40
+ ipApi: {
41
+ baseUrl: "https://dummyUrl.com",
42
+ apiKey: "dummyKey",
43
+ },
44
+ });
45
+ config.redisConnection.indexName = randomAsHex(16);
46
+ env = new ProviderEnvironment(config);
47
+ await env.isReady();
48
+ const db = env.getDb();
49
+ await db.getRedisAccessRulesConnection().getClient();
50
+ accessRulesStorage = env.getDb().getUserAccessRulesStorage();
51
+ });
52
+ beforeEach(async () => {
53
+ [siteKeyMnemonic, siteKey] = await generateMnemonic();
54
+ await accessRulesStorage.deleteAllRules();
55
+ });
56
+ it("should return a rule when a JA4-UserAgent rule exists and the user matches the User Agent and the JA4", async () => {
57
+ const accessRule = accessRuleInput.parse({
58
+ type: AccessPolicyType.Restrict,
59
+ clientId: siteKey,
60
+ ja4Hash: ja4Hash1,
61
+ userAgent: userAgent1,
62
+ });
63
+ await accessRulesStorage.insertRules([
64
+ {
65
+ rule: accessRule,
66
+ },
67
+ ]);
68
+ const spy = vi.spyOn(accessRulesStorage, "findRules");
69
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
70
+ ja4Hash: ja4Hash1,
71
+ userAgent: userAgent1,
72
+ }, siteKey);
73
+ expect(spy).toHaveBeenCalledTimes(6);
74
+ expect(spy).toHaveBeenCalledWith({
75
+ policyScope: {
76
+ clientId: siteKey,
77
+ },
78
+ policyScopeMatch: FilterScopeMatch.Exact,
79
+ userScope: userScopeInput.parse({
80
+ ja4Hash: ja4Hash1,
81
+ userAgent: userAgent1,
82
+ }),
83
+ userScopeMatch: FilterScopeMatch.Exact,
84
+ }, true, true);
85
+ expect(spy).toHaveBeenCalledWith({
86
+ policyScope: {
87
+ clientId: siteKey,
88
+ },
89
+ policyScopeMatch: FilterScopeMatch.Exact,
90
+ userScope: userScopeInput.parse({
91
+ userAgent: userAgent1,
92
+ }),
93
+ userScopeMatch: FilterScopeMatch.Exact,
94
+ }, true, true);
95
+ expect(spy).toHaveBeenCalledWith({
96
+ policyScope: {
97
+ clientId: siteKey,
98
+ },
99
+ policyScopeMatch: FilterScopeMatch.Exact,
100
+ userScope: userScopeInput.parse({
101
+ ja4Hash: ja4Hash1,
102
+ }),
103
+ userScopeMatch: FilterScopeMatch.Exact,
104
+ }, true, true);
105
+ expect(spy).toHaveBeenCalledWith({
106
+ policyScopeMatch: FilterScopeMatch.Exact,
107
+ userScope: userScopeInput.parse({
108
+ ja4Hash: ja4Hash1,
109
+ userAgent: userAgent1,
110
+ }),
111
+ userScopeMatch: FilterScopeMatch.Exact,
112
+ }, true, true);
113
+ expect(spy).toHaveBeenCalledWith({
114
+ policyScopeMatch: FilterScopeMatch.Exact,
115
+ userScope: userScopeInput.parse({
116
+ userAgent: userAgent1,
117
+ }),
118
+ userScopeMatch: FilterScopeMatch.Exact,
119
+ }, true, true);
120
+ expect(spy).toHaveBeenCalledWith({
121
+ policyScopeMatch: FilterScopeMatch.Exact,
122
+ userScope: userScopeInput.parse({
123
+ ja4Hash: ja4Hash1,
124
+ }),
125
+ userScopeMatch: FilterScopeMatch.Exact,
126
+ }, true, true);
127
+ expect(result).toHaveLength(1);
128
+ });
129
+ it("should not return a rule when a JA4-UserAgent rule exists and the user matches the JA4 but not the user agent", async () => {
130
+ const accessRule = accessRuleInput.parse({
131
+ type: AccessPolicyType.Restrict,
132
+ clientId: siteKey,
133
+ ja4Hash: ja4Hash1,
134
+ userAgent: userAgent2,
135
+ });
136
+ await accessRulesStorage.insertRules([
137
+ {
138
+ rule: accessRule,
139
+ },
140
+ ]);
141
+ const spy = vi.spyOn(accessRulesStorage, "findRules");
142
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
143
+ ja4Hash: ja4Hash1,
144
+ userAgent: userAgent1,
145
+ }, siteKey);
146
+ expect(spy).toHaveBeenCalledTimes(6);
147
+ expect(spy).toHaveBeenCalledWith({
148
+ policyScopeMatch: FilterScopeMatch.Exact,
149
+ userScope: userScopeInput.parse({
150
+ ja4Hash: ja4Hash1,
151
+ userAgent: userAgent1,
152
+ }),
153
+ userScopeMatch: FilterScopeMatch.Exact,
154
+ }, true, true);
155
+ expect(spy).toHaveBeenCalledWith({
156
+ policyScopeMatch: FilterScopeMatch.Exact,
157
+ userScope: userScopeInput.parse({
158
+ userAgent: userAgent1,
159
+ }),
160
+ userScopeMatch: FilterScopeMatch.Exact,
161
+ }, true, true);
162
+ expect(spy).toHaveBeenCalledWith({
163
+ policyScopeMatch: FilterScopeMatch.Exact,
164
+ userScope: userScopeInput.parse({
165
+ ja4Hash: ja4Hash1,
166
+ }),
167
+ userScopeMatch: FilterScopeMatch.Exact,
168
+ }, true, true);
169
+ expect(spy).toHaveBeenCalledWith({
170
+ policyScope: {
171
+ clientId: siteKey,
172
+ },
173
+ policyScopeMatch: FilterScopeMatch.Exact,
174
+ userScope: userScopeInput.parse({
175
+ ja4Hash: ja4Hash1,
176
+ userAgent: userAgent1,
177
+ }),
178
+ userScopeMatch: FilterScopeMatch.Exact,
179
+ }, true, true);
180
+ expect(spy).toHaveBeenCalledWith({
181
+ policyScope: {
182
+ clientId: siteKey,
183
+ },
184
+ policyScopeMatch: FilterScopeMatch.Exact,
185
+ userScope: userScopeInput.parse({
186
+ userAgent: userAgent1,
187
+ }),
188
+ userScopeMatch: FilterScopeMatch.Exact,
189
+ }, true, true);
190
+ expect(spy).toHaveBeenCalledWith({
191
+ policyScope: {
192
+ clientId: siteKey,
193
+ },
194
+ policyScopeMatch: FilterScopeMatch.Exact,
195
+ userScope: userScopeInput.parse({
196
+ ja4Hash: ja4Hash1,
197
+ }),
198
+ userScopeMatch: FilterScopeMatch.Exact,
199
+ }, true, true);
200
+ expect(result).toHaveLength(0);
201
+ });
202
+ it("should return multiple matching rules", async () => {
203
+ const accessRule1 = accessRuleInput.parse({
204
+ type: AccessPolicyType.Restrict,
205
+ clientId: siteKey,
206
+ ja4Hash: ja4Hash2,
207
+ });
208
+ const accessRule2 = accessRuleInput.parse({
209
+ type: AccessPolicyType.Restrict,
210
+ clientId: siteKey,
211
+ numericIp: BigInt(16843009),
212
+ });
213
+ await accessRulesStorage.insertRules([
214
+ {
215
+ rule: accessRule1,
216
+ },
217
+ ]);
218
+ await accessRulesStorage.insertRules([
219
+ {
220
+ rule: accessRule2,
221
+ },
222
+ ]);
223
+ const spy = vi.spyOn(accessRulesStorage, "findRules");
224
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
225
+ ja4Hash: ja4Hash2,
226
+ numericIp: BigInt(16843009),
227
+ }, siteKey);
228
+ expect(spy).toHaveBeenCalledTimes(6);
229
+ expect(result.length).toBe(2);
230
+ });
231
+ it("should return multiple matching rules in order of specificity", async () => {
232
+ const accessRule1 = accessRuleInput.parse({
233
+ type: AccessPolicyType.Restrict,
234
+ clientId: siteKey,
235
+ ja4Hash: ja4Hash2,
236
+ numericIp: BigInt(16843009),
237
+ });
238
+ const accessRule2 = accessRuleInput.parse({
239
+ type: AccessPolicyType.Restrict,
240
+ clientId: siteKey,
241
+ numericIp: BigInt(16843009),
242
+ });
243
+ await accessRulesStorage.insertRules([{ rule: accessRule1 }]);
244
+ await accessRulesStorage.insertRules([
245
+ {
246
+ rule: accessRule2,
247
+ },
248
+ ]);
249
+ const spy = vi.spyOn(accessRulesStorage, "findRules");
250
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
251
+ ja4Hash: ja4Hash2,
252
+ numericIp: BigInt(16843009),
253
+ }, siteKey);
254
+ expect(spy).toHaveBeenCalledTimes(6);
255
+ expect(result.length).toBe(2);
256
+ expect(result).toStrictEqual([accessRule1, accessRule2]);
257
+ const nonClientResult = await getPrioritisedAccessRule(accessRulesStorage, {
258
+ ja4Hash: ja4Hash2,
259
+ numericIp: BigInt(16843009),
260
+ });
261
+ expect(nonClientResult.length).toBe(0);
262
+ });
263
+ it("should not return a match for a different IP", async () => {
264
+ const accessRule1 = accessRuleInput.parse({
265
+ type: AccessPolicyType.Restrict,
266
+ clientId: siteKey,
267
+ ja4Hash: ja4Hash2,
268
+ userAgent: userAgent1,
269
+ numericIp: BigInt(16843009),
270
+ });
271
+ await accessRulesStorage.insertRules([
272
+ {
273
+ rule: accessRule1,
274
+ },
275
+ ]);
276
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
277
+ ja4Hash: ja4Hash2,
278
+ userAgent: userAgent1,
279
+ numericIp: BigInt(17843009),
280
+ }, siteKey);
281
+ expect(result.length).toBe(0);
282
+ });
283
+ it("should return a match for the same IP", async () => {
284
+ const numericIp = BigInt(16843009);
285
+ const accessRule1 = accessRuleInput.parse({
286
+ type: AccessPolicyType.Restrict,
287
+ clientId: siteKey,
288
+ ja4Hash: ja4Hash2,
289
+ userAgent: userAgent1,
290
+ numericIp: numericIp,
291
+ });
292
+ await accessRulesStorage.insertRules([
293
+ {
294
+ rule: accessRule1,
295
+ },
296
+ ]);
297
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
298
+ ja4Hash: ja4Hash2,
299
+ userAgent: userAgent1,
300
+ ip: getIPAddressFromBigInt(numericIp).address,
301
+ }, siteKey);
302
+ expect(result.length).toBe(1);
303
+ });
304
+ it("should not return a match for a different IP", async () => {
305
+ const accessRule1 = accessRuleInput.parse({
306
+ type: AccessPolicyType.Restrict,
307
+ clientId: siteKey,
308
+ ja4Hash: ja4Hash2,
309
+ userAgent: userAgent1,
310
+ numericIp: BigInt(16843009),
311
+ });
312
+ await accessRulesStorage.insertRules([
313
+ {
314
+ rule: accessRule1,
315
+ },
316
+ ]);
317
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
318
+ ja4Hash: ja4Hash2,
319
+ userAgent: userAgent1,
320
+ ip: "1.1.1.2",
321
+ }, siteKey);
322
+ expect(result).toEqual([]);
323
+ expect(result.length).toBe(0);
324
+ });
325
+ it("should not return a match for a different IP 2", async () => {
326
+ const accessRule1 = accessRuleInput.parse({
327
+ type: AccessPolicyType.Restrict,
328
+ clientId: siteKey,
329
+ ja4Hash: ja4Hash2,
330
+ userAgent: userAgent1,
331
+ numericIp: BigInt(16843009),
332
+ });
333
+ await accessRulesStorage.insertRules([
334
+ {
335
+ rule: accessRule1,
336
+ },
337
+ ]);
338
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
339
+ ja4Hash: ja4Hash2,
340
+ userAgent: userAgent1,
341
+ numericIp: BigInt(16843010),
342
+ }, siteKey);
343
+ expect(result.length).toBe(0);
344
+ });
345
+ it("should not return a match for a different IP 3", async () => {
346
+ const accessRule1 = accessRuleInput.parse({
347
+ type: AccessPolicyType.Restrict,
348
+ clientId: siteKey,
349
+ ja4Hash: ja4Hash2,
350
+ userAgent: userAgent1,
351
+ numericIp: BigInt(16843009),
352
+ });
353
+ await accessRulesStorage.insertRules([
354
+ {
355
+ rule: accessRule1,
356
+ },
357
+ ]);
358
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
359
+ ja4Hash: ja4Hash2,
360
+ userAgent: userAgent1,
361
+ numericIpMaskMin: BigInt(16843010),
362
+ numericIpMaskMax: BigInt(16843010),
363
+ }, siteKey);
364
+ expect(result.length).toBe(0);
365
+ });
366
+ it("should return a rule when a headHash rule exists and the user matches the headHash", async () => {
367
+ const headHash1 = "abc123def456";
368
+ const accessRule = accessRuleInput.parse({
369
+ type: AccessPolicyType.Restrict,
370
+ clientId: siteKey,
371
+ headHash: headHash1,
372
+ });
373
+ await accessRulesStorage.insertRules([
374
+ {
375
+ rule: accessRule,
376
+ },
377
+ ]);
378
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
379
+ headHash: headHash1,
380
+ }, siteKey);
381
+ expect(result).toHaveLength(1);
382
+ expect(result[0]?.headHash).toBe(headHash1);
383
+ });
384
+ it("should not return a rule when headHash does not match", async () => {
385
+ const headHash1 = "abc123def456";
386
+ const headHash2 = "xyz789ghi012";
387
+ const accessRule = accessRuleInput.parse({
388
+ type: AccessPolicyType.Restrict,
389
+ clientId: siteKey,
390
+ headHash: headHash1,
391
+ });
392
+ await accessRulesStorage.insertRules([
393
+ {
394
+ rule: accessRule,
395
+ },
396
+ ]);
397
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
398
+ headHash: headHash2,
399
+ }, siteKey);
400
+ expect(result).toHaveLength(0);
401
+ });
402
+ it("should return a rule when a coords rule exists and the user matches the coords", async () => {
403
+ const coords1 = "[[[100,200]]]";
404
+ const accessRule = accessRuleInput.parse({
405
+ type: AccessPolicyType.Restrict,
406
+ clientId: siteKey,
407
+ coords: coords1,
408
+ });
409
+ await accessRulesStorage.insertRules([
410
+ {
411
+ rule: accessRule,
412
+ },
413
+ ]);
414
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
415
+ coords: coords1,
416
+ }, siteKey);
417
+ expect(result).toHaveLength(1);
418
+ expect(result[0]?.coords).toBe(coords1);
419
+ });
420
+ it("should not return a rule when coords does not match", async () => {
421
+ const coords1 = "[[[100,200]]]";
422
+ const coords2 = "[[[300,400]]]";
423
+ const accessRule = accessRuleInput.parse({
424
+ type: AccessPolicyType.Restrict,
425
+ clientId: siteKey,
426
+ coords: coords1,
427
+ });
428
+ await accessRulesStorage.insertRules([
429
+ {
430
+ rule: accessRule,
431
+ },
432
+ ]);
433
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
434
+ coords: coords2,
435
+ }, siteKey);
436
+ expect(result).toHaveLength(0);
437
+ });
438
+ it("should return a rule when combined headHash and coords match", async () => {
439
+ const headHash1 = "abc123def456";
440
+ const coords1 = "[[[100,200]]]";
441
+ const accessRule = accessRuleInput.parse({
442
+ type: AccessPolicyType.Restrict,
443
+ clientId: siteKey,
444
+ headHash: headHash1,
445
+ coords: coords1,
446
+ });
447
+ await accessRulesStorage.insertRules([
448
+ {
449
+ rule: accessRule,
450
+ },
451
+ ]);
452
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
453
+ headHash: headHash1,
454
+ coords: coords1,
455
+ }, siteKey);
456
+ expect(result).toHaveLength(1);
457
+ expect(result[0]?.headHash).toBe(headHash1);
458
+ expect(result[0]?.coords).toBe(coords1);
459
+ });
460
+ it("should return a rule when headHash, coords, and IP all match", async () => {
461
+ const headHash1 = "abc123def456";
462
+ const coords1 = "[[[100,200]]]";
463
+ const numericIp = BigInt(16843009);
464
+ const accessRule = accessRuleInput.parse({
465
+ type: AccessPolicyType.Block,
466
+ clientId: siteKey,
467
+ headHash: headHash1,
468
+ coords: coords1,
469
+ numericIp: numericIp,
470
+ });
471
+ await accessRulesStorage.insertRules([
472
+ {
473
+ rule: accessRule,
474
+ },
475
+ ]);
476
+ const result = await getPrioritisedAccessRule(accessRulesStorage, {
477
+ headHash: headHash1,
478
+ coords: coords1,
479
+ ip: getIPAddressFromBigInt(numericIp).address,
480
+ }, siteKey);
481
+ expect(result).toHaveLength(1);
482
+ expect(result[0]?.type).toBe(AccessPolicyType.Block);
483
+ });
484
+ });
485
+ });
486
+ //# sourceMappingURL=blacklistRequestInspector.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blacklistRequestInspector.integration.test.js","sourceRoot":"","sources":["../../../../src/tests/integration/api/blacklistRequestInspector.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=imgCaptcha.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imgCaptcha.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/imgCaptcha.integration.test.ts"],"names":[],"mappings":""}