@prosopo/provider 3.15.0 → 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.
- package/.turbo/turbo-build$colon$cjs.log +104 -57
- package/.turbo/turbo-build$colon$tsc.log +30 -24
- package/.turbo/turbo-build.log +104 -58
- package/CHANGELOG.md +1311 -0
- package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -1
- package/dist/api/admin/apiAdminRoutesProvider.js +31 -1
- package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -1
- package/dist/api/admin/apiClearAllCountersEndpoint.d.ts +14 -0
- package/dist/api/admin/apiClearAllCountersEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiClearAllCountersEndpoint.js +59 -0
- package/dist/api/admin/apiClearAllCountersEndpoint.js.map +1 -0
- package/dist/api/admin/apiDnsEventEndpoint.d.ts +15 -0
- package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiDnsEventEndpoint.js +64 -0
- package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -0
- package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts +13 -0
- package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js +49 -0
- package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js.map +1 -0
- package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts +14 -0
- package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiGetDecisionMachineEndpoint.js +42 -0
- package/dist/api/admin/apiGetDecisionMachineEndpoint.js.map +1 -0
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +1 -1
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +1 -1
- package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts +14 -0
- package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiRegisterSiteKeysEndpoint.js +33 -0
- package/dist/api/admin/apiRegisterSiteKeysEndpoint.js.map +1 -0
- package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts +13 -0
- package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js +41 -0
- package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js.map +1 -0
- package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts +14 -0
- package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js +42 -0
- package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js.map +1 -0
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +2 -2
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +1 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +1 -1
- package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts +14 -0
- package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiRemoveSiteKeyEndpoint.js +32 -0
- package/dist/api/admin/apiRemoveSiteKeyEndpoint.js.map +1 -0
- package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts +14 -0
- package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiRemoveSiteKeysEndpoint.js +34 -0
- package/dist/api/admin/apiRemoveSiteKeysEndpoint.js.map +1 -0
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +1 -1
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +1 -1
- package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts +14 -0
- package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js +60 -0
- package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js.map +1 -0
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +1 -1
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +1 -1
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +1 -1
- package/dist/api/blacklistRequestInspector.d.ts +4 -3
- package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.js +18 -5
- package/dist/api/blacklistRequestInspector.js.map +1 -1
- package/dist/api/block.d.ts +2 -1
- package/dist/api/block.d.ts.map +1 -1
- package/dist/api/block.js +19 -8
- package/dist/api/block.js.map +1 -1
- package/dist/api/captcha/checkSpamEmail.d.ts +6 -0
- package/dist/api/captcha/checkSpamEmail.d.ts.map +1 -0
- package/dist/api/captcha/checkSpamEmail.js +80 -0
- package/dist/api/captcha/checkSpamEmail.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts +31 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +123 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +3 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +13 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts +36 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +287 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts +4 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +14 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts +7 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +314 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts +5 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js +17 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts +14 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js +28 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +23 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +61 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts +1 -7
- package/dist/api/captcha/getFrictionlessCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +2 -364
- package/dist/api/captcha/getFrictionlessCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getImageCaptchaChallenge.js +36 -9
- package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getPoWCaptchaChallenge.js +49 -7
- package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts +7 -0
- package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -0
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js +201 -0
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -0
- package/dist/api/captcha/maintenanceModeResponses.d.ts +5 -0
- package/dist/api/captcha/maintenanceModeResponses.d.ts.map +1 -0
- package/dist/api/captcha/maintenanceModeResponses.js +42 -0
- package/dist/api/captcha/maintenanceModeResponses.js.map +1 -0
- package/dist/api/captcha/submitImageCaptchaSolution.d.ts +1 -2
- package/dist/api/captcha/submitImageCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitImageCaptchaSolution.js +19 -2
- package/dist/api/captcha/submitImageCaptchaSolution.js.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js +84 -7
- package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
- package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts +6 -0
- package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -0
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js +108 -0
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -0
- package/dist/api/captcha.d.ts.map +1 -1
- package/dist/api/captcha.js +28 -3
- package/dist/api/captcha.js.map +1 -1
- package/dist/api/dnsEventUrl.d.ts +3 -0
- package/dist/api/dnsEventUrl.d.ts.map +1 -0
- package/dist/api/dnsEventUrl.js +25 -0
- package/dist/api/dnsEventUrl.js.map +1 -0
- package/dist/api/domainMiddleware.d.ts.map +1 -1
- package/dist/api/domainMiddleware.js +36 -5
- package/dist/api/domainMiddleware.js.map +1 -1
- package/dist/api/ipInfoMiddleware.d.ts +4 -0
- package/dist/api/ipInfoMiddleware.d.ts.map +1 -0
- package/dist/api/ipInfoMiddleware.js +20 -0
- package/dist/api/ipInfoMiddleware.js.map +1 -0
- package/dist/api/ja4Middleware.d.ts +1 -1
- package/dist/api/ja4Middleware.d.ts.map +1 -1
- package/dist/api/ja4Middleware.js +1 -1
- package/dist/api/ja4Middleware.js.map +1 -1
- package/dist/api/startProviderApi.d.ts +9 -0
- package/dist/api/startProviderApi.d.ts.map +1 -0
- package/dist/api/startProviderApi.js +217 -0
- package/dist/api/startProviderApi.js.map +1 -0
- package/dist/api/testSiteKey.d.ts +4 -0
- package/dist/api/testSiteKey.d.ts.map +1 -0
- package/dist/api/testSiteKey.js +17 -0
- package/dist/api/testSiteKey.js.map +1 -0
- package/dist/api/validateAddress.d.ts +1 -1
- package/dist/api/validateAddress.d.ts.map +1 -1
- package/dist/api/validateAddress.js.map +1 -1
- package/dist/api/verify.d.ts.map +1 -1
- package/dist/api/verify.js +145 -10
- package/dist/api/verify.js.map +1 -1
- package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +31 -1
- package/dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs +59 -0
- package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +65 -0
- package/dist/cjs/api/admin/apiGetAllDecisionMachinesEndpoint.cjs +49 -0
- package/dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs +42 -0
- package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +5 -5
- package/dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs +34 -0
- package/dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs +41 -0
- package/dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs +42 -0
- package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +6 -6
- package/dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs +33 -0
- package/dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs +35 -0
- package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +5 -5
- package/dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs +60 -0
- package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +7 -7
- package/dist/cjs/api/blacklistRequestInspector.cjs +18 -5
- package/dist/cjs/api/block.cjs +19 -8
- package/dist/cjs/api/captcha/checkSpamEmail.cjs +79 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +123 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +13 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +287 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +14 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +313 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.cjs +17 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs +28 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +61 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +2 -364
- package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +35 -8
- package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +48 -6
- package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +200 -0
- package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +42 -0
- package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +19 -2
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +82 -5
- package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +107 -0
- package/dist/cjs/api/captcha.cjs +29 -4
- package/dist/cjs/api/dnsEventUrl.cjs +25 -0
- package/dist/cjs/api/domainMiddleware.cjs +36 -5
- package/dist/cjs/api/ipInfoMiddleware.cjs +20 -0
- package/dist/cjs/api/ja4Middleware.cjs +7 -7
- package/dist/cjs/api/startProviderApi.cjs +240 -0
- package/dist/cjs/api/testSiteKey.cjs +17 -0
- package/dist/cjs/api/verify.cjs +144 -9
- package/dist/cjs/compositeIpAddress.cjs +6 -6
- package/dist/cjs/index.cjs +15 -0
- package/dist/cjs/rules/lang.cjs +1 -1
- package/dist/cjs/schedulers/updateSpamEmailDomains.cjs +46 -0
- package/dist/cjs/services/ipComparison.cjs +9 -10
- package/dist/cjs/tasks/captchaManager.cjs +338 -66
- package/dist/cjs/tasks/client/clientTasks.cjs +115 -4
- package/dist/cjs/tasks/decisionMachine/decisionMachineRunner.cjs +285 -0
- package/dist/cjs/tasks/detection/decodeBehavior.cjs +225 -228
- package/dist/cjs/tasks/detection/decodeBehavior.js +1 -1
- package/dist/cjs/tasks/detection/decodePayload.cjs +707 -635
- package/dist/cjs/tasks/detection/decodePayload.js +1 -1
- package/dist/cjs/tasks/detection/decodeSimd.cjs +348 -0
- package/dist/cjs/tasks/detection/decodeSimd.js +15 -0
- package/dist/cjs/tasks/detection/getBotScore.cjs +4 -2
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +142 -42
- package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +10 -7
- package/dist/cjs/tasks/frictionless/routingMachine.cjs +58 -0
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +371 -57
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +357 -167
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +525 -0
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasksUtils.cjs +7 -0
- package/dist/cjs/tasks/spam/checkSpamEmail.cjs +147 -0
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +41 -0
- package/dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs +92 -0
- package/dist/cjs/tasks/spam/updateSpamEmailDomains.cjs +58 -0
- package/dist/cjs/tasks/tasks.cjs +111 -13
- package/dist/cjs/util/usageCounters.cjs +201 -0
- package/dist/cjs/util.cjs +3 -4
- package/dist/cjs/utils/devicePlatform.cjs +10 -0
- package/dist/cjs/utils/dns.cjs +102 -0
- package/dist/cjs/utils/honeypot/encoders.cjs +86 -0
- package/dist/cjs/utils/honeypot/phraseBank.cjs +47 -0
- package/dist/cjs/utils/normalizeRequestIp.cjs +27 -0
- package/dist/compositeIpAddress.d.ts +1 -1
- package/dist/compositeIpAddress.d.ts.map +1 -1
- package/dist/compositeIpAddress.js +1 -1
- package/dist/compositeIpAddress.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/rules/lang.js +1 -1
- package/dist/rules/lang.js.map +1 -1
- package/dist/schedulers/updateSpamEmailDomains.d.ts +4 -0
- package/dist/schedulers/updateSpamEmailDomains.d.ts.map +1 -0
- package/dist/schedulers/updateSpamEmailDomains.js +46 -0
- package/dist/schedulers/updateSpamEmailDomains.js.map +1 -0
- package/dist/services/ipComparison.d.ts +2 -1
- package/dist/services/ipComparison.d.ts.map +1 -1
- package/dist/services/ipComparison.js +3 -4
- package/dist/services/ipComparison.js.map +1 -1
- package/dist/tasks/captchaManager.d.ts +24 -6
- package/dist/tasks/captchaManager.d.ts.map +1 -1
- package/dist/tasks/captchaManager.js +336 -64
- package/dist/tasks/captchaManager.js.map +1 -1
- package/dist/tasks/client/clientTasks.d.ts +49 -2
- package/dist/tasks/client/clientTasks.d.ts.map +1 -1
- package/dist/tasks/client/clientTasks.js +116 -5
- package/dist/tasks/client/clientTasks.js.map +1 -1
- package/dist/tasks/dataset/datasetTasks.d.ts +1 -1
- package/dist/tasks/dataset/datasetTasks.d.ts.map +1 -1
- package/dist/tasks/dataset/datasetTasks.js.map +1 -1
- package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts +20 -0
- package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts.map +1 -0
- package/dist/tasks/decisionMachine/decisionMachineRunner.js +285 -0
- package/dist/tasks/decisionMachine/decisionMachineRunner.js.map +1 -0
- package/dist/tasks/detection/decodeBehavior.d.ts +2 -2
- package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -1
- package/dist/tasks/detection/decodeBehavior.js +1 -1
- package/dist/tasks/detection/decodeBehavior.js.map +1 -1
- package/dist/tasks/detection/decodePayload.d.ts +2 -2
- package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
- package/dist/tasks/detection/decodePayload.js +1 -1
- package/dist/tasks/detection/decodePayload.js.map +1 -1
- package/dist/tasks/detection/decodeSimd.d.ts +3 -0
- package/dist/tasks/detection/decodeSimd.d.ts.map +1 -0
- package/dist/tasks/detection/decodeSimd.js +15 -0
- package/dist/tasks/detection/decodeSimd.js.map +1 -0
- package/dist/tasks/detection/getBehavioralData.d.ts +1 -1
- package/dist/tasks/detection/getBotScore.d.ts +2 -0
- package/dist/tasks/detection/getBotScore.d.ts.map +1 -1
- package/dist/tasks/detection/getBotScore.js +6 -4
- package/dist/tasks/detection/getBotScore.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts +19 -13
- package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +140 -42
- package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +2 -2
- package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasksUtils.js +10 -7
- package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +1 -1
- package/dist/tasks/frictionless/routingMachine.d.ts +15 -0
- package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -0
- package/dist/tasks/frictionless/routingMachine.js +58 -0
- package/dist/tasks/frictionless/routingMachine.js.map +1 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +14 -10
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +371 -57
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts +24 -8
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +358 -168
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts +32 -0
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -0
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js +525 -0
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -0
- package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts +2 -0
- package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.d.ts.map +1 -0
- package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js +7 -0
- package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js.map +1 -0
- package/dist/tasks/spam/checkSpamEmail.d.ts +5 -0
- package/dist/tasks/spam/checkSpamEmail.d.ts.map +1 -0
- package/dist/tasks/spam/checkSpamEmail.js +147 -0
- package/dist/tasks/spam/checkSpamEmail.js.map +1 -0
- package/dist/tasks/spam/checkTrafficFilter.d.ts +10 -0
- package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -0
- package/dist/tasks/spam/checkTrafficFilter.js +41 -0
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -0
- package/dist/tasks/spam/evaluateEmailSpamRules.d.ts +16 -0
- package/dist/tasks/spam/evaluateEmailSpamRules.d.ts.map +1 -0
- package/dist/tasks/spam/evaluateEmailSpamRules.js +92 -0
- package/dist/tasks/spam/evaluateEmailSpamRules.js.map +1 -0
- package/dist/tasks/spam/updateSpamEmailDomains.d.ts +4 -0
- package/dist/tasks/spam/updateSpamEmailDomains.d.ts.map +1 -0
- package/dist/tasks/spam/updateSpamEmailDomains.js +58 -0
- package/dist/tasks/spam/updateSpamEmailDomains.js.map +1 -0
- package/dist/tasks/tasks.d.ts +12 -1
- package/dist/tasks/tasks.d.ts.map +1 -1
- package/dist/tasks/tasks.js +102 -4
- package/dist/tasks/tasks.js.map +1 -1
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +4 -0
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -1
- package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts +2 -0
- package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js +107 -0
- package/dist/tests/integration/api/admin/apiRegisterSiteKeysEndpoint.integration.test.js.map +1 -0
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +45 -6
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
- package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts +2 -0
- package/dist/tests/integration/clientSettingsPersistence.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js +165 -0
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -0
- package/dist/tests/integration/decisionMachines.integration.test.d.ts +2 -0
- package/dist/tests/integration/decisionMachines.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/decisionMachines.integration.test.js +511 -0
- package/dist/tests/integration/decisionMachines.integration.test.js.map +1 -0
- package/dist/tests/integration/imgCaptcha.integration.test.js +418 -44
- package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -1
- package/dist/tests/integration/ipValidation.integration.test.js +10 -4
- package/dist/tests/integration/ipValidation.integration.test.js.map +1 -1
- package/dist/tests/integration/mocks/solvedTestCaptchas.js +16 -16
- package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +1 -1
- package/dist/tests/integration/powCaptcha.integration.test.js +218 -23
- package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -1
- package/dist/tests/integration/registerSitekey.d.ts.map +1 -1
- package/dist/tests/integration/registerSitekey.js +2 -0
- package/dist/tests/integration/registerSitekey.js.map +1 -1
- package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts +2 -0
- package/dist/tests/integration/routingDecisionMachines.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/routingDecisionMachines.integration.test.js +276 -0
- package/dist/tests/integration/routingDecisionMachines.integration.test.js.map +1 -0
- package/dist/tests/integration/testUtils.d.ts +4 -0
- package/dist/tests/integration/testUtils.d.ts.map +1 -0
- package/dist/tests/integration/testUtils.js +15 -0
- package/dist/tests/integration/testUtils.js.map +1 -0
- package/dist/tests/integration/usageCounters.integration.test.d.ts +2 -0
- package/dist/tests/integration/usageCounters.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/usageCounters.integration.test.js +103 -0
- package/dist/tests/integration/usageCounters.integration.test.js.map +1 -0
- package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js +63 -0
- package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js.map +1 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +55 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js +67 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js.map +1 -0
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js +56 -0
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js.map +1 -0
- package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js +90 -0
- package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js.map +1 -0
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js +59 -0
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js.map +1 -0
- package/dist/tests/unit/api/adminRoutes.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/adminRoutes.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/adminRoutes.unit.test.js +131 -0
- package/dist/tests/unit/api/adminRoutes.unit.test.js.map +1 -0
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +79 -2
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
- package/dist/tests/unit/api/block.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/block.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/block.unit.test.js +60 -0
- package/dist/tests/unit/api/block.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js +118 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js +37 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js +154 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js +46 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js +69 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js +98 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js +60 -0
- package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +134 -0
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha.unit.test.js +39 -0
- package/dist/tests/unit/api/captcha.unit.test.js.map +1 -0
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +195 -2
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
- package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/headerCheckMiddleware.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js +126 -0
- package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js.map +1 -0
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +103 -33
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +1 -1
- package/dist/tests/unit/api/ja4Middleware.unit.test.js +130 -49
- package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +1 -1
- package/dist/tests/unit/api/public.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/public.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/public.unit.test.js +198 -0
- package/dist/tests/unit/api/public.unit.test.js.map +1 -0
- package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/robotsMiddleware.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/robotsMiddleware.unit.test.js +50 -0
- package/dist/tests/unit/api/robotsMiddleware.unit.test.js.map +1 -0
- package/dist/tests/unit/api/testSiteKey.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/testSiteKey.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/testSiteKey.unit.test.js +51 -0
- package/dist/tests/unit/api/testSiteKey.unit.test.js.map +1 -0
- package/dist/tests/unit/api/validateAddress.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/validateAddress.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/validateAddress.unit.test.js +141 -0
- package/dist/tests/unit/api/validateAddress.unit.test.js.map +1 -0
- package/dist/tests/unit/compositeIpAddress.unit.test.js +132 -60
- package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -1
- package/dist/tests/unit/pairs.unit.test.js +174 -28
- package/dist/tests/unit/pairs.unit.test.js.map +1 -1
- package/dist/tests/unit/rules/lang.unit.test.d.ts +2 -0
- package/dist/tests/unit/rules/lang.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/rules/lang.unit.test.js +207 -0
- package/dist/tests/unit/rules/lang.unit.test.js.map +1 -0
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +2 -2
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts +2 -0
- package/dist/tests/unit/schedulers/getClientList.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/schedulers/getClientList.unit.test.js +114 -0
- package/dist/tests/unit/schedulers/getClientList.unit.test.js.map +1 -0
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts +2 -0
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js +114 -0
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js.map +1 -0
- package/dist/tests/unit/services/ipComparison.unit.test.js +49 -35
- package/dist/tests/unit/services/ipComparison.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/captchaManager.unit.test.js +260 -5
- package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +16 -5
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +1 -1
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js +213 -0
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineCustomHeaders.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js +304 -0
- package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +115 -0
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +207 -2
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +83 -48
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js +169 -0
- package/dist/tests/unit/tasks/frictionless/routingMachine.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +719 -9
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +9 -3
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +1284 -68
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +152 -52
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +313 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js +29 -0
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasksUtils.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js +434 -0
- package/dist/tests/unit/tasks/spam/checkSpamEmail.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +112 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js +94 -0
- package/dist/tests/unit/tasks/spam/evaluateEmailSpamRules.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js +94 -0
- package/dist/tests/unit/tasks/streaming/providerDbStreaming.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +208 -0
- package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -0
- package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +26 -0
- package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -0
- package/dist/tests/unit/testUtils/mockProviderEnv.js +149 -0
- package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -0
- package/dist/tests/unit/util/redisCache.unit.test.d.ts +2 -0
- package/dist/tests/unit/util/redisCache.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/util/redisCache.unit.test.js +257 -0
- package/dist/tests/unit/util/redisCache.unit.test.js.map +1 -0
- package/dist/tests/unit/util/usageCounters.unit.test.d.ts +2 -0
- package/dist/tests/unit/util/usageCounters.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/util/usageCounters.unit.test.js +242 -0
- package/dist/tests/unit/util/usageCounters.unit.test.js.map +1 -0
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +2 -0
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +1 -1
- package/dist/tests/unit/util.ipDistance.unit.test.js +9 -3
- package/dist/tests/unit/util.ipDistance.unit.test.js.map +1 -1
- package/dist/tests/unit/util.unit.test.js +152 -155
- package/dist/tests/unit/util.unit.test.js.map +1 -1
- package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts +2 -0
- package/dist/tests/unit/utils/devicePlatform.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/devicePlatform.unit.test.js +58 -0
- package/dist/tests/unit/utils/devicePlatform.unit.test.js.map +1 -0
- package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts +2 -0
- package/dist/tests/unit/utils/hashUserAgent.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/hashUserAgent.unit.test.js +52 -0
- package/dist/tests/unit/utils/hashUserAgent.unit.test.js.map +1 -0
- package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts +2 -0
- package/dist/tests/unit/utils/hashUserIp.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/hashUserIp.unit.test.js +81 -0
- package/dist/tests/unit/utils/hashUserIp.unit.test.js.map +1 -0
- package/dist/util/usageCounters.d.ts +22 -0
- package/dist/util/usageCounters.d.ts.map +1 -0
- package/dist/util/usageCounters.js +201 -0
- package/dist/util/usageCounters.js.map +1 -0
- package/dist/util.d.ts +3 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +3 -4
- package/dist/util.js.map +1 -1
- package/dist/utils/devicePlatform.d.ts +5 -0
- package/dist/utils/devicePlatform.d.ts.map +1 -0
- package/dist/utils/devicePlatform.js +10 -0
- package/dist/utils/devicePlatform.js.map +1 -0
- package/dist/utils/dns.d.ts +22 -0
- package/dist/utils/dns.d.ts.map +1 -0
- package/dist/utils/dns.js +84 -0
- package/dist/utils/dns.js.map +1 -0
- package/dist/utils/honeypot/encoders.d.ts +3 -0
- package/dist/utils/honeypot/encoders.d.ts.map +1 -0
- package/dist/utils/honeypot/encoders.js +86 -0
- package/dist/utils/honeypot/encoders.js.map +1 -0
- package/dist/utils/honeypot/phraseBank.d.ts +3 -0
- package/dist/utils/honeypot/phraseBank.d.ts.map +1 -0
- package/dist/utils/honeypot/phraseBank.js +47 -0
- package/dist/utils/honeypot/phraseBank.js.map +1 -0
- package/dist/utils/normalizeRequestIp.d.ts +3 -0
- package/dist/utils/normalizeRequestIp.d.ts.map +1 -0
- package/dist/utils/normalizeRequestIp.js +27 -0
- package/dist/utils/normalizeRequestIp.js.map +1 -0
- package/package.json +27 -19
- package/dist/cjs/services/ipInfo.cjs +0 -87
- package/dist/services/ipInfo.d.ts +0 -3
- package/dist/services/ipInfo.d.ts.map +0 -1
- package/dist/services/ipInfo.js +0 -87
- package/dist/services/ipInfo.js.map +0 -1
- package/dist/tests/unit/services/ipInfo.unit.test.d.ts +0 -2
- package/dist/tests/unit/services/ipInfo.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/services/ipInfo.unit.test.js +0 -210
- package/dist/tests/unit/services/ipInfo.unit.test.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,1316 @@
|
|
|
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
|
+
|
|
3
1314
|
## 3.15.0
|
|
4
1315
|
### Minor Changes
|
|
5
1316
|
|