@prosopo/provider 3.15.0 → 4.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +104 -57
  2. package/.turbo/turbo-build$colon$tsc.log +30 -24
  3. package/.turbo/turbo-build.log +104 -58
  4. package/CHANGELOG.md +1328 -0
  5. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -1
  6. package/dist/api/admin/apiAdminRoutesProvider.js +31 -1
  7. package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -1
  8. package/dist/api/admin/apiClearAllCountersEndpoint.d.ts +14 -0
  9. package/dist/api/admin/apiClearAllCountersEndpoint.d.ts.map +1 -0
  10. package/dist/api/admin/apiClearAllCountersEndpoint.js +59 -0
  11. package/dist/api/admin/apiClearAllCountersEndpoint.js.map +1 -0
  12. package/dist/api/admin/apiDnsEventEndpoint.d.ts +15 -0
  13. package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -0
  14. package/dist/api/admin/apiDnsEventEndpoint.js +64 -0
  15. package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -0
  16. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts +13 -0
  17. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts.map +1 -0
  18. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js +49 -0
  19. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js.map +1 -0
  20. package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts +14 -0
  21. package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts.map +1 -0
  22. package/dist/api/admin/apiGetDecisionMachineEndpoint.js +42 -0
  23. package/dist/api/admin/apiGetDecisionMachineEndpoint.js.map +1 -0
  24. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +1 -1
  25. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +1 -1
  26. package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts +14 -0
  27. package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts.map +1 -0
  28. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js +33 -0
  29. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js.map +1 -0
  30. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts +13 -0
  31. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts.map +1 -0
  32. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js +41 -0
  33. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js.map +1 -0
  34. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts +14 -0
  35. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts.map +1 -0
  36. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js +42 -0
  37. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js.map +1 -0
  38. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +2 -2
  39. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
  40. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +1 -1
  41. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +1 -1
  42. package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts +14 -0
  43. package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts.map +1 -0
  44. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js +32 -0
  45. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js.map +1 -0
  46. package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts +14 -0
  47. package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts.map +1 -0
  48. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js +34 -0
  49. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js.map +1 -0
  50. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +1 -1
  51. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +1 -1
  52. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts +14 -0
  53. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts.map +1 -0
  54. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js +60 -0
  55. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js.map +1 -0
  56. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +1 -1
  57. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +1 -1
  58. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +1 -1
  59. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +1 -1
  60. package/dist/api/blacklistRequestInspector.d.ts +4 -3
  61. package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
  62. package/dist/api/blacklistRequestInspector.js +18 -5
  63. package/dist/api/blacklistRequestInspector.js.map +1 -1
  64. package/dist/api/block.d.ts +2 -1
  65. package/dist/api/block.d.ts.map +1 -1
  66. package/dist/api/block.js +19 -8
  67. package/dist/api/block.js.map +1 -1
  68. package/dist/api/captcha/checkSpamEmail.d.ts +6 -0
  69. package/dist/api/captcha/checkSpamEmail.d.ts.map +1 -0
  70. package/dist/api/captcha/checkSpamEmail.js +80 -0
  71. package/dist/api/captcha/checkSpamEmail.js.map +1 -0
  72. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts +31 -0
  73. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts.map +1 -0
  74. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +123 -0
  75. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js.map +1 -0
  76. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +3 -0
  77. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -0
  78. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +13 -0
  79. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -0
  80. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts +36 -0
  81. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts.map +1 -0
  82. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +287 -0
  83. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js.map +1 -0
  84. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts +4 -0
  85. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts.map +1 -0
  86. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +14 -0
  87. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js.map +1 -0
  88. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts +7 -0
  89. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -0
  90. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +316 -0
  91. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -0
  92. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts +5 -0
  93. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts.map +1 -0
  94. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js +17 -0
  95. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js.map +1 -0
  96. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts +14 -0
  97. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts.map +1 -0
  98. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js +28 -0
  99. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js.map +1 -0
  100. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +23 -0
  101. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -0
  102. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +61 -0
  103. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -0
  104. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts +1 -7
  105. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts.map +1 -1
  106. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +2 -364
  107. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js.map +1 -1
  108. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  109. package/dist/api/captcha/getImageCaptchaChallenge.js +36 -9
  110. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  111. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  112. package/dist/api/captcha/getPoWCaptchaChallenge.js +49 -7
  113. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  114. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts +7 -0
  115. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -0
  116. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +201 -0
  117. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -0
  118. package/dist/api/captcha/maintenanceModeResponses.d.ts +5 -0
  119. package/dist/api/captcha/maintenanceModeResponses.d.ts.map +1 -0
  120. package/dist/api/captcha/maintenanceModeResponses.js +42 -0
  121. package/dist/api/captcha/maintenanceModeResponses.js.map +1 -0
  122. package/dist/api/captcha/submitImageCaptchaSolution.d.ts +1 -2
  123. package/dist/api/captcha/submitImageCaptchaSolution.d.ts.map +1 -1
  124. package/dist/api/captcha/submitImageCaptchaSolution.js +19 -2
  125. package/dist/api/captcha/submitImageCaptchaSolution.js.map +1 -1
  126. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  127. package/dist/api/captcha/submitPoWCaptchaSolution.js +84 -7
  128. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  129. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts +6 -0
  130. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -0
  131. package/dist/api/captcha/submitPuzzleCaptchaSolution.js +108 -0
  132. package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -0
  133. package/dist/api/captcha.d.ts.map +1 -1
  134. package/dist/api/captcha.js +28 -3
  135. package/dist/api/captcha.js.map +1 -1
  136. package/dist/api/dnsEventUrl.d.ts +3 -0
  137. package/dist/api/dnsEventUrl.d.ts.map +1 -0
  138. package/dist/api/dnsEventUrl.js +25 -0
  139. package/dist/api/dnsEventUrl.js.map +1 -0
  140. package/dist/api/domainMiddleware.d.ts.map +1 -1
  141. package/dist/api/domainMiddleware.js +36 -5
  142. package/dist/api/domainMiddleware.js.map +1 -1
  143. package/dist/api/ipInfoMiddleware.d.ts +4 -0
  144. package/dist/api/ipInfoMiddleware.d.ts.map +1 -0
  145. package/dist/api/ipInfoMiddleware.js +20 -0
  146. package/dist/api/ipInfoMiddleware.js.map +1 -0
  147. package/dist/api/ja4Middleware.d.ts +1 -1
  148. package/dist/api/ja4Middleware.d.ts.map +1 -1
  149. package/dist/api/ja4Middleware.js +1 -1
  150. package/dist/api/ja4Middleware.js.map +1 -1
  151. package/dist/api/startProviderApi.d.ts +9 -0
  152. package/dist/api/startProviderApi.d.ts.map +1 -0
  153. package/dist/api/startProviderApi.js +217 -0
  154. package/dist/api/startProviderApi.js.map +1 -0
  155. package/dist/api/testSiteKey.d.ts +4 -0
  156. package/dist/api/testSiteKey.d.ts.map +1 -0
  157. package/dist/api/testSiteKey.js +17 -0
  158. package/dist/api/testSiteKey.js.map +1 -0
  159. package/dist/api/validateAddress.d.ts +1 -1
  160. package/dist/api/validateAddress.d.ts.map +1 -1
  161. package/dist/api/validateAddress.js.map +1 -1
  162. package/dist/api/verify.d.ts.map +1 -1
  163. package/dist/api/verify.js +145 -10
  164. package/dist/api/verify.js.map +1 -1
  165. package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +31 -1
  166. package/dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs +59 -0
  167. package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +65 -0
  168. package/dist/cjs/api/admin/apiGetAllDecisionMachinesEndpoint.cjs +49 -0
  169. package/dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs +42 -0
  170. package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +5 -5
  171. package/dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs +34 -0
  172. package/dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs +41 -0
  173. package/dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs +42 -0
  174. package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +6 -6
  175. package/dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs +33 -0
  176. package/dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs +35 -0
  177. package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +5 -5
  178. package/dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs +60 -0
  179. package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +7 -7
  180. package/dist/cjs/api/blacklistRequestInspector.cjs +18 -5
  181. package/dist/cjs/api/block.cjs +19 -8
  182. package/dist/cjs/api/captcha/checkSpamEmail.cjs +79 -0
  183. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +123 -0
  184. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +13 -0
  185. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +287 -0
  186. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +14 -0
  187. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +315 -0
  188. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.cjs +17 -0
  189. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs +28 -0
  190. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +61 -0
  191. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +2 -364
  192. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +35 -8
  193. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +48 -6
  194. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +200 -0
  195. package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +42 -0
  196. package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +19 -2
  197. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +82 -5
  198. package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +107 -0
  199. package/dist/cjs/api/captcha.cjs +29 -4
  200. package/dist/cjs/api/dnsEventUrl.cjs +25 -0
  201. package/dist/cjs/api/domainMiddleware.cjs +36 -5
  202. package/dist/cjs/api/ipInfoMiddleware.cjs +20 -0
  203. package/dist/cjs/api/ja4Middleware.cjs +7 -7
  204. package/dist/cjs/api/startProviderApi.cjs +240 -0
  205. package/dist/cjs/api/testSiteKey.cjs +17 -0
  206. package/dist/cjs/api/verify.cjs +144 -9
  207. package/dist/cjs/compositeIpAddress.cjs +6 -6
  208. package/dist/cjs/index.cjs +15 -0
  209. package/dist/cjs/rules/lang.cjs +1 -1
  210. package/dist/cjs/schedulers/updateSpamEmailDomains.cjs +46 -0
  211. package/dist/cjs/services/ipComparison.cjs +9 -10
  212. package/dist/cjs/tasks/captchaManager.cjs +338 -66
  213. package/dist/cjs/tasks/client/clientTasks.cjs +115 -4
  214. package/dist/cjs/tasks/decisionMachine/decisionMachineRunner.cjs +285 -0
  215. package/dist/cjs/tasks/detection/decodeBehavior.cjs +225 -228
  216. package/dist/cjs/tasks/detection/decodeBehavior.js +1 -1
  217. package/dist/cjs/tasks/detection/decodePayload.cjs +707 -635
  218. package/dist/cjs/tasks/detection/decodePayload.js +1 -1
  219. package/dist/cjs/tasks/detection/decodeSimd.cjs +348 -0
  220. package/dist/cjs/tasks/detection/decodeSimd.js +15 -0
  221. package/dist/cjs/tasks/detection/getBotScore.cjs +6 -2
  222. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +149 -43
  223. package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +10 -7
  224. package/dist/cjs/tasks/frictionless/routingMachine.cjs +58 -0
  225. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +371 -57
  226. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +357 -167
  227. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +525 -0
  228. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasksUtils.cjs +7 -0
  229. package/dist/cjs/tasks/spam/checkSpamEmail.cjs +147 -0
  230. package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +41 -0
  231. package/dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs +92 -0
  232. package/dist/cjs/tasks/spam/updateSpamEmailDomains.cjs +58 -0
  233. package/dist/cjs/tasks/tasks.cjs +111 -13
  234. package/dist/cjs/util/usageCounters.cjs +201 -0
  235. package/dist/cjs/util.cjs +3 -4
  236. package/dist/cjs/utils/devicePlatform.cjs +10 -0
  237. package/dist/cjs/utils/dns.cjs +102 -0
  238. package/dist/cjs/utils/honeypot/encoders.cjs +86 -0
  239. package/dist/cjs/utils/honeypot/phraseBank.cjs +47 -0
  240. package/dist/cjs/utils/normalizeRequestIp.cjs +27 -0
  241. package/dist/compositeIpAddress.d.ts +1 -1
  242. package/dist/compositeIpAddress.d.ts.map +1 -1
  243. package/dist/compositeIpAddress.js +1 -1
  244. package/dist/compositeIpAddress.js.map +1 -1
  245. package/dist/index.d.ts +4 -0
  246. package/dist/index.d.ts.map +1 -1
  247. package/dist/index.js +12 -0
  248. package/dist/index.js.map +1 -1
  249. package/dist/rules/lang.js +1 -1
  250. package/dist/rules/lang.js.map +1 -1
  251. package/dist/schedulers/updateSpamEmailDomains.d.ts +4 -0
  252. package/dist/schedulers/updateSpamEmailDomains.d.ts.map +1 -0
  253. package/dist/schedulers/updateSpamEmailDomains.js +46 -0
  254. package/dist/schedulers/updateSpamEmailDomains.js.map +1 -0
  255. package/dist/services/ipComparison.d.ts +2 -1
  256. package/dist/services/ipComparison.d.ts.map +1 -1
  257. package/dist/services/ipComparison.js +3 -4
  258. package/dist/services/ipComparison.js.map +1 -1
  259. package/dist/tasks/captchaManager.d.ts +24 -6
  260. package/dist/tasks/captchaManager.d.ts.map +1 -1
  261. package/dist/tasks/captchaManager.js +336 -64
  262. package/dist/tasks/captchaManager.js.map +1 -1
  263. package/dist/tasks/client/clientTasks.d.ts +49 -2
  264. package/dist/tasks/client/clientTasks.d.ts.map +1 -1
  265. package/dist/tasks/client/clientTasks.js +116 -5
  266. package/dist/tasks/client/clientTasks.js.map +1 -1
  267. package/dist/tasks/dataset/datasetTasks.d.ts +1 -1
  268. package/dist/tasks/dataset/datasetTasks.d.ts.map +1 -1
  269. package/dist/tasks/dataset/datasetTasks.js.map +1 -1
  270. package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts +20 -0
  271. package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts.map +1 -0
  272. package/dist/tasks/decisionMachine/decisionMachineRunner.js +285 -0
  273. package/dist/tasks/decisionMachine/decisionMachineRunner.js.map +1 -0
  274. package/dist/tasks/detection/decodeBehavior.d.ts +2 -2
  275. package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -1
  276. package/dist/tasks/detection/decodeBehavior.js +1 -1
  277. package/dist/tasks/detection/decodeBehavior.js.map +1 -1
  278. package/dist/tasks/detection/decodePayload.d.ts +2 -2
  279. package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
  280. package/dist/tasks/detection/decodePayload.js +1 -1
  281. package/dist/tasks/detection/decodePayload.js.map +1 -1
  282. package/dist/tasks/detection/decodeSimd.d.ts +3 -0
  283. package/dist/tasks/detection/decodeSimd.d.ts.map +1 -0
  284. package/dist/tasks/detection/decodeSimd.js +15 -0
  285. package/dist/tasks/detection/decodeSimd.js.map +1 -0
  286. package/dist/tasks/detection/getBehavioralData.d.ts +1 -1
  287. package/dist/tasks/detection/getBotScore.d.ts +4 -0
  288. package/dist/tasks/detection/getBotScore.d.ts.map +1 -1
  289. package/dist/tasks/detection/getBotScore.js +8 -4
  290. package/dist/tasks/detection/getBotScore.js.map +1 -1
  291. package/dist/tasks/frictionless/frictionlessTasks.d.ts +20 -13
  292. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  293. package/dist/tasks/frictionless/frictionlessTasks.js +147 -43
  294. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  295. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +2 -2
  296. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +1 -1
  297. package/dist/tasks/frictionless/frictionlessTasksUtils.js +10 -7
  298. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +1 -1
  299. package/dist/tasks/frictionless/routingMachine.d.ts +15 -0
  300. package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -0
  301. package/dist/tasks/frictionless/routingMachine.js +58 -0
  302. package/dist/tasks/frictionless/routingMachine.js.map +1 -0
  303. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +14 -10
  304. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  305. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +371 -57
  306. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  307. package/dist/tasks/powCaptcha/powTasks.d.ts +24 -8
  308. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  309. package/dist/tasks/powCaptcha/powTasks.js +358 -168
  310. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  311. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts +32 -0
  312. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -0
  313. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +525 -0
  314. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -0
  315. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts +2 -0
  316. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts.map +1 -0
  317. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js +7 -0
  318. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js.map +1 -0
  319. package/dist/tasks/spam/checkSpamEmail.d.ts +5 -0
  320. package/dist/tasks/spam/checkSpamEmail.d.ts.map +1 -0
  321. package/dist/tasks/spam/checkSpamEmail.js +147 -0
  322. package/dist/tasks/spam/checkSpamEmail.js.map +1 -0
  323. package/dist/tasks/spam/checkTrafficFilter.d.ts +10 -0
  324. package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -0
  325. package/dist/tasks/spam/checkTrafficFilter.js +41 -0
  326. package/dist/tasks/spam/checkTrafficFilter.js.map +1 -0
  327. package/dist/tasks/spam/evaluateEmailSpamRules.d.ts +16 -0
  328. package/dist/tasks/spam/evaluateEmailSpamRules.d.ts.map +1 -0
  329. package/dist/tasks/spam/evaluateEmailSpamRules.js +92 -0
  330. package/dist/tasks/spam/evaluateEmailSpamRules.js.map +1 -0
  331. package/dist/tasks/spam/updateSpamEmailDomains.d.ts +4 -0
  332. package/dist/tasks/spam/updateSpamEmailDomains.d.ts.map +1 -0
  333. package/dist/tasks/spam/updateSpamEmailDomains.js +58 -0
  334. package/dist/tasks/spam/updateSpamEmailDomains.js.map +1 -0
  335. package/dist/tasks/tasks.d.ts +12 -1
  336. package/dist/tasks/tasks.d.ts.map +1 -1
  337. package/dist/tasks/tasks.js +102 -4
  338. package/dist/tasks/tasks.js.map +1 -1
  339. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +4 -0
  340. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -1
  341. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts +2 -0
  342. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts.map +1 -0
  343. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js +107 -0
  344. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js.map +1 -0
  345. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +45 -6
  346. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
  347. package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts +2 -0
  348. package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts.map +1 -0
  349. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +165 -0
  350. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -0
  351. package/dist/tests/integration/decisionMachines.integration.test.d.ts +2 -0
  352. package/dist/tests/integration/decisionMachines.integration.test.d.ts.map +1 -0
  353. package/dist/tests/integration/decisionMachines.integration.test.js +511 -0
  354. package/dist/tests/integration/decisionMachines.integration.test.js.map +1 -0
  355. package/dist/tests/integration/imgCaptcha.integration.test.js +418 -44
  356. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -1
  357. package/dist/tests/integration/ipValidation.integration.test.js +10 -4
  358. package/dist/tests/integration/ipValidation.integration.test.js.map +1 -1
  359. package/dist/tests/integration/mocks/solvedTestCaptchas.js +16 -16
  360. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +1 -1
  361. package/dist/tests/integration/powCaptcha.integration.test.js +218 -23
  362. package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -1
  363. package/dist/tests/integration/registerSitekey.d.ts.map +1 -1
  364. package/dist/tests/integration/registerSitekey.js +2 -0
  365. package/dist/tests/integration/registerSitekey.js.map +1 -1
  366. package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts +2 -0
  367. package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts.map +1 -0
  368. package/dist/tests/integration/routingDecisionMachines.integration.test.js +276 -0
  369. package/dist/tests/integration/routingDecisionMachines.integration.test.js.map +1 -0
  370. package/dist/tests/integration/testUtils.d.ts +4 -0
  371. package/dist/tests/integration/testUtils.d.ts.map +1 -0
  372. package/dist/tests/integration/testUtils.js +15 -0
  373. package/dist/tests/integration/testUtils.js.map +1 -0
  374. package/dist/tests/integration/usageCounters.integration.test.d.ts +2 -0
  375. package/dist/tests/integration/usageCounters.integration.test.d.ts.map +1 -0
  376. package/dist/tests/integration/usageCounters.integration.test.js +103 -0
  377. package/dist/tests/integration/usageCounters.integration.test.js.map +1 -0
  378. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts +2 -0
  379. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts.map +1 -0
  380. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js +63 -0
  381. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js.map +1 -0
  382. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts +2 -0
  383. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts.map +1 -0
  384. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +55 -0
  385. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -0
  386. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts +2 -0
  387. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts.map +1 -0
  388. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js +67 -0
  389. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js.map +1 -0
  390. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts +2 -0
  391. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
  392. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js +56 -0
  393. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js.map +1 -0
  394. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts +2 -0
  395. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts.map +1 -0
  396. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js +90 -0
  397. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js.map +1 -0
  398. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts +2 -0
  399. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
  400. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js +59 -0
  401. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js.map +1 -0
  402. package/dist/tests/unit/api/adminRoutes.unit.test.d.ts +2 -0
  403. package/dist/tests/unit/api/adminRoutes.unit.test.d.ts.map +1 -0
  404. package/dist/tests/unit/api/adminRoutes.unit.test.js +131 -0
  405. package/dist/tests/unit/api/adminRoutes.unit.test.js.map +1 -0
  406. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +79 -2
  407. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
  408. package/dist/tests/unit/api/block.unit.test.d.ts +2 -0
  409. package/dist/tests/unit/api/block.unit.test.d.ts.map +1 -0
  410. package/dist/tests/unit/api/block.unit.test.js +60 -0
  411. package/dist/tests/unit/api/block.unit.test.js.map +1 -0
  412. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts +2 -0
  413. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts.map +1 -0
  414. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js +118 -0
  415. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js.map +1 -0
  416. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts +2 -0
  417. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts.map +1 -0
  418. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js +37 -0
  419. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js.map +1 -0
  420. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts +2 -0
  421. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts.map +1 -0
  422. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js +154 -0
  423. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js.map +1 -0
  424. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts +2 -0
  425. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts.map +1 -0
  426. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js +46 -0
  427. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js.map +1 -0
  428. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts +2 -0
  429. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts.map +1 -0
  430. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js +69 -0
  431. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js.map +1 -0
  432. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts +2 -0
  433. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts.map +1 -0
  434. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js +98 -0
  435. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js.map +1 -0
  436. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts +2 -0
  437. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts.map +1 -0
  438. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js +60 -0
  439. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js.map +1 -0
  440. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts +2 -0
  441. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts.map +1 -0
  442. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +134 -0
  443. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -0
  444. package/dist/tests/unit/api/captcha.unit.test.d.ts +2 -0
  445. package/dist/tests/unit/api/captcha.unit.test.d.ts.map +1 -0
  446. package/dist/tests/unit/api/captcha.unit.test.js +39 -0
  447. package/dist/tests/unit/api/captcha.unit.test.js.map +1 -0
  448. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +195 -2
  449. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  450. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts +2 -0
  451. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts.map +1 -0
  452. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js +126 -0
  453. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js.map +1 -0
  454. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +103 -33
  455. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +1 -1
  456. package/dist/tests/unit/api/ja4Middleware.unit.test.js +130 -49
  457. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +1 -1
  458. package/dist/tests/unit/api/public.unit.test.d.ts +2 -0
  459. package/dist/tests/unit/api/public.unit.test.d.ts.map +1 -0
  460. package/dist/tests/unit/api/public.unit.test.js +198 -0
  461. package/dist/tests/unit/api/public.unit.test.js.map +1 -0
  462. package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts +2 -0
  463. package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts.map +1 -0
  464. package/dist/tests/unit/api/robotsMiddleware.unit.test.js +50 -0
  465. package/dist/tests/unit/api/robotsMiddleware.unit.test.js.map +1 -0
  466. package/dist/tests/unit/api/testSiteKey.unit.test.d.ts +2 -0
  467. package/dist/tests/unit/api/testSiteKey.unit.test.d.ts.map +1 -0
  468. package/dist/tests/unit/api/testSiteKey.unit.test.js +51 -0
  469. package/dist/tests/unit/api/testSiteKey.unit.test.js.map +1 -0
  470. package/dist/tests/unit/api/validateAddress.unit.test.d.ts +2 -0
  471. package/dist/tests/unit/api/validateAddress.unit.test.d.ts.map +1 -0
  472. package/dist/tests/unit/api/validateAddress.unit.test.js +141 -0
  473. package/dist/tests/unit/api/validateAddress.unit.test.js.map +1 -0
  474. package/dist/tests/unit/compositeIpAddress.unit.test.js +132 -60
  475. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -1
  476. package/dist/tests/unit/pairs.unit.test.js +174 -28
  477. package/dist/tests/unit/pairs.unit.test.js.map +1 -1
  478. package/dist/tests/unit/rules/lang.unit.test.d.ts +2 -0
  479. package/dist/tests/unit/rules/lang.unit.test.d.ts.map +1 -0
  480. package/dist/tests/unit/rules/lang.unit.test.js +207 -0
  481. package/dist/tests/unit/rules/lang.unit.test.js.map +1 -0
  482. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +2 -2
  483. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -1
  484. package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts +2 -0
  485. package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts.map +1 -0
  486. package/dist/tests/unit/schedulers/getClientList.unit.test.js +114 -0
  487. package/dist/tests/unit/schedulers/getClientList.unit.test.js.map +1 -0
  488. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts +2 -0
  489. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts.map +1 -0
  490. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js +114 -0
  491. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js.map +1 -0
  492. package/dist/tests/unit/services/ipComparison.unit.test.js +49 -35
  493. package/dist/tests/unit/services/ipComparison.unit.test.js.map +1 -1
  494. package/dist/tests/unit/tasks/captchaManager.unit.test.js +260 -5
  495. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  496. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +16 -5
  497. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
  498. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +1 -1
  499. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -1
  500. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts +2 -0
  501. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts.map +1 -0
  502. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js +213 -0
  503. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js.map +1 -0
  504. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts +2 -0
  505. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts.map +1 -0
  506. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js +304 -0
  507. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js.map +1 -0
  508. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts +2 -0
  509. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts.map +1 -0
  510. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +115 -0
  511. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -0
  512. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +207 -2
  513. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
  514. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +83 -48
  515. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +1 -1
  516. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts +2 -0
  517. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts.map +1 -0
  518. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js +169 -0
  519. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js.map +1 -0
  520. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +719 -9
  521. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
  522. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +9 -3
  523. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -1
  524. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +1284 -68
  525. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
  526. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +152 -52
  527. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
  528. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts +2 -0
  529. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts.map +1 -0
  530. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +313 -0
  531. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -0
  532. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts +2 -0
  533. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts.map +1 -0
  534. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js +29 -0
  535. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js.map +1 -0
  536. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts +2 -0
  537. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts.map +1 -0
  538. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js +434 -0
  539. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js.map +1 -0
  540. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts +2 -0
  541. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts.map +1 -0
  542. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +112 -0
  543. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -0
  544. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts +2 -0
  545. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts.map +1 -0
  546. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js +94 -0
  547. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js.map +1 -0
  548. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts +2 -0
  549. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts.map +1 -0
  550. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js +94 -0
  551. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js.map +1 -0
  552. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts +2 -0
  553. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts.map +1 -0
  554. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +208 -0
  555. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -0
  556. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +26 -0
  557. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -0
  558. package/dist/tests/unit/testUtils/mockProviderEnv.js +149 -0
  559. package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -0
  560. package/dist/tests/unit/util/redisCache.unit.test.d.ts +2 -0
  561. package/dist/tests/unit/util/redisCache.unit.test.d.ts.map +1 -0
  562. package/dist/tests/unit/util/redisCache.unit.test.js +257 -0
  563. package/dist/tests/unit/util/redisCache.unit.test.js.map +1 -0
  564. package/dist/tests/unit/util/usageCounters.unit.test.d.ts +2 -0
  565. package/dist/tests/unit/util/usageCounters.unit.test.d.ts.map +1 -0
  566. package/dist/tests/unit/util/usageCounters.unit.test.js +242 -0
  567. package/dist/tests/unit/util/usageCounters.unit.test.js.map +1 -0
  568. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +2 -0
  569. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +1 -1
  570. package/dist/tests/unit/util.ipDistance.unit.test.js +9 -3
  571. package/dist/tests/unit/util.ipDistance.unit.test.js.map +1 -1
  572. package/dist/tests/unit/util.unit.test.js +152 -155
  573. package/dist/tests/unit/util.unit.test.js.map +1 -1
  574. package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts +2 -0
  575. package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts.map +1 -0
  576. package/dist/tests/unit/utils/devicePlatform.unit.test.js +58 -0
  577. package/dist/tests/unit/utils/devicePlatform.unit.test.js.map +1 -0
  578. package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts +2 -0
  579. package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts.map +1 -0
  580. package/dist/tests/unit/utils/hashUserAgent.unit.test.js +52 -0
  581. package/dist/tests/unit/utils/hashUserAgent.unit.test.js.map +1 -0
  582. package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts +2 -0
  583. package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts.map +1 -0
  584. package/dist/tests/unit/utils/hashUserIp.unit.test.js +81 -0
  585. package/dist/tests/unit/utils/hashUserIp.unit.test.js.map +1 -0
  586. package/dist/util/usageCounters.d.ts +22 -0
  587. package/dist/util/usageCounters.d.ts.map +1 -0
  588. package/dist/util/usageCounters.js +201 -0
  589. package/dist/util/usageCounters.js.map +1 -0
  590. package/dist/util.d.ts +3 -2
  591. package/dist/util.d.ts.map +1 -1
  592. package/dist/util.js +3 -4
  593. package/dist/util.js.map +1 -1
  594. package/dist/utils/devicePlatform.d.ts +5 -0
  595. package/dist/utils/devicePlatform.d.ts.map +1 -0
  596. package/dist/utils/devicePlatform.js +10 -0
  597. package/dist/utils/devicePlatform.js.map +1 -0
  598. package/dist/utils/dns.d.ts +22 -0
  599. package/dist/utils/dns.d.ts.map +1 -0
  600. package/dist/utils/dns.js +84 -0
  601. package/dist/utils/dns.js.map +1 -0
  602. package/dist/utils/honeypot/encoders.d.ts +3 -0
  603. package/dist/utils/honeypot/encoders.d.ts.map +1 -0
  604. package/dist/utils/honeypot/encoders.js +86 -0
  605. package/dist/utils/honeypot/encoders.js.map +1 -0
  606. package/dist/utils/honeypot/phraseBank.d.ts +3 -0
  607. package/dist/utils/honeypot/phraseBank.d.ts.map +1 -0
  608. package/dist/utils/honeypot/phraseBank.js +47 -0
  609. package/dist/utils/honeypot/phraseBank.js.map +1 -0
  610. package/dist/utils/normalizeRequestIp.d.ts +3 -0
  611. package/dist/utils/normalizeRequestIp.d.ts.map +1 -0
  612. package/dist/utils/normalizeRequestIp.js +27 -0
  613. package/dist/utils/normalizeRequestIp.js.map +1 -0
  614. package/package.json +27 -19
  615. package/dist/cjs/services/ipInfo.cjs +0 -87
  616. package/dist/services/ipInfo.d.ts +0 -3
  617. package/dist/services/ipInfo.d.ts.map +0 -1
  618. package/dist/services/ipInfo.js +0 -87
  619. package/dist/services/ipInfo.js.map +0 -1
  620. package/dist/tests/unit/services/ipInfo.unit.test.d.ts +0 -2
  621. package/dist/tests/unit/services/ipInfo.unit.test.d.ts.map +0 -1
  622. package/dist/tests/unit/services/ipInfo.unit.test.js +0 -210
  623. package/dist/tests/unit/services/ipInfo.unit.test.js.map +0 -1
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ipInfoMiddleware = (env) => {
4
+ return async (req, _res, next) => {
5
+ try {
6
+ const ip = req.ip;
7
+ if (ip && env.ipInfoService.isAvailable()) {
8
+ req.ipInfo = await env.ipInfoService.lookup(ip);
9
+ }
10
+ next();
11
+ } catch (err) {
12
+ req.logger?.warn?.(() => ({
13
+ msg: "IP info middleware failed",
14
+ err
15
+ }));
16
+ next();
17
+ }
18
+ };
19
+ };
20
+ exports.ipInfoMiddleware = ipInfoMiddleware;
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const node_stream = require("node:stream");
4
4
  const apiExpressRouter = require("@prosopo/api-express-router");
5
- const common = require("@prosopo/common");
5
+ const logger = require("@prosopo/logger");
6
6
  const utilCrypto = require("@prosopo/util-crypto");
7
7
  const readTlsClientHello = require("read-tls-client-hello");
8
8
  var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
9
9
  const DEFAULT_JA4 = "ja4";
10
- const getJA4 = async (headers, logger) => {
11
- logger = logger || common.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/ja4Middleware.cjs", document.baseURI).href);
10
+ const getJA4 = async (headers, logger$1) => {
11
+ logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/ja4Middleware.cjs", document.baseURI).href);
12
12
  if (process.env.NODE_ENV === "development") {
13
13
  return {
14
14
  ja4PlusFingerprint: `${DEFAULT_JA4}${utilCrypto.randomAsHex().slice(28, 32)}`
@@ -18,17 +18,17 @@ const getJA4 = async (headers, logger) => {
18
18
  const xTlsClientHello = (headers["x-tls-clienthello"] || "").toString();
19
19
  const xTlsVersion = (headers["x-tls-version"] || "").toString().toLowerCase();
20
20
  const clientHelloBuffer = Buffer.from(xTlsClientHello, "base64");
21
- logger.debug(() => ({
21
+ logger$1.debug(() => ({
22
22
  msg: "ClientHello First Bytes:",
23
23
  data: { hex: clientHelloBuffer.subarray(0, 5).toString("hex") }
24
24
  }));
25
25
  if (clientHelloBuffer[5] !== 1) {
26
- logger.debug(() => ({
26
+ logger$1.debug(() => ({
27
27
  msg: "Invalid ClientHello message: First byte is not 0x01"
28
28
  }));
29
29
  return { ja4PlusFingerprint: DEFAULT_JA4 };
30
30
  }
31
- logger.debug(() => ({
31
+ logger$1.debug(() => ({
32
32
  msg: "Headers TLS Version:",
33
33
  data: { xTlsVersion }
34
34
  }));
@@ -41,7 +41,7 @@ const getJA4 = async (headers, logger) => {
41
41
  const ja4PlusFingerprint = readTlsClientHello.calculateJa4FromHelloData(clientHello);
42
42
  return { ja4PlusFingerprint };
43
43
  } catch (e) {
44
- logger.error(() => ({
44
+ logger$1.error(() => ({
45
45
  msg: "Error generating JA4+ fingerprint:",
46
46
  err: e instanceof Error ? e : new Error(String(e))
47
47
  }));
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (let key of __getOwnPropNames(from))
11
+ if (!__hasOwnProp.call(to, key) && key !== except)
12
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ }
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
25
+ const fs = require("node:fs");
26
+ const https = require("node:https");
27
+ const path = require("node:path");
28
+ const node_url = require("node:url");
29
+ const apiExpressRouter = require("@prosopo/api-express-router");
30
+ const loadBalancer = require("@prosopo/load-balancer");
31
+ const locale = require("@prosopo/locale");
32
+ const logger = require("@prosopo/logger");
33
+ const types = require("@prosopo/types");
34
+ const api = require("@prosopo/user-access-policy/api");
35
+ const node = require("@prosopo/util/node");
36
+ const cors = require("cors");
37
+ const express = require("express");
38
+ const rateLimit = require("express-rate-limit");
39
+ const createApiAdminRoutesProvider = require("./admin/createApiAdminRoutesProvider.cjs");
40
+ const block = require("./block.cjs");
41
+ const captcha = require("./captcha.cjs");
42
+ const domainMiddleware = require("./domainMiddleware.cjs");
43
+ const headerCheckMiddleware = require("./headerCheckMiddleware.cjs");
44
+ const ignoreMiddleware = require("./ignoreMiddleware.cjs");
45
+ const ipInfoMiddleware = require("./ipInfoMiddleware.cjs");
46
+ const ja4Middleware = require("./ja4Middleware.cjs");
47
+ const _public = require("./public.cjs");
48
+ const robotsMiddleware = require("./robotsMiddleware.cjs");
49
+ const verify = require("./verify.cjs");
50
+ var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
51
+ const __dirname$1 = path.dirname(node_url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/startProviderApi.cjs", document.baseURI).href));
52
+ const certPath = path.resolve(__dirname$1, "../../../../certs");
53
+ const keyPath = path.join(certPath, "server.key");
54
+ const crtPath = path.join(certPath, "server.crt");
55
+ const isTlsAvailable = () => {
56
+ return fs.existsSync(keyPath) && fs.existsSync(crtPath);
57
+ };
58
+ const getClientApiPathsExpectingProsopoHeaders = () => {
59
+ const paths = Object.values(types.ClientApiPaths).filter(
60
+ (path2) => path2.indexOf("verify") === -1 && path2.indexOf("spam") === -1
61
+ );
62
+ return paths;
63
+ };
64
+ const getUserFromJWT = (req) => {
65
+ try {
66
+ const authHeader = req.headers.Authorization || req.headers.authorization;
67
+ if (!authHeader || typeof authHeader !== "string") {
68
+ return void 0;
69
+ }
70
+ const jwt = authHeader.replace("Bearer ", "");
71
+ if (!jwt) {
72
+ return void 0;
73
+ }
74
+ const parts = jwt.split(".");
75
+ if (parts.length !== 3 || !parts[1]) {
76
+ return void 0;
77
+ }
78
+ const payload = JSON.parse(
79
+ Buffer.from(parts[1], "base64url").toString("utf-8")
80
+ );
81
+ return payload.sub;
82
+ } catch (e) {
83
+ return void 0;
84
+ }
85
+ };
86
+ async function startProviderApi(env, admin = false, port) {
87
+ env.logger.info(() => ({ msg: "Starting Prosopo API" }));
88
+ const providerCacheDir = path.resolve("./provider-list-cache");
89
+ loadBalancer.setProviderLoader(async (environment) => {
90
+ if (environment === "development") {
91
+ const { loadBalancer: loadBalancer2 } = await import("@prosopo/load-balancer");
92
+ return loadBalancer2(environment);
93
+ }
94
+ const url = loadBalancer.getLoadBalancerUrl(environment);
95
+ const filePath = await node.cacheFile(
96
+ providerCacheDir,
97
+ url,
98
+ env.logger,
99
+ "provider-list-",
100
+ ".json"
101
+ );
102
+ const text = fs.readFileSync(filePath, "utf-8");
103
+ const providers = JSON.parse(text);
104
+ return loadBalancer.convertHostedProvider(providers);
105
+ });
106
+ const apiApp = express();
107
+ const apiPort = port || env.config.server?.port;
108
+ const apiEndpointAdapter = apiExpressRouter.createApiExpressDefaultEndpointAdapter(
109
+ logger.parseLogLevel(env.config.logLevel)
110
+ );
111
+ let apiRuleRoutesProvider;
112
+ let apiAdminRoutesProvider;
113
+ try {
114
+ apiRuleRoutesProvider = new api.AccessRuleApiRoutes(
115
+ env.getDb().getUserAccessRulesStorage(),
116
+ env.logger
117
+ );
118
+ apiAdminRoutesProvider = createApiAdminRoutesProvider.createApiAdminRoutesProvider(env);
119
+ } catch (err) {
120
+ env.logger.warn(() => ({
121
+ msg: "Skipping admin/access-rule routes; DB unavailable",
122
+ err
123
+ }));
124
+ }
125
+ const clientPathsExcludingVerify = getClientApiPathsExpectingProsopoHeaders();
126
+ env.logger.debug(() => ({
127
+ msg: "Adding headerCheckMiddleware",
128
+ paths: clientPathsExcludingVerify
129
+ }));
130
+ apiApp.set("trust proxy", 1);
131
+ apiApp.use(cors({ exposedHeaders: ["x-prosopo-meta"] }));
132
+ apiApp.use(express.json({ limit: "50mb" }));
133
+ apiApp.use(_public.publicRouter(env));
134
+ const isTestOrDevelopmentEnv = process.env.NODE_ENV === "test" || env.config.defaultEnvironment === "development";
135
+ if (!isTestOrDevelopmentEnv) {
136
+ const configRateLimits = env.config.rateLimits;
137
+ const rateLimits = {
138
+ ...configRateLimits,
139
+ ...api.getExpressApiRuleRateLimits()
140
+ };
141
+ const adminPaths = Object.values(types.AdminApiPaths);
142
+ for (const [path2, limit] of Object.entries(rateLimits)) {
143
+ const enumPath = path2;
144
+ if (adminPaths.includes(enumPath)) {
145
+ apiApp.use(
146
+ enumPath,
147
+ rateLimit({
148
+ ...limit,
149
+ keyGenerator: (req) => {
150
+ const user = getUserFromJWT(req);
151
+ return user || req.ip || "unknown";
152
+ }
153
+ })
154
+ );
155
+ } else if (path2 === types.ClientApiPaths.VerifyImageCaptchaSolutionDapp || path2 === types.ClientApiPaths.VerifyPowCaptchaSolution) {
156
+ apiApp.use(
157
+ enumPath,
158
+ rateLimit({
159
+ ...limit,
160
+ keyGenerator: (req) => {
161
+ const siteKey = req.headers["prosopo-site-key"];
162
+ return siteKey || req.ip || "unknown";
163
+ }
164
+ })
165
+ );
166
+ } else {
167
+ apiApp.use(enumPath, rateLimit(limit));
168
+ }
169
+ }
170
+ }
171
+ const i18Middleware = await locale.i18nMiddleware({});
172
+ apiApp.use(robotsMiddleware.robotsMiddleware());
173
+ apiApp.use(ignoreMiddleware.ignoreMiddleware());
174
+ apiApp.use(apiExpressRouter.requestLoggerMiddleware(env));
175
+ apiApp.use(i18Middleware);
176
+ apiApp.use(ja4Middleware.ja4Middleware(env));
177
+ apiApp.use(ipInfoMiddleware.ipInfoMiddleware(env));
178
+ apiApp.use(clientPathsExcludingVerify, headerCheckMiddleware.headerCheckMiddleware(env));
179
+ apiApp.use(verify.prosopoVerifyRouter(env));
180
+ env.logger.info(() => ({ msg: "Enabling admin auth middleware" }));
181
+ apiApp.use(
182
+ "/v1/prosopo/provider/admin",
183
+ apiExpressRouter.authMiddleware(env.pair, env.authAccount)
184
+ );
185
+ if (apiRuleRoutesProvider) {
186
+ const userAccessRuleRoutes = apiRuleRoutesProvider.getRoutes();
187
+ for (const userAccessRuleRoute in userAccessRuleRoutes) {
188
+ apiApp.use(
189
+ userAccessRuleRoute,
190
+ apiExpressRouter.authMiddleware(env.pair, env.authAccount)
191
+ );
192
+ }
193
+ apiApp.use(
194
+ apiExpressRouter.apiExpressRouterFactory.createRouter(
195
+ apiRuleRoutesProvider,
196
+ apiEndpointAdapter
197
+ )
198
+ );
199
+ }
200
+ if (apiAdminRoutesProvider) {
201
+ apiApp.use(
202
+ apiExpressRouter.apiExpressRouterFactory.createRouter(
203
+ apiAdminRoutesProvider,
204
+ // unlike the default one, it should have errorStatusCode as 400
205
+ apiExpressRouter.createApiExpressDefaultEndpointAdapter(
206
+ logger.parseLogLevel(env.config.logLevel),
207
+ 400
208
+ )
209
+ )
210
+ );
211
+ }
212
+ apiApp.use(block.blockMiddleware(env));
213
+ apiApp.use("/v1/prosopo/provider/client/", domainMiddleware.domainMiddleware(env));
214
+ apiApp.use(captcha.prosopoRouter(env));
215
+ const useTls = fs.existsSync(keyPath) && fs.existsSync(crtPath);
216
+ if (useTls) {
217
+ env.logger.info(() => ({ msg: "Starting Provider API with HTTPS" }));
218
+ const httpsOptions = {
219
+ key: fs.readFileSync(keyPath),
220
+ cert: fs.readFileSync(crtPath)
221
+ };
222
+ const httpsServer = https.createServer(httpsOptions, apiApp);
223
+ return httpsServer.listen(apiPort, () => {
224
+ env.logger.info(() => ({
225
+ data: { apiPort, protocol: "https" },
226
+ msg: "Prosopo app listening with HTTPS"
227
+ }));
228
+ });
229
+ }
230
+ return apiApp.listen(apiPort, () => {
231
+ env.logger.info(() => ({
232
+ data: { apiPort },
233
+ msg: "Prosopo app listening"
234
+ }));
235
+ });
236
+ }
237
+ exports.getClientApiPathsExpectingProsopoHeaders = getClientApiPathsExpectingProsopoHeaders;
238
+ exports.getUserFromJWT = getUserFromJWT;
239
+ exports.isTlsAvailable = isTlsAvailable;
240
+ exports.startProviderApi = startProviderApi;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const types = require("@prosopo/types");
4
+ const isReservedTestSiteKey = (siteKey) => types.getTestSiteKeyMode(siteKey) !== null;
5
+ const resolveTestSiteKeyVerdict = (siteKey, logger) => {
6
+ const mode = types.getTestSiteKeyMode(siteKey);
7
+ if (mode === null) {
8
+ return null;
9
+ }
10
+ logger?.warn(() => ({
11
+ msg: "Reserved TEST site key - forcing deterministic captcha verdict",
12
+ data: { siteKey, mode }
13
+ }));
14
+ return mode === types.TestSiteKeyMode.Pass;
15
+ };
16
+ exports.isReservedTestSiteKey = isReservedTestSiteKey;
17
+ exports.resolveTestSiteKeyVerdict = resolveTestSiteKeyVerdict;
@@ -7,9 +7,19 @@ const utilCrypto = require("@prosopo/util-crypto");
7
7
  const express = require("express");
8
8
  const tasks = require("../tasks/tasks.cjs");
9
9
  const apiToggleMaintenanceModeEndpoint = require("./admin/apiToggleMaintenanceModeEndpoint.cjs");
10
+ const testSiteKey = require("./testSiteKey.cjs");
10
11
  function prosopoVerifyRouter(env) {
11
12
  const router = express.Router();
12
- const userAccessRulesStorage = env.getDb().getUserAccessRulesStorage();
13
+ let userAccessRulesStorage;
14
+ try {
15
+ userAccessRulesStorage = env.getDb().getUserAccessRulesStorage();
16
+ } catch (err) {
17
+ env.logger.warn(() => ({
18
+ msg: "User access rules storage unavailable; verify endpoints will skip access-policy checks",
19
+ err
20
+ }));
21
+ userAccessRulesStorage = void 0;
22
+ }
13
23
  router.post(
14
24
  types.ClientApiPaths.VerifyImageCaptchaSolutionDapp,
15
25
  async (req, res, next) => {
@@ -36,9 +46,17 @@ function prosopoVerifyRouter(env) {
36
46
  })
37
47
  );
38
48
  }
39
- const { dappSignature, token, ip, maxVerifiedTime } = parsed;
49
+ const { dappSignature, token, ip, maxVerifiedTime, email } = parsed;
40
50
  try {
41
51
  const { user, dapp, timestamp, commitmentId } = types.decodeProcaptchaOutput(token);
52
+ const testVerdict = testSiteKey.resolveTestSiteKeyVerdict(dapp, req.logger);
53
+ if (testVerdict !== null) {
54
+ const verificationResponse2 = {
55
+ status: "ok",
56
+ verified: testVerdict
57
+ };
58
+ return res.json(verificationResponse2);
59
+ }
42
60
  utilCrypto.validateAddress(dapp, false, 42);
43
61
  utilCrypto.validateAddress(user, false, 42);
44
62
  const clientRecord = await tasks$1.db.getClientRecord(dapp);
@@ -61,7 +79,13 @@ function prosopoVerifyRouter(env) {
61
79
  maxVerifiedTime,
62
80
  ip,
63
81
  clientRecord.settings.disallowWebView,
64
- clientRecord.settings.contextAware?.enabled
82
+ clientRecord.settings.contextAware?.enabled,
83
+ userAccessRulesStorage,
84
+ email,
85
+ clientRecord.settings.spamEmailDomainCheckEnabled,
86
+ clientRecord.settings.spamFilter,
87
+ clientRecord.settings.trafficFilter,
88
+ clientRecord.settings.storeMetadata
65
89
  );
66
90
  req.logger.debug(() => ({ data: { response } }));
67
91
  const verificationResponse = tasks$1.imgCaptchaManager.getVerificationResponse(
@@ -69,7 +93,8 @@ function prosopoVerifyRouter(env) {
69
93
  clientRecord,
70
94
  req.i18n.t,
71
95
  response[types.ApiParams.score],
72
- response[types.ApiParams.commitmentId]
96
+ response[types.ApiParams.commitmentId],
97
+ response[types.ApiParams.status]
73
98
  );
74
99
  res.json(verificationResponse);
75
100
  } catch (err) {
@@ -111,8 +136,16 @@ function prosopoVerifyRouter(env) {
111
136
  );
112
137
  }
113
138
  try {
114
- const { token, dappSignature, verifiedTimeout, ip } = parsed;
139
+ const { token, dappSignature, verifiedTimeout, ip, email } = parsed;
115
140
  const { dapp, user, timestamp, challenge } = types.decodeProcaptchaOutput(token);
141
+ const testVerdict = testSiteKey.resolveTestSiteKeyVerdict(dapp, req.logger);
142
+ if (testVerdict !== null) {
143
+ const verificationResponse2 = {
144
+ status: "ok",
145
+ verified: testVerdict
146
+ };
147
+ return res.json(verificationResponse2);
148
+ }
116
149
  utilCrypto.validateAddress(dapp, false, 42);
117
150
  utilCrypto.validateAddress(user, false, 42);
118
151
  const clientRecord = await tasks$1.db.getClientRecord(dapp);
@@ -134,15 +167,114 @@ function prosopoVerifyRouter(env) {
134
167
  }
135
168
  const dappPair = env.keyring.addFromAddress(dapp);
136
169
  apiExpressRouter.verifySignature(dappSignature, timestamp.toString(), dappPair);
137
- const { verified, score } = await tasks$1.powCaptchaManager.serverVerifyPowCaptchaSolution(
170
+ const { verified, score, reason } = await tasks$1.powCaptchaManager.serverVerifyPowCaptchaSolution(
138
171
  dapp,
139
172
  challenge,
140
173
  verifiedTimeout,
141
174
  env,
142
175
  ip,
143
- userAccessRulesStorage
176
+ userAccessRulesStorage,
177
+ email,
178
+ clientRecord.settings.spamEmailDomainCheckEnabled,
179
+ clientRecord.settings.spamFilter,
180
+ clientRecord.settings.trafficFilter,
181
+ clientRecord.settings.storeMetadata
144
182
  );
145
183
  const verificationResponse = tasks$1.powCaptchaManager.getVerificationResponse(
184
+ verified,
185
+ clientRecord,
186
+ req.i18n.t,
187
+ score,
188
+ reason
189
+ );
190
+ return res.json(verificationResponse);
191
+ } catch (err) {
192
+ req.logger.error(() => ({
193
+ msg: "Error in verifyPowCaptchaSolution",
194
+ err,
195
+ data: { body: req.body }
196
+ }));
197
+ return next(
198
+ new common.ProsopoApiError("API.BAD_REQUEST", {
199
+ context: { code: 500, error: err },
200
+ i18n: req.i18n,
201
+ logger: req.logger
202
+ })
203
+ );
204
+ }
205
+ }
206
+ );
207
+ router.post(
208
+ types.ClientApiPaths.VerifyPuzzleCaptchaSolution,
209
+ async (req, res, next) => {
210
+ const tasks$1 = new tasks.Tasks(env, req.logger);
211
+ if (apiToggleMaintenanceModeEndpoint.getMaintenanceMode()) {
212
+ req.logger.info(() => ({
213
+ msg: "Maintenance mode active - returning verified for puzzle captcha verification"
214
+ }));
215
+ const verificationResponse = {
216
+ status: "ok",
217
+ verified: true
218
+ };
219
+ return res.json(verificationResponse);
220
+ }
221
+ let parsed;
222
+ try {
223
+ parsed = types.ServerPuzzleCaptchaVerifyRequestBody.parse(req.body);
224
+ } catch (err) {
225
+ return next(
226
+ new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
227
+ context: { code: 400, error: err, body: req.body },
228
+ i18n: req.i18n,
229
+ logger: req.logger
230
+ })
231
+ );
232
+ }
233
+ try {
234
+ const { token, dappSignature, verifiedTimeout, ip, email } = parsed;
235
+ const { dapp, user, timestamp, challenge } = types.decodeProcaptchaOutput(token);
236
+ const testVerdict = testSiteKey.resolveTestSiteKeyVerdict(dapp, req.logger);
237
+ if (testVerdict !== null) {
238
+ const verificationResponse2 = {
239
+ status: "ok",
240
+ verified: testVerdict
241
+ };
242
+ return res.json(verificationResponse2);
243
+ }
244
+ utilCrypto.validateAddress(dapp, false, 42);
245
+ utilCrypto.validateAddress(user, false, 42);
246
+ const clientRecord = await tasks$1.db.getClientRecord(dapp);
247
+ if (!clientRecord) {
248
+ return next(
249
+ new common.ProsopoApiError("API.SITE_KEY_NOT_REGISTERED", {
250
+ context: { code: 400, siteKey: dapp },
251
+ i18n: req.i18n,
252
+ logger: req.logger
253
+ })
254
+ );
255
+ }
256
+ if (!challenge) {
257
+ const unverifiedResponse = {
258
+ status: req.i18n.t("API.USER_NOT_VERIFIED"),
259
+ [types.ApiParams.verified]: false
260
+ };
261
+ return res.json(unverifiedResponse);
262
+ }
263
+ const dappPair = env.keyring.addFromAddress(dapp);
264
+ apiExpressRouter.verifySignature(dappSignature, timestamp.toString(), dappPair);
265
+ const { verified, score } = await tasks$1.puzzleCaptchaManager.serverVerifyPuzzleCaptchaSolution(
266
+ dapp,
267
+ challenge,
268
+ verifiedTimeout,
269
+ env,
270
+ ip,
271
+ userAccessRulesStorage,
272
+ email,
273
+ clientRecord.settings.spamEmailDomainCheckEnabled,
274
+ clientRecord.settings.trafficFilter,
275
+ clientRecord.settings.storeMetadata
276
+ );
277
+ const verificationResponse = tasks$1.puzzleCaptchaManager.getVerificationResponse(
146
278
  verified,
147
279
  clientRecord,
148
280
  req.i18n.t,
@@ -150,8 +282,11 @@ function prosopoVerifyRouter(env) {
150
282
  );
151
283
  return res.json(verificationResponse);
152
284
  } catch (err) {
153
- console.error("\nError in verifyPowCaptchaSolution:", err);
154
- req.logger.error(() => ({ err, data: { body: req.body } }));
285
+ req.logger.error(() => ({
286
+ msg: "Error in verifyPuzzleCaptchaSolution",
287
+ err,
288
+ data: { body: req.body }
289
+ }));
155
290
  return next(
156
291
  new common.ProsopoApiError("API.BAD_REQUEST", {
157
292
  context: { code: 500, error: err },
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const typesDatabase = require("@prosopo/types-database");
3
+ const types = require("@prosopo/types");
4
4
  const util = require("@prosopo/util");
5
5
  const ipAddress = require("ip-address");
6
6
  const V6_SHIFT = 64n;
@@ -12,7 +12,7 @@ const getCompositeIpAddress = (ip) => {
12
12
  } catch (e) {
13
13
  return {
14
14
  lower: 0n,
15
- type: typesDatabase.IpAddressType.v4
15
+ type: types.IpAddressType.v4
16
16
  };
17
17
  }
18
18
  return getCompositeFromIpAddress(ipAddress2);
@@ -22,21 +22,21 @@ const getCompositeFromIpAddress = (ipAddress$1) => {
22
22
  if (ipAddress$1 instanceof ipAddress.Address4) {
23
23
  return {
24
24
  lower: numericIp,
25
- type: typesDatabase.IpAddressType.v4
25
+ type: types.IpAddressType.v4
26
26
  };
27
27
  }
28
28
  ipAddress$1;
29
29
  return {
30
30
  lower: numericIp & v6_LOWER_MASK,
31
31
  upper: numericIp >> V6_SHIFT,
32
- type: typesDatabase.IpAddressType.v6
32
+ type: types.IpAddressType.v6
33
33
  };
34
34
  };
35
35
  const getIpAddressFromComposite = (compositeIpAddress) => {
36
36
  switch (compositeIpAddress.type) {
37
- case typesDatabase.IpAddressType.v4:
37
+ case types.IpAddressType.v4:
38
38
  return ipAddress.Address4.fromBigInt(getBigInt(compositeIpAddress.lower));
39
- case typesDatabase.IpAddressType.v6:
39
+ case types.IpAddressType.v6:
40
40
  return ipAddress.Address6.fromBigInt(
41
41
  getBigInt(compositeIpAddress.upper) << V6_SHIFT | getBigInt(compositeIpAddress.lower) & v6_LOWER_MASK
42
42
  );
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  require("./tasks/index.cjs");
4
+ const updateSpamEmailDomains = require("./tasks/spam/updateSpamEmailDomains.cjs");
4
5
  const util = require("./util.cjs");
5
6
  const block = require("./api/block.cjs");
6
7
  const captcha = require("./api/captcha.cjs");
@@ -8,9 +9,11 @@ const verify = require("./api/verify.cjs");
8
9
  const ja4Middleware = require("./api/ja4Middleware.cjs");
9
10
  const _public = require("./api/public.cjs");
10
11
  const domainMiddleware = require("./api/domainMiddleware.cjs");
12
+ const startProviderApi = require("./api/startProviderApi.cjs");
11
13
  const captchaScheduler = require("./schedulers/captchaScheduler.cjs");
12
14
  const getClientList = require("./schedulers/getClientList.cjs");
13
15
  const setClientEntropy = require("./schedulers/setClientEntropy.cjs");
16
+ const updateSpamEmailDomains$1 = require("./schedulers/updateSpamEmailDomains.cjs");
14
17
  const headerCheckMiddleware = require("./api/headerCheckMiddleware.cjs");
15
18
  const createApiAdminRoutesProvider = require("./api/admin/createApiAdminRoutesProvider.cjs");
16
19
  const ignoreMiddleware = require("./api/ignoreMiddleware.cjs");
@@ -18,7 +21,10 @@ const robotsMiddleware = require("./api/robotsMiddleware.cjs");
18
21
  const compositeIpAddress = require("./compositeIpAddress.cjs");
19
22
  const ipComparison = require("./services/ipComparison.cjs");
20
23
  const blacklistRequestInspector = require("./api/blacklistRequestInspector.cjs");
24
+ require("./tasks/frictionless/frictionlessTasks.cjs");
25
+ const types = require("@prosopo/types");
21
26
  const tasks = require("./tasks/tasks.cjs");
27
+ exports.updateSpamEmailDomains = updateSpamEmailDomains.updateSpamEmailDomains;
22
28
  exports.checkIfTaskIsRunning = util.checkIfTaskIsRunning;
23
29
  exports.deepValidateIpAddress = util.deepValidateIpAddress;
24
30
  exports.encodeStringAddress = util.encodeStringAddress;
@@ -35,9 +41,14 @@ exports.getJA4 = ja4Middleware.getJA4;
35
41
  exports.ja4Middleware = ja4Middleware.ja4Middleware;
36
42
  exports.publicRouter = _public.publicRouter;
37
43
  exports.domainMiddleware = domainMiddleware.domainMiddleware;
44
+ exports.getClientApiPathsExpectingProsopoHeaders = startProviderApi.getClientApiPathsExpectingProsopoHeaders;
45
+ exports.getUserFromJWT = startProviderApi.getUserFromJWT;
46
+ exports.isTlsAvailable = startProviderApi.isTlsAvailable;
47
+ exports.startProviderApi = startProviderApi.startProviderApi;
38
48
  exports.storeCaptchasExternally = captchaScheduler.storeCaptchasExternally;
39
49
  exports.getClientList = getClientList.getClientList;
40
50
  exports.setClientEntropy = setClientEntropy.setClientEntropy;
51
+ exports.updateSpamEmailDomainsScheduler = updateSpamEmailDomains$1.updateSpamEmailDomainsScheduler;
41
52
  exports.headerCheckMiddleware = headerCheckMiddleware.headerCheckMiddleware;
42
53
  exports.createApiAdminRoutesProvider = createApiAdminRoutesProvider.createApiAdminRoutesProvider;
43
54
  exports.ignoreMiddleware = ignoreMiddleware.ignoreMiddleware;
@@ -48,4 +59,8 @@ exports.compareIPs = ipComparison.compareIPs;
48
59
  exports.BlacklistRequestInspector = blacklistRequestInspector.BlacklistRequestInspector;
49
60
  exports.getPrioritisedAccessRule = blacklistRequestInspector.getPrioritisedAccessRule;
50
61
  exports.getRequestUserScope = blacklistRequestInspector.getRequestUserScope;
62
+ Object.defineProperty(exports, "FrictionlessReason", {
63
+ enumerable: true,
64
+ get: () => types.FrictionlessReason
65
+ });
51
66
  exports.Tasks = tasks.Tasks;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const checkLangRules = (config, acceptLanguage) => {
4
4
  const lConfig = config.lRules;
5
5
  let lScore = 0;
6
- if (lConfig) {
6
+ if (lConfig && acceptLanguage) {
7
7
  const languages = acceptLanguage.split(",").map((lang) => lang.trim().split(";")[0]);
8
8
  for (const lang of languages) {
9
9
  if (lang && lConfig[lang]) {