@prosopo/provider 4.15.16 → 5.0.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 +103 -102
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +103 -102
- package/CHANGELOG.md +108 -0
- package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -1
- package/dist/api/admin/apiAdminRoutesProvider.js +3 -5
- package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -1
- package/dist/api/admin/apiReplaceDetectorPoolEndpoint.d.ts +11 -0
- package/dist/api/admin/apiReplaceDetectorPoolEndpoint.d.ts.map +1 -0
- package/dist/api/admin/apiReplaceDetectorPoolEndpoint.js +56 -0
- package/dist/api/admin/apiReplaceDetectorPoolEndpoint.js.map +1 -0
- package/dist/api/captcha/assignDetectorBundle.d.ts +6 -0
- package/dist/api/captcha/assignDetectorBundle.d.ts.map +1 -0
- package/dist/api/captcha/assignDetectorBundle.js +51 -0
- package/dist/api/captcha/assignDetectorBundle.js.map +1 -0
- package/dist/api/captcha/assignDetectorBundle.test.d.ts +2 -0
- package/dist/api/captcha/assignDetectorBundle.test.d.ts.map +1 -0
- package/dist/api/captcha/assignDetectorBundle.test.js +71 -0
- package/dist/api/captcha/assignDetectorBundle.test.js.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +21 -2
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +3 -3
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +13 -7
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +3 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +52 -18
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.d.ts +2 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.d.ts.map +1 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.js +86 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.js.map +1 -0
- package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getImageCaptchaChallenge.js +2 -1
- package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getPoWCaptchaChallenge.js +2 -1
- package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js +2 -1
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
- package/dist/api/captcha.d.ts.map +1 -1
- package/dist/api/captcha.js +6 -0
- package/dist/api/captcha.js.map +1 -1
- package/dist/api/startProviderApi.d.ts.map +1 -1
- package/dist/api/startProviderApi.js +21 -3
- package/dist/api/startProviderApi.js.map +1 -1
- package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +3 -5
- package/dist/cjs/api/admin/apiReplaceDetectorPoolEndpoint.cjs +56 -0
- package/dist/cjs/api/captcha/assignDetectorBundle.cjs +51 -0
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +21 -2
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +3 -3
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +12 -6
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +52 -17
- package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +2 -1
- package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +2 -1
- package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +2 -1
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +1 -1
- package/dist/cjs/api/captcha.cjs +6 -0
- package/dist/cjs/api/startProviderApi.cjs +24 -5
- package/dist/cjs/tasks/captchaManager.cjs +76 -59
- package/dist/cjs/tasks/client/clientTasks.cjs +1 -29
- package/dist/cjs/tasks/detection/bundlePool.cjs +220 -0
- package/dist/cjs/tasks/detection/decodeBehavior.cjs +644 -362
- package/dist/cjs/tasks/detection/decodeBehavior.js +1 -1
- package/dist/cjs/tasks/detection/decodePayload.cjs +956 -617
- package/dist/cjs/tasks/detection/decodePayload.js +1 -1
- package/dist/cjs/tasks/detection/decodeSimd.cjs +723 -411
- package/dist/cjs/tasks/detection/decodeSimd.js +1 -1
- package/dist/cjs/tasks/detection/getBotScore.cjs +2 -2
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +35 -12
- package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +1 -2
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +6 -6
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +2 -2
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +2 -2
- package/dist/tasks/captchaManager.d.ts +12 -4
- package/dist/tasks/captchaManager.d.ts.map +1 -1
- package/dist/tasks/captchaManager.js +76 -59
- package/dist/tasks/captchaManager.js.map +1 -1
- package/dist/tasks/client/clientTasks.d.ts +0 -2
- package/dist/tasks/client/clientTasks.d.ts.map +1 -1
- package/dist/tasks/client/clientTasks.js +1 -29
- package/dist/tasks/client/clientTasks.js.map +1 -1
- package/dist/tasks/detection/bundlePool.d.ts +32 -0
- package/dist/tasks/detection/bundlePool.d.ts.map +1 -0
- package/dist/tasks/detection/bundlePool.js +215 -0
- package/dist/tasks/detection/bundlePool.js.map +1 -0
- package/dist/tasks/detection/bundlePool.test.d.ts +2 -0
- package/dist/tasks/detection/bundlePool.test.d.ts.map +1 -0
- package/dist/tasks/detection/bundlePool.test.js +178 -0
- package/dist/tasks/detection/bundlePool.test.js.map +1 -0
- package/dist/tasks/detection/decodeBehavior.d.ts +2 -2
- package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -1
- package/dist/tasks/detection/decodeBehavior.js +1 -1
- package/dist/tasks/detection/decodeBehavior.js.map +1 -1
- package/dist/tasks/detection/decodePayload.d.ts +2 -2
- package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
- package/dist/tasks/detection/decodePayload.js +1 -1
- package/dist/tasks/detection/decodePayload.js.map +1 -1
- package/dist/tasks/detection/decodeSimd.d.ts +2 -2
- package/dist/tasks/detection/decodeSimd.d.ts.map +1 -1
- package/dist/tasks/detection/decodeSimd.js +1 -1
- package/dist/tasks/detection/decodeSimd.js.map +1 -1
- package/dist/tasks/detection/getBotScore.d.ts +1 -1
- package/dist/tasks/detection/getBotScore.d.ts.map +1 -1
- package/dist/tasks/detection/getBotScore.js +3 -3
- package/dist/tasks/detection/getBotScore.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts +10 -2
- package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +35 -12
- package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +1 -1
- package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasksUtils.js +1 -2
- package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +6 -6
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +2 -2
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js +2 -2
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
- package/dist/tests/integration/maintenanceModeAdmin.integration.test.js +0 -28
- package/dist/tests/integration/maintenanceModeAdmin.integration.test.js.map +1 -1
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +1 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -1
- package/dist/tests/unit/api/adminRoutes.unit.test.js +0 -46
- package/dist/tests/unit/api/adminRoutes.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js +51 -0
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js +12 -12
- package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js.map +1 -1
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +15 -1
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/captchaManager.unit.test.js +14 -30
- package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +3 -3
- package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +25 -7
- package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +0 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +6 -14
- package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +0 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +0 -2
- package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -1
- package/fixtures/detector-pool/bundle-0.js +15 -0
- package/fixtures/detector-pool/bundle-0.json +1 -0
- package/package.json +14 -14
- 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 +0 -32
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.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 +0 -39
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +0 -1
- package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +0 -32
- package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +0 -39
- package/dist/tasks/detection/getBehavioralData.d.ts +0 -4
- package/dist/tasks/detection/getBehavioralData.d.ts.map +0 -1
- package/dist/tasks/detection/getBehavioralData.js +0 -51
- package/dist/tasks/detection/getBehavioralData.js.map +0 -1
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts +0 -2
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js +0 -57
- package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js.map +0 -1
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts +0 -2
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js +0 -60
- package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js.map +0 -1
- package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts +0 -2
- package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js +0 -109
- package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@
|
|
2
|
+
> @prosopo/provider@5.0.0 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/provider@
|
|
6
|
+
> @prosopo/provider@5.0.0 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -57,109 +57,110 @@ ViteEsmConfig: .
|
|
|
57
57
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
58
58
|
Bundle build started
|
|
59
59
|
[2K
|
|
60
|
-
✓
|
|
60
|
+
✓ 99 modules transformed.
|
|
61
61
|
rendering chunks...
|
|
62
62
|
computing gzip size...
|
|
63
|
-
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip:
|
|
64
|
-
dist/tasks/index.js 0.05 kB │ gzip:
|
|
65
|
-
dist/api/captcha/getFrictionlessCaptchaChallenge.js 0.11 kB │ gzip:
|
|
66
|
-
dist/api/admin/createApiAdminRoutesProvider.js 0.35 kB │ gzip:
|
|
67
|
-
dist/api/robotsMiddleware.js 0.36 kB │ gzip:
|
|
68
|
-
dist/tasks/puzzleCaptcha/puzzleTasksUtils.js 0.37 kB │ gzip:
|
|
69
|
-
dist/rules/lang.js 0.39 kB │ gzip:
|
|
70
|
-
dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 0.40 kB │ gzip:
|
|
71
|
-
dist/api/ignoreMiddleware.js 0.41 kB │ gzip:
|
|
72
|
-
dist/api/ipInfoMiddleware.js 0.41 kB │ gzip:
|
|
73
|
-
dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js 0.51 kB │ gzip:
|
|
74
|
-
dist/utils/hashUserIp.js 0.52 kB │ gzip:
|
|
75
|
-
dist/api/testSiteKey.js 0.56 kB │ gzip:
|
|
76
|
-
dist/utils/hashUserAgent.js 0.63 kB │ gzip:
|
|
77
|
-
dist/api/validateAddress.js 0.70 kB │ gzip:
|
|
78
|
-
dist/utils/devicePlatform.js 0.74 kB │ gzip:
|
|
79
|
-
dist/
|
|
80
|
-
dist/api/
|
|
81
|
-
dist/
|
|
82
|
-
dist/tasks/
|
|
83
|
-
dist/tasks/powCaptcha/powTasksUtils.js 0.89 kB │ gzip:
|
|
84
|
-
dist/api/headerCheckMiddleware.js 0.91 kB │ gzip:
|
|
85
|
-
dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js 0.95 kB │ gzip:
|
|
86
|
-
dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js 0.96 kB │ gzip:
|
|
87
|
-
dist/api/admin/apiRegisterSiteKeyEndpoint.js 1.00 kB │ gzip:
|
|
88
|
-
dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js 1.01 kB │ gzip:
|
|
89
|
-
dist/api/admin/apiRemoveSiteKeysEndpoint.js 1.07 kB │ gzip:
|
|
90
|
-
dist/api/admin/apiRegisterSiteKeysEndpoint.js 1.08 kB │ gzip:
|
|
91
|
-
dist/api/admin/apiRemoveSiteKeyEndpoint.js 1.08 kB │ gzip:
|
|
92
|
-
dist/api/captcha/contextAwareValidation.js 1.09 kB │ gzip:
|
|
93
|
-
dist/
|
|
94
|
-
dist/
|
|
95
|
-
dist/
|
|
96
|
-
dist/
|
|
97
|
-
dist/schedulers/
|
|
98
|
-
dist/
|
|
99
|
-
dist/api/admin/
|
|
100
|
-
dist/api/admin/
|
|
101
|
-
dist/
|
|
102
|
-
dist/
|
|
103
|
-
dist/
|
|
104
|
-
dist/
|
|
105
|
-
dist/
|
|
106
|
-
dist/api/admin/
|
|
107
|
-
dist/
|
|
108
|
-
dist/
|
|
109
|
-
dist/
|
|
110
|
-
dist/api/admin/
|
|
111
|
-
dist/
|
|
112
|
-
dist/
|
|
113
|
-
dist/api/
|
|
114
|
-
dist/
|
|
115
|
-
dist/api/
|
|
116
|
-
dist/
|
|
117
|
-
dist/api/
|
|
118
|
-
dist/
|
|
119
|
-
dist/
|
|
120
|
-
dist/
|
|
121
|
-
dist/api/
|
|
122
|
-
dist/api/captcha/
|
|
123
|
-
dist/api/
|
|
124
|
-
dist/api/
|
|
125
|
-
dist/api/
|
|
126
|
-
dist/tasks/spam/evaluateEmailSpamRules.js 2.77 kB │ gzip:
|
|
127
|
-
dist/index.js 2.78 kB │ gzip:
|
|
128
|
-
dist/api/
|
|
129
|
-
dist/api/domainMiddleware.js 3.52 kB │ gzip:
|
|
130
|
-
dist/
|
|
131
|
-
dist/
|
|
132
|
-
dist/api/captcha
|
|
133
|
-
dist/api/hardBlockVerdictCache.js 4.08 kB │ gzip:
|
|
134
|
-
dist/tasks/spam/checkSpamEmail.js 4.12 kB │ gzip:
|
|
135
|
-
dist/tasks/dnsEvent/enrichDnsEvent.js 4.23 kB │ gzip:
|
|
136
|
-
dist/tasks/tasks.js 4.69 kB │ gzip:
|
|
137
|
-
dist/api/captcha/getPoWCaptchaChallenge.js 5.
|
|
138
|
-
dist/api/captcha/getPuzzleCaptchaChallenge.js 5.
|
|
139
|
-
dist/api/captcha/getImageCaptchaChallenge.js 5.
|
|
140
|
-
dist/tasks/spam/checkTrafficFilter.js 5.63 kB │ gzip:
|
|
141
|
-
dist/util/usageCounters.js 5.65 kB │ gzip:
|
|
142
|
-
dist/api/captcha/submitPoWCaptchaSolution.js 6.
|
|
143
|
-
dist/api/metrics.js 6.96 kB │ gzip:
|
|
144
|
-
dist/api/ja4.js 7.06 kB │ gzip:
|
|
145
|
-
dist/
|
|
146
|
-
dist/api/
|
|
147
|
-
dist/tasks/decisionMachine/decisionMachineRunner.js 9.40 kB │ gzip:
|
|
148
|
-
dist/api/
|
|
149
|
-
dist/api/
|
|
150
|
-
dist/
|
|
151
|
-
dist/tasks/client/clientTasks.js
|
|
152
|
-
dist/
|
|
153
|
-
dist/
|
|
154
|
-
dist/tasks/
|
|
155
|
-
dist/tasks/
|
|
156
|
-
dist/tasks/puzzleCaptcha/puzzleTasks.js 17.
|
|
157
|
-
dist/tasks/
|
|
158
|
-
dist/tasks/
|
|
159
|
-
dist/tasks/
|
|
160
|
-
dist/tasks/detection/
|
|
63
|
+
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
64
|
+
dist/tasks/index.js 0.05 kB │ gzip: 0.06 kB
|
|
65
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge.js 0.11 kB │ gzip: 0.10 kB
|
|
66
|
+
dist/api/admin/createApiAdminRoutesProvider.js 0.35 kB │ gzip: 0.18 kB
|
|
67
|
+
dist/api/robotsMiddleware.js 0.36 kB │ gzip: 0.24 kB
|
|
68
|
+
dist/tasks/puzzleCaptcha/puzzleTasksUtils.js 0.37 kB │ gzip: 0.24 kB
|
|
69
|
+
dist/rules/lang.js 0.39 kB │ gzip: 0.24 kB
|
|
70
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 0.40 kB │ gzip: 0.23 kB
|
|
71
|
+
dist/api/ignoreMiddleware.js 0.41 kB │ gzip: 0.26 kB
|
|
72
|
+
dist/api/ipInfoMiddleware.js 0.41 kB │ gzip: 0.26 kB
|
|
73
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js 0.51 kB │ gzip: 0.27 kB
|
|
74
|
+
dist/utils/hashUserIp.js 0.52 kB │ gzip: 0.33 kB
|
|
75
|
+
dist/api/testSiteKey.js 0.56 kB │ gzip: 0.30 kB
|
|
76
|
+
dist/utils/hashUserAgent.js 0.63 kB │ gzip: 0.39 kB
|
|
77
|
+
dist/api/validateAddress.js 0.70 kB │ gzip: 0.33 kB
|
|
78
|
+
dist/utils/devicePlatform.js 0.74 kB │ gzip: 0.45 kB
|
|
79
|
+
dist/tasks/frictionless/frictionlessTasksUtils.js 0.79 kB │ gzip: 0.42 kB
|
|
80
|
+
dist/api/block.js 0.80 kB │ gzip: 0.36 kB
|
|
81
|
+
dist/api/dnsEventUrl.js 0.80 kB │ gzip: 0.44 kB
|
|
82
|
+
dist/tasks/dataset/datasetTasks.js 0.85 kB │ gzip: 0.39 kB
|
|
83
|
+
dist/tasks/powCaptcha/powTasksUtils.js 0.89 kB │ gzip: 0.46 kB
|
|
84
|
+
dist/api/headerCheckMiddleware.js 0.91 kB │ gzip: 0.43 kB
|
|
85
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js 0.95 kB │ gzip: 0.51 kB
|
|
86
|
+
dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js 0.96 kB │ gzip: 0.48 kB
|
|
87
|
+
dist/api/admin/apiRegisterSiteKeyEndpoint.js 1.00 kB │ gzip: 0.46 kB
|
|
88
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js 1.01 kB │ gzip: 0.45 kB
|
|
89
|
+
dist/api/admin/apiRemoveSiteKeysEndpoint.js 1.07 kB │ gzip: 0.48 kB
|
|
90
|
+
dist/api/admin/apiRegisterSiteKeysEndpoint.js 1.08 kB │ gzip: 0.50 kB
|
|
91
|
+
dist/api/admin/apiRemoveSiteKeyEndpoint.js 1.08 kB │ gzip: 0.48 kB
|
|
92
|
+
dist/api/captcha/contextAwareValidation.js 1.09 kB │ gzip: 0.45 kB
|
|
93
|
+
dist/schedulers/captchaScheduler.js 1.11 kB │ gzip: 0.48 kB
|
|
94
|
+
dist/utils/normalizeRequestIp.js 1.14 kB │ gzip: 0.52 kB
|
|
95
|
+
dist/pairs.js 1.19 kB │ gzip: 0.58 kB
|
|
96
|
+
dist/schedulers/getClientList.js 1.19 kB │ gzip: 0.53 kB
|
|
97
|
+
dist/schedulers/setClientEntropy.js 1.20 kB │ gzip: 0.52 kB
|
|
98
|
+
dist/api/admin/apiGetDecisionMachineEndpoint.js 1.26 kB │ gzip: 0.50 kB
|
|
99
|
+
dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js 1.27 kB │ gzip: 0.51 kB
|
|
100
|
+
dist/api/admin/apiRemoveDecisionMachineEndpoint.js 1.29 kB │ gzip: 0.51 kB
|
|
101
|
+
dist/tasks/dataset/datasetTasksUtils.js 1.30 kB │ gzip: 0.48 kB
|
|
102
|
+
dist/tasks/detection/getBotScore.js 1.33 kB │ gzip: 0.49 kB
|
|
103
|
+
dist/compositeIpAddress.js 1.36 kB │ gzip: 0.55 kB
|
|
104
|
+
dist/api/admin/apiGetAllDecisionMachinesEndpoint.js 1.48 kB │ gzip: 0.57 kB
|
|
105
|
+
dist/schedulers/updateSpamEmailDomains.js 1.52 kB │ gzip: 0.60 kB
|
|
106
|
+
dist/api/admin/apiReplaceDetectorPoolEndpoint.js 1.57 kB │ gzip: 0.68 kB
|
|
107
|
+
dist/api/ja4Middleware.js 1.59 kB │ gzip: 0.75 kB
|
|
108
|
+
dist/utils/honeypot/encoders.js 1.62 kB │ gzip: 0.67 kB
|
|
109
|
+
dist/api/admin/apiToggleMaintenanceModeEndpoint.js 1.66 kB │ gzip: 0.69 kB
|
|
110
|
+
dist/api/admin/apiUpdateDecisionMachineEndpoint.js 1.68 kB │ gzip: 0.58 kB
|
|
111
|
+
dist/utils/honeypot/phraseBank.js 1.69 kB │ gzip: 0.84 kB
|
|
112
|
+
dist/api/handshakeTimingMiddleware.js 1.75 kB │ gzip: 0.69 kB
|
|
113
|
+
dist/api/captcha/maintenanceModeResponses.js 1.76 kB │ gzip: 0.57 kB
|
|
114
|
+
dist/tasks/spam/updateSpamEmailDomains.js 1.87 kB │ gzip: 0.77 kB
|
|
115
|
+
dist/api/admin/apiClearAllCountersEndpoint.js 1.89 kB │ gzip: 0.76 kB
|
|
116
|
+
dist/api/public.js 1.90 kB │ gzip: 0.83 kB
|
|
117
|
+
dist/api/captcha/assignDetectorBundle.js 1.96 kB │ gzip: 0.87 kB
|
|
118
|
+
dist/tasks/frictionless/routingMachine.js 2.16 kB │ gzip: 0.91 kB
|
|
119
|
+
dist/utils/dns.js 2.36 kB │ gzip: 0.95 kB
|
|
120
|
+
dist/api/admin/apiDnsEventEndpoint.js 2.43 kB │ gzip: 0.96 kB
|
|
121
|
+
dist/api/captcha/checkSpamEmail.js 2.47 kB │ gzip: 0.91 kB
|
|
122
|
+
dist/api/captcha/submitPuzzleCaptchaSolution.js 2.55 kB │ gzip: 0.96 kB
|
|
123
|
+
dist/api/forwardVerify.js 2.59 kB │ gzip: 1.10 kB
|
|
124
|
+
dist/api/captcha/submitImageCaptchaSolution.js 2.59 kB │ gzip: 1.00 kB
|
|
125
|
+
dist/api/admin/apiAdminRoutesProvider.js 2.64 kB │ gzip: 0.53 kB
|
|
126
|
+
dist/tasks/spam/evaluateEmailSpamRules.js 2.77 kB │ gzip: 1.20 kB
|
|
127
|
+
dist/index.js 2.78 kB │ gzip: 0.76 kB
|
|
128
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js 3.44 kB │ gzip: 1.40 kB
|
|
129
|
+
dist/api/domainMiddleware.js 3.52 kB │ gzip: 1.22 kB
|
|
130
|
+
dist/services/ipComparison.js 3.96 kB │ gzip: 1.19 kB
|
|
131
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js 3.99 kB │ gzip: 0.99 kB
|
|
132
|
+
dist/api/captcha.js 4.05 kB │ gzip: 1.31 kB
|
|
133
|
+
dist/api/hardBlockVerdictCache.js 4.08 kB │ gzip: 1.66 kB
|
|
134
|
+
dist/tasks/spam/checkSpamEmail.js 4.12 kB │ gzip: 1.12 kB
|
|
135
|
+
dist/tasks/dnsEvent/enrichDnsEvent.js 4.23 kB │ gzip: 1.50 kB
|
|
136
|
+
dist/tasks/tasks.js 4.69 kB │ gzip: 1.51 kB
|
|
137
|
+
dist/api/captcha/getPoWCaptchaChallenge.js 5.26 kB │ gzip: 1.66 kB
|
|
138
|
+
dist/api/captcha/getPuzzleCaptchaChallenge.js 5.48 kB │ gzip: 1.69 kB
|
|
139
|
+
dist/api/captcha/getImageCaptchaChallenge.js 5.52 kB │ gzip: 1.78 kB
|
|
140
|
+
dist/tasks/spam/checkTrafficFilter.js 5.63 kB │ gzip: 2.05 kB
|
|
141
|
+
dist/util/usageCounters.js 5.65 kB │ gzip: 2.01 kB
|
|
142
|
+
dist/api/captcha/submitPoWCaptchaSolution.js 6.18 kB │ gzip: 2.09 kB
|
|
143
|
+
dist/api/metrics.js 6.96 kB │ gzip: 2.09 kB
|
|
144
|
+
dist/api/ja4.js 7.06 kB │ gzip: 2.23 kB
|
|
145
|
+
dist/tasks/detection/bundlePool.js 8.30 kB │ gzip: 3.21 kB
|
|
146
|
+
dist/api/startProviderApi.js 9.25 kB │ gzip: 3.14 kB
|
|
147
|
+
dist/tasks/decisionMachine/decisionMachineRunner.js 9.40 kB │ gzip: 2.86 kB
|
|
148
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js 9.41 kB │ gzip: 2.06 kB
|
|
149
|
+
dist/api/blacklistRequestInspector.js 11.57 kB │ gzip: 4.19 kB
|
|
150
|
+
dist/api/verify.js 12.03 kB │ gzip: 2.44 kB
|
|
151
|
+
dist/tasks/client/clientTasks.js 12.33 kB │ gzip: 3.07 kB
|
|
152
|
+
dist/util.js 12.92 kB │ gzip: 3.16 kB
|
|
153
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 14.35 kB │ gzip: 3.65 kB
|
|
154
|
+
dist/tasks/frictionless/frictionlessTasks.js 15.60 kB │ gzip: 4.28 kB
|
|
155
|
+
dist/tasks/captchaManager.js 17.75 kB │ gzip: 5.17 kB
|
|
156
|
+
dist/tasks/puzzleCaptcha/puzzleTasks.js 17.93 kB │ gzip: 4.28 kB
|
|
157
|
+
dist/tasks/powCaptcha/powTasks.js 20.17 kB │ gzip: 5.21 kB
|
|
158
|
+
dist/tasks/imgCaptcha/imgCaptchaTasks.js 23.91 kB │ gzip: 5.83 kB
|
|
159
|
+
dist/tasks/detection/decodeBehavior.js 32.26 kB │ gzip: 10.34 kB
|
|
160
|
+
dist/tasks/detection/decodeSimd.js 36.06 kB │ gzip: 12.00 kB
|
|
161
|
+
dist/tasks/detection/decodePayload.js 46.69 kB │ gzip: 14.66 kB
|
|
161
162
|
|
|
162
|
-
[32m✓ built in
|
|
163
|
+
[32m✓ built in 178ms[39m
|
|
163
164
|
[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
|
|
164
165
|
[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
|
|
165
166
|
[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,113 @@
|
|
|
1
1
|
# @prosopo/provider
|
|
2
2
|
|
|
3
|
+
## 5.0.0
|
|
4
|
+
### Major Changes
|
|
5
|
+
|
|
6
|
+
- 787017b: chore(detector): remove the legacy detector-key rotation machinery
|
|
7
|
+
|
|
8
|
+
Nothing has read these keys since the detector moved to per-session provider
|
|
9
|
+
bundles — the decrypt paths resolve a bundle's own keypair instead. Rotating
|
|
10
|
+
them was already a no-op, so the whole surface is removed rather than left
|
|
11
|
+
looking live.
|
|
12
|
+
|
|
13
|
+
**Breaking — the admin API loses two endpoints:**
|
|
14
|
+
|
|
15
|
+
- `POST /v1/prosopo/provider/admin/detector/update` (`AdminApiPaths.UpdateDetectorKey`)
|
|
16
|
+
- `POST /v1/prosopo/provider/admin/detector/remove` (`AdminApiPaths.RemoveDetectorKey`)
|
|
17
|
+
|
|
18
|
+
Also removed: `ProviderApi.updateDetectorKey` / `.removeDetectorKey`;
|
|
19
|
+
`ClientTaskManager.updateDetectorKey` / `.removeDetectorKey`;
|
|
20
|
+
`IProviderDatabase.storeDetectorKey` / `.getDetectorKeys` / `.removeDetectorKey`;
|
|
21
|
+
the `detector` Mongo collection and its `DetectorRecordSchema` / `DetectorSchema`
|
|
22
|
+
/ `DetectorKey` types; the `UpdateDetectorKeyBody` / `RemoveDetectorKeyBodySpec`
|
|
23
|
+
/ `UpdateDetectorKeyResponse` API types; and the rate-limit config for both
|
|
24
|
+
paths.
|
|
25
|
+
|
|
26
|
+
The `detector` collection itself is left in place on existing deployments — no
|
|
27
|
+
migration drops it. It can be dropped manually once the pool rollout is
|
|
28
|
+
confirmed.
|
|
29
|
+
|
|
30
|
+
### Minor Changes
|
|
31
|
+
|
|
32
|
+
- 787017b: feat(detector): serve the detector only from per-session provider bundles; PoW fallback
|
|
33
|
+
|
|
34
|
+
The detector now lives ONLY in the provider-served, precomputed pool bundles — there is no detector bundled into the widget and no legacy detector-key pool. Each session's bundle encrypts everything it produces (bot score, SIMD readings, behavioural data) with its own RSA keypair + inner ChaCha20-Poly1305 cipher; the provider decrypts each payload with that exact bundle, resolved per session.
|
|
35
|
+
|
|
36
|
+
- `DetectorBundlePool`: loads precomputed `{id}.js`/`{id}.json` bundle pairs from disk, uniform-random per-session selection, hot-swap `replace()` for the admin push channel.
|
|
37
|
+
- The pool is ALWAYS initialised at boot (a missing/empty dir yields an empty pool), collapsing the old three states into two: bundles present ⇒ per-session serving; no bundles ⇒ always PoW.
|
|
38
|
+
- Redis short-TTL `detectorSessionId → bundleId` binding; the resolved `bundleId` is promoted onto the durable session record so later hops (SIMD attach, PoW/puzzle/image solution submit) decrypt with the same bundle.
|
|
39
|
+
- Client: removed the inlined `@prosopo/detector` runtime import (now type-only). When no provider bundle can be obtained/run, the client signals `detectorUnavailable` and the provider serves a PoW challenge.
|
|
40
|
+
- All server decrypt paths (score, SIMD readings, behavioural data) resolve the session's bundle and pass its inner cipher; the legacy key-pool brute force and its env fallback are removed from the detection paths. Decrypt failures fail closed (treated as bot ⇒ PoW).
|
|
41
|
+
- 787017b: feat(detector-pool): persist pushed pools, stamp releases, fix the failed-decrypt path
|
|
42
|
+
|
|
43
|
+
- `ReplaceDetectorPool` gets a dedicated 128 MB body limit (~86 MB for a
|
|
44
|
+
100-bundle pool); every other route keeps the 1 MB backstop.
|
|
45
|
+
- A pushed pool is now written to the pool directory (staged + renamed) so it
|
|
46
|
+
survives a restart instead of living only in process memory. The response
|
|
47
|
+
reports `persisted` so an unpersisted push can be alarmed on. The provider
|
|
48
|
+
containers gain a host-mounted volume for it — the pool is never baked into
|
|
49
|
+
the image, which is public on Docker Hub.
|
|
50
|
+
- Bundles carry the release they were built from; providers skip bundles from
|
|
51
|
+
another release (`PROSOPO_DETECTOR_POOL_RELEASE`). The widget carries no
|
|
52
|
+
detector of its own, so nothing else tied the two together.
|
|
53
|
+
- Failed decryption is now its own decision (`DECRYPTION_FAILED`, 3 image
|
|
54
|
+
rounds) evaluated before every other check. Previously the synthetic
|
|
55
|
+
`userAgent: undefined` / `baseBotScore: 1` / `timestamp: 0` that
|
|
56
|
+
`decryptPayload` substitutes made these sessions land in USER_AGENT_MISMATCH
|
|
57
|
+
(6 rounds), or a 401 on sitekeys with `autoBanScoreThreshold` set.
|
|
58
|
+
`timestampDecayFunction` loses its now-unreachable `decryptionFailed` arm.
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- 787017b: perf(caddy): compress proxied provider responses with zstd/gzip
|
|
63
|
+
|
|
64
|
+
`docker/provider.Caddyfile` had no `encode` directive, and Caddy does not
|
|
65
|
+
compress by default, so every proxied response went out uncompressed. The
|
|
66
|
+
detector-pool bundle makes that expensive: ~830 KB of obfuscated JS returned
|
|
67
|
+
inline from `/detector/assign` once per frictionless session.
|
|
68
|
+
|
|
69
|
+
Obfuscated output still compresses well (the obfuscator's string-array encoding
|
|
70
|
+
is highly repetitive) — 2.6x with gzip, 3.1x with zstd. At 15k sessions/hour a
|
|
71
|
+
single provider drops from ~9.15 TB/month of egress to ~3 TB.
|
|
72
|
+
|
|
73
|
+
zstd is preferred with gzip as the fallback. Responses below `minimum_length`
|
|
74
|
+
(512 bytes) are untouched, which covers every small JSON reply the API returns.
|
|
75
|
+
- 787017b: fix(detector-pool): persist into the pool directory instead of replacing it
|
|
76
|
+
|
|
77
|
+
The previous stage-and-rename persist was destructive against the provider's
|
|
78
|
+
bind-mounted pool directory: it deleted the mount's contents and then failed
|
|
79
|
+
with EBUSY renaming over the mount point, wiping the on-disk pool while still
|
|
80
|
+
reporting the push as successful. Now writes each bundle via a per-file temp +
|
|
81
|
+
rename within the directory and prunes removed bundles, never touching the
|
|
82
|
+
directory itself.
|
|
83
|
+
- Updated dependencies [787017b]
|
|
84
|
+
- Updated dependencies [787017b]
|
|
85
|
+
- Updated dependencies [787017b]
|
|
86
|
+
- Updated dependencies [d107d65]
|
|
87
|
+
- Updated dependencies [6f19cde]
|
|
88
|
+
- @prosopo/database@4.0.0
|
|
89
|
+
- @prosopo/types@5.0.0
|
|
90
|
+
- @prosopo/types-database@5.0.0
|
|
91
|
+
- @prosopo/api@4.0.0
|
|
92
|
+
- @prosopo/api-express-router@3.1.54
|
|
93
|
+
- @prosopo/datasets@3.1.56
|
|
94
|
+
- @prosopo/env@3.6.23
|
|
95
|
+
- @prosopo/ipinfo@0.3.1
|
|
96
|
+
- @prosopo/keyring@2.9.63
|
|
97
|
+
- @prosopo/load-balancer@2.10.17
|
|
98
|
+
- @prosopo/types-env@2.10.20
|
|
99
|
+
- @prosopo/user-access-policy@3.12.11
|
|
100
|
+
|
|
101
|
+
## 4.15.17
|
|
102
|
+
### Patch Changes
|
|
103
|
+
|
|
104
|
+
- a66273a: Populate `userScope.headHash` from the frictionless session record in the three captcha-challenge endpoints (`getPoWCaptchaChallenge`, `getImageCaptchaChallenge`, `getPuzzleCaptchaChallenge`). Previously all three hardcoded `undefined` for the headHash slot, so access-policy rules keyed on `headHash` could only take effect at server-verify time — after the challenge was already issued at the client-configured type / difficulty. With `sessionId` in hand each endpoint now does one indexed `getSessionRecordBySessionId` lookup and forwards `sessionRecord?.decryptedHeadHash` into `getRequestUserScope`, so headHash rules can restrict or adjust the challenge at issuance. No change when the request omits `sessionId` (direct-pow etc.).
|
|
105
|
+
- Updated dependencies [71a5952]
|
|
106
|
+
- @prosopo/keyring@2.9.62
|
|
107
|
+
- @prosopo/env@3.6.22
|
|
108
|
+
- @prosopo/types-env@2.10.19
|
|
109
|
+
- @prosopo/api-express-router@3.1.53
|
|
110
|
+
|
|
3
111
|
## 4.15.16
|
|
4
112
|
### Patch Changes
|
|
5
113
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiAdminRoutesProvider.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"apiAdminRoutesProvider.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAelD,cAAM,sBAAuB,YAAW,iBAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,SAAS,IAAI,SAAS;CAqC7B;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -7,11 +7,10 @@ import { ApiRegisterSiteKeyEndpoint } from "./apiRegisterSiteKeyEndpoint.js";
|
|
|
7
7
|
import { ApiRegisterSiteKeysEndpoint } from "./apiRegisterSiteKeysEndpoint.js";
|
|
8
8
|
import { ApiRemoveAllDecisionMachinesEndpoint } from "./apiRemoveAllDecisionMachinesEndpoint.js";
|
|
9
9
|
import { ApiRemoveDecisionMachineEndpoint } from "./apiRemoveDecisionMachineEndpoint.js";
|
|
10
|
-
import { ApiRemoveDetectorKeyEndpoint } from "./apiRemoveDetectorKeyEndpoint.js";
|
|
11
10
|
import { ApiRemoveSiteKeyEndpoint } from "./apiRemoveSiteKeyEndpoint.js";
|
|
12
11
|
import { ApiRemoveSiteKeysEndpoint } from "./apiRemoveSiteKeysEndpoint.js";
|
|
12
|
+
import { ApiReplaceDetectorPoolEndpoint } from "./apiReplaceDetectorPoolEndpoint.js";
|
|
13
13
|
import { ApiUpdateDecisionMachineEndpoint } from "./apiUpdateDecisionMachineEndpoint.js";
|
|
14
|
-
import { ApiUpdateDetectorKeyEndpoint } from "./apiUpdateDetectorKeyEndpoint.js";
|
|
15
14
|
import { AdminApiPaths } from "@prosopo/types";
|
|
16
15
|
//#region src/api/admin/apiAdminRoutesProvider.ts
|
|
17
16
|
var ApiAdminRoutesProvider = class {
|
|
@@ -22,8 +21,6 @@ var ApiAdminRoutesProvider = class {
|
|
|
22
21
|
return {
|
|
23
22
|
[AdminApiPaths.SiteKeyRegister]: new ApiRegisterSiteKeyEndpoint(this.tasks.clientTaskManager),
|
|
24
23
|
[AdminApiPaths.SiteKeysRegister]: new ApiRegisterSiteKeysEndpoint(this.tasks.clientTaskManager),
|
|
25
|
-
[AdminApiPaths.UpdateDetectorKey]: new ApiUpdateDetectorKeyEndpoint(this.tasks.clientTaskManager),
|
|
26
|
-
[AdminApiPaths.RemoveDetectorKey]: new ApiRemoveDetectorKeyEndpoint(this.tasks.clientTaskManager),
|
|
27
24
|
[AdminApiPaths.UpdateDecisionMachine]: new ApiUpdateDecisionMachineEndpoint(this.tasks.clientTaskManager),
|
|
28
25
|
[AdminApiPaths.GetAllDecisionMachines]: new ApiGetAllDecisionMachinesEndpoint(this.tasks.clientTaskManager),
|
|
29
26
|
[AdminApiPaths.GetDecisionMachine]: new ApiGetDecisionMachineEndpoint(this.tasks.clientTaskManager),
|
|
@@ -33,7 +30,8 @@ var ApiAdminRoutesProvider = class {
|
|
|
33
30
|
[AdminApiPaths.SiteKeyRemove]: new ApiRemoveSiteKeyEndpoint(this.tasks.clientTaskManager),
|
|
34
31
|
[AdminApiPaths.SiteKeysRemove]: new ApiRemoveSiteKeysEndpoint(this.tasks.clientTaskManager),
|
|
35
32
|
[AdminApiPaths.ToggleMaintenanceMode]: new ApiToggleMaintenanceModeEndpoint(),
|
|
36
|
-
[AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(this.tasks.db, this.tasks.env.ipInfoService)
|
|
33
|
+
[AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(this.tasks.db, this.tasks.env.ipInfoService),
|
|
34
|
+
[AdminApiPaths.ReplaceDetectorPool]: new ApiReplaceDetectorPoolEndpoint()
|
|
37
35
|
};
|
|
38
36
|
}
|
|
39
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiAdminRoutesProvider.js","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"apiAdminRoutesProvider.js","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF,MAAM,sBAAsB;IAC3B,YAAoC,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,SAAS;QACf,OAAO;YACN,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,IAAI,0BAA0B,CAC9D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,sBAAsB,CAAC,EACrC,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACpE,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,IAAI,6BAA6B,CACpE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,yBAAyB,CAAC,EACxC,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACvE,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CACxB;YACD,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,wBAAwB,CAC1D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,IAAI,yBAAyB,CAC5D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,EAAE;YACvC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,mBAAmB,CAChD,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAC5B;YACD,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,IAAI,8BAA8B,EAAE;SACzE,CAAC;IACH,CAAC;CACD;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
|
|
2
|
+
import { type Logger } from "@prosopo/logger";
|
|
3
|
+
import { ReplaceDetectorPoolBody } from "@prosopo/types";
|
|
4
|
+
import type { z } from "zod";
|
|
5
|
+
type ReplaceDetectorPoolBodyType = typeof ReplaceDetectorPoolBody;
|
|
6
|
+
declare class ApiReplaceDetectorPoolEndpoint implements ApiEndpoint<ReplaceDetectorPoolBodyType> {
|
|
7
|
+
processRequest(args: z.infer<ReplaceDetectorPoolBodyType>, logger?: Logger): Promise<ApiEndpointResponse>;
|
|
8
|
+
getRequestArgsSchema(): ReplaceDetectorPoolBodyType;
|
|
9
|
+
}
|
|
10
|
+
export { ApiReplaceDetectorPoolEndpoint };
|
|
11
|
+
//# sourceMappingURL=apiReplaceDetectorPoolEndpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiReplaceDetectorPoolEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiReplaceDetectorPoolEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B,KAAK,2BAA2B,GAAG,OAAO,uBAAuB,CAAC;AAQlE,cAAM,8BACL,YAAW,WAAW,CAAC,2BAA2B,CAAC;IAE7C,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAC1C,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAiCxB,oBAAoB,IAAI,2BAA2B;CAG1D;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { replaceDetectorBundlePool } from "../../tasks/detection/bundlePool.js";
|
|
2
|
+
import { getLogger } from "@prosopo/logger";
|
|
3
|
+
import { ReplaceDetectorPoolBody } from "@prosopo/types";
|
|
4
|
+
import { ApiEndpointResponseStatus } from "@prosopo/api-route";
|
|
5
|
+
//#region src/api/admin/apiReplaceDetectorPoolEndpoint.ts
|
|
6
|
+
/**
|
|
7
|
+
* Hot-swaps the in-memory detector bundle pool with a freshly-pushed set of
|
|
8
|
+
* bundles. The emergency rotation channel — lets the cycle script swap the pool
|
|
9
|
+
* without a provider redeploy. Bundles never touch disk here; they live only in
|
|
10
|
+
* process memory.
|
|
11
|
+
*/
|
|
12
|
+
var ApiReplaceDetectorPoolEndpoint = class {
|
|
13
|
+
async processRequest(args, logger) {
|
|
14
|
+
logger = logger || getLogger("info", "");
|
|
15
|
+
try {
|
|
16
|
+
const bundles = new Map(Object.entries(args.bundles));
|
|
17
|
+
const activeLogger = logger;
|
|
18
|
+
const { count, persisted } = replaceDetectorBundlePool(bundles, {
|
|
19
|
+
warn: (msg, data) => activeLogger.warn(() => ({
|
|
20
|
+
msg,
|
|
21
|
+
data
|
|
22
|
+
})),
|
|
23
|
+
info: (msg, data) => activeLogger.info(() => ({
|
|
24
|
+
msg,
|
|
25
|
+
data
|
|
26
|
+
}))
|
|
27
|
+
});
|
|
28
|
+
logger.info(() => ({
|
|
29
|
+
msg: "Detector bundle pool replaced",
|
|
30
|
+
count,
|
|
31
|
+
persisted
|
|
32
|
+
}));
|
|
33
|
+
return {
|
|
34
|
+
status: ApiEndpointResponseStatus.SUCCESS,
|
|
35
|
+
data: {
|
|
36
|
+
count,
|
|
37
|
+
persisted
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
} catch (error) {
|
|
41
|
+
logger.error(() => ({
|
|
42
|
+
msg: "Error replacing detector bundle pool",
|
|
43
|
+
err: error
|
|
44
|
+
}));
|
|
45
|
+
return {
|
|
46
|
+
status: ApiEndpointResponseStatus.FAIL,
|
|
47
|
+
error: error.message
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
getRequestArgsSchema() {
|
|
52
|
+
return ReplaceDetectorPoolBody;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
56
|
+
export { ApiReplaceDetectorPoolEndpoint };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiReplaceDetectorPoolEndpoint.js","sourceRoot":"","sources":["../../../src/api/admin/apiReplaceDetectorPoolEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAEN,yBAAyB,GACzB,MAAM,qCAAqC,CAAC;AAU7C,MAAM,8BAA8B;IAGnC,KAAK,CAAC,cAAc,CACnB,IAA0C,EAC1C,MAAe;QAEf,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAqB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,MAAM,YAAY,GAAG,MAAM,CAAC;YAC5B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE;gBAC/D,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;aAC7D,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAClB,GAAG,EAAE,+BAA+B;gBACpC,KAAK;gBAIL,SAAS;aACT,CAAC,CAAC,CAAC;YACJ,OAAO;gBACN,MAAM,EAAE,yBAAyB,CAAC,OAAO;gBACzC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;aAC1B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,GAAG,EAAE,sCAAsC;gBAC3C,GAAG,EAAE,KAAK;aACV,CAAC,CAAC,CAAC;YACJ,OAAO;gBACN,MAAM,EAAE,yBAAyB,CAAC,IAAI;gBACtC,KAAK,EAAG,KAAyB,CAAC,OAAO;aACzC,CAAC;QACH,CAAC;IACF,CAAC;IAEM,oBAAoB;QAC1B,OAAO,uBAAuB,CAAC;IAChC,CAAC;CACD;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ProviderEnvironment } from "@prosopo/types-env";
|
|
2
|
+
import type { NextFunction, Request, Response } from "express";
|
|
3
|
+
import type { AugmentedRequest } from "../../express.js";
|
|
4
|
+
declare const _default: (env: ProviderEnvironment) => (req: Request & AugmentedRequest, res: Response, _next: NextFunction) => Promise<Response>;
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=assignDetectorBundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignDetectorBundle.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/assignDetectorBundle.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAiBpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,SACN,YAAY,KACjB,OAAO,CAAC,QAAQ,CAAC;AALrB,wBAwDG"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { getDetectorBundlePool } from "../../tasks/detection/bundlePool.js";
|
|
2
|
+
import { Tasks } from "../../tasks/tasks.js";
|
|
3
|
+
import { ApiParams } from "@prosopo/types";
|
|
4
|
+
import { v4 } from "uuid";
|
|
5
|
+
//#region src/api/captcha/assignDetectorBundle.ts
|
|
6
|
+
/**
|
|
7
|
+
* Assigns a precomputed detector bundle for this detection session.
|
|
8
|
+
*
|
|
9
|
+
* When the provider has a non-empty pool it picks a random bundle, records the
|
|
10
|
+
* (short-TTL) `detectorSessionId → bundleId` binding in Redis, and returns the
|
|
11
|
+
* obfuscated detector script inline.
|
|
12
|
+
*
|
|
13
|
+
* When it cannot (no pool loaded, or Redis unavailable so the binding could not
|
|
14
|
+
* be persisted) it returns `useProviderBundle: false`. There is NO bundled
|
|
15
|
+
* detector and no legacy key pool to fall back to — the client then reports
|
|
16
|
+
* `detectorUnavailable` on the frictionless hop and the provider serves a
|
|
17
|
+
* challenge instead of attempting to score an absent payload.
|
|
18
|
+
*/
|
|
19
|
+
var assignDetectorBundle_default = (env) => async (req, res, _next) => {
|
|
20
|
+
try {
|
|
21
|
+
const noBundle = {
|
|
22
|
+
[ApiParams.useProviderBundle]: false,
|
|
23
|
+
status: "ok"
|
|
24
|
+
};
|
|
25
|
+
const pool = getDetectorBundlePool();
|
|
26
|
+
if (!pool || pool.size() === 0) return res.json(noBundle);
|
|
27
|
+
const { bundleId, bundle } = pool.pickRandom();
|
|
28
|
+
const detectorSessionId = `det-${v4()}`;
|
|
29
|
+
const writeQueue = new Tasks(env, req.logger).frictionlessManager.writeQueue;
|
|
30
|
+
if (!writeQueue) return res.json(noBundle);
|
|
31
|
+
if (!await writeQueue.cacheDetectorBundle(detectorSessionId, bundleId)) return res.json(noBundle);
|
|
32
|
+
const response = {
|
|
33
|
+
[ApiParams.useProviderBundle]: true,
|
|
34
|
+
[ApiParams.detectorSessionId]: detectorSessionId,
|
|
35
|
+
[ApiParams.detectorScript]: bundle.js,
|
|
36
|
+
status: "ok"
|
|
37
|
+
};
|
|
38
|
+
return res.json(response);
|
|
39
|
+
} catch (err) {
|
|
40
|
+
req.logger.warn(() => ({
|
|
41
|
+
msg: "assignDetectorBundle failed; falling back to bundled detector",
|
|
42
|
+
err
|
|
43
|
+
}));
|
|
44
|
+
return res.json({
|
|
45
|
+
[ApiParams.useProviderBundle]: false,
|
|
46
|
+
status: "ok"
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
//#endregion
|
|
51
|
+
export { assignDetectorBundle_default as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignDetectorBundle.js","sourceRoot":"","sources":["../../../src/api/captcha/assignDetectorBundle.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAqC,MAAM,gBAAgB,CAAC;AAG9E,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAe7C,eAAe,CAAC,GAAwB,EAAE,EAAE,CAC3C,KAAK,EACJ,GAA+B,EAC/B,GAAa,EACb,KAAmB,EACC,EAAE;IACtB,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAiC;YAC9C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,KAAK;YACpC,MAAM,EAAE,IAAI;SACZ,CAAC;QAEF,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,OAAO,MAAM,EAAE,EAAE,CAAC;QAM5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,mBAAmB,CAClD,iBAAiB,EACjB,QAAQ,CACR,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,QAAQ,GAAiC;YAC9C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI;YACnC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,iBAAiB;YAChD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,EAAE;YACrC,MAAM,EAAE,IAAI;SACZ,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAGd,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtB,GAAG,EAAE,+DAA+D;YACpE,GAAG;SACH,CAAC,CAAC,CAAC;QACJ,OAAO,GAAG,CAAC,IAAI,CAAC;YACf,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,KAAK;YACpC,MAAM,EAAE,IAAI;SAC2B,CAAC,CAAC;IAC3C,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignDetectorBundle.test.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/assignDetectorBundle.test.ts"],"names":[],"mappings":""}
|