@prosopo/provider 5.14.0 → 5.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$cjs.log +62 -46
- package/.turbo/turbo-build$colon$tsc.log +37 -34
- package/.turbo/turbo-build.log +63 -50
- package/CHANGELOG.md +193 -0
- package/LICENSE +201 -0
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +4 -0
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +63 -3
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js.map +1 -1
- package/dist/api/blacklistRequestInspector.js +2 -2
- package/dist/api/captcha/getAudioCaptchaChallenge.d.ts +5 -0
- package/dist/api/captcha/getAudioCaptchaChallenge.d.ts.map +1 -0
- package/dist/api/captcha/getAudioCaptchaChallenge.js +37 -0
- package/dist/api/captcha/getAudioCaptchaChallenge.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +2 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +11 -2
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +26 -15
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.d.ts +5 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js +20 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -1
- package/dist/api/captcha/getIconOrderCaptchaChallenge.d.ts +5 -0
- package/dist/api/captcha/getIconOrderCaptchaChallenge.d.ts.map +1 -0
- package/dist/api/captcha/getIconOrderCaptchaChallenge.js +37 -0
- package/dist/api/captcha/getIconOrderCaptchaChallenge.js.map +1 -0
- package/dist/api/captcha/getImageCaptchaChallenge.js +2 -2
- package/dist/api/captcha/getPoWCaptchaChallenge.js +4 -4
- package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts +1 -3
- package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js +53 -146
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/interactiveCaptchaChallenge.d.ts +42 -0
- package/dist/api/captcha/interactiveCaptchaChallenge.d.ts.map +1 -0
- package/dist/api/captcha/interactiveCaptchaChallenge.js +154 -0
- package/dist/api/captcha/interactiveCaptchaChallenge.js.map +1 -0
- package/dist/api/captcha/interactiveCaptchaSolution.d.ts +14 -0
- package/dist/api/captcha/interactiveCaptchaSolution.d.ts.map +1 -0
- package/dist/api/captcha/interactiveCaptchaSolution.js +77 -0
- package/dist/api/captcha/interactiveCaptchaSolution.js.map +1 -0
- package/dist/api/captcha/maintenanceModeResponses.d.ts +4 -2
- package/dist/api/captcha/maintenanceModeResponses.d.ts.map +1 -1
- package/dist/api/captcha/maintenanceModeResponses.js +28 -1
- package/dist/api/captcha/maintenanceModeResponses.js.map +1 -1
- package/dist/api/captcha/submitAudioCaptchaSolution.d.ts +4 -0
- package/dist/api/captcha/submitAudioCaptchaSolution.d.ts.map +1 -0
- package/dist/api/captcha/submitAudioCaptchaSolution.js +11 -0
- package/dist/api/captcha/submitAudioCaptchaSolution.js.map +1 -0
- package/dist/api/captcha/submitIconOrderCaptchaSolution.d.ts +4 -0
- package/dist/api/captcha/submitIconOrderCaptchaSolution.d.ts.map +1 -0
- package/dist/api/captcha/submitIconOrderCaptchaSolution.js +11 -0
- package/dist/api/captcha/submitIconOrderCaptchaSolution.js.map +1 -0
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts +4 -11
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js +13 -18
- package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
- package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts +1 -3
- package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js +6 -73
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -1
- package/dist/api/captcha/trafficFilterRequestTime.d.ts +4 -1
- package/dist/api/captcha/trafficFilterRequestTime.d.ts.map +1 -1
- package/dist/api/captcha/trafficFilterRequestTime.js +3 -0
- package/dist/api/captcha/trafficFilterRequestTime.js.map +1 -1
- package/dist/api/captcha.d.ts.map +1 -1
- package/dist/api/captcha.js +8 -0
- package/dist/api/captcha.js.map +1 -1
- package/dist/api/domainMiddleware.js +1 -1
- package/dist/api/ja4Middleware.js +1 -1
- package/dist/api/rawTlsSignalsMiddleware.d.ts +14 -1
- package/dist/api/rawTlsSignalsMiddleware.d.ts.map +1 -1
- package/dist/api/rawTlsSignalsMiddleware.js +111 -23
- package/dist/api/rawTlsSignalsMiddleware.js.map +1 -1
- package/dist/api/startProviderApi.js +2 -2
- package/dist/api/verify.d.ts.map +1 -1
- package/dist/api/verify.js +153 -96
- package/dist/api/verify.js.map +1 -1
- package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +65 -2
- package/dist/cjs/api/blacklistRequestInspector.cjs +2 -2
- package/dist/cjs/api/captcha/getAudioCaptchaChallenge.cjs +37 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +10 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +1 -1
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +25 -14
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.cjs +20 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +1 -0
- package/dist/cjs/api/captcha/getIconOrderCaptchaChallenge.cjs +37 -0
- package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +2 -2
- package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +4 -4
- package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +52 -145
- package/dist/cjs/api/captcha/interactiveCaptchaChallenge.cjs +154 -0
- package/dist/cjs/api/captcha/interactiveCaptchaSolution.cjs +77 -0
- package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +29 -0
- package/dist/cjs/api/captcha/submitAudioCaptchaSolution.cjs +11 -0
- package/dist/cjs/api/captcha/submitIconOrderCaptchaSolution.cjs +11 -0
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +11 -16
- package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +6 -73
- package/dist/cjs/api/captcha/trafficFilterRequestTime.cjs +3 -0
- package/dist/cjs/api/captcha.cjs +8 -0
- package/dist/cjs/api/domainMiddleware.cjs +1 -1
- package/dist/cjs/api/ja4Middleware.cjs +1 -1
- package/dist/cjs/api/rawTlsSignalsMiddleware.cjs +111 -22
- package/dist/cjs/api/startProviderApi.cjs +2 -2
- package/dist/cjs/api/verify.cjs +152 -95
- package/dist/cjs/compositeIpAddress.cjs +21 -7
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/tasks/audio/audioBuffer.cjs +72 -0
- package/dist/cjs/tasks/audio/audioRenderer.cjs +32 -0
- package/dist/cjs/tasks/audioAlternative.cjs +23 -0
- package/dist/cjs/tasks/audioCaptcha/audioTasks.cjs +65 -0
- package/dist/cjs/tasks/audioCaptcha/audioTasksUtils.cjs +19 -0
- package/dist/cjs/tasks/captchaManager.cjs +28 -1
- package/dist/cjs/tasks/captchaTypeSelection.cjs +31 -3
- package/dist/cjs/tasks/client/clientTasks.cjs +2 -2
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +49 -26
- package/dist/cjs/tasks/iconOrder/iconOrderRenderer.cjs +42 -0
- package/dist/cjs/tasks/iconOrderCaptcha/iconOrderTasks.cjs +69 -0
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +10 -17
- package/dist/cjs/tasks/interactiveCaptcha/interactiveCaptchaManager.cjs +423 -0
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +15 -19
- package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +3 -1
- package/dist/cjs/tasks/puzzle/backgroundBuffer.cjs +3 -3
- package/dist/cjs/tasks/puzzle/nativeBackground.cjs +12 -5
- package/dist/cjs/tasks/puzzle/puzzleRenderer.cjs +4 -3
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +40 -493
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +18 -1
- package/dist/cjs/tasks/tasks.cjs +6 -0
- package/dist/cjs/util.cjs +1 -1
- package/dist/compositeIpAddress.d.ts.map +1 -1
- package/dist/compositeIpAddress.js +21 -7
- package/dist/compositeIpAddress.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/tasks/audio/audioBuffer.d.ts +23 -0
- package/dist/tasks/audio/audioBuffer.d.ts.map +1 -0
- package/dist/tasks/audio/audioBuffer.js +70 -0
- package/dist/tasks/audio/audioBuffer.js.map +1 -0
- package/dist/tasks/audio/audioRenderer.d.ts +11 -0
- package/dist/tasks/audio/audioRenderer.d.ts.map +1 -0
- package/dist/tasks/audio/audioRenderer.js +31 -0
- package/dist/tasks/audio/audioRenderer.js.map +1 -0
- package/dist/tasks/audioAlternative.d.ts +8 -0
- package/dist/tasks/audioAlternative.d.ts.map +1 -0
- package/dist/tasks/audioAlternative.js +20 -0
- package/dist/tasks/audioAlternative.js.map +1 -0
- package/dist/tasks/audioCaptcha/audioTasks.d.ts +19 -0
- package/dist/tasks/audioCaptcha/audioTasks.d.ts.map +1 -0
- package/dist/tasks/audioCaptcha/audioTasks.js +65 -0
- package/dist/tasks/audioCaptcha/audioTasks.js.map +1 -0
- package/dist/tasks/audioCaptcha/audioTasksUtils.d.ts +3 -0
- package/dist/tasks/audioCaptcha/audioTasksUtils.d.ts.map +1 -0
- package/dist/tasks/audioCaptcha/audioTasksUtils.js +18 -0
- package/dist/tasks/audioCaptcha/audioTasksUtils.js.map +1 -0
- package/dist/tasks/captchaManager.d.ts +9 -3
- package/dist/tasks/captchaManager.d.ts.map +1 -1
- package/dist/tasks/captchaManager.js +29 -2
- package/dist/tasks/captchaManager.js.map +1 -1
- package/dist/tasks/captchaTypeSelection.d.ts +4 -2
- package/dist/tasks/captchaTypeSelection.d.ts.map +1 -1
- package/dist/tasks/captchaTypeSelection.js +32 -5
- package/dist/tasks/captchaTypeSelection.js.map +1 -1
- package/dist/tasks/client/clientTasks.js +2 -2
- package/dist/tasks/frictionless/frictionlessTasks.d.ts +6 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +51 -28
- package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
- package/dist/tasks/frictionless/routingMachine.d.ts +1 -2
- package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -1
- package/dist/tasks/frictionless/routingMachine.js.map +1 -1
- package/dist/tasks/iconOrder/iconOrderRenderer.d.ts +12 -0
- package/dist/tasks/iconOrder/iconOrderRenderer.d.ts.map +1 -0
- package/dist/tasks/iconOrder/iconOrderRenderer.js +40 -0
- package/dist/tasks/iconOrder/iconOrderRenderer.js.map +1 -0
- package/dist/tasks/iconOrderCaptcha/iconOrderTasks.d.ts +22 -0
- package/dist/tasks/iconOrderCaptcha/iconOrderTasks.d.ts.map +1 -0
- package/dist/tasks/iconOrderCaptcha/iconOrderTasks.js +69 -0
- package/dist/tasks/iconOrderCaptcha/iconOrderTasks.js.map +1 -0
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +10 -17
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
- package/dist/tasks/interactiveCaptcha/interactiveCaptchaManager.d.ts +52 -0
- package/dist/tasks/interactiveCaptcha/interactiveCaptchaManager.d.ts.map +1 -0
- package/dist/tasks/interactiveCaptcha/interactiveCaptchaManager.js +423 -0
- package/dist/tasks/interactiveCaptcha/interactiveCaptchaManager.js.map +1 -0
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +15 -19
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts +1 -0
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js +3 -2
- package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -1
- package/dist/tasks/puzzle/backgroundBuffer.d.ts +3 -2
- package/dist/tasks/puzzle/backgroundBuffer.d.ts.map +1 -1
- package/dist/tasks/puzzle/backgroundBuffer.js +3 -3
- package/dist/tasks/puzzle/backgroundBuffer.js.map +1 -1
- package/dist/tasks/puzzle/nativeBackground.d.ts +5 -1
- package/dist/tasks/puzzle/nativeBackground.d.ts.map +1 -1
- package/dist/tasks/puzzle/nativeBackground.js +12 -5
- package/dist/tasks/puzzle/nativeBackground.js.map +1 -1
- package/dist/tasks/puzzle/puzzleRenderer.d.ts +2 -0
- package/dist/tasks/puzzle/puzzleRenderer.d.ts.map +1 -1
- package/dist/tasks/puzzle/puzzleRenderer.js +4 -3
- package/dist/tasks/puzzle/puzzleRenderer.js.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts +14 -16
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js +41 -494
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.d.ts +4 -1
- package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.js +18 -1
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
- package/dist/tasks/tasks.d.ts +4 -0
- package/dist/tasks/tasks.d.ts.map +1 -1
- package/dist/tasks/tasks.js +6 -0
- package/dist/tasks/tasks.js.map +1 -1
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +7 -3
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -1
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js +44 -2
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +4 -2
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -1
- package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js +76 -1
- package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js +54 -2
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/constants.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.js +45 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.unit.test.js.map +1 -0
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +20 -0
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js +15 -1
- package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js.map +1 -1
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +174 -0
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
- package/dist/tests/unit/api/rawTlsSignalsMiddleware.unit.test.js +96 -1
- package/dist/tests/unit/api/rawTlsSignalsMiddleware.unit.test.js.map +1 -1
- package/dist/tests/unit/compositeIpAddress.unit.test.js +12 -3
- package/dist/tests/unit/compositeIpAddress.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/audio/audioBuffer.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/audio/audioBuffer.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/audio/audioBuffer.unit.test.js +105 -0
- package/dist/tests/unit/tasks/audio/audioBuffer.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/audioAlternative.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/audioAlternative.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/audioAlternative.unit.test.js +76 -0
- package/dist/tests/unit/tasks/audioAlternative.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasks.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasks.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasks.unit.test.js +259 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasks.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasksUtils.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasksUtils.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasksUtils.unit.test.js +52 -0
- package/dist/tests/unit/tasks/audioCaptcha/audioTasksUtils.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/captchaManager.unit.test.js +171 -2
- package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js +68 -6
- package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.js +123 -0
- package/dist/tests/unit/tasks/frictionless/allowedCaptchaTypes.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +31 -0
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.js +103 -0
- package/dist/tests/unit/tasks/frictionless/refreshSwitch.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.js +28 -0
- package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/iconOrder/iconOrderRenderer.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/iconOrder/iconOrderRenderer.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/iconOrder/iconOrderRenderer.unit.test.js +60 -0
- package/dist/tests/unit/tasks/iconOrder/iconOrderRenderer.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/iconOrderCaptcha/iconOrderTasks.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/iconOrderCaptcha/iconOrderTasks.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/iconOrderCaptcha/iconOrderTasks.unit.test.js +225 -0
- package/dist/tests/unit/tasks/iconOrderCaptcha/iconOrderTasks.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +23 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js +1 -4
- package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzle/nativeBackground.unit.test.js +10 -3
- package/dist/tests/unit/tasks/puzzle/nativeBackground.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.js +35 -0
- package/dist/tests/unit/tasks/puzzle/puzzleRenderer.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.js +49 -0
- package/dist/tests/unit/tasks/puzzleDifficultyDeviceCap.unit.test.js.map +1 -0
- package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +17 -14
- package/dist/tests/unit/testUtils/mockProviderEnv.d.ts.map +1 -1
- package/dist/tests/unit/testUtils/mockProviderEnv.js.map +1 -1
- package/dist/util.js +1 -1
- package/package.json +107 -103
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,61 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
> @prosopo/provider@5.14.0 build:cross-env
|
|
7
|
-
> vite build --config vite.esm.config.ts --mode production
|
|
8
|
-
|
|
1
|
+
$ pnpm run build:cross-env --mode ${NODE_ENV:-development}
|
|
2
|
+
$ vite build --config vite.esm.config.ts --mode production
|
|
9
3
|
ViteEsmConfig: .
|
|
10
4
|
{
|
|
11
5
|
tsConfigPaths: [
|
|
12
|
-
'/home/runner/work/captcha/captcha/packages/api
|
|
13
|
-
'/home/runner/work/captcha/captcha/packages/
|
|
6
|
+
'/home/runner/work/captcha/captcha/packages/api/tsconfig.json',
|
|
7
|
+
'/home/runner/work/captcha/captcha/packages/types/tsconfig.json',
|
|
8
|
+
'/home/runner/work/captcha/captcha/packages/locale/tsconfig.json',
|
|
14
9
|
'/home/runner/work/captcha/captcha/packages/util/tsconfig.json',
|
|
10
|
+
'/home/runner/work/captcha/captcha/packages/util-crypto/tsconfig.json',
|
|
15
11
|
'/home/runner/work/captcha/captcha/packages/api-express-router/tsconfig.json',
|
|
12
|
+
'/home/runner/work/captcha/captcha/packages/api-route/tsconfig.json',
|
|
13
|
+
'/home/runner/work/captcha/captcha/packages/logger/tsconfig.json',
|
|
16
14
|
'/home/runner/work/captcha/captcha/packages/common/tsconfig.json',
|
|
17
|
-
'/home/runner/work/captcha/captcha/packages/locale/tsconfig.json',
|
|
18
|
-
'/home/runner/work/captcha/captcha/packages/types/tsconfig.json',
|
|
19
|
-
'/home/runner/work/captcha/captcha/packages/util-crypto/tsconfig.json',
|
|
20
15
|
'/home/runner/work/captcha/captcha/packages/env/tsconfig.json',
|
|
21
16
|
'/home/runner/work/captcha/captcha/packages/ipinfo/tsconfig.json',
|
|
22
17
|
'/home/runner/work/captcha/captcha/packages/database/tsconfig.json',
|
|
23
18
|
'/home/runner/work/captcha/captcha/packages/types-database/tsconfig.json',
|
|
24
19
|
'/home/runner/work/captcha/captcha/packages/user-access-policy/tsconfig.json',
|
|
25
20
|
'/home/runner/work/captcha/captcha/packages/redis-client/tsconfig.json',
|
|
26
|
-
'/home/runner/work/captcha/captcha/packages/api/tsconfig.json',
|
|
27
21
|
'/home/runner/work/captcha/captcha/packages/types-env/tsconfig.json',
|
|
28
22
|
'/home/runner/work/captcha/captcha/packages/keyring/tsconfig.json',
|
|
23
|
+
'/home/runner/work/captcha/captcha/packages/audio-assets/tsconfig.json',
|
|
24
|
+
'/home/runner/work/captcha/captcha/packages/puzzle-assets/tsconfig.json',
|
|
29
25
|
'/home/runner/work/captcha/captcha/packages/captcha-severity/tsconfig.json',
|
|
30
26
|
'/home/runner/work/captcha/captcha/packages/datasets/tsconfig.json',
|
|
27
|
+
'/home/runner/work/captcha/captcha/packages/icon-order-assets/tsconfig.json',
|
|
31
28
|
'/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json',
|
|
32
|
-
'/home/runner/work/captcha/captcha/packages/puzzle-assets/tsconfig.json',
|
|
33
29
|
'/home/runner/work/captcha/captcha/packages/web-bot-auth/tsconfig.json'
|
|
34
30
|
]
|
|
35
31
|
}
|
|
36
32
|
{
|
|
37
33
|
externals: [
|
|
38
|
-
'@prosopo/api
|
|
39
|
-
'@prosopo/
|
|
34
|
+
'@prosopo/api',
|
|
35
|
+
'@prosopo/types',
|
|
36
|
+
'@prosopo/locale',
|
|
40
37
|
'@prosopo/util',
|
|
38
|
+
'@prosopo/util-crypto',
|
|
41
39
|
'@prosopo/api-express-router',
|
|
40
|
+
'@prosopo/api-route',
|
|
41
|
+
'@prosopo/logger',
|
|
42
42
|
'@prosopo/common',
|
|
43
|
-
'@prosopo/locale',
|
|
44
|
-
'@prosopo/types',
|
|
45
|
-
'@prosopo/util-crypto',
|
|
46
43
|
'@prosopo/env',
|
|
47
44
|
'@prosopo/ipinfo',
|
|
48
45
|
'@prosopo/database',
|
|
49
46
|
'@prosopo/types-database',
|
|
50
47
|
'@prosopo/user-access-policy',
|
|
51
48
|
'@prosopo/redis-client',
|
|
52
|
-
'@prosopo/api',
|
|
53
49
|
'@prosopo/types-env',
|
|
54
50
|
'@prosopo/keyring',
|
|
51
|
+
'@prosopo/audio-assets',
|
|
52
|
+
'@prosopo/puzzle-assets',
|
|
55
53
|
'@prosopo/captcha-severity',
|
|
56
54
|
'@prosopo/datasets',
|
|
55
|
+
'@prosopo/icon-order-assets',
|
|
57
56
|
'@prosopo/load-balancer',
|
|
58
|
-
'@prosopo/puzzle-assets',
|
|
59
57
|
'@prosopo/web-bot-auth'
|
|
60
58
|
]
|
|
61
59
|
}
|
|
@@ -63,7 +61,7 @@ ViteEsmConfig: .
|
|
|
63
61
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
64
62
|
Bundle build started
|
|
65
63
|
[2K
|
|
66
|
-
✓
|
|
64
|
+
✓ 135 modules transformed.
|
|
67
65
|
rendering chunks...
|
|
68
66
|
computing gzip size...
|
|
69
67
|
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
@@ -81,96 +79,111 @@ dist/utils/hashUserIp.js 0.52 k
|
|
|
81
79
|
dist/api/testSiteKey.js 0.56 kB │ gzip: 0.30 kB
|
|
82
80
|
dist/utils/hashUserAgent.js 0.63 kB │ gzip: 0.39 kB
|
|
83
81
|
dist/api/validateAddress.js 0.70 kB │ gzip: 0.33 kB
|
|
82
|
+
dist/tasks/audioCaptcha/audioTasksUtils.js 0.75 kB │ gzip: 0.44 kB
|
|
83
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/refreshLineage.js 0.80 kB │ gzip: 0.46 kB
|
|
84
84
|
dist/api/dnsEventUrl.js 0.80 kB │ gzip: 0.44 kB
|
|
85
85
|
dist/api/ja4.js 0.80 kB │ gzip: 0.44 kB
|
|
86
|
+
dist/api/captcha/submitAudioCaptchaSolution.js 0.83 kB │ gzip: 0.40 kB
|
|
87
|
+
dist/api/captcha/submitIconOrderCaptchaSolution.js 0.84 kB │ gzip: 0.39 kB
|
|
86
88
|
dist/tasks/dataset/datasetTasks.js 0.85 kB │ gzip: 0.39 kB
|
|
87
|
-
dist/
|
|
89
|
+
dist/api/captcha/submitPuzzleCaptchaSolution.js 0.86 kB │ gzip: 0.41 kB
|
|
88
90
|
dist/api/captcha/assetSeal.js 0.91 kB │ gzip: 0.50 kB
|
|
89
91
|
dist/api/headerCheckMiddleware.js 0.91 kB │ gzip: 0.43 kB
|
|
90
92
|
dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js 0.95 kB │ gzip: 0.51 kB
|
|
91
93
|
dist/api/admin/apiRegisterSiteKeyEndpoint.js 1.00 kB │ gzip: 0.46 kB
|
|
92
94
|
dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js 1.01 kB │ gzip: 0.45 kB
|
|
93
|
-
dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 1.04 kB │ gzip: 0.57 kB
|
|
94
|
-
dist/tasks/puzzle/nativeBackground.js 1.06 kB │ gzip: 0.58 kB
|
|
95
95
|
dist/api/detectorPoolBodyParser.js 1.07 kB │ gzip: 0.57 kB
|
|
96
96
|
dist/api/admin/apiRemoveSiteKeysEndpoint.js 1.07 kB │ gzip: 0.48 kB
|
|
97
|
+
dist/tasks/powCaptcha/powTasksUtils.js 1.07 kB │ gzip: 0.54 kB
|
|
97
98
|
dist/api/admin/apiRegisterSiteKeysEndpoint.js 1.08 kB │ gzip: 0.50 kB
|
|
98
99
|
dist/api/admin/apiRemoveSiteKeyEndpoint.js 1.08 kB │ gzip: 0.48 kB
|
|
99
100
|
dist/api/block.js 1.08 kB │ gzip: 0.46 kB
|
|
100
101
|
dist/schedulers/captchaScheduler.js 1.11 kB │ gzip: 0.48 kB
|
|
101
102
|
dist/utils/normalizeRequestIp.js 1.14 kB │ gzip: 0.52 kB
|
|
102
103
|
dist/schedulers/getClientList.js 1.19 kB │ gzip: 0.53 kB
|
|
104
|
+
dist/tasks/puzzle/nativeBackground.js 1.21 kB │ gzip: 0.64 kB
|
|
103
105
|
dist/api/admin/apiGetDecisionMachineEndpoint.js 1.26 kB │ gzip: 0.50 kB
|
|
104
|
-
dist/tasks/puzzle/backgroundBuffer.js 1.26 kB │ gzip: 0.51 kB
|
|
105
106
|
dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js 1.27 kB │ gzip: 0.51 kB
|
|
107
|
+
dist/tasks/puzzle/backgroundBuffer.js 1.27 kB │ gzip: 0.51 kB
|
|
106
108
|
dist/api/admin/apiRemoveDecisionMachineEndpoint.js 1.29 kB │ gzip: 0.51 kB
|
|
109
|
+
dist/tasks/audio/audioRenderer.js 1.29 kB │ gzip: 0.58 kB
|
|
107
110
|
dist/tasks/dataset/datasetTasksUtils.js 1.33 kB │ gzip: 0.48 kB
|
|
108
111
|
dist/api/assetDocument.js 1.36 kB │ gzip: 0.75 kB
|
|
112
|
+
dist/tasks/audioAlternative.js 1.40 kB │ gzip: 0.56 kB
|
|
109
113
|
dist/tasks/detection/assignSecret.js 1.42 kB │ gzip: 0.74 kB
|
|
110
114
|
dist/utils/clientMetaData.js 1.42 kB │ gzip: 0.72 kB
|
|
111
115
|
dist/api/admin/apiGetAllDecisionMachinesEndpoint.js 1.48 kB │ gzip: 0.57 kB
|
|
112
116
|
dist/schedulers/updateSpamEmailDomains.js 1.52 kB │ gzip: 0.60 kB
|
|
113
117
|
dist/api/admin/apiReplaceDetectorPoolEndpoint.js 1.57 kB │ gzip: 0.68 kB
|
|
114
118
|
dist/api/ja4Middleware.js 1.59 kB │ gzip: 0.75 kB
|
|
119
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 1.61 kB │ gzip: 0.76 kB
|
|
115
120
|
dist/utils/honeypot/encoders.js 1.62 kB │ gzip: 0.67 kB
|
|
116
121
|
dist/api/admin/apiGetSessionEndpoint.js 1.66 kB │ gzip: 0.80 kB
|
|
117
|
-
dist/api/admin/apiToggleMaintenanceModeEndpoint.js 1.66 kB │ gzip: 0.69 kB
|
|
118
122
|
dist/api/adminAuthOptions.js 1.67 kB │ gzip: 0.79 kB
|
|
119
123
|
dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js 1.67 kB │ gzip: 0.74 kB
|
|
120
124
|
dist/utils/devicePlatform.js 1.68 kB │ gzip: 0.90 kB
|
|
121
125
|
dist/api/admin/apiUpdateDecisionMachineEndpoint.js 1.68 kB │ gzip: 0.58 kB
|
|
122
126
|
dist/utils/honeypot/phraseBank.js 1.69 kB │ gzip: 0.84 kB
|
|
123
127
|
dist/api/handshakeTimingMiddleware.js 1.75 kB │ gzip: 0.69 kB
|
|
128
|
+
dist/tasks/iconOrder/iconOrderRenderer.js 1.77 kB │ gzip: 0.71 kB
|
|
124
129
|
dist/tasks/spam/updateSpamEmailDomains.js 1.87 kB │ gzip: 0.77 kB
|
|
130
|
+
dist/api/captcha/getAudioCaptchaChallenge.js 1.87 kB │ gzip: 0.72 kB
|
|
125
131
|
dist/api/admin/apiClearAllCountersEndpoint.js 1.89 kB │ gzip: 0.76 kB
|
|
126
132
|
dist/api/requestBodySummary.js 1.94 kB │ gzip: 0.88 kB
|
|
127
133
|
dist/tasks/frictionless/ipMatch.js 1.98 kB │ gzip: 1.02 kB
|
|
128
134
|
dist/api/captcha/signedAssetsResolver.js 2.08 kB │ gzip: 0.98 kB
|
|
129
135
|
dist/migrations/frictionlessLadder.js 2.12 kB │ gzip: 0.93 kB
|
|
130
136
|
dist/tasks/puzzle/stratifiedSampler.js 2.14 kB │ gzip: 1.07 kB
|
|
137
|
+
dist/tasks/audio/audioBuffer.js 2.15 kB │ gzip: 0.83 kB
|
|
131
138
|
dist/tasks/frictionless/frictionlessTasksUtils.js 2.16 kB │ gzip: 1.09 kB
|
|
132
|
-
dist/api/captcha/maintenanceModeResponses.js 2.16 kB │ gzip: 0.73 kB
|
|
133
139
|
dist/tasks/frictionless/routingMachine.js 2.20 kB │ gzip: 0.93 kB
|
|
134
|
-
dist/
|
|
140
|
+
dist/api/captcha/interactiveCaptchaSolution.js 2.24 kB │ gzip: 0.88 kB
|
|
135
141
|
dist/api/captcha/sealedAssetsResolver.js 2.26 kB │ gzip: 0.97 kB
|
|
142
|
+
dist/tasks/audioCaptcha/audioTasks.js 2.30 kB │ gzip: 0.84 kB
|
|
143
|
+
dist/api/captcha/getIconOrderCaptchaChallenge.js 2.31 kB │ gzip: 0.79 kB
|
|
136
144
|
dist/utils/dns.js 2.36 kB │ gzip: 0.95 kB
|
|
137
145
|
dist/api/public.js 2.45 kB │ gzip: 0.98 kB
|
|
138
146
|
dist/api/captcha/checkSpamEmail.js 2.47 kB │ gzip: 0.91 kB
|
|
139
147
|
dist/tasks/puzzle/puzzleDifficulty.js 2.50 kB │ gzip: 1.09 kB
|
|
140
148
|
dist/api/forwardVerify.js 2.59 kB │ gzip: 1.10 kB
|
|
141
|
-
dist/
|
|
149
|
+
dist/tasks/iconOrderCaptcha/iconOrderTasks.js 2.59 kB │ gzip: 0.98 kB
|
|
142
150
|
dist/api/captcha/submitImageCaptchaSolution.js 2.69 kB │ gzip: 1.03 kB
|
|
143
151
|
dist/api/admin/apiAdminRoutesProvider.js 2.78 kB │ gzip: 0.55 kB
|
|
144
152
|
dist/index.js 2.95 kB │ gzip: 0.81 kB
|
|
145
153
|
dist/api/admin/apiDnsEventEndpoint.js 3.05 kB │ gzip: 1.18 kB
|
|
146
|
-
dist/compositeIpAddress.js 3.15 kB │ gzip: 1.34 kB
|
|
147
154
|
dist/tasks/detection/getBotScore.js 3.29 kB │ gzip: 1.32 kB
|
|
148
155
|
dist/api/captcha/assetSealFormat.js 3.38 kB │ gzip: 1.34 kB
|
|
149
|
-
dist/api/captcha/
|
|
156
|
+
dist/api/captcha/maintenanceModeResponses.js 3.39 kB │ gzip: 0.87 kB
|
|
150
157
|
dist/api/captcha/assignDetectorBundle.js 3.40 kB │ gzip: 1.34 kB
|
|
151
|
-
dist/
|
|
158
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js 3.51 kB │ gzip: 1.33 kB
|
|
159
|
+
dist/api/captcha/getPuzzleCaptchaChallenge.js 3.58 kB │ gzip: 1.16 kB
|
|
152
160
|
dist/api/domainMiddleware.js 3.61 kB │ gzip: 1.24 kB
|
|
153
161
|
dist/utils/tarpitPadding.js 3.67 kB │ gzip: 1.51 kB
|
|
154
|
-
dist/
|
|
162
|
+
dist/tasks/puzzleCaptcha/puzzleTasks.js 3.67 kB │ gzip: 1.18 kB
|
|
163
|
+
dist/tasks/captchaTypeSelection.js 3.73 kB │ gzip: 1.58 kB
|
|
155
164
|
dist/tasks/spam/evaluateEmailSpamRules.js 3.84 kB │ gzip: 1.59 kB
|
|
156
|
-
dist/
|
|
165
|
+
dist/api/admin/apiToggleMaintenanceModeEndpoint.js 3.85 kB │ gzip: 1.44 kB
|
|
166
|
+
dist/compositeIpAddress.js 3.87 kB │ gzip: 1.66 kB
|
|
167
|
+
dist/tasks/tasks.js 3.93 kB │ gzip: 1.07 kB
|
|
168
|
+
dist/tasks/puzzle/puzzleRenderer.js 4.02 kB │ gzip: 1.53 kB
|
|
157
169
|
dist/services/ipComparison.js 4.04 kB │ gzip: 1.21 kB
|
|
158
|
-
dist/api/captcha/trafficFilterRequestTime.js 4.06 kB │ gzip: 1.53 kB
|
|
159
170
|
dist/tasks/spam/checkSpamEmail.js 4.12 kB │ gzip: 1.12 kB
|
|
160
171
|
dist/api/cpuProfiler.js 4.12 kB │ gzip: 1.77 kB
|
|
161
|
-
dist/api/captcha.js
|
|
172
|
+
dist/api/captcha/trafficFilterRequestTime.js 4.20 kB │ gzip: 1.56 kB
|
|
162
173
|
dist/api/hardBlockVerdictCache.js 4.26 kB │ gzip: 1.72 kB
|
|
163
174
|
dist/pairs.js 4.27 kB │ gzip: 1.57 kB
|
|
164
175
|
dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js 4.35 kB │ gzip: 1.07 kB
|
|
165
176
|
dist/tasks/dnsEvent/enrichDnsEvent.js 4.71 kB │ gzip: 1.72 kB
|
|
177
|
+
dist/api/captcha.js 5.02 kB │ gzip: 1.44 kB
|
|
166
178
|
dist/tasks/detection/decoderPool.js 5.34 kB │ gzip: 2.02 kB
|
|
179
|
+
dist/api/captcha/interactiveCaptchaChallenge.js 5.47 kB │ gzip: 1.77 kB
|
|
167
180
|
dist/util/usageCounters.js 5.65 kB │ gzip: 2.01 kB
|
|
168
|
-
dist/api/
|
|
181
|
+
dist/api/rawTlsSignalsMiddleware.js 6.25 kB │ gzip: 1.95 kB
|
|
182
|
+
dist/api/captcha/getPoWCaptchaChallenge.js 6.25 kB │ gzip: 1.88 kB
|
|
169
183
|
dist/api/captcha/getImageCaptchaChallenge.js 6.69 kB │ gzip: 2.03 kB
|
|
170
184
|
dist/api/healthzGeo.js 6.86 kB │ gzip: 2.68 kB
|
|
171
|
-
dist/
|
|
172
|
-
dist/
|
|
173
|
-
dist/api/captcha/submitPoWCaptchaSolution.js 8.70 kB │ gzip: 2.69 kB
|
|
185
|
+
dist/tasks/spam/checkTrafficFilter.js 8.17 kB │ gzip: 2.75 kB
|
|
186
|
+
dist/api/captcha/submitPoWCaptchaSolution.js 8.72 kB │ gzip: 2.71 kB
|
|
174
187
|
dist/tasks/detection/bundlePool.js 8.86 kB │ gzip: 3.34 kB
|
|
175
188
|
dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js 9.36 kB │ gzip: 1.80 kB
|
|
176
189
|
dist/api/startProviderApi.js 10.22 kB │ gzip: 3.50 kB
|
|
@@ -179,15 +192,15 @@ dist/tasks/decisionMachine/decisionMachineRunner.js 12.28 k
|
|
|
179
192
|
dist/util.js 12.47 kB │ gzip: 3.20 kB
|
|
180
193
|
dist/api/blacklistRequestInspector.js 12.75 kB │ gzip: 4.46 kB
|
|
181
194
|
dist/api/metrics.js 13.17 kB │ gzip: 4.27 kB
|
|
182
|
-
dist/
|
|
183
|
-
dist/
|
|
184
|
-
dist/
|
|
185
|
-
dist/
|
|
186
|
-
dist/tasks/powCaptcha/powTasks.js 24.
|
|
187
|
-
dist/tasks/captchaManager.js
|
|
188
|
-
dist/tasks/imgCaptcha/imgCaptchaTasks.js 27.
|
|
195
|
+
dist/tasks/interactiveCaptcha/interactiveCaptchaManager.js 18.40 kB │ gzip: 4.85 kB
|
|
196
|
+
dist/api/verify.js 18.64 kB │ gzip: 3.57 kB
|
|
197
|
+
dist/tasks/frictionless/frictionlessTasks.js 19.65 kB │ gzip: 5.30 kB
|
|
198
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 19.73 kB │ gzip: 4.75 kB
|
|
199
|
+
dist/tasks/powCaptcha/powTasks.js 24.47 kB │ gzip: 6.18 kB
|
|
200
|
+
dist/tasks/captchaManager.js 25.68 kB │ gzip: 7.58 kB
|
|
201
|
+
dist/tasks/imgCaptcha/imgCaptchaTasks.js 27.18 kB │ gzip: 6.46 kB
|
|
189
202
|
|
|
190
|
-
[32m✓ built in
|
|
203
|
+
[32m✓ built in 171ms[39m
|
|
191
204
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeBehavior.js
|
|
192
205
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodePayload.js
|
|
193
206
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeSimd.js
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,198 @@
|
|
|
1
1
|
# @prosopo/provider
|
|
2
2
|
|
|
3
|
+
## 5.16.0
|
|
4
|
+
### Minor Changes
|
|
5
|
+
|
|
6
|
+
- b299a91: An audio challenge, offered only as an accessibility alternative, like reCAPTCHA's audio option. The user hears a short sequence of spoken digits and types them in.
|
|
7
|
+
|
|
8
|
+
It is off by default and needs two switches. Prosopo has to turn on the `captchaTypeFeatureFlags.audio` feature flag for the site, which the site owner cannot do, and the site owner has to set `audioAccessibilityEnabled`. When both are on, image, puzzle and icon-order challenges show a "Use audio instead" button. Pressing it swaps the visual challenge for the audio one. After a wrong answer the user stays on audio and gets a fresh clip.
|
|
9
|
+
|
|
10
|
+
Audio is never a captcha type that can be selected or routed to. A site's `captchaType`, traffic-filter categories, Restrict rules and the site-key CLI all reject it, and routing, PoW escalation and the severity tiers leave it out. The provider only serves audio against the visual session the user was already given, and only on a site with both switches on; any other audio request is refused before the session is used up, and a request without a session is always refused.
|
|
11
|
+
|
|
12
|
+
The spoken digits are synthesised by `@prosopo/audio-assets`, so there is no recorded set of clips to collect. The answer never leaves the provider, and a challenge can be submitted and verified only once, even under concurrent requests. `@prosopo/procaptcha-audio` is the widget. It and the "Use audio instead" button are built on the shared widget code in `@prosopo/procaptcha-common`, and the provider side is built on the shared interactive-captcha code that puzzle and icon-order use.
|
|
13
|
+
|
|
14
|
+
The demo playground has audio pages, and there is an end-to-end test for it.
|
|
15
|
+
- e13d7a8: New captcha type: `iconOrder`. The user is shown a frame of icons and a legend, and clicks the legend's icons in the order given.
|
|
16
|
+
|
|
17
|
+
Icon-order is off by default. Only Prosopo can switch it on for a site, with the `captchaTypeFeatureFlags.iconOrder` feature flag; the site owner cannot. A site without the flag is never served icon-order by any route, and the challenge endpoint refuses it. Once the flag is on, the owner can still keep icon-order out of the frictionless flow with `frictionlessTypes.iconOrder`, the same way as image and puzzle.
|
|
18
|
+
|
|
19
|
+
The answer never leaves the provider. Icon positions are stored on the challenge record, and the widget receives only the rendered frame and legend. Grading checks order as well as position, and each icon's hit radius scales with its size. Verifying a token is single-use under concurrent requests.
|
|
20
|
+
|
|
21
|
+
`@prosopo/icon-order-assets` draws the imagery, and `@prosopo/procaptcha-icon-order` is the widget. Its text is translated into every supported language.
|
|
22
|
+
|
|
23
|
+
Puzzle and icon-order now share their server code: challenge and solution handlers, the verify route, the submit and verify pipeline, and the database record methods. The widget code they have in common moves into `@prosopo/procaptcha-common`: the lazy mount wrapper, manager expiry and dispose, spent-session handling, behavioural data encryption and trusted click coordinates. Puzzle's behaviour is unchanged.
|
|
24
|
+
|
|
25
|
+
The demo playground has icon-order pages, and there is an end-to-end test for it.
|
|
26
|
+
- 270395d: Allow maintenance mode to be scoped to specific site keys.
|
|
27
|
+
|
|
28
|
+
Maintenance mode was all-or-nothing for a whole provider process. If one
|
|
29
|
+
customer's traffic needed to be taken out of scoring, the only option was to put
|
|
30
|
+
the entire node into maintenance mode, which forces a pass for every other
|
|
31
|
+
customer on it too — so in practice it was not used.
|
|
32
|
+
|
|
33
|
+
The admin toggle now accepts an optional `siteKeys` list. With it, only those
|
|
34
|
+
keys are taken out of scoring and the node-wide flag is left untouched; without
|
|
35
|
+
it, the behaviour is exactly as before, which is what the deploy path relies on.
|
|
36
|
+
|
|
37
|
+
Scoped maintenance mode is applied in the verify handlers only after the dapp
|
|
38
|
+
signature has been checked, so the decision is made on a site key the caller has
|
|
39
|
+
proven it owns rather than one it merely asserted.
|
|
40
|
+
|
|
41
|
+
Same durability as the existing flag: per-process, cleared on restart, and set
|
|
42
|
+
per node.
|
|
43
|
+
|
|
44
|
+
### Patch Changes
|
|
45
|
+
|
|
46
|
+
- Updated dependencies [b299a91]
|
|
47
|
+
- Updated dependencies [e13d7a8]
|
|
48
|
+
- Updated dependencies [270395d]
|
|
49
|
+
- @prosopo/types@5.14.0
|
|
50
|
+
- @prosopo/types-database@5.9.0
|
|
51
|
+
- @prosopo/database@4.2.0
|
|
52
|
+
- @prosopo/api@4.5.0
|
|
53
|
+
- @prosopo/audio-assets@0.2.0
|
|
54
|
+
- @prosopo/locale@3.8.0
|
|
55
|
+
- @prosopo/captcha-severity@1.3.0
|
|
56
|
+
- @prosopo/user-access-policy@3.14.16
|
|
57
|
+
- @prosopo/keyring@2.10.2
|
|
58
|
+
- @prosopo/icon-order-assets@0.2.0
|
|
59
|
+
- @prosopo/puzzle-assets@0.2.1
|
|
60
|
+
- @prosopo/api-express-router@3.2.2
|
|
61
|
+
- @prosopo/common@3.1.63
|
|
62
|
+
- @prosopo/datasets@3.2.2
|
|
63
|
+
- @prosopo/env@3.6.70
|
|
64
|
+
- @prosopo/ipinfo@0.4.15
|
|
65
|
+
- @prosopo/load-balancer@2.11.6
|
|
66
|
+
- @prosopo/types-env@2.11.16
|
|
67
|
+
|
|
68
|
+
## 5.15.0
|
|
69
|
+
### Minor Changes
|
|
70
|
+
|
|
71
|
+
- 1c13037: Add `captchaTypeFeatureFlags` to site settings, starting with `puzzle`. Setting
|
|
72
|
+
`puzzle: false` stops a site being served the puzzle captcha by any path: its
|
|
73
|
+
configured `captchaType`, `frictionlessTypes`, access policies, the traffic
|
|
74
|
+
filter, routing machines, PoW escalation, and puzzle sessions that already
|
|
75
|
+
exist. A site pinned to puzzle gets an image captcha instead (or PoW if image is
|
|
76
|
+
also off). The field is optional and has no stored default, so sites that never
|
|
77
|
+
set it behave exactly as before. The flag is meant for Prosopo staff, not site
|
|
78
|
+
owners.
|
|
79
|
+
- f961dab: Store everything needed to redraw a puzzle, so the portal can show the exact challenge a user was served.
|
|
80
|
+
|
|
81
|
+
Until now a puzzle record kept the target, the origin and the accuracy required (`tolerance`), and
|
|
82
|
+
nothing else. The things that decide what the puzzle actually looked like — how many decoy shapes were
|
|
83
|
+
scattered on it, how dark they were, how big the piece was, and which background was used — were
|
|
84
|
+
picked per challenge and then thrown away. So you could see that someone failed by 11px and had no way
|
|
85
|
+
to know whether they had been handed an easy puzzle or a nasty one.
|
|
86
|
+
|
|
87
|
+
Puzzle records now carry a `render` object with all of it: the difficulty ladder level, the piece size,
|
|
88
|
+
the frame geometry, the five render settings, and the two 128-bit seeds that regenerate the imagery.
|
|
89
|
+
Given those, the portal reproduces the background and the piece byte for byte.
|
|
90
|
+
|
|
91
|
+
To make that possible the renderer had to become reproducible. `renderPuzzle` and `createBackground`
|
|
92
|
+
now take an optional seed and report the one they used, instead of generating one internally and
|
|
93
|
+
discarding it; the background pool hands out each image together with its seed. Default behaviour is
|
|
94
|
+
unchanged — omit the seed and you still get a fresh random one.
|
|
95
|
+
|
|
96
|
+
The ladder level is new on the session too (`puzzleLevel`), because it was computed when the puzzle
|
|
97
|
+
was escalated and never written down anywhere. It is absent when the ladder did not choose the
|
|
98
|
+
puzzle — a site-configured puzzle or a traffic-filter override has no level.
|
|
99
|
+
|
|
100
|
+
The record is patched after the imagery is produced rather than written with the rest of the record,
|
|
101
|
+
because the piece size and the seeds only exist once the render has run, and the target has to be
|
|
102
|
+
durable before it is expressed in pixels. If that patch fails it is logged and ignored: losing a
|
|
103
|
+
diagnostic must not cost the user their solve. Records written before this change, and any challenge
|
|
104
|
+
whose render threw, simply have no `render`.
|
|
105
|
+
|
|
106
|
+
**The seeds are secret.** `puzzle-assets/src/prng.ts` explains why: they regenerate the clean
|
|
107
|
+
background, and a clean background can be diffed against the composite to read the target position
|
|
108
|
+
straight off. They were previously barred from leaving the provider entirely. They may now sit on the
|
|
109
|
+
captcha record, and nowhere else — not in a response, not in a log, not on the session. Anything that
|
|
110
|
+
exposes a puzzle record to a caller has to drop `render.backgroundSeed` and `render.renderSeed`, and
|
|
111
|
+
must not serve them at all while the challenge is still live. The comment in `prng.ts` now says so.
|
|
112
|
+
|
|
113
|
+
Test coverage. Three guards, each confirmed to fail when the thing it protects is broken:
|
|
114
|
+
`renderReplay.unit.test.ts` re-renders from the stored fields and asserts the bytes match, with one
|
|
115
|
+
case per field asserting that changing *only* that field changes the output — so a record missing a
|
|
116
|
+
field cannot pass; `puzzleRenderer.unit.test.ts` replays through the same entry points the portal would
|
|
117
|
+
use, which catches a background paired with the wrong seed; and `schemas.test.ts` asserts every
|
|
118
|
+
sub-field survives a strict-mode mongoose write, since a field absent from the schema is dropped
|
|
119
|
+
silently and would store nothing at all.
|
|
120
|
+
- 1ce9482: Cap automatic puzzle escalation one rung lower on touch devices than on pointer devices.
|
|
121
|
+
|
|
122
|
+
The puzzle's `tolerance` is an absolute CSS-pixel target and the widget renders into a fixed 300x200 container on every device, so a difficulty level asks the same placement accuracy of a fingertip as it does of a mouse.
|
|
123
|
+
|
|
124
|
+
`MAX_AUTO_ESCALATION_LEVEL_TOUCH` and `resolveMaxEscalationLevel(siteMaxLevel, isTouch)` are new in `@prosopo/captcha-severity`. The resolver takes the stricter of the site's own `puzzleMaxDifficulty` and the device ceiling, so a site set to 3 or 4 cannot out-vote the touch ceiling and a site pinned to 0 is not raised by it.
|
|
125
|
+
|
|
126
|
+
The provider now calls it from both places a puzzle difficulty is chosen: `sendCaptcha`, which reads `routingContext.platform.isMobile`, and the post-PoW escalation in `submitPoWCaptchaSolution`, which derives the platform from the originating session. That second path previously ignored the site's `puzzleMaxDifficulty` entirely and always clamped to the global ceiling; it now respects both caps.
|
|
127
|
+
|
|
128
|
+
Desktop behaviour is unchanged, and L4 stays unreachable by automatic escalation on either device.
|
|
129
|
+
- dcb691b: Add a refresh control to the puzzle captcha.
|
|
130
|
+
|
|
131
|
+
A user who can't solve the puzzle they were given can now ask for a different one, from a button in the puzzle's header. The replacement comes through a new frictionless session, like a wrong answer already does.
|
|
132
|
+
|
|
133
|
+
The widget tells the provider which session was refreshed (`refreshOf`). The provider then records `refreshOf`, `refreshCount` and `refreshedAfterMs` on the new session, so refresh behaviour can be scored later. After three refreshes in a row it serves an image challenge instead, with reason `PUZZLE_REFRESH_LIMIT`. It only does this if the site has image enabled. The switch only goes from puzzle to image, so a client that lies about its refreshes can only make its own challenge harder. A client that leaves the field out gets a normal session, the same as reloading the page.
|
|
134
|
+
|
|
135
|
+
The image widget's reload button now reports itself as a refresh too. That way a user who was moved onto image isn't sent back to the puzzle by their next reload.
|
|
136
|
+
|
|
137
|
+
### Patch Changes
|
|
138
|
+
|
|
139
|
+
- 7d57d2a: A proof-of-work solve is checked against the address the challenge was issued to, and a mismatch sends the user to an image captcha instead of approving them. That check compared the whole IPv4 address, so it fired for anyone whose address moved between asking for the challenge and solving it — which is normal behaviour on mobile and on carrier NAT, where the low octet gets reassigned mid-session. One EE subscriber was seen moving one address along in four seconds.
|
|
140
|
+
|
|
141
|
+
It now compares the /24, so a reassignment inside the same pool reads as the same place on the network. IPv6 already worked this way on the /64, for the same reason, and is unchanged. A solve arriving from a genuinely different network is still caught and still escalates, so the point of the check survives.
|
|
142
|
+
|
|
143
|
+
Unit tests cover a low-octet reassignment, both ends of a /24, two different /24s, and a pair of adjacent addresses that straddle the /24 boundary.
|
|
144
|
+
- 2118584: Trim the comments on the puzzle difficulty device ceiling. No behaviour change.
|
|
145
|
+
- 80b7780: Post-PoW routing now receives the widget mode from the originating session and whether the submitted click coords were all (0,0), so a routing rule can escalate visible-mode solves that carry no real click position.
|
|
146
|
+
- dd4c27c: Store the whole-SYN fields the tcp-probe sidecar now reports.
|
|
147
|
+
|
|
148
|
+
The sidecar's handshake record grew from 80 to 104 bytes and the tail was reordered (prosopo/Protect#1167). chaddy was updated to read both layouts and to forward the new fields as their own headers (prosopo/chaddy#16, #17); this is the provider side of that, so the values have somewhere to land instead of being dropped at the middleware.
|
|
149
|
+
|
|
150
|
+
Twelve new fields on `Session`, all optional: `tcpOptsKinds`, `tcpOptsPresent`, `tcpOptsCount`, `tcpTsval`, `tcpTsecr`, `tcpFlags`, `tcpDataOffsetResv`, `tcpUrgPtr`, `ipIdent`, `ipTotalLen`, `ipFragFlags`, `ipTos`. They are surfaced on the decision-machine input the same way the existing TCP fields are, so routing and verify rules can read them.
|
|
151
|
+
|
|
152
|
+
`tcpOptsKinds` is stored decoded — the IANA kind number of each TCP option in wire order, `[2, 4, 8, 1, 3]` on an ordinary Linux SYN. The probe emits it packed into a u64, and a u64 reaches 2^64 while a JS number is exact only to 2^53, so the packed form could not be held without rounding; the rounding would land in the low bytes, which are the option kinds themselves. The array holds the same information and is queryable per position. It also replaces the old `tcpOptsOrder`, which packed 4 bits per option and so could not tell MSS from TCP Fast Open, or Window Scale from MD5, and could not represent MPTCP at all.
|
|
153
|
+
|
|
154
|
+
`tcpOptsFlags` and `tcpOptsOrder` are kept and still read. A pronode running an older chaddy still sends them, and years of rows hold them, so removing them would both lose the rollout window and break any routing rule already reading them. They go undefined on new sessions once the fleet is rolled.
|
|
155
|
+
|
|
156
|
+
`tcpTsval` and `tcpTsecr` are written only when the Timestamps option was actually on the SYN. A TSval of 0 is legal and a TSecr of 0 is expected, so neither can use zero to mean absent.
|
|
157
|
+
|
|
158
|
+
Six places named every one of these fields by hand — the middleware's copy onto the request, the session write, and four task files building the decision-machine bag. They now all go through one list, with a compile-time check that every field of `RawTlsSignals` is on it. That is not tidying: the Session projection comment in `@prosopo/types-database` records a field being missed in exactly this way, after which the rules reading it got `undefined` and silently never fired against real traffic.
|
|
159
|
+
|
|
160
|
+
Separately, the provider compose no longer defaults the sidecar to `prosopo/tcp-probe:latest`. The probe's reply is a bare fixed-size struct with no version in it, so the image tag is the only statement of which layout a host serves, and publishing `:latest` would change that on every pronode at the next pull with nobody running a deploy. The default is now the `0.1.1` both Protect inventories already pin.
|
|
161
|
+
|
|
162
|
+
Tests: the new headers all parse; a packed value above 2^53 decodes without losing its low bytes; the kind pairs the old encoding aliased stay distinct; a trailing end-of-option-list terminates the list rather than appearing in it; an all-zero packed value reads as absent rather than as an empty list; malformed and out-of-range values are ignored; the legacy header pair is still read; and a zero is kept rather than dropped, since `ipIdent` 0 and `tcpTsecr` 0 are real readings.
|
|
163
|
+
- Updated dependencies [1c13037]
|
|
164
|
+
- Updated dependencies [f961dab]
|
|
165
|
+
- Updated dependencies [a17e8eb]
|
|
166
|
+
- Updated dependencies [7d57d2a]
|
|
167
|
+
- Updated dependencies [2118584]
|
|
168
|
+
- Updated dependencies [1ce9482]
|
|
169
|
+
- Updated dependencies [6e2eb55]
|
|
170
|
+
- Updated dependencies [dcb691b]
|
|
171
|
+
- Updated dependencies [80b7780]
|
|
172
|
+
- Updated dependencies [dd4c27c]
|
|
173
|
+
- @prosopo/types@5.13.0
|
|
174
|
+
- @prosopo/types-database@5.8.0
|
|
175
|
+
- @prosopo/puzzle-assets@0.2.0
|
|
176
|
+
- @prosopo/util@3.3.14
|
|
177
|
+
- @prosopo/captcha-severity@1.2.0
|
|
178
|
+
- @prosopo/api@4.4.0
|
|
179
|
+
- @prosopo/locale@3.7.0
|
|
180
|
+
- @prosopo/api-express-router@3.2.1
|
|
181
|
+
- @prosopo/common@3.1.62
|
|
182
|
+
- @prosopo/database@4.1.4
|
|
183
|
+
- @prosopo/datasets@3.2.1
|
|
184
|
+
- @prosopo/env@3.6.69
|
|
185
|
+
- @prosopo/ipinfo@0.4.14
|
|
186
|
+
- @prosopo/keyring@2.10.1
|
|
187
|
+
- @prosopo/load-balancer@2.11.5
|
|
188
|
+
- @prosopo/types-env@2.11.15
|
|
189
|
+
- @prosopo/user-access-policy@3.14.15
|
|
190
|
+
- @prosopo/api-route@2.6.63
|
|
191
|
+
- @prosopo/logger@2.1.3
|
|
192
|
+
- @prosopo/redis-client@1.0.40
|
|
193
|
+
- @prosopo/util-crypto@13.6.0
|
|
194
|
+
- @prosopo/web-bot-auth@0.1.3
|
|
195
|
+
|
|
3
196
|
## 5.14.0
|
|
4
197
|
### Minor Changes
|
|
5
198
|
|