@prosopo/provider 3.12.14 → 3.13.6
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/CHANGELOG.md +139 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +345 -0
- package/dist/api/captcha/getImageCaptchaChallenge.js +150 -0
- package/dist/api/captcha/getPoWCaptchaChallenge.js +156 -0
- package/dist/api/captcha/submitImageCaptchaSolution.js +87 -0
- package/dist/api/captcha/submitPoWCaptchaSolution.js +77 -0
- package/dist/api/captcha.js +18 -696
- package/dist/api/verify.js +2 -1
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +344 -0
- package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +149 -0
- package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +155 -0
- package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +86 -0
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +76 -0
- package/dist/cjs/api/captcha.cjs +17 -695
- package/dist/cjs/api/verify.cjs +2 -1
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/schedulers/setClientEntropy.cjs +36 -0
- package/dist/cjs/tasks/captchaManager.cjs +2 -1
- package/dist/cjs/tasks/client/clientTasks.cjs +54 -1
- package/dist/cjs/tasks/detection/decodePayload.cjs +379 -609
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +35 -11
- package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +4 -1
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +8 -2
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +2 -2
- package/dist/cjs/tasks/tasks.cjs +1 -0
- package/dist/cjs/utils/hashUserIp.cjs +9 -0
- package/dist/index.js +2 -0
- package/dist/schedulers/setClientEntropy.js +29 -24
- package/dist/tasks/captchaManager.js +2 -1
- package/dist/tasks/client/clientTasks.js +55 -2
- package/dist/tasks/detection/decodePayload.js +379 -609
- package/dist/tasks/detection/getBotScore.js +2 -2
- package/dist/tasks/frictionless/frictionlessTasks.js +36 -12
- package/dist/tasks/frictionless/frictionlessTasksUtils.js +4 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +8 -2
- package/dist/tasks/powCaptcha/powTasks.js +2 -2
- package/dist/tasks/tasks.js +1 -0
- package/dist/utils/hashUserIp.js +9 -0
- package/package.json +20 -20
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -4278
- package/coverage/coverage-final.json +0 -42
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -311
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/api/admin/apiAdminRoutesProvider.ts.html +0 -214
- package/coverage/src/api/admin/apiRegisterSiteKeyEndpoint.ts.html +0 -259
- package/coverage/src/api/admin/apiRemoveDetectorKeyEndpoint.ts.html +0 -283
- package/coverage/src/api/admin/apiToggleMaintenanceModeEndpoint.ts.html +0 -334
- package/coverage/src/api/admin/apiUpdateDetectorKeyEndpoint.ts.html +0 -298
- package/coverage/src/api/admin/createApiAdminRoutesProvider.ts.html +0 -163
- package/coverage/src/api/admin/index.html +0 -191
- package/coverage/src/api/blacklistRequestInspector.ts.html +0 -751
- package/coverage/src/api/block.ts.html +0 -187
- package/coverage/src/api/captcha.ts.html +0 -2803
- package/coverage/src/api/domainMiddleware.ts.html +0 -493
- package/coverage/src/api/headerCheckMiddleware.ts.html +0 -256
- package/coverage/src/api/ignoreMiddleware.ts.html +0 -181
- package/coverage/src/api/index.html +0 -266
- package/coverage/src/api/ja4Middleware.ts.html +0 -400
- package/coverage/src/api/public.ts.html +0 -343
- package/coverage/src/api/robotsMiddleware.ts.html +0 -157
- package/coverage/src/api/validateAddress.ts.html +0 -214
- package/coverage/src/api/verify.ts.html +0 -871
- package/coverage/src/compositeIpAddress.ts.html +0 -340
- package/coverage/src/index.html +0 -161
- package/coverage/src/index.ts.html +0 -175
- package/coverage/src/pairs.ts.html +0 -238
- package/coverage/src/rules/index.html +0 -116
- package/coverage/src/rules/lang.ts.html +0 -187
- package/coverage/src/schedulers/captchaScheduler.ts.html +0 -250
- package/coverage/src/schedulers/getClientList.ts.html +0 -271
- package/coverage/src/schedulers/index.html +0 -131
- package/coverage/src/services/index.html +0 -131
- package/coverage/src/services/ipComparison.ts.html +0 -685
- package/coverage/src/services/ipInfo.ts.html +0 -490
- package/coverage/src/tasks/captchaManager.ts.html +0 -865
- package/coverage/src/tasks/client/clientTasks.ts.html +0 -1381
- package/coverage/src/tasks/client/index.html +0 -116
- package/coverage/src/tasks/dataset/datasetTasks.ts.html +0 -268
- package/coverage/src/tasks/dataset/datasetTasksUtils.ts.html +0 -271
- package/coverage/src/tasks/dataset/index.html +0 -131
- package/coverage/src/tasks/detection/decodePayload.js.html +0 -127
- package/coverage/src/tasks/detection/getBotScore.ts.html +0 -244
- package/coverage/src/tasks/detection/index.html +0 -131
- package/coverage/src/tasks/frictionless/frictionlessTasks.ts.html +0 -1216
- package/coverage/src/tasks/frictionless/frictionlessTasksUtils.ts.html +0 -247
- package/coverage/src/tasks/frictionless/index.html +0 -131
- package/coverage/src/tasks/imgCaptcha/imgCaptchaTasks.ts.html +0 -1972
- package/coverage/src/tasks/imgCaptcha/imgCaptchaTasksUtils.ts.html +0 -232
- package/coverage/src/tasks/imgCaptcha/index.html +0 -131
- package/coverage/src/tasks/index.html +0 -146
- package/coverage/src/tasks/index.ts.html +0 -127
- package/coverage/src/tasks/powCaptcha/index.html +0 -131
- package/coverage/src/tasks/powCaptcha/powTasks.ts.html +0 -961
- package/coverage/src/tasks/powCaptcha/powTasksUtils.ts.html +0 -244
- package/coverage/src/tasks/tasks.ts.html +0 -388
- package/coverage/src/util.ts.html +0 -1627
- package/coverage/src/utils/hashUserAgent.ts.html +0 -184
- package/coverage/src/utils/index.html +0 -116
- package/dist/api/admin/apiAdminRoutesProvider.d.ts +0 -9
- package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +0 -1
- package/dist/api/admin/apiAdminRoutesProvider.js.map +0 -1
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +0 -14
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +0 -1
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +0 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +0 -23
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +0 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +0 -1
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts +0 -13
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts.map +0 -1
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js.map +0 -1
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +0 -14
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +0 -1
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +0 -1
- package/dist/api/admin/createApiAdminRoutesProvider.d.ts +0 -4
- package/dist/api/admin/createApiAdminRoutesProvider.d.ts.map +0 -1
- package/dist/api/admin/createApiAdminRoutesProvider.js.map +0 -1
- package/dist/api/blacklistRequestInspector.d.ts +0 -19
- package/dist/api/blacklistRequestInspector.d.ts.map +0 -1
- package/dist/api/blacklistRequestInspector.js.map +0 -1
- package/dist/api/block.d.ts +0 -3
- package/dist/api/block.d.ts.map +0 -1
- package/dist/api/block.js.map +0 -1
- package/dist/api/captcha.d.ts +0 -4
- package/dist/api/captcha.d.ts.map +0 -1
- package/dist/api/captcha.js.map +0 -1
- package/dist/api/domainMiddleware.d.ts +0 -4
- package/dist/api/domainMiddleware.d.ts.map +0 -1
- package/dist/api/domainMiddleware.js.map +0 -1
- package/dist/api/headerCheckMiddleware.d.ts +0 -4
- package/dist/api/headerCheckMiddleware.d.ts.map +0 -1
- package/dist/api/headerCheckMiddleware.js.map +0 -1
- package/dist/api/ignoreMiddleware.d.ts +0 -3
- package/dist/api/ignoreMiddleware.d.ts.map +0 -1
- package/dist/api/ignoreMiddleware.js.map +0 -1
- package/dist/api/ja4Middleware.d.ts +0 -10
- package/dist/api/ja4Middleware.d.ts.map +0 -1
- package/dist/api/ja4Middleware.js.map +0 -1
- package/dist/api/public.d.ts +0 -4
- package/dist/api/public.d.ts.map +0 -1
- package/dist/api/public.js.map +0 -1
- package/dist/api/robotsMiddleware.d.ts +0 -3
- package/dist/api/robotsMiddleware.d.ts.map +0 -1
- package/dist/api/robotsMiddleware.js.map +0 -1
- package/dist/api/validateAddress.d.ts +0 -5
- package/dist/api/validateAddress.d.ts.map +0 -1
- package/dist/api/validateAddress.js.map +0 -1
- package/dist/api/verify.d.ts +0 -4
- package/dist/api/verify.d.ts.map +0 -1
- package/dist/api/verify.js.map +0 -1
- package/dist/compositeIpAddress.d.ts +0 -5
- package/dist/compositeIpAddress.d.ts.map +0 -1
- package/dist/compositeIpAddress.js.map +0 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/pairs.d.ts +0 -3
- package/dist/pairs.d.ts.map +0 -1
- package/dist/pairs.js.map +0 -1
- package/dist/rules/lang.d.ts +0 -3
- package/dist/rules/lang.d.ts.map +0 -1
- package/dist/rules/lang.js.map +0 -1
- package/dist/schedulers/captchaScheduler.d.ts +0 -4
- package/dist/schedulers/captchaScheduler.d.ts.map +0 -1
- package/dist/schedulers/captchaScheduler.js.map +0 -1
- package/dist/schedulers/getClientList.d.ts +0 -4
- package/dist/schedulers/getClientList.d.ts.map +0 -1
- package/dist/schedulers/getClientList.js.map +0 -1
- package/dist/schedulers/setClientEntropy.d.ts +0 -4
- package/dist/schedulers/setClientEntropy.d.ts.map +0 -1
- package/dist/schedulers/setClientEntropy.js.map +0 -1
- package/dist/services/ipComparison.d.ts +0 -3
- package/dist/services/ipComparison.d.ts.map +0 -1
- package/dist/services/ipComparison.js.map +0 -1
- package/dist/services/ipInfo.d.ts +0 -3
- package/dist/services/ipInfo.d.ts.map +0 -1
- package/dist/services/ipInfo.js.map +0 -1
- package/dist/tasks/captchaManager.d.ts +0 -34
- package/dist/tasks/captchaManager.d.ts.map +0 -1
- package/dist/tasks/captchaManager.js.map +0 -1
- package/dist/tasks/client/clientTasks.d.ts +0 -21
- package/dist/tasks/client/clientTasks.d.ts.map +0 -1
- package/dist/tasks/client/clientTasks.js.map +0 -1
- package/dist/tasks/dataset/datasetTasks.d.ts +0 -13
- package/dist/tasks/dataset/datasetTasks.d.ts.map +0 -1
- package/dist/tasks/dataset/datasetTasks.js.map +0 -1
- package/dist/tasks/dataset/datasetTasksUtils.d.ts +0 -3
- package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +0 -1
- package/dist/tasks/dataset/datasetTasksUtils.js.map +0 -1
- package/dist/tasks/detection/decodePayload.d.ts +0 -5
- package/dist/tasks/detection/decodePayload.d.ts.map +0 -1
- package/dist/tasks/detection/decodePayload.js.map +0 -1
- package/dist/tasks/detection/getBotScore.d.ts +0 -20
- package/dist/tasks/detection/getBotScore.d.ts.map +0 -1
- package/dist/tasks/detection/getBotScore.js.map +0 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts +0 -67
- package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +0 -1
- package/dist/tasks/frictionless/frictionlessTasks.js.map +0 -1
- package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +0 -6
- package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +0 -1
- package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +0 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +0 -30
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +0 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +0 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +0 -7
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +0 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +0 -1
- package/dist/tasks/index.d.ts +0 -2
- package/dist/tasks/index.d.ts.map +0 -1
- package/dist/tasks/index.js.map +0 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts +0 -17
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +0 -1
- package/dist/tasks/powCaptcha/powTasks.js.map +0 -1
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts +0 -3
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +0 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js.map +0 -1
- package/dist/tasks/tasks.d.ts +0 -25
- package/dist/tasks/tasks.d.ts.map +0 -1
- package/dist/tasks/tasks.js.map +0 -1
- package/dist/tests/index.d.ts +0 -2
- package/dist/tests/index.d.ts.map +0 -1
- package/dist/tests/index.js +0 -2
- package/dist/tests/index.js.map +0 -1
- package/dist/tests/integration/accessRules.integration.test.d.ts +0 -2
- package/dist/tests/integration/accessRules.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/accessRules.integration.test.js +0 -588
- package/dist/tests/integration/accessRules.integration.test.js.map +0 -1
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts +0 -2
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +0 -60
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +0 -1
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts +0 -2
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +0 -368
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +0 -1
- package/dist/tests/integration/imgCaptcha.integration.test.d.ts +0 -2
- package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/imgCaptcha.integration.test.js +0 -272
- package/dist/tests/integration/imgCaptcha.integration.test.js.map +0 -1
- package/dist/tests/integration/ipValidation.integration.test.d.ts +0 -2
- package/dist/tests/integration/ipValidation.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/ipValidation.integration.test.js +0 -75
- package/dist/tests/integration/ipValidation.integration.test.js.map +0 -1
- package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +0 -32
- package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +0 -1
- package/dist/tests/integration/mocks/solvedTestCaptchas.js +0 -1046
- package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +0 -1
- package/dist/tests/integration/powCaptcha.integration.test.d.ts +0 -2
- package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +0 -1
- package/dist/tests/integration/powCaptcha.integration.test.js +0 -308
- package/dist/tests/integration/powCaptcha.integration.test.js.map +0 -1
- package/dist/tests/integration/registerSitekey.d.ts +0 -3
- package/dist/tests/integration/registerSitekey.d.ts.map +0 -1
- package/dist/tests/integration/registerSitekey.js +0 -24
- package/dist/tests/integration/registerSitekey.js.map +0 -1
- package/dist/tests/integration/userAccessPolicy.d.ts +0 -2
- package/dist/tests/integration/userAccessPolicy.d.ts.map +0 -1
- package/dist/tests/integration/userAccessPolicy.js +0 -2
- package/dist/tests/integration/userAccessPolicy.js.map +0 -1
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts +0 -2
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +0 -60
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +0 -1
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts +0 -2
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +0 -43
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +0 -1
- package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts +0 -2
- package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/api/ja4Middleware.unit.test.js +0 -57
- package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +0 -1
- package/dist/tests/unit/compositeIpAddress.unit.test.d.ts +0 -2
- package/dist/tests/unit/compositeIpAddress.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/compositeIpAddress.unit.test.js +0 -86
- package/dist/tests/unit/compositeIpAddress.unit.test.js.map +0 -1
- package/dist/tests/unit/pairs.unit.test.d.ts +0 -2
- package/dist/tests/unit/pairs.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/pairs.unit.test.js +0 -83
- package/dist/tests/unit/pairs.unit.test.js.map +0 -1
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +0 -2
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +0 -75
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +0 -1
- package/dist/tests/unit/services/ipComparison.unit.test.d.ts +0 -2
- package/dist/tests/unit/services/ipComparison.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/services/ipComparison.unit.test.js +0 -258
- package/dist/tests/unit/services/ipComparison.unit.test.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/dist/tests/unit/tasks/captchaManager.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/captchaManager.unit.test.js +0 -311
- package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +0 -289
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +0 -92
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +0 -75
- package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +0 -143
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +0 -145
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +0 -64
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +0 -388
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +0 -46
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +0 -216
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +0 -69
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +0 -1
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts +0 -2
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js +0 -505
- package/dist/tests/unit/util.evaluateIpValidationRules.unit.test.js.map +0 -1
- package/dist/tests/unit/util.ipDistance.unit.test.d.ts +0 -2
- package/dist/tests/unit/util.ipDistance.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/util.ipDistance.unit.test.js +0 -93
- package/dist/tests/unit/util.ipDistance.unit.test.js.map +0 -1
- package/dist/tests/unit/util.unit.test.d.ts +0 -2
- package/dist/tests/unit/util.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/util.unit.test.js +0 -170
- package/dist/tests/unit/util.unit.test.js.map +0 -1
- package/dist/util.d.ts +0 -24
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js.map +0 -1
- package/dist/utils/hashUserAgent.d.ts +0 -2
- package/dist/utils/hashUserAgent.d.ts.map +0 -1
- package/dist/utils/hashUserAgent.js.map +0 -1
|
@@ -17,9 +17,18 @@ const getDefaultEntropy = () => {
|
|
|
17
17
|
};
|
|
18
18
|
const DEFAULT_MAX_TIMESTAMP_AGE = 60 * 10 * 1e3;
|
|
19
19
|
const DEFAULT_ENTROPY = getDefaultEntropy();
|
|
20
|
+
var FrictionlessReason = /* @__PURE__ */ ((FrictionlessReason2) => {
|
|
21
|
+
FrictionlessReason2["CONTEXT_AWARE_VALIDATION_FAILED"] = "CONTEXT_AWARE_VALIDATION_FAILED";
|
|
22
|
+
FrictionlessReason2["USER_ACCESS_POLICY"] = "USER_ACCESS_POLICY";
|
|
23
|
+
FrictionlessReason2["USER_AGENT_MISMATCH"] = "USER_AGENT_MISMATCH";
|
|
24
|
+
FrictionlessReason2["OLD_TIMESTAMP"] = "OLD_TIMESTAMP";
|
|
25
|
+
FrictionlessReason2["BOT_SCORE_ABOVE_THRESHOLD"] = "BOT_SCORE_ABOVE_THRESHOLD";
|
|
26
|
+
FrictionlessReason2["WEBVIEW_DETECTED"] = "WEBVIEW_DETECTED";
|
|
27
|
+
return FrictionlessReason2;
|
|
28
|
+
})(FrictionlessReason || {});
|
|
20
29
|
class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
21
30
|
constructor(db, pair, config, logger) {
|
|
22
|
-
super(db, pair, logger);
|
|
31
|
+
super(db, pair, config, logger);
|
|
23
32
|
this.config = config;
|
|
24
33
|
}
|
|
25
34
|
setSessionParams(params) {
|
|
@@ -44,7 +53,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
44
53
|
checkLangRules(acceptLanguage) {
|
|
45
54
|
return lang.checkLangRules(this.config, acceptLanguage);
|
|
46
55
|
}
|
|
47
|
-
async createSession(token, score, threshold, scoreComponents, providerSelectEntropy, ipAddress, captchaType, solvedImagesCount, powDifficulty, webView = false, iFrame = false, decryptedHeadHash = "") {
|
|
56
|
+
async createSession(token, score, threshold, scoreComponents, providerSelectEntropy, ipAddress, captchaType, solvedImagesCount, powDifficulty, userSitekeyIpHash, webView = false, iFrame = false, decryptedHeadHash = "", reason) {
|
|
48
57
|
const sessionRecord = {
|
|
49
58
|
sessionId: uuid.v4(),
|
|
50
59
|
createdAt: /* @__PURE__ */ new Date(),
|
|
@@ -57,9 +66,11 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
57
66
|
captchaType,
|
|
58
67
|
solvedImagesCount,
|
|
59
68
|
powDifficulty,
|
|
69
|
+
userSitekeyIpHash,
|
|
60
70
|
webView,
|
|
61
71
|
iFrame,
|
|
62
|
-
decryptedHeadHash
|
|
72
|
+
decryptedHeadHash,
|
|
73
|
+
reason
|
|
63
74
|
};
|
|
64
75
|
await this.db.storeSessionRecord(sessionRecord);
|
|
65
76
|
return sessionRecord;
|
|
@@ -97,11 +108,13 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
97
108
|
effectiveParams.providerSelectEntropy,
|
|
98
109
|
effectiveParams.ipAddress,
|
|
99
110
|
types.CaptchaType.image,
|
|
100
|
-
|
|
111
|
+
effectiveParams.solvedImagesCount,
|
|
101
112
|
void 0,
|
|
113
|
+
effectiveParams.userSitekeyIpHash,
|
|
102
114
|
effectiveParams.webView ?? false,
|
|
103
115
|
effectiveParams.iFrame ?? false,
|
|
104
|
-
effectiveParams.decryptedHeadHash
|
|
116
|
+
effectiveParams.decryptedHeadHash,
|
|
117
|
+
effectiveParams.reason
|
|
105
118
|
);
|
|
106
119
|
return {
|
|
107
120
|
[types.ApiParams.captchaType]: types.CaptchaType.image,
|
|
@@ -125,10 +138,12 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
125
138
|
effectiveParams.ipAddress,
|
|
126
139
|
types.CaptchaType.pow,
|
|
127
140
|
void 0,
|
|
128
|
-
|
|
141
|
+
effectiveParams.powDifficulty,
|
|
142
|
+
effectiveParams.userSitekeyIpHash,
|
|
129
143
|
effectiveParams.webView ?? false,
|
|
130
144
|
effectiveParams.iFrame ?? false,
|
|
131
|
-
effectiveParams.decryptedHeadHash
|
|
145
|
+
effectiveParams.decryptedHeadHash,
|
|
146
|
+
effectiveParams.reason
|
|
132
147
|
);
|
|
133
148
|
return {
|
|
134
149
|
[types.ApiParams.captchaType]: types.CaptchaType.pow,
|
|
@@ -234,6 +249,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
234
249
|
let webView;
|
|
235
250
|
let iFrame;
|
|
236
251
|
let decryptedHeadHash = "";
|
|
252
|
+
let decryptionFailed = false;
|
|
237
253
|
for (const [keyIndex, key] of decryptKeys.entries()) {
|
|
238
254
|
try {
|
|
239
255
|
this.logger.info(() => ({
|
|
@@ -281,6 +297,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
281
297
|
timestamp = 0;
|
|
282
298
|
providerSelectEntropy = DEFAULT_ENTROPY + 1;
|
|
283
299
|
decryptedHeadHash = "";
|
|
300
|
+
decryptionFailed = true;
|
|
284
301
|
}
|
|
285
302
|
}
|
|
286
303
|
}
|
|
@@ -296,6 +313,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
296
313
|
timestamp = 0;
|
|
297
314
|
providerSelectEntropy = DEFAULT_ENTROPY - undefinedCount;
|
|
298
315
|
decryptedHeadHash = "";
|
|
316
|
+
decryptionFailed = true;
|
|
299
317
|
}
|
|
300
318
|
this.logger.info(() => ({
|
|
301
319
|
msg: "decryptPayload result",
|
|
@@ -307,7 +325,8 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
307
325
|
userAgent,
|
|
308
326
|
webView,
|
|
309
327
|
iFrame,
|
|
310
|
-
decryptedHeadHash
|
|
328
|
+
decryptedHeadHash,
|
|
329
|
+
decryptionFailed
|
|
311
330
|
}
|
|
312
331
|
}));
|
|
313
332
|
return {
|
|
@@ -316,11 +335,16 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
316
335
|
providerSelectEntropy: Number(providerSelectEntropy),
|
|
317
336
|
userId,
|
|
318
337
|
userAgent,
|
|
319
|
-
webView,
|
|
320
|
-
iFrame,
|
|
321
|
-
decryptedHeadHash
|
|
338
|
+
webView: webView || false,
|
|
339
|
+
iFrame: iFrame || false,
|
|
340
|
+
decryptedHeadHash,
|
|
341
|
+
decryptionFailed
|
|
322
342
|
};
|
|
323
343
|
}
|
|
344
|
+
async getClientEntropy(siteKey) {
|
|
345
|
+
return this.db.getClientEntropy(siteKey);
|
|
346
|
+
}
|
|
324
347
|
}
|
|
325
348
|
exports.DEFAULT_ENTROPY = DEFAULT_ENTROPY;
|
|
326
349
|
exports.FrictionlessManager = FrictionlessManager;
|
|
350
|
+
exports.FrictionlessReason = FrictionlessReason;
|
|
@@ -8,7 +8,10 @@ const computeFrictionlessScore = (scoreComponents) => {
|
|
|
8
8
|
).toFixed(2)
|
|
9
9
|
);
|
|
10
10
|
};
|
|
11
|
-
const timestampDecayFunction = (timestamp) => {
|
|
11
|
+
const timestampDecayFunction = (timestamp, decryptionFailed) => {
|
|
12
|
+
if (decryptionFailed) {
|
|
13
|
+
return 6;
|
|
14
|
+
}
|
|
12
15
|
const max = (/* @__PURE__ */ new Date()).getTime();
|
|
13
16
|
if (max - timestamp > 36e5) {
|
|
14
17
|
return 12;
|
|
@@ -11,11 +11,12 @@ const pairs = require("../../pairs.cjs");
|
|
|
11
11
|
const lang = require("../../rules/lang.cjs");
|
|
12
12
|
const util = require("../../util.cjs");
|
|
13
13
|
const captchaManager = require("../captchaManager.cjs");
|
|
14
|
+
const frictionlessTasks = require("../frictionless/frictionlessTasks.cjs");
|
|
14
15
|
const frictionlessTasksUtils = require("../frictionless/frictionlessTasksUtils.cjs");
|
|
15
16
|
const imgCaptchaTasksUtils = require("./imgCaptchaTasksUtils.cjs");
|
|
16
17
|
class ImgCaptchaManager extends captchaManager.CaptchaManager {
|
|
17
18
|
constructor(db, pair, config, logger) {
|
|
18
|
-
super(db, pair, logger);
|
|
19
|
+
super(db, pair, config, logger);
|
|
19
20
|
this.config = config;
|
|
20
21
|
}
|
|
21
22
|
async getCaptchaWithProof(datasetId, solved, size) {
|
|
@@ -334,7 +335,7 @@ class ImgCaptchaManager extends captchaManager.CaptchaManager {
|
|
|
334
335
|
}
|
|
335
336
|
return void 0;
|
|
336
337
|
}
|
|
337
|
-
async verifyImageCaptchaSolution(user, dapp, commitmentId, env, maxVerifiedTime, ip, disallowWebView) {
|
|
338
|
+
async verifyImageCaptchaSolution(user, dapp, commitmentId, env, maxVerifiedTime, ip, disallowWebView, contextAwareEnabled = false) {
|
|
338
339
|
const solution = await (commitmentId ? this.getDappUserCommitmentById(commitmentId) : this.getDappUserCommitmentByAccount(user, dapp));
|
|
339
340
|
if (!solution) {
|
|
340
341
|
this.logger.debug(() => ({
|
|
@@ -409,6 +410,11 @@ class ImgCaptchaManager extends captchaManager.CaptchaManager {
|
|
|
409
410
|
}));
|
|
410
411
|
return { status: "API.USER_NOT_VERIFIED", verified: false };
|
|
411
412
|
}
|
|
413
|
+
if (contextAwareEnabled && sessionRecord.reason === frictionlessTasks.FrictionlessReason.CONTEXT_AWARE_VALIDATION_FAILED) {
|
|
414
|
+
this.logger.info(() => ({
|
|
415
|
+
msg: "Context aware validation failed"
|
|
416
|
+
}));
|
|
417
|
+
}
|
|
412
418
|
}
|
|
413
419
|
}
|
|
414
420
|
return {
|
|
@@ -11,8 +11,8 @@ const frictionlessTasksUtils = require("../frictionless/frictionlessTasksUtils.c
|
|
|
11
11
|
const powTasksUtils = require("./powTasksUtils.cjs");
|
|
12
12
|
const DEFAULT_POW_DIFFICULTY = 4;
|
|
13
13
|
class PowCaptchaManager extends captchaManager.CaptchaManager {
|
|
14
|
-
constructor(db, pair, logger) {
|
|
15
|
-
super(db, pair, logger);
|
|
14
|
+
constructor(db, pair, config, logger) {
|
|
15
|
+
super(db, pair, config, logger);
|
|
16
16
|
this.POW_SEPARATOR = types.POW_SEPARATOR;
|
|
17
17
|
}
|
|
18
18
|
/**
|
package/dist/cjs/tasks/tasks.cjs
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const node_crypto = require("node:crypto");
|
|
4
|
+
function hashUserIp(user, ip, sitekey) {
|
|
5
|
+
const hash = node_crypto.createHash("sha256");
|
|
6
|
+
hash.update(`${user}:${ip}:${sitekey}`, "utf8");
|
|
7
|
+
return hash.digest("hex");
|
|
8
|
+
}
|
|
9
|
+
exports.hashUserIp = hashUserIp;
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { publicRouter } from "./api/public.js";
|
|
|
8
8
|
import { domainMiddleware } from "./api/domainMiddleware.js";
|
|
9
9
|
import { storeCaptchasExternally } from "./schedulers/captchaScheduler.js";
|
|
10
10
|
import { getClientList } from "./schedulers/getClientList.js";
|
|
11
|
+
import { setClientEntropy } from "./schedulers/setClientEntropy.js";
|
|
11
12
|
import { headerCheckMiddleware } from "./api/headerCheckMiddleware.js";
|
|
12
13
|
import { createApiAdminRoutesProvider } from "./api/admin/createApiAdminRoutesProvider.js";
|
|
13
14
|
import { ignoreMiddleware } from "./api/ignoreMiddleware.js";
|
|
@@ -39,6 +40,7 @@ export {
|
|
|
39
40
|
prosopoVerifyRouter,
|
|
40
41
|
publicRouter,
|
|
41
42
|
robotsMiddleware,
|
|
43
|
+
setClientEntropy,
|
|
42
44
|
shuffleArray,
|
|
43
45
|
storeCaptchasExternally,
|
|
44
46
|
validateIpAddress
|
|
@@ -3,29 +3,34 @@ import { ScheduledTaskNames } from "@prosopo/types";
|
|
|
3
3
|
import { CronJob } from "cron";
|
|
4
4
|
import { Tasks } from "../tasks/tasks.js";
|
|
5
5
|
import { checkIfTaskIsRunning } from "../util.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
async function setClientEntropy(pair, cronSchedule, config) {
|
|
7
|
+
const env = new ProviderEnvironment(config, pair);
|
|
8
|
+
await env.isReady();
|
|
9
|
+
const tasks = new Tasks(env);
|
|
10
|
+
const job = new CronJob(cronSchedule, async () => {
|
|
11
|
+
const taskRunning = await checkIfTaskIsRunning(
|
|
12
|
+
ScheduledTaskNames.SetClientEntropy,
|
|
13
|
+
env.getDb()
|
|
14
|
+
);
|
|
15
|
+
env.logger.info(() => ({
|
|
16
|
+
msg: `${ScheduledTaskNames.SetClientEntropy} task running: ${taskRunning}`,
|
|
17
|
+
data: { taskRunning }
|
|
18
|
+
}));
|
|
19
|
+
if (!taskRunning) {
|
|
20
|
+
env.logger.info(() => ({
|
|
21
|
+
msg: `${ScheduledTaskNames.SetClientEntropy} task....`,
|
|
22
|
+
data: {}
|
|
23
|
+
}));
|
|
24
|
+
await tasks.clientTaskManager.calculateClientEntropy().catch((err) => {
|
|
25
|
+
env.logger.error(() => ({
|
|
26
|
+
err,
|
|
27
|
+
msg: "Error setting client entropy"
|
|
15
28
|
}));
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}));
|
|
21
|
-
await tasks.clientTaskManager.calculateClientEntropy().catch((err) => {
|
|
22
|
-
env.logger.error(() => ({
|
|
23
|
-
err,
|
|
24
|
-
msg: "Error setting client entropy",
|
|
25
|
-
}));
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
job.start();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
job.start();
|
|
30
33
|
}
|
|
31
|
-
|
|
34
|
+
export {
|
|
35
|
+
setClientEntropy
|
|
36
|
+
};
|
|
@@ -2,9 +2,10 @@ import { getLogger } from "@prosopo/common";
|
|
|
2
2
|
import { CaptchaType, ApiParams, Tier } from "@prosopo/types";
|
|
3
3
|
import { getPrioritisedAccessRule } from "../api/blacklistRequestInspector.js";
|
|
4
4
|
class CaptchaManager {
|
|
5
|
-
constructor(db, pair, logger) {
|
|
5
|
+
constructor(db, pair, config, logger) {
|
|
6
6
|
this.pair = pair;
|
|
7
7
|
this.db = db;
|
|
8
|
+
this.config = config;
|
|
8
9
|
this.logger = logger || getLogger("info", import.meta.url);
|
|
9
10
|
}
|
|
10
11
|
async validateSessionIP(sessionRecord, currentIP, env) {
|
|
@@ -2,7 +2,7 @@ import { createPrivateKey } from "node:crypto";
|
|
|
2
2
|
import { ProsopoApiError } from "@prosopo/common";
|
|
3
3
|
import { CaptchaDatabase, ClientDatabase } from "@prosopo/database";
|
|
4
4
|
import { ScheduledTaskNames, ScheduledTaskStatus } from "@prosopo/types";
|
|
5
|
-
import { parseUrl } from "@prosopo/util";
|
|
5
|
+
import { majorityAverage, parseUrl } from "@prosopo/util";
|
|
6
6
|
import { validateSiteKey } from "../../api/validateAddress.js";
|
|
7
7
|
const isValidPrivateKey = (privateKeyString) => {
|
|
8
8
|
const privateKey = Buffer.from(privateKeyString, "base64").toString("ascii");
|
|
@@ -161,7 +161,13 @@ class ClientTaskManager {
|
|
|
161
161
|
this.logger
|
|
162
162
|
);
|
|
163
163
|
const tenMinuteWindow = 10 * 60 * 1e3;
|
|
164
|
-
const updatedAtTimestamp =
|
|
164
|
+
const updatedAtTimestamp = (() => {
|
|
165
|
+
const raw = lastTask?.updated;
|
|
166
|
+
if (!raw) return 0;
|
|
167
|
+
const ts = raw instanceof Date ? raw.getTime() : Date.parse(String(raw));
|
|
168
|
+
if (Number.isNaN(ts)) return 0;
|
|
169
|
+
return Math.max(ts - tenMinuteWindow, 0);
|
|
170
|
+
})();
|
|
165
171
|
this.logger.info(() => ({
|
|
166
172
|
msg: `Getting updated client records since ${new Date(updatedAtTimestamp).toDateString()}`
|
|
167
173
|
}));
|
|
@@ -194,6 +200,53 @@ class ClientTaskManager {
|
|
|
194
200
|
);
|
|
195
201
|
}
|
|
196
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* @description Calculate client entropy scores and update in db
|
|
205
|
+
* @returns Promise<void>
|
|
206
|
+
*/
|
|
207
|
+
async calculateClientEntropy() {
|
|
208
|
+
const taskID = await this.providerDB.createScheduledTaskStatus(
|
|
209
|
+
ScheduledTaskNames.SetClientEntropy,
|
|
210
|
+
ScheduledTaskStatus.Running
|
|
211
|
+
);
|
|
212
|
+
try {
|
|
213
|
+
const clients = await this.providerDB.getAllClientRecords();
|
|
214
|
+
for (const client of clients) {
|
|
215
|
+
const sampleEntropies = await this.providerDB.sampleEntropy(
|
|
216
|
+
100,
|
|
217
|
+
client.account
|
|
218
|
+
);
|
|
219
|
+
const avgEntropy = majorityAverage(sampleEntropies);
|
|
220
|
+
await this.providerDB.setClientEntropy(client.account, avgEntropy);
|
|
221
|
+
}
|
|
222
|
+
await this.providerDB.updateScheduledTaskStatus(
|
|
223
|
+
taskID,
|
|
224
|
+
ScheduledTaskStatus.Completed,
|
|
225
|
+
{
|
|
226
|
+
data: {
|
|
227
|
+
clientRecords: clients.length
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
);
|
|
231
|
+
} catch (e) {
|
|
232
|
+
const calculateClientEntropiesError = new ProsopoApiError(
|
|
233
|
+
"DATABASE.UNKNOWN",
|
|
234
|
+
{
|
|
235
|
+
context: { error: e },
|
|
236
|
+
logger: this.logger
|
|
237
|
+
}
|
|
238
|
+
);
|
|
239
|
+
this.logger.error(() => ({
|
|
240
|
+
err: calculateClientEntropiesError,
|
|
241
|
+
msg: "Error calculating client entropy"
|
|
242
|
+
}));
|
|
243
|
+
await this.providerDB.updateScheduledTaskStatus(
|
|
244
|
+
taskID,
|
|
245
|
+
ScheduledTaskStatus.Failed,
|
|
246
|
+
{ error: String(e) }
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
197
250
|
async registerSiteKey(siteKey, tier, settings) {
|
|
198
251
|
validateSiteKey(siteKey);
|
|
199
252
|
await this.providerDB.updateClientRecords([
|