@prosopo/provider 3.13.7 → 4.7.1

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 (761) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +107 -56
  2. package/.turbo/turbo-build$colon$tsc.log +71 -0
  3. package/.turbo/turbo-build.log +110 -57
  4. package/CHANGELOG.md +1474 -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 +31 -1
  8. package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -0
  9. package/dist/api/admin/apiClearAllCountersEndpoint.d.ts +14 -0
  10. package/dist/api/admin/apiClearAllCountersEndpoint.d.ts.map +1 -0
  11. package/dist/api/admin/apiClearAllCountersEndpoint.js +59 -0
  12. package/dist/api/admin/apiClearAllCountersEndpoint.js.map +1 -0
  13. package/dist/api/admin/apiDnsEventEndpoint.d.ts +15 -0
  14. package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -0
  15. package/dist/api/admin/apiDnsEventEndpoint.js +64 -0
  16. package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -0
  17. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts +13 -0
  18. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts.map +1 -0
  19. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js +49 -0
  20. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js.map +1 -0
  21. package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts +14 -0
  22. package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts.map +1 -0
  23. package/dist/api/admin/apiGetDecisionMachineEndpoint.js +42 -0
  24. package/dist/api/admin/apiGetDecisionMachineEndpoint.js.map +1 -0
  25. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +14 -0
  26. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +1 -0
  27. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +1 -1
  28. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +1 -0
  29. package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts +14 -0
  30. package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts.map +1 -0
  31. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js +33 -0
  32. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js.map +1 -0
  33. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts +13 -0
  34. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts.map +1 -0
  35. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js +41 -0
  36. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js.map +1 -0
  37. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts +14 -0
  38. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts.map +1 -0
  39. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js +42 -0
  40. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js.map +1 -0
  41. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +23 -0
  42. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -0
  43. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +1 -1
  44. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +1 -0
  45. package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts +14 -0
  46. package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts.map +1 -0
  47. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js +32 -0
  48. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js.map +1 -0
  49. package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts +14 -0
  50. package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts.map +1 -0
  51. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js +34 -0
  52. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js.map +1 -0
  53. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +13 -0
  54. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts.map +1 -0
  55. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +1 -1
  56. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js.map +1 -0
  57. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts +14 -0
  58. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts.map +1 -0
  59. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js +60 -0
  60. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js.map +1 -0
  61. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +14 -0
  62. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +1 -0
  63. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +1 -1
  64. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +1 -0
  65. package/dist/api/admin/createApiAdminRoutesProvider.d.ts +4 -0
  66. package/dist/api/admin/createApiAdminRoutesProvider.d.ts.map +1 -0
  67. package/dist/api/admin/createApiAdminRoutesProvider.js.map +1 -0
  68. package/dist/api/blacklistRequestInspector.d.ts +20 -0
  69. package/dist/api/blacklistRequestInspector.d.ts.map +1 -0
  70. package/dist/api/blacklistRequestInspector.js +20 -6
  71. package/dist/api/blacklistRequestInspector.js.map +1 -0
  72. package/dist/api/block.d.ts +4 -0
  73. package/dist/api/block.d.ts.map +1 -0
  74. package/dist/api/block.js +19 -8
  75. package/dist/api/block.js.map +1 -0
  76. package/dist/api/captcha/checkSpamEmail.d.ts +6 -0
  77. package/dist/api/captcha/checkSpamEmail.d.ts.map +1 -0
  78. package/dist/api/captcha/checkSpamEmail.js +80 -0
  79. package/dist/api/captcha/checkSpamEmail.js.map +1 -0
  80. package/dist/api/captcha/contextAwareValidation.d.ts +4 -0
  81. package/dist/api/captcha/contextAwareValidation.d.ts.map +1 -0
  82. package/dist/api/captcha/contextAwareValidation.js.map +1 -0
  83. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts +31 -0
  84. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts.map +1 -0
  85. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +123 -0
  86. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js.map +1 -0
  87. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +3 -0
  88. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -0
  89. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +13 -0
  90. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -0
  91. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts +36 -0
  92. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts.map +1 -0
  93. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +287 -0
  94. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js.map +1 -0
  95. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts +4 -0
  96. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts.map +1 -0
  97. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +14 -0
  98. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js.map +1 -0
  99. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts +7 -0
  100. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -0
  101. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +314 -0
  102. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -0
  103. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts +5 -0
  104. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts.map +1 -0
  105. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js +17 -0
  106. package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js.map +1 -0
  107. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts +14 -0
  108. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts.map +1 -0
  109. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js +28 -0
  110. package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js.map +1 -0
  111. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +23 -0
  112. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -0
  113. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +61 -0
  114. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -0
  115. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts +2 -0
  116. package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts.map +1 -0
  117. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +2 -364
  118. package/dist/api/captcha/getFrictionlessCaptchaChallenge.js.map +1 -0
  119. package/dist/api/captcha/getImageCaptchaChallenge.d.ts +7 -0
  120. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -0
  121. package/dist/api/captcha/getImageCaptchaChallenge.js +36 -9
  122. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -0
  123. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts +7 -0
  124. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -0
  125. package/dist/api/captcha/getPoWCaptchaChallenge.js +49 -7
  126. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -0
  127. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts +7 -0
  128. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -0
  129. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +201 -0
  130. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -0
  131. package/dist/api/captcha/maintenanceModeResponses.d.ts +5 -0
  132. package/dist/api/captcha/maintenanceModeResponses.d.ts.map +1 -0
  133. package/dist/api/captcha/maintenanceModeResponses.js +42 -0
  134. package/dist/api/captcha/maintenanceModeResponses.js.map +1 -0
  135. package/dist/api/captcha/submitImageCaptchaSolution.d.ts +6 -0
  136. package/dist/api/captcha/submitImageCaptchaSolution.d.ts.map +1 -0
  137. package/dist/api/captcha/submitImageCaptchaSolution.js +19 -2
  138. package/dist/api/captcha/submitImageCaptchaSolution.js.map +1 -0
  139. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts +6 -0
  140. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -0
  141. package/dist/api/captcha/submitPoWCaptchaSolution.js +94 -6
  142. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -0
  143. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts +6 -0
  144. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -0
  145. package/dist/api/captcha/submitPuzzleCaptchaSolution.js +108 -0
  146. package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -0
  147. package/dist/api/captcha.d.ts +4 -0
  148. package/dist/api/captcha.d.ts.map +1 -0
  149. package/dist/api/captcha.js +28 -3
  150. package/dist/api/captcha.js.map +1 -0
  151. package/dist/api/dnsEventUrl.d.ts +3 -0
  152. package/dist/api/dnsEventUrl.d.ts.map +1 -0
  153. package/dist/api/dnsEventUrl.js +25 -0
  154. package/dist/api/dnsEventUrl.js.map +1 -0
  155. package/dist/api/domainMiddleware.d.ts +4 -0
  156. package/dist/api/domainMiddleware.d.ts.map +1 -0
  157. package/dist/api/domainMiddleware.js +36 -5
  158. package/dist/api/domainMiddleware.js.map +1 -0
  159. package/dist/api/headerCheckMiddleware.d.ts +4 -0
  160. package/dist/api/headerCheckMiddleware.d.ts.map +1 -0
  161. package/dist/api/headerCheckMiddleware.js.map +1 -0
  162. package/dist/api/ignoreMiddleware.d.ts +3 -0
  163. package/dist/api/ignoreMiddleware.d.ts.map +1 -0
  164. package/dist/api/ignoreMiddleware.js.map +1 -0
  165. package/dist/api/ipInfoMiddleware.d.ts +4 -0
  166. package/dist/api/ipInfoMiddleware.d.ts.map +1 -0
  167. package/dist/api/ipInfoMiddleware.js +20 -0
  168. package/dist/api/ipInfoMiddleware.js.map +1 -0
  169. package/dist/api/ja4Middleware.d.ts +10 -0
  170. package/dist/api/ja4Middleware.d.ts.map +1 -0
  171. package/dist/api/ja4Middleware.js +1 -1
  172. package/dist/api/ja4Middleware.js.map +1 -0
  173. package/dist/api/public.d.ts +4 -0
  174. package/dist/api/public.d.ts.map +1 -0
  175. package/dist/api/public.js.map +1 -0
  176. package/dist/api/robotsMiddleware.d.ts +3 -0
  177. package/dist/api/robotsMiddleware.d.ts.map +1 -0
  178. package/dist/api/robotsMiddleware.js.map +1 -0
  179. package/dist/api/startProviderApi.d.ts +9 -0
  180. package/dist/api/startProviderApi.d.ts.map +1 -0
  181. package/dist/api/startProviderApi.js +217 -0
  182. package/dist/api/startProviderApi.js.map +1 -0
  183. package/dist/api/testSiteKey.d.ts +4 -0
  184. package/dist/api/testSiteKey.d.ts.map +1 -0
  185. package/dist/api/testSiteKey.js +17 -0
  186. package/dist/api/testSiteKey.js.map +1 -0
  187. package/dist/api/validateAddress.d.ts +5 -0
  188. package/dist/api/validateAddress.d.ts.map +1 -0
  189. package/dist/api/validateAddress.js.map +1 -0
  190. package/dist/api/verify.d.ts +4 -0
  191. package/dist/api/verify.d.ts.map +1 -0
  192. package/dist/api/verify.js +146 -9
  193. package/dist/api/verify.js.map +1 -0
  194. package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +31 -1
  195. package/dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs +59 -0
  196. package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +65 -0
  197. package/dist/cjs/api/admin/apiGetAllDecisionMachinesEndpoint.cjs +49 -0
  198. package/dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs +42 -0
  199. package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +5 -5
  200. package/dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs +34 -0
  201. package/dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs +41 -0
  202. package/dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs +42 -0
  203. package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +6 -6
  204. package/dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs +33 -0
  205. package/dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs +35 -0
  206. package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +5 -5
  207. package/dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs +60 -0
  208. package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +7 -7
  209. package/dist/cjs/api/blacklistRequestInspector.cjs +20 -6
  210. package/dist/cjs/api/block.cjs +19 -8
  211. package/dist/cjs/api/captcha/checkSpamEmail.cjs +79 -0
  212. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +123 -0
  213. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +13 -0
  214. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +287 -0
  215. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +14 -0
  216. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +313 -0
  217. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.cjs +17 -0
  218. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs +28 -0
  219. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +61 -0
  220. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +2 -364
  221. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +35 -8
  222. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +48 -6
  223. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +200 -0
  224. package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +42 -0
  225. package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +19 -2
  226. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +92 -4
  227. package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +107 -0
  228. package/dist/cjs/api/captcha.cjs +29 -4
  229. package/dist/cjs/api/dnsEventUrl.cjs +25 -0
  230. package/dist/cjs/api/domainMiddleware.cjs +36 -5
  231. package/dist/cjs/api/ipInfoMiddleware.cjs +20 -0
  232. package/dist/cjs/api/ja4Middleware.cjs +7 -7
  233. package/dist/cjs/api/startProviderApi.cjs +240 -0
  234. package/dist/cjs/api/testSiteKey.cjs +17 -0
  235. package/dist/cjs/api/verify.cjs +145 -8
  236. package/dist/cjs/compositeIpAddress.cjs +6 -6
  237. package/dist/cjs/index.cjs +19 -0
  238. package/dist/cjs/rules/lang.cjs +1 -1
  239. package/dist/cjs/schedulers/updateSpamEmailDomains.cjs +46 -0
  240. package/dist/cjs/services/ipComparison.cjs +9 -10
  241. package/dist/cjs/tasks/captchaManager.cjs +338 -66
  242. package/dist/cjs/tasks/client/clientTasks.cjs +116 -5
  243. package/dist/cjs/tasks/decisionMachine/decisionMachineRunner.cjs +285 -0
  244. package/dist/cjs/tasks/detection/decodeBehavior.cjs +325 -0
  245. package/dist/cjs/tasks/detection/decodeBehavior.js +15 -0
  246. package/dist/cjs/tasks/detection/decodePayload.cjs +692 -661
  247. package/dist/cjs/tasks/detection/decodePayload.js +15 -0
  248. package/dist/cjs/tasks/detection/decodeSimd.cjs +348 -0
  249. package/dist/cjs/tasks/detection/decodeSimd.js +15 -0
  250. package/dist/cjs/tasks/detection/getBotScore.cjs +4 -2
  251. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +146 -43
  252. package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +10 -7
  253. package/dist/cjs/tasks/frictionless/routingMachine.cjs +58 -0
  254. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +371 -57
  255. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +450 -55
  256. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +525 -0
  257. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasksUtils.cjs +7 -0
  258. package/dist/cjs/tasks/spam/checkSpamEmail.cjs +147 -0
  259. package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +41 -0
  260. package/dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs +92 -0
  261. package/dist/cjs/tasks/spam/updateSpamEmailDomains.cjs +58 -0
  262. package/dist/cjs/tasks/tasks.cjs +111 -13
  263. package/dist/cjs/util/usageCounters.cjs +201 -0
  264. package/dist/cjs/util.cjs +3 -4
  265. package/dist/cjs/utils/devicePlatform.cjs +10 -0
  266. package/dist/cjs/utils/dns.cjs +102 -0
  267. package/dist/cjs/utils/honeypot/encoders.cjs +86 -0
  268. package/dist/cjs/utils/honeypot/phraseBank.cjs +47 -0
  269. package/dist/cjs/utils/normalizeRequestIp.cjs +27 -0
  270. package/dist/compositeIpAddress.d.ts +5 -0
  271. package/dist/compositeIpAddress.d.ts.map +1 -0
  272. package/dist/compositeIpAddress.js +1 -1
  273. package/dist/compositeIpAddress.js.map +1 -0
  274. package/dist/index.d.ts +23 -0
  275. package/dist/index.d.ts.map +1 -0
  276. package/dist/index.js +16 -0
  277. package/dist/index.js.map +1 -0
  278. package/dist/pairs.d.ts +3 -0
  279. package/dist/pairs.d.ts.map +1 -0
  280. package/dist/pairs.js.map +1 -0
  281. package/dist/rules/lang.d.ts +3 -0
  282. package/dist/rules/lang.d.ts.map +1 -0
  283. package/dist/rules/lang.js +1 -1
  284. package/dist/rules/lang.js.map +1 -0
  285. package/dist/schedulers/captchaScheduler.d.ts +4 -0
  286. package/dist/schedulers/captchaScheduler.d.ts.map +1 -0
  287. package/dist/schedulers/captchaScheduler.js.map +1 -0
  288. package/dist/schedulers/getClientList.d.ts +4 -0
  289. package/dist/schedulers/getClientList.d.ts.map +1 -0
  290. package/dist/schedulers/getClientList.js.map +1 -0
  291. package/dist/schedulers/setClientEntropy.d.ts +4 -0
  292. package/dist/schedulers/setClientEntropy.d.ts.map +1 -0
  293. package/dist/schedulers/setClientEntropy.js.map +1 -0
  294. package/dist/schedulers/updateSpamEmailDomains.d.ts +4 -0
  295. package/dist/schedulers/updateSpamEmailDomains.d.ts.map +1 -0
  296. package/dist/schedulers/updateSpamEmailDomains.js +46 -0
  297. package/dist/schedulers/updateSpamEmailDomains.js.map +1 -0
  298. package/dist/services/ipComparison.d.ts +4 -0
  299. package/dist/services/ipComparison.d.ts.map +1 -0
  300. package/dist/services/ipComparison.js +3 -4
  301. package/dist/services/ipComparison.js.map +1 -0
  302. package/dist/tasks/captchaManager.d.ts +52 -0
  303. package/dist/tasks/captchaManager.d.ts.map +1 -0
  304. package/dist/tasks/captchaManager.js +336 -64
  305. package/dist/tasks/captchaManager.js.map +1 -0
  306. package/dist/tasks/client/clientTasks.d.ts +69 -0
  307. package/dist/tasks/client/clientTasks.d.ts.map +1 -0
  308. package/dist/tasks/client/clientTasks.js +117 -6
  309. package/dist/tasks/client/clientTasks.js.map +1 -0
  310. package/dist/tasks/dataset/datasetTasks.d.ts +13 -0
  311. package/dist/tasks/dataset/datasetTasks.d.ts.map +1 -0
  312. package/dist/tasks/dataset/datasetTasks.js.map +1 -0
  313. package/dist/tasks/dataset/datasetTasksUtils.d.ts +3 -0
  314. package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +1 -0
  315. package/dist/tasks/dataset/datasetTasksUtils.js.map +1 -0
  316. package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts +20 -0
  317. package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts.map +1 -0
  318. package/dist/tasks/decisionMachine/decisionMachineRunner.js +285 -0
  319. package/dist/tasks/decisionMachine/decisionMachineRunner.js.map +1 -0
  320. package/dist/tasks/detection/decodeBehavior.d.ts +3 -0
  321. package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -0
  322. package/dist/tasks/detection/decodeBehavior.js +15 -0
  323. package/dist/tasks/detection/decodeBehavior.js.map +1 -0
  324. package/dist/tasks/detection/decodePayload.d.ts +5 -0
  325. package/dist/tasks/detection/decodePayload.d.ts.map +1 -0
  326. package/dist/tasks/detection/decodePayload.js +15 -849
  327. package/dist/tasks/detection/decodePayload.js.map +1 -0
  328. package/dist/tasks/detection/decodeSimd.d.ts +3 -0
  329. package/dist/tasks/detection/decodeSimd.d.ts.map +1 -0
  330. package/dist/tasks/detection/decodeSimd.js +15 -0
  331. package/dist/tasks/detection/decodeSimd.js.map +1 -0
  332. package/dist/tasks/detection/getBehavioralData.d.ts +4 -0
  333. package/dist/tasks/detection/getBehavioralData.d.ts.map +1 -0
  334. package/dist/tasks/detection/getBehavioralData.js +51 -0
  335. package/dist/tasks/detection/getBehavioralData.js.map +1 -0
  336. package/dist/tasks/detection/getBotScore.d.ts +22 -0
  337. package/dist/tasks/detection/getBotScore.d.ts.map +1 -0
  338. package/dist/tasks/detection/getBotScore.js +6 -4
  339. package/dist/tasks/detection/getBotScore.js.map +1 -0
  340. package/dist/tasks/frictionless/frictionlessTasks.d.ts +69 -0
  341. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -0
  342. package/dist/tasks/frictionless/frictionlessTasks.js +144 -43
  343. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -0
  344. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +6 -0
  345. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +1 -0
  346. package/dist/tasks/frictionless/frictionlessTasksUtils.js +10 -7
  347. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +1 -0
  348. package/dist/tasks/frictionless/routingMachine.d.ts +15 -0
  349. package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -0
  350. package/dist/tasks/frictionless/routingMachine.js +58 -0
  351. package/dist/tasks/frictionless/routingMachine.js.map +1 -0
  352. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +33 -0
  353. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -0
  354. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +371 -57
  355. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -0
  356. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +7 -0
  357. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +1 -0
  358. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +1 -0
  359. package/dist/tasks/index.d.ts +2 -0
  360. package/dist/tasks/index.d.ts.map +1 -0
  361. package/dist/tasks/index.js.map +1 -0
  362. package/dist/tasks/powCaptcha/powTasks.d.ts +36 -0
  363. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -0
  364. package/dist/tasks/powCaptcha/powTasks.js +452 -57
  365. package/dist/tasks/powCaptcha/powTasks.js.map +1 -0
  366. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +3 -0
  367. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -0
  368. package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -0
  369. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts +32 -0
  370. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -0
  371. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +525 -0
  372. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -0
  373. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts +2 -0
  374. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts.map +1 -0
  375. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js +7 -0
  376. package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js.map +1 -0
  377. package/dist/tasks/spam/checkSpamEmail.d.ts +5 -0
  378. package/dist/tasks/spam/checkSpamEmail.d.ts.map +1 -0
  379. package/dist/tasks/spam/checkSpamEmail.js +147 -0
  380. package/dist/tasks/spam/checkSpamEmail.js.map +1 -0
  381. package/dist/tasks/spam/checkTrafficFilter.d.ts +10 -0
  382. package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -0
  383. package/dist/tasks/spam/checkTrafficFilter.js +41 -0
  384. package/dist/tasks/spam/checkTrafficFilter.js.map +1 -0
  385. package/dist/tasks/spam/evaluateEmailSpamRules.d.ts +16 -0
  386. package/dist/tasks/spam/evaluateEmailSpamRules.d.ts.map +1 -0
  387. package/dist/tasks/spam/evaluateEmailSpamRules.js +92 -0
  388. package/dist/tasks/spam/evaluateEmailSpamRules.js.map +1 -0
  389. package/dist/tasks/spam/updateSpamEmailDomains.d.ts +4 -0
  390. package/dist/tasks/spam/updateSpamEmailDomains.d.ts.map +1 -0
  391. package/dist/tasks/spam/updateSpamEmailDomains.js +58 -0
  392. package/dist/tasks/spam/updateSpamEmailDomains.js.map +1 -0
  393. package/dist/tasks/tasks.d.ts +36 -0
  394. package/dist/tasks/tasks.d.ts.map +1 -0
  395. package/dist/tasks/tasks.js +102 -4
  396. package/dist/tasks/tasks.js.map +1 -0
  397. package/dist/tests/index.d.ts +2 -0
  398. package/dist/tests/index.d.ts.map +1 -0
  399. package/dist/tests/index.js +2 -0
  400. package/dist/tests/index.js.map +1 -0
  401. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts +2 -0
  402. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts.map +1 -0
  403. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +82 -0
  404. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -0
  405. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts +2 -0
  406. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts.map +1 -0
  407. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js +107 -0
  408. package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js.map +1 -0
  409. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts +2 -0
  410. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts.map +1 -0
  411. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +525 -0
  412. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -0
  413. package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts +2 -0
  414. package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts.map +1 -0
  415. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +165 -0
  416. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -0
  417. package/dist/tests/integration/decisionMachines.integration.test.d.ts +2 -0
  418. package/dist/tests/integration/decisionMachines.integration.test.d.ts.map +1 -0
  419. package/dist/tests/integration/decisionMachines.integration.test.js +511 -0
  420. package/dist/tests/integration/decisionMachines.integration.test.js.map +1 -0
  421. package/dist/tests/integration/imgCaptcha.integration.test.d.ts +2 -0
  422. package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +1 -0
  423. package/dist/tests/integration/imgCaptcha.integration.test.js +646 -0
  424. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -0
  425. package/dist/tests/integration/ipValidation.integration.test.d.ts +2 -0
  426. package/dist/tests/integration/ipValidation.integration.test.d.ts.map +1 -0
  427. package/dist/tests/integration/ipValidation.integration.test.js +81 -0
  428. package/dist/tests/integration/ipValidation.integration.test.js.map +1 -0
  429. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +32 -0
  430. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +1 -0
  431. package/dist/tests/integration/mocks/solvedTestCaptchas.js +1046 -0
  432. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +1 -0
  433. package/dist/tests/integration/powCaptcha.integration.test.d.ts +2 -0
  434. package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +1 -0
  435. package/dist/tests/integration/powCaptcha.integration.test.js +502 -0
  436. package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -0
  437. package/dist/tests/integration/registerSitekey.d.ts +3 -0
  438. package/dist/tests/integration/registerSitekey.d.ts.map +1 -0
  439. package/dist/tests/integration/registerSitekey.js +23 -0
  440. package/dist/tests/integration/registerSitekey.js.map +1 -0
  441. package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts +2 -0
  442. package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts.map +1 -0
  443. package/dist/tests/integration/routingDecisionMachines.integration.test.js +276 -0
  444. package/dist/tests/integration/routingDecisionMachines.integration.test.js.map +1 -0
  445. package/dist/tests/integration/testUtils.d.ts +4 -0
  446. package/dist/tests/integration/testUtils.d.ts.map +1 -0
  447. package/dist/tests/integration/testUtils.js +15 -0
  448. package/dist/tests/integration/testUtils.js.map +1 -0
  449. package/dist/tests/integration/usageCounters.integration.test.d.ts +2 -0
  450. package/dist/tests/integration/usageCounters.integration.test.d.ts.map +1 -0
  451. package/dist/tests/integration/usageCounters.integration.test.js +103 -0
  452. package/dist/tests/integration/usageCounters.integration.test.js.map +1 -0
  453. package/dist/tests/integration/userAccessPolicy.d.ts +2 -0
  454. package/dist/tests/integration/userAccessPolicy.d.ts.map +1 -0
  455. package/dist/tests/integration/userAccessPolicy.js +2 -0
  456. package/dist/tests/integration/userAccessPolicy.js.map +1 -0
  457. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts +2 -0
  458. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts.map +1 -0
  459. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js +63 -0
  460. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js.map +1 -0
  461. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts +2 -0
  462. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts.map +1 -0
  463. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +55 -0
  464. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -0
  465. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts +2 -0
  466. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts.map +1 -0
  467. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js +67 -0
  468. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js.map +1 -0
  469. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts +2 -0
  470. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
  471. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js +56 -0
  472. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js.map +1 -0
  473. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts +2 -0
  474. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts.map +1 -0
  475. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js +90 -0
  476. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js.map +1 -0
  477. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts +2 -0
  478. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
  479. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js +59 -0
  480. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js.map +1 -0
  481. package/dist/tests/unit/api/adminRoutes.unit.test.d.ts +2 -0
  482. package/dist/tests/unit/api/adminRoutes.unit.test.d.ts.map +1 -0
  483. package/dist/tests/unit/api/adminRoutes.unit.test.js +131 -0
  484. package/dist/tests/unit/api/adminRoutes.unit.test.js.map +1 -0
  485. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts +2 -0
  486. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts.map +1 -0
  487. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +137 -0
  488. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -0
  489. package/dist/tests/unit/api/block.unit.test.d.ts +2 -0
  490. package/dist/tests/unit/api/block.unit.test.d.ts.map +1 -0
  491. package/dist/tests/unit/api/block.unit.test.js +60 -0
  492. package/dist/tests/unit/api/block.unit.test.js.map +1 -0
  493. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts +2 -0
  494. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts.map +1 -0
  495. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js +118 -0
  496. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js.map +1 -0
  497. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts +2 -0
  498. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts.map +1 -0
  499. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js +37 -0
  500. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js.map +1 -0
  501. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts +2 -0
  502. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts.map +1 -0
  503. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js +154 -0
  504. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js.map +1 -0
  505. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts +2 -0
  506. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts.map +1 -0
  507. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js +46 -0
  508. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js.map +1 -0
  509. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts +2 -0
  510. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts.map +1 -0
  511. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js +69 -0
  512. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js.map +1 -0
  513. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts +2 -0
  514. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts.map +1 -0
  515. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js +98 -0
  516. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js.map +1 -0
  517. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts +2 -0
  518. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts.map +1 -0
  519. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js +60 -0
  520. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js.map +1 -0
  521. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts +2 -0
  522. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts.map +1 -0
  523. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +134 -0
  524. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -0
  525. package/dist/tests/unit/api/captcha.unit.test.d.ts +2 -0
  526. package/dist/tests/unit/api/captcha.unit.test.d.ts.map +1 -0
  527. package/dist/tests/unit/api/captcha.unit.test.js +39 -0
  528. package/dist/tests/unit/api/captcha.unit.test.js.map +1 -0
  529. package/dist/tests/unit/api/contextAwareValidation.unit.test.d.ts +2 -0
  530. package/dist/tests/unit/api/contextAwareValidation.unit.test.d.ts.map +1 -0
  531. package/dist/tests/unit/api/contextAwareValidation.unit.test.js +84 -0
  532. package/dist/tests/unit/api/contextAwareValidation.unit.test.js.map +1 -0
  533. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.d.ts +2 -0
  534. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.d.ts.map +1 -0
  535. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +435 -0
  536. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -0
  537. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts +2 -0
  538. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts.map +1 -0
  539. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js +126 -0
  540. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js.map +1 -0
  541. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts +2 -0
  542. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts.map +1 -0
  543. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +113 -0
  544. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +1 -0
  545. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts +2 -0
  546. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts.map +1 -0
  547. package/dist/tests/unit/api/ja4Middleware.unit.test.js +138 -0
  548. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +1 -0
  549. package/dist/tests/unit/api/public.unit.test.d.ts +2 -0
  550. package/dist/tests/unit/api/public.unit.test.d.ts.map +1 -0
  551. package/dist/tests/unit/api/public.unit.test.js +198 -0
  552. package/dist/tests/unit/api/public.unit.test.js.map +1 -0
  553. package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts +2 -0
  554. package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts.map +1 -0
  555. package/dist/tests/unit/api/robotsMiddleware.unit.test.js +50 -0
  556. package/dist/tests/unit/api/robotsMiddleware.unit.test.js.map +1 -0
  557. package/dist/tests/unit/api/testSiteKey.unit.test.d.ts +2 -0
  558. package/dist/tests/unit/api/testSiteKey.unit.test.d.ts.map +1 -0
  559. package/dist/tests/unit/api/testSiteKey.unit.test.js +51 -0
  560. package/dist/tests/unit/api/testSiteKey.unit.test.js.map +1 -0
  561. package/dist/tests/unit/api/validateAddress.unit.test.d.ts +2 -0
  562. package/dist/tests/unit/api/validateAddress.unit.test.d.ts.map +1 -0
  563. package/dist/tests/unit/api/validateAddress.unit.test.js +141 -0
  564. package/dist/tests/unit/api/validateAddress.unit.test.js.map +1 -0
  565. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts +2 -0
  566. package/dist/tests/unit/compositeIpAddress.unit.test.d.ts.map +1 -0
  567. package/dist/tests/unit/compositeIpAddress.unit.test.js +158 -0
  568. package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -0
  569. package/dist/tests/unit/pairs.unit.test.d.ts +2 -0
  570. package/dist/tests/unit/pairs.unit.test.d.ts.map +1 -0
  571. package/dist/tests/unit/pairs.unit.test.js +229 -0
  572. package/dist/tests/unit/pairs.unit.test.js.map +1 -0
  573. package/dist/tests/unit/rules/lang.unit.test.d.ts +2 -0
  574. package/dist/tests/unit/rules/lang.unit.test.d.ts.map +1 -0
  575. package/dist/tests/unit/rules/lang.unit.test.js +207 -0
  576. package/dist/tests/unit/rules/lang.unit.test.js.map +1 -0
  577. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +2 -0
  578. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +1 -0
  579. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +75 -0
  580. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -0
  581. package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts +2 -0
  582. package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts.map +1 -0
  583. package/dist/tests/unit/schedulers/getClientList.unit.test.js +114 -0
  584. package/dist/tests/unit/schedulers/getClientList.unit.test.js.map +1 -0
  585. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts +2 -0
  586. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts.map +1 -0
  587. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js +114 -0
  588. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js.map +1 -0
  589. package/dist/tests/unit/services/ipComparison.unit.test.d.ts +2 -0
  590. package/dist/tests/unit/services/ipComparison.unit.test.d.ts.map +1 -0
  591. package/dist/tests/unit/services/ipComparison.unit.test.js +272 -0
  592. package/dist/tests/unit/services/ipComparison.unit.test.js.map +1 -0
  593. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts +2 -0
  594. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts.map +1 -0
  595. package/dist/tests/unit/tasks/captchaManager.unit.test.js +576 -0
  596. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -0
  597. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +2 -0
  598. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +1 -0
  599. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +343 -0
  600. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -0
  601. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +2 -0
  602. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +1 -0
  603. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +92 -0
  604. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -0
  605. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +2 -0
  606. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +1 -0
  607. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +75 -0
  608. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +1 -0
  609. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts +2 -0
  610. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts.map +1 -0
  611. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js +213 -0
  612. package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js.map +1 -0
  613. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts +2 -0
  614. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts.map +1 -0
  615. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js +304 -0
  616. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js.map +1 -0
  617. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts +2 -0
  618. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts.map +1 -0
  619. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js +109 -0
  620. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js.map +1 -0
  621. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts +2 -0
  622. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts.map +1 -0
  623. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +115 -0
  624. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -0
  625. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts +2 -0
  626. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts.map +1 -0
  627. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +142 -0
  628. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +1 -0
  629. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts +2 -0
  630. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts.map +1 -0
  631. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +350 -0
  632. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -0
  633. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts +2 -0
  634. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts.map +1 -0
  635. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +103 -0
  636. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +1 -0
  637. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts +2 -0
  638. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts.map +1 -0
  639. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js +169 -0
  640. package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js.map +1 -0
  641. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +2 -0
  642. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +1 -0
  643. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +1098 -0
  644. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -0
  645. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +2 -0
  646. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +1 -0
  647. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +56 -0
  648. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -0
  649. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +2 -0
  650. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +1 -0
  651. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +1714 -0
  652. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -0
  653. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +2 -0
  654. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +1 -0
  655. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +169 -0
  656. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -0
  657. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts +2 -0
  658. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts.map +1 -0
  659. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +313 -0
  660. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -0
  661. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts +2 -0
  662. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts.map +1 -0
  663. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js +29 -0
  664. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js.map +1 -0
  665. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts +2 -0
  666. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts.map +1 -0
  667. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js +434 -0
  668. package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js.map +1 -0
  669. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts +2 -0
  670. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts.map +1 -0
  671. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +112 -0
  672. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -0
  673. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts +2 -0
  674. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts.map +1 -0
  675. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js +94 -0
  676. package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js.map +1 -0
  677. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts +2 -0
  678. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts.map +1 -0
  679. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js +94 -0
  680. package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js.map +1 -0
  681. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts +2 -0
  682. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts.map +1 -0
  683. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +208 -0
  684. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -0
  685. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +26 -0
  686. package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -0
  687. package/dist/tests/unit/testUtils/mockProviderEnv.js +149 -0
  688. package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -0
  689. package/dist/tests/unit/util/redisCache.unit.test.d.ts +2 -0
  690. package/dist/tests/unit/util/redisCache.unit.test.d.ts.map +1 -0
  691. package/dist/tests/unit/util/redisCache.unit.test.js +257 -0
  692. package/dist/tests/unit/util/redisCache.unit.test.js.map +1 -0
  693. package/dist/tests/unit/util/usageCounters.unit.test.d.ts +2 -0
  694. package/dist/tests/unit/util/usageCounters.unit.test.d.ts.map +1 -0
  695. package/dist/tests/unit/util/usageCounters.unit.test.js +242 -0
  696. package/dist/tests/unit/util/usageCounters.unit.test.js.map +1 -0
  697. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts +2 -0
  698. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts.map +1 -0
  699. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +507 -0
  700. package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +1 -0
  701. package/dist/tests/unit/util.ipDistance.unit.test.d.ts +2 -0
  702. package/dist/tests/unit/util.ipDistance.unit.test.d.ts.map +1 -0
  703. package/dist/tests/unit/util.ipDistance.unit.test.js +99 -0
  704. package/dist/tests/unit/util.ipDistance.unit.test.js.map +1 -0
  705. package/dist/tests/unit/util.unit.test.d.ts +2 -0
  706. package/dist/tests/unit/util.unit.test.d.ts.map +1 -0
  707. package/dist/tests/unit/util.unit.test.js +167 -0
  708. package/dist/tests/unit/util.unit.test.js.map +1 -0
  709. package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts +2 -0
  710. package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts.map +1 -0
  711. package/dist/tests/unit/utils/devicePlatform.unit.test.js +58 -0
  712. package/dist/tests/unit/utils/devicePlatform.unit.test.js.map +1 -0
  713. package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts +2 -0
  714. package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts.map +1 -0
  715. package/dist/tests/unit/utils/hashUserAgent.unit.test.js +52 -0
  716. package/dist/tests/unit/utils/hashUserAgent.unit.test.js.map +1 -0
  717. package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts +2 -0
  718. package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts.map +1 -0
  719. package/dist/tests/unit/utils/hashUserIp.unit.test.js +81 -0
  720. package/dist/tests/unit/utils/hashUserIp.unit.test.js.map +1 -0
  721. package/dist/util/usageCounters.d.ts +22 -0
  722. package/dist/util/usageCounters.d.ts.map +1 -0
  723. package/dist/util/usageCounters.js +201 -0
  724. package/dist/util/usageCounters.js.map +1 -0
  725. package/dist/util.d.ts +25 -0
  726. package/dist/util.d.ts.map +1 -0
  727. package/dist/util.js +3 -4
  728. package/dist/util.js.map +1 -0
  729. package/dist/utils/devicePlatform.d.ts +5 -0
  730. package/dist/utils/devicePlatform.d.ts.map +1 -0
  731. package/dist/utils/devicePlatform.js +10 -0
  732. package/dist/utils/devicePlatform.js.map +1 -0
  733. package/dist/utils/dns.d.ts +22 -0
  734. package/dist/utils/dns.d.ts.map +1 -0
  735. package/dist/utils/dns.js +84 -0
  736. package/dist/utils/dns.js.map +1 -0
  737. package/dist/utils/hashUserAgent.d.ts +2 -0
  738. package/dist/utils/hashUserAgent.d.ts.map +1 -0
  739. package/dist/utils/hashUserAgent.js.map +1 -0
  740. package/dist/utils/hashUserIp.d.ts +2 -0
  741. package/dist/utils/hashUserIp.d.ts.map +1 -0
  742. package/dist/utils/hashUserIp.js.map +1 -0
  743. package/dist/utils/honeypot/encoders.d.ts +3 -0
  744. package/dist/utils/honeypot/encoders.d.ts.map +1 -0
  745. package/dist/utils/honeypot/encoders.js +86 -0
  746. package/dist/utils/honeypot/encoders.js.map +1 -0
  747. package/dist/utils/honeypot/phraseBank.d.ts +3 -0
  748. package/dist/utils/honeypot/phraseBank.d.ts.map +1 -0
  749. package/dist/utils/honeypot/phraseBank.js +47 -0
  750. package/dist/utils/honeypot/phraseBank.js.map +1 -0
  751. package/dist/utils/normalizeRequestIp.d.ts +3 -0
  752. package/dist/utils/normalizeRequestIp.d.ts.map +1 -0
  753. package/dist/utils/normalizeRequestIp.js +27 -0
  754. package/dist/utils/normalizeRequestIp.js.map +1 -0
  755. package/package.json +30 -21
  756. package/vite.cjs.config.ts +17 -5
  757. package/vite.esm.config.ts +18 -4
  758. package/vite.test.config.ts +1 -1
  759. package/vite.threads.test.config.ts +1 -1
  760. package/dist/cjs/services/ipInfo.cjs +0 -87
  761. package/dist/services/ipInfo.js +0 -87
package/CHANGELOG.md CHANGED
@@ -1,5 +1,1479 @@
1
1
  # @prosopo/provider
2
2
 
3
+ ## 4.7.1
4
+ ### Patch Changes
5
+
6
+ - 936e987: Republish under npm trusted publishing.
7
+
8
+ No runtime change. The v3.6.30 publish landed only a partial slice of the workspace before npm rejected the rest (provenance verification + repository-field mismatch). Cutting a fresh version so every package gets a clean publish under the new OIDC-based workflow with provenance attestations attached.
9
+
10
+ ## 4.7.0
11
+ ### Minor Changes
12
+
13
+ - 2392aaf: Integrate the prosopo/dns sidecar against the procaptcha provider.
14
+
15
+ - New admin endpoint `POST /v1/prosopo/provider/admin/dns/event` ingests batched DNS observation events from the sidecar (auth: admin sr25519 JWT) and merges resolver / peer IPs onto the matching Session record under a new `Session.dnsEvent` field.
16
+ - Frictionless response carries a per-session `dns_url` when the pronode has `DNS_EVENT_SUBZONE` + `DNS_EVENT_HMAC_SECRET` set. The HMAC path mirrors the sidecar's Rust implementation so both sides agree without shared per-request state.
17
+ - The frictionless bundle fires one no-cors GET to `dns_url` on detection completion (fire-and-forget; failures never affect the captcha flow).
18
+ - `dns_url` is included on the `reuse_session` short-circuit path too, not only the new-session path — otherwise repeat visits from the same user/IP/sitekey combination silently dropped the observation hop.
19
+ - Deploy compose entry for the sidecar plus a Caddy `layer4` SNI-passthrough block so the sidecar terminates TLS itself (no Cloudflare token needed). Caddy image must be rebuilt with the `caddy-l4` plugin.
20
+
21
+ ### Patch Changes
22
+
23
+ - 896243a: Document three known spec deviations in `read-tls-client-hello`'s JA4 implementation.
24
+
25
+ Adds inline comments to `ja4Middleware.ts` explaining how `calculateJa4FromHelloData`
26
+ differs from the Rust/AWS-Lambda reference: TLS 1.3 detection via extension presence
27
+ rather than content, single-byte ALPN first-char duplication, and ASCII decoding of
28
+ non-alphanumeric ALPN bytes instead of hex encoding.
29
+ - Updated dependencies [a1d60db]
30
+ - Updated dependencies [2392aaf]
31
+ - Updated dependencies [97cf7bd]
32
+ - Updated dependencies [6ca1125]
33
+ - Updated dependencies [32a591b]
34
+ - @prosopo/types@4.3.0
35
+ - @prosopo/types-database@4.8.0
36
+ - @prosopo/logger@1.0.2
37
+ - @prosopo/util@3.2.15
38
+ - @prosopo/api@3.4.8
39
+ - @prosopo/api-express-router@3.1.17
40
+ - @prosopo/common@3.1.38
41
+ - @prosopo/database@3.13.7
42
+ - @prosopo/datasets@3.1.28
43
+ - @prosopo/env@3.5.7
44
+ - @prosopo/keyring@2.9.34
45
+ - @prosopo/load-balancer@2.9.10
46
+ - @prosopo/types-env@2.9.16
47
+ - @prosopo/user-access-policy@3.7.11
48
+ - @prosopo/api-route@2.6.46
49
+ - @prosopo/redis-client@1.0.23
50
+
51
+ ## 4.6.3
52
+ ### Patch Changes
53
+
54
+ - e7b77e9: fix(provider): replace the honeypot semaphore encoder's lossy flag-emoji cycle with a bijective arrow-pair mapping and morse-style letter/word separators, so the encoded label is recoverable instead of an opaque glyph blob
55
+ - 65a7384: test(provider): add a unit test asserting an incorrectly solved image captcha is disapproved (`verified: false`), closing the unit-level gap previously only covered by the integration test
56
+
57
+ ## 4.6.2
58
+ ### Patch Changes
59
+
60
+ - d62eb70: Fix provider crash-loop on startup in maintenance mode.
61
+
62
+ `domainMiddleware` constructed `new Tasks(env)` eagerly at wire-up time, which
63
+ calls `env.getDb()`. In `MAINTENANCE_MODE=true` the DB is intentionally never
64
+ connected (`isReady()` skips the connect), so `getDb()` throws
65
+ `"db not setup! Please call isReady() first"`. That error was unguarded and
66
+ propagated out of `startProviderApi`, crashing the process on every boot and
67
+ leaving the provider in a Docker restart loop.
68
+
69
+ `Tasks` is now resolved lazily on the first request that actually needs domain
70
+ validation — i.e. only once maintenance mode is off — mirroring the existing
71
+ lazy pattern in `blockMiddleware`. The request handler already short-circuits
72
+ on `getMaintenanceMode()` before touching the DB, so no request path depends on
73
+ the eager construction.
74
+ - 6c26669: Add per-site honeypot trap. When enabled, the provider attaches an encoded question (morse or semaphore, base64-wrapped) in the `x-prosopo-meta` response header on frictionless responses. The widget renders the value into an off-screen hidden input with `name="email_confirm"`; bots that auto-fill text inputs populate it and the value rides back on the solution submit as `clientMetaData.hp`, which is persisted on the `StoredCaptcha` record. Falls back to a random phrase from `PROSOPO_HONEYPOT_PHRASE_BANK_PATH` when no custom question is configured.
75
+ - f7f9ec5: feat(provider,widget): reserved always-pass / always-fail test site keys
76
+
77
+ Add two fixed, well-known reserved site keys (`ALWAYS_PASS_SITE_KEY` /
78
+ `ALWAYS_FAIL_SITE_KEY`) that force a deterministic captcha verdict for CI/CD and
79
+ integration testing, constant across production, staging and development.
80
+
81
+ - `@prosopo/types`: shared constants + `getTestSiteKeyMode`, imported by both the
82
+ provider and the widget.
83
+ - `@prosopo/provider`: short-circuits the `submit*` and `verify` endpoints (verify
84
+ runs before the signature check, so no dapp secret is needed), serves an
85
+ invisible PoW session from the frictionless handler, and bypasses domain
86
+ middleware. Works in every environment with no DB record.
87
+ - `@prosopo/procaptcha-common` / `-react` / `-frictionless`: render a prominent
88
+ `TestModeBanner` warning (always pass/fail) plus a console warning so a test key
89
+ can never ship to production unnoticed.
90
+
91
+ always-pass verifies at both the submit and verify layers; always-fail fails at
92
+ both. Safe in production by design: the override only weakens protection for a
93
+ dapp that deliberately opts in, mirroring reCAPTCHA's public test keys.
94
+ - Updated dependencies [6c26669]
95
+ - Updated dependencies [f7f9ec5]
96
+ - @prosopo/types@4.2.1
97
+ - @prosopo/types-database@4.7.8
98
+ - @prosopo/api@3.4.7
99
+ - @prosopo/api-express-router@3.1.16
100
+ - @prosopo/database@3.13.6
101
+ - @prosopo/datasets@3.1.27
102
+ - @prosopo/env@3.5.6
103
+ - @prosopo/keyring@2.9.33
104
+ - @prosopo/load-balancer@2.9.9
105
+ - @prosopo/types-env@2.9.15
106
+ - @prosopo/user-access-policy@3.7.10
107
+
108
+ ## 4.6.1
109
+ ### Patch Changes
110
+
111
+ - 0fd81af: Extract the logger into its own `@prosopo/logger` package, out of `@prosopo/common`. Consumers now import logger symbols from `@prosopo/logger`; `@prosopo/common` no longer re-exports them. Unused `@prosopo/common` dependencies pruned where the only usage was the logger.
112
+ - Updated dependencies [0fd81af]
113
+ - @prosopo/api-express-router@3.1.15
114
+ - @prosopo/api-route@2.6.45
115
+ - @prosopo/common@3.1.37
116
+ - @prosopo/database@3.13.5
117
+ - @prosopo/datasets@3.1.26
118
+ - @prosopo/env@3.5.5
119
+ - @prosopo/logger@1.0.1
120
+ - @prosopo/redis-client@1.0.22
121
+ - @prosopo/types-database@4.7.7
122
+ - @prosopo/types-env@2.9.14
123
+ - @prosopo/user-access-policy@3.7.9
124
+ - @prosopo/keyring@2.9.32
125
+ - @prosopo/load-balancer@2.9.8
126
+
127
+ ## 4.6.0
128
+ ### Minor Changes
129
+
130
+ - 20cae63: feat(provider): re-route after PoW using decrypted behavioural data
131
+
132
+ PoW solutions are now re-evaluated by the routing machine after submission.
133
+ Previously the routing decision was made up-front on a thin set of signals;
134
+ behavioural data only becomes available (decrypted server-side) once the
135
+ user submits their PoW solution, so a user with weak behavioural signals
136
+ could still earn a token by solving PoW alone.
137
+
138
+ The submit endpoint now runs the routing machine a second time in a new
139
+ `postPow` phase, feeding in the decrypted behavioural data, the originating
140
+ session's score, request headers, JA4, and IP info. If the router escalates,
141
+ the provider mints a fresh session (carrying the original session's risk
142
+ profile) and returns `escalation: { captchaType, sessionId }` on the
143
+ `PowCaptchaSolutionResponse`. The `verified` flag is forced to `false` on
144
+ escalation — the user isn't done until they clear the follow-up.
145
+
146
+ On the client, `ProcaptchaFrictionless` accepts the escalation via a new
147
+ internal `onEscalate` prop on the PoW widget and mounts the chosen image
148
+ or puzzle widget in place, splicing the new sessionId into the
149
+ `FrictionlessState`. The handoff is internal to the frictionless → pow
150
+ flow — dapps integrating Procaptcha see no API change.
151
+
152
+ `RoutingMachineInputBase.phase` widens from `"route"` to
153
+ `"route" | "postPow"` so decision-machine configs can distinguish the two
154
+ passes.
155
+
156
+ ### Patch Changes
157
+
158
+ - 4d9923e: test(provider): integration test asserting every IUserSettings field round-trips through Mongo
159
+
160
+ Registers a site key with a fully-populated `IUserSettings` (every field set, including the new `storeMetadata` and the existing nested `contextAware` / `ipValidationRules` / `spamFilter` / `trafficFilter` sub-documents), reads the record back from Mongo via the real Mongoose write/read path, and asserts each top-level and nested field survived. This is the regression test class that would have caught the `autoBanScoreThreshold` Mongoose-strict-mode drop on the original PR.
161
+
162
+ While adding the test it caught another field that was in zod `ClientSettingsSchema` but missing from the Mongoose `UserSettingsSchema`: `puzzleTolerance`. The fix is bundled here — adds `puzzleTolerance: { type: Number, required: false }` to `UserSettingsSchema` so it actually persists.
163
+ - b2e1a5d: fix(database/provider): don't flag image-captcha placeholder records as `pendingStage`
164
+
165
+ #2596 set `pendingStage: true` on every commitment write, including
166
+ `storePendingImageCommitment` which inserts placeholder records with
167
+ `id: ""` while waiting for the user to submit a solution. The sweep
168
+ then picked those up via `pendingStage_partial` (fast) and called
169
+ `markDappUserCommitmentsStored(["", "", ...], ts)` (slow) — Mongo
170
+ dedupes the `$in` array to a single empty-string bound and the
171
+ `IXSCAN { id: -1 }` walks every empty-id document on the node (~102K
172
+ on production). On pronode11 that meant 2–8 s per sweep cycle of
173
+ unnecessary index scan on `usercommitments`, replacing the old
174
+ WT-cache-thrash with a different one.
175
+
176
+ Two-part fix:
177
+
178
+ - `storePendingImageCommitment` no longer sets `pendingStage`. The
179
+ real commitment record only gets the flag once `approve` /
180
+ `disapprove` runs, at which point `id` is populated and staging is
181
+ meaningful.
182
+ - `storeCommitmentsExternal` defensively skips any batch entry whose
183
+ `id` is empty before calling `markDappUserCommitmentsStored`, so a
184
+ stray placeholder slipping into the partial index can never
185
+ re-introduce the bug.
186
+
187
+ For nodes already running #2596, the existing flagged placeholders
188
+ need clearing once (otherwise they sit at `pendingStage: true`
189
+ forever, since `markDappUserCommitmentsStored`'s
190
+ `lastUpdatedTimestamp <= ts` guard never matches them after their
191
+ last update). One-shot per node:
192
+
193
+ ```js
194
+ db.usercommitments.updateMany(
195
+ { pendingStage: true, id: "" },
196
+ { $unset: { pendingStage: 1 } }
197
+ );
198
+ ```
199
+ - 4d9923e: feat: optional `storeMetadata` site setting persists `/verify` metadata
200
+
201
+ Adds a per-site-key boolean `storeMetadata` (default `false`) to
202
+ `ClientSettingsSchema` / `UserSettingsSchema`. When enabled, the provider
203
+ writes the dapp-server-forwarded metadata that arrives on the image, PoW
204
+ and puzzle `/verify` endpoints onto the corresponding captcha record under
205
+ a new `metadata` sub-document (`{ email?: string }` today; more fields
206
+ will be added here as the verify payload grows).
207
+
208
+ `providedIp` stays top-level — existing data and indexes already use it,
209
+ and it predates this setting.
210
+
211
+ Off by default. Existing spam-email checks still inspect the submitted
212
+ email unconditionally — this setting only gates **storage** of metadata
213
+ so the submitted values can be sampled later to judge whether traffic is
214
+ mostly spam.
215
+ - Updated dependencies [cdbc5ed]
216
+ - Updated dependencies [4d9923e]
217
+ - Updated dependencies [20cae63]
218
+ - Updated dependencies [b2e1a5d]
219
+ - Updated dependencies [4d9923e]
220
+ - @prosopo/types-database@4.7.6
221
+ - @prosopo/types@4.2.0
222
+ - @prosopo/database@3.13.4
223
+ - @prosopo/types-env@2.9.13
224
+ - @prosopo/api@3.4.6
225
+ - @prosopo/api-express-router@3.1.14
226
+ - @prosopo/datasets@3.1.25
227
+ - @prosopo/env@3.5.4
228
+ - @prosopo/keyring@2.9.31
229
+ - @prosopo/load-balancer@2.9.7
230
+ - @prosopo/user-access-policy@3.7.8
231
+
232
+ ## 4.5.3
233
+ ### Patch Changes
234
+
235
+ - d351362: fix: replace `$or + $expr` unstored-records sweep with a `pendingStage` sentinel
236
+
237
+ The `StoreCommitmentsExternal` background job fetches "records that still
238
+ need to be shipped to the central DB" via
239
+ `{ $or: [ { storedAtTimestamp: { $exists: false } }, { $expr: { $lt: [$storedAtTimestamp, $lastUpdatedTimestamp] } } ] }`.
240
+ `$expr` is unindexable (per-doc computation) and combined with `$or`
241
+ defeats the planner entirely — production was running this every sweep
242
+ as a `IXSCAN { _id: 1 }` collection scan, examining ~673K powcaptcha
243
+ docs, ~240K usercommitments docs, and ~60K sessions docs per pass. On
244
+ the worst-affected nodes this thrashed the WiredTiger cache (10h of
245
+ cumulative app-thread blocking on disk reads in 43h of uptime) and made
246
+ every other Mongo lookup (including the frictionless session dedup
247
+ queries) slow by eviction — manifesting as traffic-correlated provider
248
+ latency starting 2026-05-26.
249
+
250
+ Replace the query semantics with a `pendingStage: true` sentinel:
251
+
252
+ - New optional `pendingStage` field on `StoredCaptcha` and `Session`
253
+ (Zod + TS + Mongoose schemas).
254
+ - New tiny partial index per collection:
255
+ `{ pendingStage: 1 }` with `partialFilterExpression: { pendingStage: true }`.
256
+ Indexes only the rows that need staging — typically a tiny rolling set,
257
+ ~20 KB for a 700K-row collection with 100 pending rows in local tests.
258
+ - Write paths (`storeXxx`, `updateXxx`, `markXxxChecked`, approve /
259
+ disapprove, `checkAndRemoveSession`, `recordSessionSimdReadingsIfAbsent`,
260
+ `storePendingImageCommitment`) set `pendingStage: true` alongside the
261
+ existing `lastUpdatedTimestamp` bump.
262
+ - `markXxxStored` and the per-record streamer mark-stored callbacks
263
+ `$unset: { pendingStage: 1 }` alongside the `storedAtTimestamp` write,
264
+ guarded by `lastUpdatedTimestamp: { $lte: ts }` so an in-flight update
265
+ doesn't get its pending flag cleared by an older stage completion.
266
+ - `markXxxStored` bulk methods accept an `asOfTimestamp` argument; the
267
+ sweep passes the time it fetched the batch so the guard is correct
268
+ across the full ship-then-mark round trip.
269
+ - `getUnstoredXxx` queries become `{ pendingStage: true }` sorted by
270
+ `_id` — uses the new partial index, examines only pending docs.
271
+
272
+ Local verification on a 700,100-doc test collection: old query ~549 ms
273
+ examining 700,100 docs; new query 0 ms examining 100 docs. Index storage
274
+ ~20 KB.
275
+ - Updated dependencies [d351362]
276
+ - @prosopo/types@4.1.4
277
+ - @prosopo/types-database@4.7.5
278
+ - @prosopo/database@3.13.3
279
+ - @prosopo/api@3.4.5
280
+ - @prosopo/api-express-router@3.1.13
281
+ - @prosopo/datasets@3.1.24
282
+ - @prosopo/env@3.5.3
283
+ - @prosopo/keyring@2.9.30
284
+ - @prosopo/load-balancer@2.9.6
285
+ - @prosopo/types-env@2.9.12
286
+ - @prosopo/user-access-policy@3.7.7
287
+
288
+ ## 4.5.2
289
+ ### Patch Changes
290
+
291
+ - 6567ce0: feat(provider): allow Google Translate proxy domains through the domain check middleware
292
+
293
+ Google Translate proxies a site under `<encoded>.translate.goog` (e.g.
294
+ `prosopo-io.translate.goog`), encoding `.` as `-` and `-` as `--`. With the
295
+ previous implementation the proxied host never matched a site's allowed
296
+ domains and the captcha widget broke on translated pages.
297
+
298
+ Add `decodeGoogleTranslateHost` to `@prosopo/util` which reverses the
299
+ encoding, and update the provider's `domainMiddleware` so that when the
300
+ request origin is a `*.translate.goog` URL it also tries the decoded
301
+ origin against the site's allowed domains.
302
+
303
+ Closes #2585.
304
+ - e2711ae: feat(provider): add `autoBanScoreThreshold` client setting and frictionless auto-ban
305
+
306
+ Adds an optional `autoBanScoreThreshold` to `ClientSettingsSchema`. When set,
307
+ the frictionless decision machine blocks any request whose detector score is
308
+ at or above the threshold with HTTP 401 instead of issuing an image or PoW
309
+ challenge — useful for clients receiving floods of image solves from sessions
310
+ scoring at or above 1.
311
+
312
+ The check runs first in `runDecisionMachine`, before the existing
313
+ user-agent / context-aware / webview / timestamp / threshold gates, so score
314
+ bumps applied by those gates cannot bypass it. Blocked sessions are persisted
315
+ via `registerBlockedSession` with the new `FrictionlessReason.AUTO_BAN_SCORE`
316
+ reason.
317
+
318
+ Undefined threshold = disabled; existing clients are unaffected.
319
+ - 5786629: fix(provider): persist DISALLOWED_WEBVIEW outcome and broaden detection in image captcha verify
320
+
321
+ The webview check in `verifyImageCaptchaSolution` did an early return that
322
+ left the commitment stuck at `Approved` in the database and never marked
323
+ the session as `serverChecked` / `disapproved`, even though the API
324
+ correctly returned `verified: false`. This made the DB state misleading
325
+ and broke any downstream consumer reading commitment status directly.
326
+
327
+ The check also only fired when `scoreComponents.webView > 0`, which is
328
+ only set when the frictionless flow took the webview branch. Webview
329
+ users who reached the image captcha via another branch (UA mismatch,
330
+ context-aware failure, timestamp, bot score) had `session.webView: true`
331
+ but no `scoreComponents.webView`, so the verify-time block missed them.
332
+
333
+ - Convert the early return to the same `failStatus` /
334
+ `commitmentUpdates.result` pattern used by every other check in the
335
+ function, so the commitment and session are properly persisted as
336
+ disapproved with reason `DISALLOWED_WEBVIEW`.
337
+ - Trigger on `session.webView === true` OR `scoreComponents.webView > 0`.
338
+ - Add `ResultReason.DISALLOWED_WEBVIEW` and the English locale entry.
339
+ - Add unit tests for score-based detection, boolean-only detection, and
340
+ the `disallowWebView=false` passthrough.
341
+
342
+ Closes #3396.
343
+ - Updated dependencies [6567ce0]
344
+ - Updated dependencies [e2711ae]
345
+ - Updated dependencies [5786629]
346
+ - Updated dependencies [7e8cbb7]
347
+ - @prosopo/util@3.2.14
348
+ - @prosopo/types@4.1.3
349
+ - @prosopo/locale@3.2.4
350
+ - @prosopo/types-database@4.7.4
351
+ - @prosopo/database@3.13.2
352
+ - @prosopo/datasets@3.1.23
353
+ - @prosopo/keyring@2.9.29
354
+ - @prosopo/user-access-policy@3.7.6
355
+ - @prosopo/api@3.4.4
356
+ - @prosopo/api-express-router@3.1.12
357
+ - @prosopo/common@3.1.36
358
+ - @prosopo/env@3.5.2
359
+ - @prosopo/load-balancer@2.9.5
360
+ - @prosopo/types-env@2.9.11
361
+ - @prosopo/api-route@2.6.44
362
+ - @prosopo/redis-client@1.0.21
363
+
364
+ ## 4.5.1
365
+ ### Patch Changes
366
+
367
+ - a780f1c: Stop logging an error per request when a decision machine has no `route` export.
368
+
369
+ PR #2543 added a routing pre-phase that calls `route()` on whichever decision
370
+ machine is selected for the dapp. The runner's export lookup only treats
371
+ `module.exports = fn` as a default for `decide`/`default`, so decide-only
372
+ machines (the in-prod shape: a bare default function) caused `route()` to
373
+ throw `Decision machine must export one of: route` on every verify request.
374
+
375
+ Behaviour was already correct — the caller catches and falls back to the
376
+ baseline — but the per-request error log was noisy. Pass `optional: true`
377
+ when looking up the `route` export so a missing one returns `undefined`
378
+ silently, matching how `requiredCounters` is already handled. Schema
379
+ validation failures, throws, and timeouts continue to log an error.
380
+ - Updated dependencies [72a1218]
381
+ - @prosopo/util@3.2.13
382
+ - @prosopo/database@3.13.1
383
+ - @prosopo/datasets@3.1.22
384
+ - @prosopo/keyring@2.9.28
385
+ - @prosopo/types@4.1.2
386
+ - @prosopo/user-access-policy@3.7.5
387
+ - @prosopo/env@3.5.1
388
+ - @prosopo/types-env@2.9.10
389
+ - @prosopo/api@3.4.3
390
+ - @prosopo/api-express-router@3.1.11
391
+ - @prosopo/load-balancer@2.9.4
392
+ - @prosopo/types-database@4.7.3
393
+
394
+ ## 4.5.0
395
+ ### Minor Changes
396
+
397
+ - 91958da: Puzzle captcha + maintenance mode hardening, plus a refactor of the
398
+ frictionless handler into focused modules.
399
+
400
+ - **Puzzle captcha now records checkbox-click coordinates like POW.** Adds an
401
+ optional `salt` field to `SubmitPuzzleCaptchaSolutionBody`; the puzzle
402
+ widget hashes the click coords into the salt and the server decodes them
403
+ into the puzzle record's `coords` field on submit. New `start(x, y)`
404
+ parameters on `procaptcha-puzzle` Manager + widget.
405
+ - **Fix puzzle "No session found" caused by stale Redis dedup.** The
406
+ `/frictionless` dedup path is now Mongo-authoritative — Redis is no
407
+ longer consulted as a session source. A concurrent `/captcha/{type}`
408
+ invalidation could previously race a fire-and-forget Redis repopulation
409
+ in the `/frictionless` dedup branch, leaving Redis pointing at a
410
+ Mongo-deleted session for the full 1-hour TTL. Stale pointers are now
411
+ evicted lazily.
412
+ - **Maintenance mode operates without MongoDB.** `/frictionless` and
413
+ `/captcha/{pow,puzzle}` short-circuit to dummy responses before any DB
414
+ call, and `Environment.isReady()` tolerates a Mongo connect failure when
415
+ `MAINTENANCE_MODE=true` so the provider can start with Mongo down.
416
+ - **Refactor `getFrictionlessCaptchaChallenge.ts` into focused modules** under
417
+ `getFrictionlessCaptchaChallenge/` (handler, sessionDedup, shortCircuit,
418
+ accessPolicy, decisionMachine, decryptSimdReadings, constants). Original
419
+ import path preserved via a re-export shim.
420
+ - **Move `RedisWriteQueue` from `@prosopo/provider` to `@prosopo/database`**
421
+ (where the Redis connection itself lives), and clear residual Redis
422
+ session keys at provider startup via `Environment.cleanup()` so a
423
+ previously-crashed run can't leak stale dedup pointers.
424
+ - Adds puzzle-type branch to access-policy handling in `/frictionless`.
425
+
426
+ ### Patch Changes
427
+
428
+ - Updated dependencies [53bfd45]
429
+ - Updated dependencies [91958da]
430
+ - @prosopo/locale@3.2.3
431
+ - @prosopo/env@3.5.0
432
+ - @prosopo/database@3.13.0
433
+ - @prosopo/api@3.4.2
434
+ - @prosopo/types@4.1.1
435
+ - @prosopo/api-express-router@3.1.10
436
+ - @prosopo/common@3.1.35
437
+ - @prosopo/types-database@4.7.2
438
+ - @prosopo/user-access-policy@3.7.4
439
+ - @prosopo/datasets@3.1.21
440
+ - @prosopo/keyring@2.9.27
441
+ - @prosopo/load-balancer@2.9.3
442
+ - @prosopo/types-env@2.9.9
443
+ - @prosopo/api-route@2.6.43
444
+ - @prosopo/redis-client@1.0.20
445
+
446
+ ## 4.4.2
447
+ ### Patch Changes
448
+
449
+ - f4001e8: Fix `/captcha/{type}` endpoints looping with "No session found" after a
450
+ session has been consumed: the hash → sessionId mapping
451
+ (`cache:session:hash:{userSitekeyIpHash}`) is now invalidated alongside
452
+ the sessionId cache, and both invalidations are awaited so a concurrent
453
+ `patchCachedSession` (e.g. puzzle solution submission) can no longer
454
+ re-populate the cache between consume and response. Previously the
455
+ hash mapping outlived the session for up to its 1-hour TTL, so
456
+ `/frictionless` kept handing the dead sessionId back to the client.
457
+
458
+ Fix the configured-image short-circuit in `/frictionless` to use the
459
+ normal solved count capped by `imageMaxRounds`, matching every other
460
+ image branch in the file. Previously it used `imageMaxRounds`
461
+ (default 32) as the count rather than as a cap, so any site key
462
+ configured with `captchaType: image` punished every visitor with 32
463
+ rounds regardless of bot signals.
464
+ - 6a741ce: Move `FrictionlessReason` into `@prosopo/types` and add a new
465
+ `ResultReason` enum covering the values previously inlined as string
466
+ literals on `result.reason` (API.CAPTCHA_PASSED, API.VPN_BLOCKED,
467
+ EMAIL_INVALID, etc.). Provider task code now references the enums so the
468
+ canonical list of selection/result reasons lives in one place and can be
469
+ imported by non-server packages (portal, audit tooling) without pulling
470
+ in `@prosopo/provider`. The previous `FrictionlessReason` export from
471
+ `@prosopo/provider` is preserved as a re-export for backwards
472
+ compatibility.
473
+
474
+ `CaptchaResult.reason`, `StoredCaptcha.result.reason`, `Session.result.reason`
475
+ are now typed `ResultReason | undefined`; `Session.reason` is typed
476
+ `FrictionlessReason | undefined`. The runtime zod schema stays permissive
477
+ (`string().optional().transform(v => v as ResultReason | undefined)`) so
478
+ operator-authored decision-machine output and old MongoDB records still
479
+ parse without throwing; the strict enum is preserved on the TS surface
480
+ via the transform.
481
+ - 0832606: Add integration test asserting an incorrectly solved image captcha is marked as disapproved
482
+ - Updated dependencies [6a741ce]
483
+ - @prosopo/types@4.1.0
484
+ - @prosopo/database@3.12.1
485
+ - @prosopo/api@3.4.1
486
+ - @prosopo/api-express-router@3.1.9
487
+ - @prosopo/datasets@3.1.20
488
+ - @prosopo/env@3.4.9
489
+ - @prosopo/keyring@2.9.26
490
+ - @prosopo/load-balancer@2.9.2
491
+ - @prosopo/types-database@4.7.1
492
+ - @prosopo/types-env@2.9.8
493
+ - @prosopo/user-access-policy@3.7.3
494
+
495
+ ## 4.4.1
496
+ ### Patch Changes
497
+
498
+ - bd9f284: Add an integration test asserting that a correct image captcha solution
499
+ submitted after the time limit is disapproved by the provider and verified as
500
+ disapproved by the dapp.
501
+
502
+ ## 4.4.0
503
+ ### Minor Changes
504
+
505
+ - d865319: Add puzzle captcha (drag-to-target challenge) as a new captcha type:
506
+ provider endpoints, manager + widget package, types, demo pages, and
507
+ a `puzzleTolerance` site setting.
508
+ - 753304b: Extend the existing decision-machine artifact with a new `route` phase that
509
+ selects the concrete captcha type during the frictionless flow. Per-sitekey
510
+ JS sources (Dapp > Global priority) can now override the ladder's image/pow
511
+ baseline based on Redis-backed usage counters keyed by IP and userAccount.
512
+
513
+ Adds:
514
+
515
+ - `RoutingMachineInput`, `RoutingMachineOutput`, `CounterSpec`,
516
+ `CounterWindow` etc. in `@prosopo/types`.
517
+ - A `usageCounters` primitive in the provider (Lua INCR + TTL-on-first;
518
+ bulk MGET) and fire-and-forget served/solved counter writes at the
519
+ three captcha types.
520
+ - `DecisionMachineRunner.route()` and `.getRequiredCounters()` alongside
521
+ the existing `decide()` veto. Artifact cache is now shared across all
522
+ runner instances and busted on admin PUT for immediate propagation.
523
+ - `applyRouter` helper in the frictionless flow which falls back to the
524
+ ladder baseline on any machine/Redis failure.
525
+
526
+ Back-compat: existing post-PoW verify-phase machines keep working
527
+ unchanged. A single artifact can export both `route` and `verify` /
528
+ `decide`.
529
+ - 8bb7286: Move `captchaType` from client (`data-captcha-type` / render-options prop)
530
+ to a server-side site-key setting; the bundle now calls `/frictionless`
531
+ for all flows. Renames the bundle's universal mount component from
532
+ `FrictionlessCaptcha` to `BundleCaptcha` to reflect that it is no longer
533
+ frictionless-specific — the server decides which concrete challenge type
534
+ to render.
535
+
536
+ ### Patch Changes
537
+
538
+ - f9ea09d: Stop re-looking up the IP in `checkTrafficFilter` — read `record.ipInfo` instead
539
+
540
+ Now that every captcha record carries the full `IPInfoResponse` (written by `ipInfoMiddleware` at request time), `checkTrafficFilter` no longer needs to call `ipInfoService.lookup(ip)` on the verify path. The function takes an `IPInfoResponse | undefined` directly and is no longer async — one fewer sidecar round-trip per verify call.
541
+
542
+ - `checkTrafficFilter(ip, trafficFilter, ipInfoService, logger)` → `checkTrafficFilter(ipInfo, trafficFilter)`.
543
+ - `serverVerifyPowCaptchaSolution`, `verifyImageCaptchaSolution`, and `serverVerifyPuzzleCaptchaSolution` (newly given a `trafficFilter` parameter to bring it to parity with the other two) read `challengeRecord.ipInfo` / `solution.ipInfo` by default, and only do a fresh `env.ipInfoService.lookup(ip)` when the dapp passed up the end user's current IP via the verify call — that's the "now" IP for filtering, and may differ from the IP that originally requested the captcha.
544
+ - Existing unit tests (`checkTrafficFilter.unit.test.ts`) updated to the new shape; new MongoMemory roundtrip tests in `packages/database/src/tests/integration/ipInfoPersistence.integration.test.ts` prove the three captcha schemas (PoW / Puzzle / UserCommitment) actually persist + retrieve a full IPInfoResponse, and that the `{ ipInfo: { $exists: false } }` backfill query matches records missing the field.
545
+
546
+ Paired with [captcha-private#3339](https://github.com/prosopo/captcha-private/pull/3339).
547
+ - 3c0be68: Add a new admin-only endpoint `POST /v1/prosopo/provider/admin/counters/clear-all`
548
+ for deleting per-sitekey usage counters from Redis. Intended for manual
549
+ testing of routing decision machines and staging-environment resets — not
550
+ part of the hot path.
551
+
552
+ - `ClearAllCountersBody` (optional `dapp`) and `ClearAllCountersResponse`
553
+ (`success`, `deletedCount`, `scope`) zod schemas in `@prosopo/types`,
554
+ plus `AdminApiPaths.ClearAllCounters` and a 10/60s rate limit.
555
+ - `UsageCounters.clearAll(dappAccount?)` in the provider, using Redis
556
+ `SCAN` + `DEL` in 500-key batches. Returns null on Redis failure so
557
+ callers can surface the underlying error.
558
+ - `ApiClearAllCountersEndpoint` wired through `ApiAdminRoutesProvider`.
559
+ - `ProviderApi.clearAllCounters(jwt, dappAccount?)` client method.
560
+ - 4aae4e6: refactor/provider: dedupe SIMD-readings decrypt+attach boilerplate
561
+
562
+ The same 20–25-line "decrypt the SIMD readings ciphertext with the
563
+ provider detector keys, strip the timestamp, and persist them to the
564
+ session record" block was repeated six times across the challenge-GET
565
+ endpoints and the submit verifiers. Pulled it into two layered methods
566
+ on `CaptchaManager`:
567
+
568
+ - `decryptSimdReadingsForAttach(ciphertext)` returns the decoded
569
+ readings or `undefined`. Used by the image-submit path which decodes
570
+ once and reuses the result across several session writes.
571
+
572
+ - `decryptAndAttachSimdReadingsIfAbsent(sessionId, ciphertext, stage)`
573
+ is a thin wrapper for the common decrypt-then-record case used by the
574
+ three challenge-GETs and the PoW/Puzzle submit verifiers.
575
+
576
+ Net −69 lines across the 6 callsites (+53 of helper). Behaviour is
577
+ unchanged.
578
+ - f9ea09d: Drop flat ipinfo fields (`vpn`, `countryCode`, `tor`, `proxy`, `datacenter`, `abuser`, `geolocation`) from captcha records — persist the full `IPInfoResponse` payload as `ipInfo` instead
579
+
580
+ The provider's `ipInfoMiddleware` already calls `ipInfoService.lookup()` on every captcha request and attaches the result to `req.ipInfo`. Persisting that whole payload on every captcha record means the portal sees the *exact* response the traffic filter consulted, with no cherry-picked-field translation layer in between. Adding a new flag in the future (e.g. `isMobile`) requires zero schema changes — it's already in the payload.
581
+
582
+ - `StoredCaptcha` interface: removed `vpn`, `countryCode`, `geolocation`. Keeps `ipInfo?: IPInfoResponse`.
583
+ - `PoWCaptchaStoredSchema` zod validator: same removals, adds `ipInfo` (validated as `any()` since `IPInfoResponse` is a discriminated union narrowed at read time).
584
+ - PoW, Puzzle, UserCommitment mongoose schemas in `@prosopo/types-database`: same removals. UserCommitment now also has `ipInfo` (previously only PoW + Puzzle did). Replaced `{ countryCode: 1 }` index with `{ "ipInfo.countryCode": 1 }` + `{ "ipInfo.isVPN": 1 }`.
585
+ - `IProviderDatabase` interface: `storePowCaptchaRecord` / `storePuzzleCaptchaRecord` / `storePendingImageCommitment` now take `ipInfo?: IPInfoResponse` in place of `countryCode?: string`.
586
+ - Provider call sites (`getPoWCaptchaChallenge.ts`, `getPuzzleCaptchaChallenge.ts`, `getImageCaptchaChallenge.ts`, `submitImageCaptchaSolution.ts`) pass `req.ipInfo` directly. The earlier "prefer session.countryCode, fallback to req's countryCode" branching is gone — record `ipInfo` reflects what was true at challenge-issuance time.
587
+ - Provider read sites (`powTasks.ts`, `puzzleTasks.ts`, `imgCaptchaTasks.ts`) narrow `record.ipInfo?.isValid` then read `.countryCode` for access-policy / decision-machine input — same effective value, derived from the persisted payload.
588
+ - Lean projections in `provider.ts` switched from `countryCode: 1` to `ipInfo: 1`.
589
+
590
+ Paired with [captcha-private#3339](https://github.com/prosopo/captcha-private/pull/3339), which updates the CHECK_IP_INFO backfill job (now writes the full payload, query becomes `{ ipInfo: { $exists: false } }`), the portal search models / aggregation pipeline (read nested `ipInfo.*`), and the anomaly detectors.
591
+ - a9a40e9: Always check an IP in traffic filter
592
+ - 273926d: Fix `/captcha/{type}` endpoints looping with "No session found" when the
593
+ Redis session cache and Mongo diverge: on a session lookup miss the cache
594
+ entry is now invalidated, so the next `/frictionless` falls through and
595
+ creates a fresh session instead of resurrecting the dead one.
596
+
597
+ Add invisible-mode support to the puzzle captcha widget: the
598
+ execute-event handler now drives the full phase transition
599
+ (`start` → `setChallengeData` → `dragging`), and the puzzle overlay is
600
+ rendered in invisible mode so the user can still solve the (inherently
601
+ interactive) drag challenge — only the checkbox UI is hidden.
602
+
603
+ Add `invisible-puzzle-implicit.html` / `invisible-puzzle-explicit.html`
604
+ demo pages, and surface both standard and invisible puzzle entries in
605
+ the client-bundle-example navbar.
606
+ - f9ea09d: Drop flat `countryCode` / `geolocation` fields from Session records — persist the full `IPInfoResponse` payload as `session.ipInfo` instead
607
+
608
+ Brings sessions in line with captcha records (PoW / Puzzle / UserCommitment), which already store the full payload. The provider's `ipInfoMiddleware` populates `req.ipInfo` at session-creation time; that whole payload now lives on the session, so consumers narrow on `session.ipInfo?.isValid` and read whichever sub-field they need (countryCode, isVPN, isMobile, isTor, ...).
609
+
610
+ - `Session` interface + `SessionSchema` zod (`@prosopo/types`): replace `countryCode?: string` / `geolocation?: string` with `ipInfo?: IPInfoResponse`.
611
+ - `SessionRecordSchema` mongoose (`@prosopo/types-database`): same.
612
+ - `FrictionlessManager.setSessionParams` / `createSession`: accept `ipInfo` instead of `countryCode`.
613
+ - `getFrictionlessCaptchaChallenge.ts` call sites (10 of them — `sendImageCaptcha`, `sendPowCaptcha`, `registerBlockedSession`, etc.) pass `req.ipInfo` instead of `countryCode`.
614
+ - `CaptchaManager.isValidRequest()` return: drop dead `countryCode: sessionRecord.countryCode` field (no caller was destructuring it after the earlier refactor), surface `ipInfo: sessionRecord.ipInfo` instead for callers that want it.
615
+ - Two new MongoMemory roundtrip tests in `ipInfoPersistence.integration.test.ts` cover Session.ipInfo (valid response + error response). `routingDecisionMachines.integration.test.ts` fixture updated to write the full payload.
616
+
617
+ `RoutingContext.countryCode` is unchanged — that's a transient runtime struct fed into the routing machine, not a stored record. Callers of `setRoutingContext` already derive `countryCode` from `req.ipInfo.countryCode` at the API boundary.
618
+
619
+ Paired with [captcha-private#3339](https://github.com/prosopo/captcha-private/pull/3339).
620
+ - 4aae4e6: Plumb the WASM SIMD CPU fingerprint readings (collected by the catcher
621
+ client per https://blog.azerpas.com/writing/wasm-simd-fingerprinting/)
622
+ through the captcha flow and onto the linked `Session` record.
623
+ Collection-only — no scoring or classification yet.
624
+
625
+ The readings are sent at the earliest moment they're available so the
626
+ signal lands on the session as soon as possible:
627
+
628
+ 1. **Captcha-challenge GET** (PoW / Puzzle / Image) — the procaptcha
629
+ Manager calls `frictionlessState.getSimdReadings(0)` (non-blocking
630
+ cache check) and attaches it to the challenge-request body. The
631
+ provider handler decodes and patches the linked session via
632
+ `updateSessionRecord`.
633
+ 2. **Solution submission** (PoW / Puzzle / Image) — same non-blocking
634
+ check on the submit body. Acts as a backup if the benchmark wasn't
635
+ ready in time for the challenge GET.
636
+
637
+ Frictionless init itself stays SIMD-free (benchmark is too slow to gate
638
+ the first hop).
639
+
640
+ Surface area:
641
+
642
+ - `SimdReadings` discriminated union + `SimdOpReadingRecord` /
643
+ `SimdOpCategory` in `@prosopo/types`, plus `simdReadingsCodec` shared
644
+ encode/decode helpers so the browser SDK and the provider use the same
645
+ pipe-safe wire format.
646
+ - Optional `simdReadings: string()` on `CaptchaRequestBody`,
647
+ `GetPowCaptchaChallengeRequestBody`, `GetPuzzleCaptchaChallengeRequestBody`,
648
+ `CaptchaSolutionBody`, `SubmitPowCaptchaSolutionBody`, and
649
+ `SubmitPuzzleCaptchaSolutionBody`.
650
+ - `FrictionlessState.getSimdReadings` + `BotDetectionFunctionResult.getSimdReadings`
651
+ so the catcher's prefetched benchmark is consumed at the request sites.
652
+ - `ProcaptchaApiInterface.{getCaptchaChallenge, submitCaptchaSolution}` and
653
+ the `ProviderApi.{getCaptchaChallenge, getPowCaptchaChallenge, getPuzzleCaptchaChallenge,
654
+ submitCaptchaSolution, submitPowCaptchaSolution, submitPuzzleCaptchaSolution}`
655
+ client methods accept the field.
656
+ - Provider challenge + solution handlers decode via `decodeSimdReadings`
657
+ and `updateSessionRecord` (Mongoose `Mixed`, Zod discriminated-union
658
+ validation at the edge). The challenge-GET patch is fire-and-forget.
659
+
660
+ Backward-compatible: older catcher clients omit the field at every layer;
661
+ the session record omits it in turn.
662
+ - 4993813: Standardise provider error logging so every error is queryable via a single
663
+ top-level `err` field, and so the logged value is the locale-stable
664
+ translation key (e.g. `CAPTCHA.NO_SESSION_FOUND`) rather than the translated
665
+ message text (`"No session found"`, `"Aucune session trouvée"`, etc.).
666
+
667
+ - `ProsopoBaseError.logError()` now emits `{ err: translationKey, data: { errorType, context } }` instead of `{ data: { errorType, errorParams: { error, context } } }`. OpenObserve queries can drop `data_errorparams_error` and `data_errorparams_context_translationmessage`.
668
+ - The redundant `translationMessage` injection into wrapped-error context is removed (it was the source of the locale-variant strings).
669
+ - `NativeLogger.unpackError()` prefers `e.translationKey` over `e.message` when surfacing an error via `logger.error(() => ({ err }))`, so catch-and-log sites are standardised automatically.
670
+ - Removed two `console.error` calls in `verify.ts` and an accidental debug `console.log(JSON.stringify(effectiveRules, null, 2))` in `util.ts` that were both bypassing `req.logger` (no `requestId`, and in the JSON dump case exploding into ~20 separate log entries per call).
671
+ - HTTP response shape is unchanged: `unwrapError()` still uses `i18n.t(err.message)` for the response body, and `jsonError.key` still carries the translation key for clients.
672
+ - Updated dependencies [f9ea09d]
673
+ - Updated dependencies [3c0be68]
674
+ - Updated dependencies [f9ea09d]
675
+ - Updated dependencies [4aae4e6]
676
+ - Updated dependencies [4aae4e6]
677
+ - Updated dependencies [d865319]
678
+ - Updated dependencies [753304b]
679
+ - Updated dependencies [8bb7286]
680
+ - Updated dependencies [f9ea09d]
681
+ - Updated dependencies [4aae4e6]
682
+ - Updated dependencies [4993813]
683
+ - Updated dependencies [72a0483]
684
+ - @prosopo/database@3.12.0
685
+ - @prosopo/types@4.0.0
686
+ - @prosopo/api@3.4.0
687
+ - @prosopo/types-database@4.7.0
688
+ - @prosopo/load-balancer@2.9.1
689
+ - @prosopo/locale@3.2.2
690
+ - @prosopo/util@3.2.12
691
+ - @prosopo/keyring@2.9.25
692
+ - @prosopo/common@3.1.34
693
+ - @prosopo/user-access-policy@3.7.2
694
+ - @prosopo/env@3.4.8
695
+ - @prosopo/api-express-router@3.1.8
696
+ - @prosopo/datasets@3.1.19
697
+ - @prosopo/types-env@2.9.7
698
+ - @prosopo/api-route@2.6.42
699
+ - @prosopo/redis-client@1.0.19
700
+
701
+ ## 4.3.0
702
+ ### Minor Changes
703
+
704
+ - 33a6c57: Provider speed ups
705
+
706
+ ### Patch Changes
707
+
708
+ - 819ed95: Adding invisible mode to session data
709
+ - 1b35548: Adding maintenance mode check at start of domain middleware
710
+ - Updated dependencies [819ed95]
711
+ - Updated dependencies [33a6c57]
712
+ - @prosopo/types-database@4.6.2
713
+ - @prosopo/types@3.16.1
714
+ - @prosopo/api@3.3.2
715
+ - @prosopo/load-balancer@2.9.0
716
+ - @prosopo/database@3.11.0
717
+ - @prosopo/types-env@2.9.6
718
+ - @prosopo/api-express-router@3.1.7
719
+ - @prosopo/datasets@3.1.18
720
+ - @prosopo/env@3.4.7
721
+ - @prosopo/keyring@2.9.24
722
+ - @prosopo/user-access-policy@3.7.1
723
+
724
+ ## 4.2.1
725
+ ### Patch Changes
726
+
727
+ - Updated dependencies [60ba3b1]
728
+ - @prosopo/user-access-policy@3.7.0
729
+ - @prosopo/database@3.10.2
730
+ - @prosopo/types-database@4.6.1
731
+ - @prosopo/env@3.4.6
732
+ - @prosopo/types-env@2.9.5
733
+ - @prosopo/api-express-router@3.1.6
734
+
735
+ ## 4.2.0
736
+ ### Minor Changes
737
+
738
+ - 780dcb0: Clear sessions from cache when deleted from db
739
+
740
+ ### Patch Changes
741
+
742
+ - Updated dependencies [942701b]
743
+ - @prosopo/database@3.10.1
744
+ - @prosopo/env@3.4.5
745
+ - @prosopo/api-express-router@3.1.5
746
+
747
+ ## 4.1.0
748
+ ### Minor Changes
749
+
750
+ - 558bc6d: Make sure redis cache works with bigint
751
+
752
+ ## 4.0.0
753
+ ### Major Changes
754
+
755
+ - 41c54b0: Redis cache to avoid hitting the database multiple times per API request
756
+
757
+ ### Minor Changes
758
+
759
+ - f14d645: Fix to catch NaN being passed in as score in sessions
760
+ - 74092d0: Stream data back to central for decisions
761
+
762
+ ### Patch Changes
763
+
764
+ - Updated dependencies [74092d0]
765
+ - @prosopo/types-database@4.6.0
766
+ - @prosopo/database@3.10.0
767
+ - @prosopo/types-env@2.9.4
768
+ - @prosopo/env@3.4.4
769
+ - @prosopo/api-express-router@3.1.4
770
+
771
+ ## 3.24.0
772
+ ### Minor Changes
773
+
774
+ - 99dfb44: Pass back reason via verify calls
775
+
776
+ ### Patch Changes
777
+
778
+ - f6a4402: API endpoint for removing site keys
779
+ - Updated dependencies [f6a4402]
780
+ - Updated dependencies [99dfb44]
781
+ - @prosopo/types-database@4.5.3
782
+ - @prosopo/database@3.9.18
783
+ - @prosopo/types@3.16.0
784
+ - @prosopo/api@3.3.1
785
+ - @prosopo/types-env@2.9.3
786
+ - @prosopo/env@3.4.3
787
+ - @prosopo/api-express-router@3.1.3
788
+ - @prosopo/datasets@3.1.17
789
+ - @prosopo/keyring@2.9.23
790
+ - @prosopo/load-balancer@2.8.40
791
+ - @prosopo/user-access-policy@3.6.24
792
+
793
+ ## 3.23.2
794
+ ### Patch Changes
795
+
796
+ - Updated dependencies [3e54c0a]
797
+ - @prosopo/types@3.15.0
798
+ - @prosopo/api@3.3.0
799
+ - @prosopo/api-express-router@3.1.2
800
+ - @prosopo/database@3.9.17
801
+ - @prosopo/datasets@3.1.16
802
+ - @prosopo/env@3.4.2
803
+ - @prosopo/keyring@2.9.22
804
+ - @prosopo/load-balancer@2.8.39
805
+ - @prosopo/types-database@4.5.2
806
+ - @prosopo/types-env@2.9.2
807
+ - @prosopo/user-access-policy@3.6.23
808
+
809
+ ## 3.23.1
810
+ ### Patch Changes
811
+
812
+ - 946a8ba: Abuser score threshold
813
+ - 5614814: Small config changes
814
+ - Updated dependencies [946a8ba]
815
+ - Updated dependencies [5614814]
816
+ - Updated dependencies [b94890c]
817
+ - @prosopo/types-database@4.5.1
818
+ - @prosopo/types@3.14.1
819
+ - @prosopo/locale@3.2.1
820
+ - @prosopo/database@3.9.16
821
+ - @prosopo/types-env@2.9.1
822
+ - @prosopo/api@3.2.11
823
+ - @prosopo/api-express-router@3.1.1
824
+ - @prosopo/common@3.1.33
825
+ - @prosopo/datasets@3.1.15
826
+ - @prosopo/env@3.4.1
827
+ - @prosopo/keyring@2.9.21
828
+ - @prosopo/load-balancer@2.8.38
829
+ - @prosopo/user-access-policy@3.6.22
830
+ - @prosopo/api-route@2.6.41
831
+
832
+ ## 3.23.0
833
+ ### Minor Changes
834
+
835
+ - 42650db: Add better spam rules and move ipinfo service to local instead of external
836
+
837
+ ### Patch Changes
838
+
839
+ - fc514dd: ability to block different types of traffic
840
+ - Updated dependencies [fc514dd]
841
+ - Updated dependencies [7be39c4]
842
+ - Updated dependencies [42650db]
843
+ - @prosopo/types-database@4.5.0
844
+ - @prosopo/locale@3.2.0
845
+ - @prosopo/types@3.14.0
846
+ - @prosopo/api@3.2.10
847
+ - @prosopo/api-express-router@3.1.0
848
+ - @prosopo/types-env@2.9.0
849
+ - @prosopo/env@3.4.0
850
+ - @prosopo/database@3.9.15
851
+ - @prosopo/common@3.1.32
852
+ - @prosopo/datasets@3.1.14
853
+ - @prosopo/keyring@2.9.20
854
+ - @prosopo/load-balancer@2.8.37
855
+ - @prosopo/user-access-policy@3.6.21
856
+ - @prosopo/api-route@2.6.40
857
+
858
+ ## 3.22.4
859
+ ### Patch Changes
860
+
861
+ - fe5f0f9: Fixing flaky image captcha test
862
+ - Updated dependencies [4a9c518]
863
+ - @prosopo/common@3.1.31
864
+ - @prosopo/api-express-router@3.0.70
865
+ - @prosopo/api-route@2.6.39
866
+ - @prosopo/database@3.9.14
867
+ - @prosopo/datasets@3.1.13
868
+ - @prosopo/env@3.3.15
869
+ - @prosopo/keyring@2.9.19
870
+ - @prosopo/load-balancer@2.8.36
871
+ - @prosopo/types-database@4.4.14
872
+ - @prosopo/types-env@2.8.15
873
+ - @prosopo/user-access-policy@3.6.20
874
+
875
+ ## 3.22.3
876
+ ### Patch Changes
877
+
878
+ - Updated dependencies [a25dffa]
879
+ - @prosopo/util@3.2.11
880
+ - @prosopo/database@3.9.13
881
+ - @prosopo/datasets@3.1.12
882
+ - @prosopo/keyring@2.9.18
883
+ - @prosopo/types@3.13.3
884
+ - @prosopo/user-access-policy@3.6.19
885
+ - @prosopo/env@3.3.14
886
+ - @prosopo/types-env@2.8.14
887
+ - @prosopo/api@3.2.9
888
+ - @prosopo/api-express-router@3.0.69
889
+ - @prosopo/load-balancer@2.8.35
890
+ - @prosopo/types-database@4.4.13
891
+
892
+ ## 3.22.2
893
+ ### Patch Changes
894
+
895
+ - 346edd7: Fix exports for browser
896
+ - Updated dependencies [346edd7]
897
+ - @prosopo/util@3.2.10
898
+ - @prosopo/database@3.9.12
899
+ - @prosopo/datasets@3.1.11
900
+ - @prosopo/keyring@2.9.17
901
+ - @prosopo/types@3.13.2
902
+ - @prosopo/user-access-policy@3.6.18
903
+ - @prosopo/env@3.3.13
904
+ - @prosopo/types-env@2.8.13
905
+ - @prosopo/api@3.2.8
906
+ - @prosopo/api-express-router@3.0.68
907
+ - @prosopo/load-balancer@2.8.34
908
+ - @prosopo/types-database@4.4.12
909
+
910
+ ## 3.22.1
911
+ ### Patch Changes
912
+
913
+ - Updated dependencies [22bfee7]
914
+ - @prosopo/util@3.2.9
915
+ - @prosopo/database@3.9.11
916
+ - @prosopo/datasets@3.1.10
917
+ - @prosopo/keyring@2.9.16
918
+ - @prosopo/types@3.13.1
919
+ - @prosopo/user-access-policy@3.6.17
920
+ - @prosopo/env@3.3.12
921
+ - @prosopo/types-env@2.8.12
922
+ - @prosopo/api@3.2.7
923
+ - @prosopo/api-express-router@3.0.67
924
+ - @prosopo/load-balancer@2.8.33
925
+ - @prosopo/types-database@4.4.11
926
+
927
+ ## 3.22.0
928
+ ### Minor Changes
929
+
930
+ - e6d9553: Add `registerSiteKeys` bulk endpoint (`POST /v1/prosopo/provider/admin/sitekeys/register`) that accepts an array of site key records, allowing multiple client records to be registered in a single request.
931
+
932
+ ### Patch Changes
933
+
934
+ - Updated dependencies [e0fb3d6]
935
+ - Updated dependencies [e6d9553]
936
+ - Updated dependencies [f3f23e3]
937
+ - @prosopo/util@3.2.8
938
+ - @prosopo/types@3.13.0
939
+ - @prosopo/database@3.9.10
940
+ - @prosopo/datasets@3.1.9
941
+ - @prosopo/keyring@2.9.15
942
+ - @prosopo/user-access-policy@3.6.16
943
+ - @prosopo/api@3.2.6
944
+ - @prosopo/api-express-router@3.0.66
945
+ - @prosopo/env@3.3.11
946
+ - @prosopo/load-balancer@2.8.32
947
+ - @prosopo/types-database@4.4.10
948
+ - @prosopo/types-env@2.8.11
949
+
950
+ ## 3.21.4
951
+ ### Patch Changes
952
+
953
+ - 730c61e: Speed up captcha
954
+ - e1ea65f: Better spam email domain checking
955
+ - c316257: Adding sync fo sessions wrt captcha status
956
+ - Updated dependencies [730c61e]
957
+ - Updated dependencies [d5082a9]
958
+ - Updated dependencies [e1ea65f]
959
+ - Updated dependencies [c316257]
960
+ - @prosopo/load-balancer@2.8.31
961
+ - @prosopo/types@3.12.3
962
+ - @prosopo/types-database@4.4.9
963
+ - @prosopo/database@3.9.9
964
+ - @prosopo/util@3.2.7
965
+ - @prosopo/api@3.2.5
966
+ - @prosopo/api-express-router@3.0.65
967
+ - @prosopo/datasets@3.1.8
968
+ - @prosopo/env@3.3.10
969
+ - @prosopo/keyring@2.9.14
970
+ - @prosopo/types-env@2.8.10
971
+ - @prosopo/user-access-policy@3.6.15
972
+
973
+ ## 3.21.3
974
+ ### Patch Changes
975
+
976
+ - dbcd098: Fix bug with chrome on ios
977
+ - adb89a6: Disposable email checking
978
+ - Updated dependencies [adb89a6]
979
+ - @prosopo/types-database@4.4.8
980
+ - @prosopo/database@3.9.8
981
+ - @prosopo/locale@3.1.29
982
+ - @prosopo/types@3.12.2
983
+ - @prosopo/util@3.2.6
984
+ - @prosopo/api@3.2.4
985
+ - @prosopo/types-env@2.8.9
986
+ - @prosopo/env@3.3.9
987
+ - @prosopo/api-express-router@3.0.64
988
+ - @prosopo/common@3.1.30
989
+ - @prosopo/datasets@3.1.7
990
+ - @prosopo/keyring@2.9.13
991
+ - @prosopo/load-balancer@2.8.30
992
+ - @prosopo/user-access-policy@3.6.14
993
+ - @prosopo/api-route@2.6.38
994
+
995
+ ## 3.21.2
996
+ ### Patch Changes
997
+
998
+ - f5c8725: Fix bug with chrome on ios
999
+
1000
+ ## 3.21.1
1001
+ ### Patch Changes
1002
+
1003
+ - a90eb54: We know WHAT happens but we don't know WHY happens
1004
+ - Updated dependencies [c5ee492]
1005
+ - Updated dependencies [a90eb54]
1006
+ - @prosopo/common@3.1.29
1007
+ - @prosopo/types-database@4.4.7
1008
+ - @prosopo/types@3.12.1
1009
+ - @prosopo/api-express-router@3.0.63
1010
+ - @prosopo/api-route@2.6.37
1011
+ - @prosopo/database@3.9.7
1012
+ - @prosopo/datasets@3.1.6
1013
+ - @prosopo/env@3.3.8
1014
+ - @prosopo/keyring@2.9.12
1015
+ - @prosopo/load-balancer@2.8.29
1016
+ - @prosopo/types-env@2.8.8
1017
+ - @prosopo/user-access-policy@3.6.13
1018
+ - @prosopo/api@3.2.3
1019
+
1020
+ ## 3.21.0
1021
+ ### Minor Changes
1022
+
1023
+ - feaca02: Max image rounds
1024
+
1025
+ ### Patch Changes
1026
+
1027
+ - 759d4e6: Dynamic server secrets for client example server
1028
+ - 676c5f2: Use HTTPS in developmentwq
1029
+ - Updated dependencies [676c5f2]
1030
+ - Updated dependencies [feaca02]
1031
+ - @prosopo/load-balancer@2.8.28
1032
+ - @prosopo/keyring@2.9.11
1033
+ - @prosopo/types@3.12.0
1034
+ - @prosopo/env@3.3.7
1035
+ - @prosopo/types-env@2.8.7
1036
+ - @prosopo/api@3.2.2
1037
+ - @prosopo/api-express-router@3.0.62
1038
+ - @prosopo/database@3.9.6
1039
+ - @prosopo/datasets@3.1.5
1040
+ - @prosopo/types-database@4.4.6
1041
+ - @prosopo/user-access-policy@3.6.12
1042
+
1043
+ ## 3.20.4
1044
+ ### Patch Changes
1045
+
1046
+ - 8148587: Clustering
1047
+ - Updated dependencies [8148587]
1048
+ - @prosopo/types-database@4.4.5
1049
+ - @prosopo/types@3.11.1
1050
+ - @prosopo/database@3.9.5
1051
+ - @prosopo/types-env@2.8.6
1052
+ - @prosopo/api@3.2.1
1053
+ - @prosopo/api-express-router@3.0.61
1054
+ - @prosopo/datasets@3.1.4
1055
+ - @prosopo/env@3.3.6
1056
+ - @prosopo/keyring@2.9.10
1057
+ - @prosopo/load-balancer@2.8.27
1058
+ - @prosopo/user-access-policy@3.6.11
1059
+
1060
+ ## 3.20.3
1061
+ ### Patch Changes
1062
+
1063
+ - 5444635: New ob code
1064
+
1065
+ ## 3.20.2
1066
+ ### Patch Changes
1067
+
1068
+ - 31af9cf: Use correct country code var
1069
+
1070
+ ## 3.20.1
1071
+ ### Patch Changes
1072
+
1073
+ - Updated dependencies [90033e9]
1074
+ - @prosopo/types-database@4.4.4
1075
+ - @prosopo/database@3.9.4
1076
+ - @prosopo/types-env@2.8.5
1077
+ - @prosopo/env@3.3.5
1078
+ - @prosopo/api-express-router@3.0.60
1079
+
1080
+ ## 3.20.0
1081
+ ### Minor Changes
1082
+
1083
+ - 7f6ffc5: Store behavioural for image challenges
1084
+
1085
+ ### Patch Changes
1086
+
1087
+ - ca7f4ad: Attach site key and user to logger earlier
1088
+ - Updated dependencies [ca7f4ad]
1089
+ - Updated dependencies [7f6ffc5]
1090
+ - @prosopo/api-express-router@3.0.59
1091
+ - @prosopo/types@3.11.0
1092
+ - @prosopo/api@3.2.0
1093
+ - @prosopo/database@3.9.3
1094
+ - @prosopo/datasets@3.1.3
1095
+ - @prosopo/env@3.3.4
1096
+ - @prosopo/keyring@2.9.9
1097
+ - @prosopo/load-balancer@2.8.26
1098
+ - @prosopo/types-database@4.4.3
1099
+ - @prosopo/types-env@2.8.4
1100
+ - @prosopo/user-access-policy@3.6.10
1101
+
1102
+ ## 3.19.3
1103
+ ### Patch Changes
1104
+
1105
+ - bca43e5: catcher updates
1106
+
1107
+ ## 3.19.2
1108
+ ### Patch Changes
1109
+
1110
+ - ce4f831: patch for some mobile devices
1111
+ - 93fa086: Add decision engine endpoints
1112
+ - 4de47f5: Catcher update
1113
+ - Updated dependencies [93fa086]
1114
+ - @prosopo/types-database@4.4.2
1115
+ - @prosopo/database@3.9.2
1116
+ - @prosopo/types@3.10.2
1117
+ - @prosopo/api@3.1.49
1118
+ - @prosopo/types-env@2.8.3
1119
+ - @prosopo/env@3.3.3
1120
+ - @prosopo/api-express-router@3.0.58
1121
+ - @prosopo/datasets@3.1.2
1122
+ - @prosopo/keyring@2.9.8
1123
+ - @prosopo/load-balancer@2.8.25
1124
+ - @prosopo/user-access-policy@3.6.9
1125
+
1126
+ ## 3.19.1
1127
+ ### Patch Changes
1128
+
1129
+ - cde7550: enhance/frictionless-headers-db-field
1130
+ - Updated dependencies [cde7550]
1131
+ - @prosopo/types-database@4.4.1
1132
+ - @prosopo/types@3.10.1
1133
+ - @prosopo/database@3.9.1
1134
+ - @prosopo/types-env@2.8.2
1135
+ - @prosopo/api@3.1.48
1136
+ - @prosopo/api-express-router@3.0.57
1137
+ - @prosopo/datasets@3.1.1
1138
+ - @prosopo/env@3.3.2
1139
+ - @prosopo/keyring@2.9.7
1140
+ - @prosopo/load-balancer@2.8.24
1141
+ - @prosopo/user-access-policy@3.6.8
1142
+
1143
+ ## 3.19.0
1144
+ ### Minor Changes
1145
+
1146
+ - ad6d622: Separate types from mongoose schemas to avoid bundling mongoose in frontend
1147
+
1148
+ ### Patch Changes
1149
+
1150
+ - fa95c5f: zod types for db records
1151
+ - Updated dependencies [ad6d622]
1152
+ - Updated dependencies [ced9f41]
1153
+ - Updated dependencies [fa95c5f]
1154
+ - @prosopo/types-database@4.4.0
1155
+ - @prosopo/database@3.9.0
1156
+ - @prosopo/datasets@3.1.0
1157
+ - @prosopo/types@3.10.0
1158
+ - @prosopo/types-env@2.8.1
1159
+ - @prosopo/env@3.3.1
1160
+ - @prosopo/api@3.1.47
1161
+ - @prosopo/api-express-router@3.0.56
1162
+ - @prosopo/keyring@2.9.6
1163
+ - @prosopo/load-balancer@2.8.23
1164
+ - @prosopo/user-access-policy@3.6.7
1165
+
1166
+ ## 3.18.0
1167
+ ### Minor Changes
1168
+
1169
+ - ff58a70: Load the geolocation service at startup only
1170
+
1171
+ ### Patch Changes
1172
+
1173
+ - Updated dependencies [ff58a70]
1174
+ - Updated dependencies [d329e63]
1175
+ - @prosopo/types-env@2.8.0
1176
+ - @prosopo/types@3.9.0
1177
+ - @prosopo/env@3.3.0
1178
+ - @prosopo/database@3.8.0
1179
+ - @prosopo/api@3.1.46
1180
+ - @prosopo/api-express-router@3.0.55
1181
+ - @prosopo/datasets@3.0.63
1182
+ - @prosopo/keyring@2.9.5
1183
+ - @prosopo/load-balancer@2.8.22
1184
+ - @prosopo/types-database@4.3.1
1185
+ - @prosopo/user-access-policy@3.6.6
1186
+
1187
+ ## 3.17.0
1188
+ ### Minor Changes
1189
+
1190
+ - 3feeea4: Store geolocation. Remove pending image captcha collection
1191
+
1192
+ ### Patch Changes
1193
+
1194
+ - Updated dependencies [3feeea4]
1195
+ - @prosopo/types-database@4.3.0
1196
+ - @prosopo/database@3.7.0
1197
+ - @prosopo/datasets@3.0.62
1198
+ - @prosopo/types-env@2.7.66
1199
+ - @prosopo/env@3.2.42
1200
+ - @prosopo/api-express-router@3.0.54
1201
+
1202
+ ## 3.16.5
1203
+ ### Patch Changes
1204
+
1205
+ - 4c08158: Skip ip validation unit tests
1206
+ - d2431cd: Allow IP validation rules to be disabled
1207
+ - Updated dependencies [4c08158]
1208
+ - Updated dependencies [d2431cd]
1209
+ - @prosopo/types-database@4.2.4
1210
+ - @prosopo/types@3.8.4
1211
+ - @prosopo/database@3.6.12
1212
+ - @prosopo/datasets@3.0.61
1213
+ - @prosopo/types-env@2.7.65
1214
+ - @prosopo/api@3.1.45
1215
+ - @prosopo/api-express-router@3.0.53
1216
+ - @prosopo/env@3.2.41
1217
+ - @prosopo/keyring@2.9.4
1218
+ - @prosopo/load-balancer@2.8.21
1219
+ - @prosopo/user-access-policy@3.6.5
1220
+
1221
+ ## 3.16.4
1222
+ ### Patch Changes
1223
+
1224
+ - 3a58d06: Don't fail on IP comparison fail
1225
+
1226
+ ## 3.16.3
1227
+ ### Patch Changes
1228
+
1229
+ - 8dad7f3: Implement frictionless blocks
1230
+ - Updated dependencies [8dad7f3]
1231
+ - @prosopo/types-database@4.2.3
1232
+ - @prosopo/database@3.6.11
1233
+ - @prosopo/datasets@3.0.60
1234
+ - @prosopo/types-env@2.7.64
1235
+ - @prosopo/env@3.2.40
1236
+ - @prosopo/api-express-router@3.0.52
1237
+
1238
+ ## 3.16.2
1239
+ ### Patch Changes
1240
+
1241
+ - 664e5bd: add unit tests
1242
+ - b19da6d: Shared CLI start fn
1243
+ - bd6995b: Adding UAP based geoblocking rules
1244
+ - Updated dependencies [bd6995b]
1245
+ - @prosopo/user-access-policy@3.6.4
1246
+ - @prosopo/types@3.8.3
1247
+ - @prosopo/database@3.6.10
1248
+ - @prosopo/types-database@4.2.2
1249
+ - @prosopo/api@3.1.44
1250
+ - @prosopo/api-express-router@3.0.51
1251
+ - @prosopo/datasets@3.0.59
1252
+ - @prosopo/env@3.2.39
1253
+ - @prosopo/keyring@2.9.3
1254
+ - @prosopo/load-balancer@2.8.20
1255
+ - @prosopo/types-env@2.7.63
1256
+
1257
+ ## 3.16.1
1258
+ ### Patch Changes
1259
+
1260
+ - 9633e58: Add captcha type to decision machine and run on image verification"
1261
+ - Updated dependencies [9633e58]
1262
+ - @prosopo/types-database@4.2.1
1263
+ - @prosopo/types@3.8.2
1264
+ - @prosopo/api@3.1.43
1265
+ - @prosopo/database@3.6.9
1266
+ - @prosopo/datasets@3.0.58
1267
+ - @prosopo/types-env@2.7.62
1268
+ - @prosopo/api-express-router@3.0.50
1269
+ - @prosopo/env@3.2.38
1270
+ - @prosopo/keyring@2.9.2
1271
+ - @prosopo/load-balancer@2.8.19
1272
+ - @prosopo/user-access-policy@3.6.3
1273
+
1274
+ ## 3.16.0
1275
+ ### Minor Changes
1276
+
1277
+ - 4299cae: Adding site key to session records
1278
+
1279
+ ### Patch Changes
1280
+
1281
+ - 261f89f: Actually set the site key
1282
+ - f52a5c1: Adding decision machine to provider for behavior detection
1283
+ - Updated dependencies [f52a5c1]
1284
+ - Updated dependencies [4299cae]
1285
+ - @prosopo/types-database@4.2.0
1286
+ - @prosopo/database@3.6.8
1287
+ - @prosopo/types@3.8.1
1288
+ - @prosopo/api@3.1.42
1289
+ - @prosopo/datasets@3.0.57
1290
+ - @prosopo/types-env@2.7.61
1291
+ - @prosopo/env@3.2.37
1292
+ - @prosopo/api-express-router@3.0.49
1293
+ - @prosopo/keyring@2.9.1
1294
+ - @prosopo/load-balancer@2.8.18
1295
+ - @prosopo/user-access-policy@3.6.2
1296
+
1297
+ ## 3.15.2
1298
+ ### Patch Changes
1299
+
1300
+ - Updated dependencies [ed87b6f]
1301
+ - @prosopo/user-access-policy@3.6.1
1302
+ - @prosopo/database@3.6.7
1303
+ - @prosopo/types-database@4.1.6
1304
+ - @prosopo/env@3.2.36
1305
+ - @prosopo/datasets@3.0.56
1306
+ - @prosopo/types-env@2.7.60
1307
+ - @prosopo/api-express-router@3.0.48
1308
+
1309
+ ## 3.15.1
1310
+ ### Patch Changes
1311
+
1312
+ - 15254a3: Key cycle
1313
+
1314
+ ## 3.15.0
1315
+ ### Minor Changes
1316
+
1317
+ - 6a4d57d: Move account creation into worker
1318
+
1319
+ ### Patch Changes
1320
+
1321
+ - a53526b: enhance/pow-client-solution
1322
+ - 3acc333: Update pow record at verify
1323
+ - 3acc333: Add JWT issuance to keypairs
1324
+ - 0a38892: feat/cross-os-testing
1325
+ - 3acc333: ip parsing
1326
+ - a8faa9a: bump license year
1327
+ - 7543d17: mouse movements bot stopping
1328
+ - fe9fe22: adding api returns
1329
+ - 3acc333: Release 3.3.0
1330
+ - 4ac7ef0: Fixing provider side typing of collectors
1331
+ - Updated dependencies [a53526b]
1332
+ - Updated dependencies [3acc333]
1333
+ - Updated dependencies [3acc333]
1334
+ - Updated dependencies [3acc333]
1335
+ - Updated dependencies [0a38892]
1336
+ - Updated dependencies [1ee3d80]
1337
+ - Updated dependencies [a8faa9a]
1338
+ - Updated dependencies [17854a7]
1339
+ - Updated dependencies [7543d17]
1340
+ - Updated dependencies [fe9fe22]
1341
+ - Updated dependencies [3acc333]
1342
+ - @prosopo/util@3.2.5
1343
+ - @prosopo/types-database@4.1.5
1344
+ - @prosopo/database@3.6.6
1345
+ - @prosopo/api-express-router@3.0.47
1346
+ - @prosopo/util-crypto@13.5.29
1347
+ - @prosopo/keyring@2.9.0
1348
+ - @prosopo/types@3.8.0
1349
+ - @prosopo/user-access-policy@3.6.0
1350
+ - @prosopo/load-balancer@2.8.17
1351
+ - @prosopo/api-route@2.6.36
1352
+ - @prosopo/types-env@2.7.59
1353
+ - @prosopo/datasets@3.0.55
1354
+ - @prosopo/common@3.1.28
1355
+ - @prosopo/locale@3.1.28
1356
+ - @prosopo/api@3.1.41
1357
+ - @prosopo/env@3.2.35
1358
+
1359
+ ## 3.14.7
1360
+ ### Patch Changes
1361
+
1362
+ - 41f8a82: Export userscope fn
1363
+ - Updated dependencies [378a896]
1364
+ - Updated dependencies [90fddd8]
1365
+ - @prosopo/user-access-policy@3.5.37
1366
+ - @prosopo/database@3.6.5
1367
+ - @prosopo/types-database@4.1.4
1368
+ - @prosopo/env@3.2.34
1369
+ - @prosopo/datasets@3.0.54
1370
+ - @prosopo/types-env@2.7.58
1371
+ - @prosopo/api-express-router@3.0.46
1372
+
1373
+ ## 3.14.6
1374
+ ### Patch Changes
1375
+
1376
+ - c6faa77: Fix
1377
+
1378
+ ## 3.14.5
1379
+ ### Patch Changes
1380
+
1381
+ - 7c475dc: Add headHash and coords fields to user access policies, and implement user access policy checks in server-side PoW verification
1382
+ - Updated dependencies [7c475dc]
1383
+ - @prosopo/user-access-policy@3.5.36
1384
+ - @prosopo/database@3.6.4
1385
+ - @prosopo/types-database@4.1.3
1386
+ - @prosopo/env@3.2.33
1387
+ - @prosopo/datasets@3.0.53
1388
+ - @prosopo/types-env@2.7.57
1389
+ - @prosopo/api-express-router@3.0.45
1390
+
1391
+ ## 3.14.4
1392
+ ### Patch Changes
1393
+
1394
+ - Updated dependencies [9ab5f11]
1395
+ - @prosopo/database@3.6.3
1396
+ - @prosopo/env@3.2.32
1397
+ - @prosopo/api-express-router@3.0.44
1398
+
1399
+ ## 3.14.3
1400
+ ### Patch Changes
1401
+
1402
+ - ea5f1f8: Fix detectors
1403
+
1404
+ ## 3.14.2
1405
+ ### Patch Changes
1406
+
1407
+ - Updated dependencies [141e462]
1408
+ - @prosopo/types@3.7.2
1409
+ - @prosopo/api@3.1.40
1410
+ - @prosopo/api-express-router@3.0.43
1411
+ - @prosopo/database@3.6.2
1412
+ - @prosopo/datasets@3.0.52
1413
+ - @prosopo/env@3.2.31
1414
+ - @prosopo/keyring@2.8.43
1415
+ - @prosopo/load-balancer@2.8.16
1416
+ - @prosopo/types-database@4.1.2
1417
+ - @prosopo/types-env@2.7.56
1418
+ - @prosopo/user-access-policy@3.5.35
1419
+
1420
+ ## 3.14.1
1421
+ ### Patch Changes
1422
+
1423
+ - b5b21f8: Reduce Sample Size
1424
+ - 345b25b: pow coord
1425
+ - 1fd84de: Make sure session Ids are unique
1426
+ - Updated dependencies [345b25b]
1427
+ - @prosopo/types-database@4.1.1
1428
+ - @prosopo/database@3.6.1
1429
+ - @prosopo/types@3.7.1
1430
+ - @prosopo/api@3.1.39
1431
+ - @prosopo/datasets@3.0.51
1432
+ - @prosopo/types-env@2.7.55
1433
+ - @prosopo/env@3.2.30
1434
+ - @prosopo/api-express-router@3.0.42
1435
+ - @prosopo/keyring@2.8.42
1436
+ - @prosopo/load-balancer@2.8.15
1437
+ - @prosopo/user-access-policy@3.5.34
1438
+
1439
+ ## 3.14.0
1440
+ ### Minor Changes
1441
+
1442
+ - ce70a2b: Add context-aware entropy calculation for WebView and default contexts
1443
+
1444
+ - Added ContextType enum to distinguish between WebView and default browser contexts
1445
+ - Implemented context-specific entropy calculation and storage
1446
+ - Created clientContextEntropy collection with automatic timestamp management
1447
+ - Removed legacy clientEntropy table in favor of context-specific approach
1448
+ - Added helper functions for context determination and threshold retrieval
1449
+ - Included comprehensive unit tests for context validation logic
1450
+
1451
+ ### Patch Changes
1452
+
1453
+ - c2b940f: Properly save context type settings
1454
+ - 5ad6f48: Fix detect webview iphones
1455
+ - f6b5094: Allow different context to override default
1456
+ - e3a8948: Run job for pro+ only
1457
+ - e01227b: add turbo
1458
+ - Updated dependencies [ce70a2b]
1459
+ - Updated dependencies [c2b940f]
1460
+ - Updated dependencies [f6b5094]
1461
+ - Updated dependencies [e01227b]
1462
+ - @prosopo/types@3.7.0
1463
+ - @prosopo/types-database@4.1.0
1464
+ - @prosopo/database@3.6.0
1465
+ - @prosopo/locale@3.1.27
1466
+ - @prosopo/api@3.1.38
1467
+ - @prosopo/api-express-router@3.0.41
1468
+ - @prosopo/common@3.1.27
1469
+ - @prosopo/datasets@3.0.50
1470
+ - @prosopo/env@3.2.29
1471
+ - @prosopo/keyring@2.8.41
1472
+ - @prosopo/load-balancer@2.8.14
1473
+ - @prosopo/types-env@2.7.54
1474
+ - @prosopo/user-access-policy@3.5.33
1475
+ - @prosopo/api-route@2.6.35
1476
+
3
1477
  ## 3.13.7
4
1478
  ### Patch Changes
5
1479