@prosopo/provider 4.15.13 → 4.15.15
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 +106 -106
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +107 -104
- package/CHANGELOG.md +78 -0
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/api/admin/apiAdminRoutesProvider.js +27 -46
- package/dist/api/admin/apiClearAllCountersEndpoint.js +62 -57
- package/dist/api/admin/apiDnsEventEndpoint.js +79 -92
- package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js +43 -45
- package/dist/api/admin/apiGetDecisionMachineEndpoint.js +40 -40
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +23 -22
- package/dist/api/admin/apiRegisterSiteKeysEndpoint.js +26 -30
- package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js +35 -37
- package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js +40 -40
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +29 -31
- package/dist/api/admin/apiRemoveSiteKeyEndpoint.js +33 -29
- package/dist/api/admin/apiRemoveSiteKeysEndpoint.js +32 -31
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +43 -35
- package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js +43 -63
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +36 -35
- package/dist/api/admin/createApiAdminRoutesProvider.js +6 -8
- package/dist/api/blacklistRequestInspector.js +285 -377
- package/dist/api/block.js +17 -30
- package/dist/api/captcha/checkSpamEmail.js +88 -98
- package/dist/api/captcha/contextAwareValidation.js +21 -15
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +126 -140
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +11 -12
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +236 -299
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +10 -13
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +336 -462
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js +17 -14
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js +27 -27
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +42 -63
- package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +2 -4
- package/dist/api/captcha/getImageCaptchaChallenge.js +136 -207
- package/dist/api/captcha/getPoWCaptchaChallenge.js +128 -198
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js +132 -201
- package/dist/api/captcha/maintenanceModeResponses.js +38 -47
- package/dist/api/captcha/submitImageCaptchaSolution.js +75 -101
- package/dist/api/captcha/submitPoWCaptchaSolution.js +137 -207
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js +73 -105
- package/dist/api/captcha.js +76 -58
- package/dist/api/dnsEventUrl.js +20 -22
- package/dist/api/domainMiddleware.js +104 -115
- package/dist/api/forwardVerify.js +62 -48
- package/dist/api/handshakeTimingMiddleware.js +43 -62
- package/dist/api/hardBlockVerdictCache.js +114 -117
- package/dist/api/headerCheckMiddleware.js +34 -34
- package/dist/api/ignoreMiddleware.js +13 -15
- package/dist/api/ipInfoMiddleware.js +17 -19
- package/dist/api/ja4.js +149 -188
- package/dist/api/ja4Middleware.js +39 -54
- package/dist/api/metrics.js +245 -257
- package/dist/api/public.js +52 -54
- package/dist/api/robotsMiddleware.js +10 -10
- package/dist/api/startProviderApi.js +205 -232
- package/dist/api/testSiteKey.js +16 -16
- package/dist/api/validateAddress.js +23 -21
- package/dist/api/verify.js +334 -377
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +40 -59
- package/dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs +63 -58
- package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +82 -93
- package/dist/cjs/api/admin/apiGetAllDecisionMachinesEndpoint.cjs +46 -48
- package/dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs +41 -41
- package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +25 -24
- package/dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs +28 -32
- package/dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs +38 -40
- package/dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs +41 -41
- package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +31 -33
- package/dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs +35 -31
- package/dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs +34 -33
- package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +45 -35
- package/dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs +45 -65
- package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +38 -37
- package/dist/cjs/api/admin/createApiAdminRoutesProvider.cjs +7 -8
- package/dist/cjs/api/blacklistRequestInspector.cjs +288 -376
- package/dist/cjs/api/block.cjs +18 -30
- package/dist/cjs/api/captcha/checkSpamEmail.cjs +90 -100
- package/dist/cjs/api/captcha/contextAwareValidation.cjs +21 -14
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +125 -140
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +10 -10
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +238 -301
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +9 -12
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +349 -473
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.cjs +18 -14
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs +26 -26
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +42 -63
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +2 -3
- package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +138 -208
- package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +131 -200
- package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +135 -203
- package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +38 -44
- package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +77 -102
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +140 -209
- package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +76 -107
- package/dist/cjs/api/captcha.cjs +79 -58
- package/dist/cjs/api/dnsEventUrl.cjs +20 -21
- package/dist/cjs/api/domainMiddleware.cjs +106 -117
- package/dist/cjs/api/forwardVerify.cjs +63 -49
- package/dist/cjs/api/handshakeTimingMiddleware.cjs +43 -61
- package/dist/cjs/api/hardBlockVerdictCache.cjs +114 -114
- package/dist/cjs/api/headerCheckMiddleware.cjs +34 -34
- package/dist/cjs/api/ignoreMiddleware.cjs +12 -14
- package/dist/cjs/api/ipInfoMiddleware.cjs +16 -18
- package/dist/cjs/api/ja4.cjs +149 -187
- package/dist/cjs/api/ja4Middleware.cjs +40 -53
- package/dist/cjs/api/metrics.cjs +229 -228
- package/dist/cjs/api/public.cjs +57 -57
- package/dist/cjs/api/robotsMiddleware.cjs +9 -9
- package/dist/cjs/api/startProviderApi.cjs +219 -237
- package/dist/cjs/api/testSiteKey.cjs +15 -14
- package/dist/cjs/api/validateAddress.cjs +24 -21
- package/dist/cjs/api/verify.cjs +338 -379
- package/dist/cjs/compositeIpAddress.cjs +40 -47
- package/dist/cjs/index.cjs +65 -71
- package/dist/cjs/pairs.cjs +31 -35
- package/dist/cjs/rules/lang.cjs +10 -14
- package/dist/cjs/schedulers/captchaScheduler.cjs +26 -32
- package/dist/cjs/schedulers/getClientList.cjs +35 -33
- package/dist/cjs/schedulers/setClientEntropy.cjs +35 -33
- package/dist/cjs/schedulers/updateSpamEmailDomains.cjs +39 -43
- package/dist/cjs/services/ipComparison.cjs +122 -119
- package/dist/cjs/tasks/captchaManager.cjs +407 -486
- package/dist/cjs/tasks/client/clientTasks.cjs +347 -470
- package/dist/cjs/tasks/dataset/datasetTasks.cjs +25 -29
- package/dist/cjs/tasks/dataset/datasetTasksUtils.cjs +16 -32
- package/dist/cjs/tasks/decisionMachine/decisionMachineRunner.cjs +220 -307
- package/dist/cjs/tasks/detection/decodeBehavior.cjs +408 -317
- package/dist/cjs/tasks/detection/decodePayload.cjs +686 -468
- package/dist/cjs/tasks/detection/decodeSimd.cjs +462 -304
- package/dist/cjs/tasks/detection/getBotScore.cjs +37 -43
- package/dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs +88 -71
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +348 -486
- package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +13 -30
- package/dist/cjs/tasks/frictionless/routingMachine.cjs +71 -55
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +555 -806
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasksUtils.cjs +22 -23
- package/dist/cjs/tasks/index.cjs +2 -4
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +491 -687
- package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +17 -29
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +422 -591
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasksUtils.cjs +8 -5
- package/dist/cjs/tasks/spam/checkSpamEmail.cjs +133 -141
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +118 -76
- package/dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs +75 -84
- package/dist/cjs/tasks/spam/updateSpamEmailDomains.cjs +40 -56
- package/dist/cjs/tasks/tasks.cjs +107 -158
- package/dist/cjs/util/usageCounters.cjs +220 -211
- package/dist/cjs/util.cjs +329 -359
- package/dist/cjs/utils/devicePlatform.cjs +14 -8
- package/dist/cjs/utils/dns.cjs +68 -93
- package/dist/cjs/utils/hashUserAgent.cjs +14 -7
- package/dist/cjs/utils/hashUserIp.cjs +14 -6
- package/dist/cjs/utils/honeypot/encoders.cjs +74 -80
- package/dist/cjs/utils/honeypot/phraseBank.cjs +51 -44
- package/dist/cjs/utils/normalizeRequestIp.cjs +33 -25
- package/dist/compositeIpAddress.js +38 -46
- package/dist/index.js +12 -56
- package/dist/pairs.js +31 -37
- package/dist/rules/lang.js +11 -15
- package/dist/schedulers/captchaScheduler.js +25 -31
- package/dist/schedulers/getClientList.js +34 -32
- package/dist/schedulers/setClientEntropy.js +34 -32
- package/dist/schedulers/updateSpamEmailDomains.js +38 -42
- package/dist/services/ipComparison.js +122 -119
- package/dist/tasks/captchaManager.js +403 -483
- package/dist/tasks/client/clientTasks.js +343 -467
- package/dist/tasks/dataset/datasetTasks.js +24 -28
- package/dist/tasks/dataset/datasetTasksUtils.js +15 -31
- package/dist/tasks/decisionMachine/decisionMachineRunner.js +217 -306
- package/dist/tasks/detection/getBotScore.js +37 -43
- package/dist/tasks/dnsEvent/enrichDnsEvent.d.ts.map +1 -1
- package/dist/tasks/dnsEvent/enrichDnsEvent.js +88 -74
- package/dist/tasks/dnsEvent/enrichDnsEvent.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +342 -479
- package/dist/tasks/frictionless/frictionlessTasksUtils.js +14 -32
- package/dist/tasks/frictionless/routingMachine.js +72 -56
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +550 -801
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js +21 -22
- package/dist/tasks/index.js +1 -3
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +486 -682
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js +15 -28
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js +417 -586
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js +9 -6
- package/dist/tasks/spam/checkSpamEmail.js +133 -141
- package/dist/tasks/spam/checkTrafficFilter.d.ts +1 -0
- package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.js +117 -77
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
- package/dist/tasks/spam/evaluateEmailSpamRules.js +75 -86
- package/dist/tasks/spam/updateSpamEmailDomains.js +36 -54
- package/dist/tasks/tasks.js +98 -150
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +4 -1
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
- package/dist/tests/unit/api/block.unit.test.js +8 -4
- package/dist/tests/unit/api/block.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +8 -6
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -1
- package/dist/tests/unit/api/forwardVerify.unit.test.js +3 -1
- package/dist/tests/unit/api/forwardVerify.unit.test.js.map +1 -1
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +15 -7
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +24 -18
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/getClientList.unit.test.js +19 -13
- package/dist/tests/unit/schedulers/getClientList.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js +19 -13
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +22 -16
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +6 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +60 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +140 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
- package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +7 -7
- package/dist/util/usageCounters.js +220 -212
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +327 -364
- package/dist/util.js.map +1 -1
- package/dist/utils/devicePlatform.js +15 -9
- package/dist/utils/dns.js +64 -77
- package/dist/utils/hashUserAgent.js +14 -7
- package/dist/utils/hashUserIp.js +14 -6
- package/dist/utils/honeypot/encoders.js +74 -80
- package/dist/utils/honeypot/phraseBank.js +49 -44
- package/dist/utils/normalizeRequestIp.js +34 -26
- package/package.json +24 -24
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.15.
|
|
2
|
+
> @prosopo/provider@4.15.15 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/provider@4.15.
|
|
6
|
+
> @prosopo/provider@4.15.15 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -53,110 +53,113 @@ ViteEsmConfig: .
|
|
|
53
53
|
'@prosopo/load-balancer'
|
|
54
54
|
]
|
|
55
55
|
}
|
|
56
|
-
[
|
|
56
|
+
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
57
|
+
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
57
58
|
Bundle build started
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
[32m✓[39m 97 modules transformed.
|
|
59
|
+
[2K
|
|
60
|
+
✓ 98 modules transformed.
|
|
61
61
|
rendering chunks...
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
62
|
+
computing gzip size...
|
|
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.29 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/api/block.js 0.80 kB │ gzip: 0.36 kB
|
|
80
|
+
dist/api/dnsEventUrl.js 0.80 kB │ gzip: 0.44 kB
|
|
81
|
+
dist/tasks/dataset/datasetTasks.js 0.85 kB │ gzip: 0.39 kB
|
|
82
|
+
dist/tasks/frictionless/frictionlessTasksUtils.js 0.87 kB │ gzip: 0.45 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/api/admin/apiRemoveDetectorKeyEndpoint.js 1.09 kB │ gzip: 0.49 kB
|
|
94
|
+
dist/schedulers/captchaScheduler.js 1.11 kB │ gzip: 0.48 kB
|
|
95
|
+
dist/utils/normalizeRequestIp.js 1.14 kB │ gzip: 0.52 kB
|
|
96
|
+
dist/pairs.js 1.19 kB │ gzip: 0.58 kB
|
|
97
|
+
dist/schedulers/getClientList.js 1.19 kB │ gzip: 0.53 kB
|
|
98
|
+
dist/schedulers/setClientEntropy.js 1.20 kB │ gzip: 0.52 kB
|
|
99
|
+
dist/api/admin/apiUpdateDetectorKeyEndpoint.js 1.20 kB │ gzip: 0.50 kB
|
|
100
|
+
dist/api/admin/apiGetDecisionMachineEndpoint.js 1.26 kB │ gzip: 0.50 kB
|
|
101
|
+
dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js 1.27 kB │ gzip: 0.51 kB
|
|
102
|
+
dist/api/admin/apiRemoveDecisionMachineEndpoint.js 1.29 kB │ gzip: 0.51 kB
|
|
103
|
+
dist/tasks/detection/getBotScore.js 1.29 kB │ gzip: 0.47 kB
|
|
104
|
+
dist/tasks/dataset/datasetTasksUtils.js 1.30 kB │ gzip: 0.48 kB
|
|
105
|
+
dist/compositeIpAddress.js 1.36 kB │ gzip: 0.55 kB
|
|
106
|
+
dist/api/admin/apiGetAllDecisionMachinesEndpoint.js 1.48 kB │ gzip: 0.57 kB
|
|
107
|
+
dist/schedulers/updateSpamEmailDomains.js 1.52 kB │ gzip: 0.60 kB
|
|
108
|
+
dist/api/ja4Middleware.js 1.59 kB │ gzip: 0.75 kB
|
|
109
|
+
dist/utils/honeypot/encoders.js 1.62 kB │ gzip: 0.67 kB
|
|
110
|
+
dist/api/admin/apiToggleMaintenanceModeEndpoint.js 1.66 kB │ gzip: 0.69 kB
|
|
111
|
+
dist/api/admin/apiUpdateDecisionMachineEndpoint.js 1.68 kB │ gzip: 0.58 kB
|
|
112
|
+
dist/utils/honeypot/phraseBank.js 1.69 kB │ gzip: 0.84 kB
|
|
113
|
+
dist/api/handshakeTimingMiddleware.js 1.75 kB │ gzip: 0.69 kB
|
|
114
|
+
dist/api/captcha/maintenanceModeResponses.js 1.76 kB │ gzip: 0.57 kB
|
|
115
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js 1.87 kB │ gzip: 0.79 kB
|
|
116
|
+
dist/tasks/spam/updateSpamEmailDomains.js 1.87 kB │ gzip: 0.77 kB
|
|
117
|
+
dist/api/admin/apiClearAllCountersEndpoint.js 1.89 kB │ gzip: 0.76 kB
|
|
118
|
+
dist/api/public.js 1.90 kB │ gzip: 0.83 kB
|
|
119
|
+
dist/tasks/frictionless/routingMachine.js 2.16 kB │ gzip: 0.91 kB
|
|
120
|
+
dist/utils/dns.js 2.36 kB │ gzip: 0.95 kB
|
|
121
|
+
dist/api/admin/apiDnsEventEndpoint.js 2.43 kB │ gzip: 0.96 kB
|
|
122
|
+
dist/api/captcha/checkSpamEmail.js 2.47 kB │ gzip: 0.91 kB
|
|
123
|
+
dist/api/captcha/submitPuzzleCaptchaSolution.js 2.55 kB │ gzip: 0.96 kB
|
|
124
|
+
dist/api/forwardVerify.js 2.59 kB │ gzip: 1.10 kB
|
|
125
|
+
dist/api/captcha/submitImageCaptchaSolution.js 2.59 kB │ gzip: 1.00 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/admin/apiAdminRoutesProvider.js 2.84 kB │ gzip: 0.54 kB
|
|
129
|
+
dist/api/domainMiddleware.js 3.52 kB │ gzip: 1.22 kB
|
|
130
|
+
dist/api/captcha.js 3.72 kB │ gzip: 1.21 kB
|
|
131
|
+
dist/services/ipComparison.js 3.96 kB │ gzip: 1.19 kB
|
|
132
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js 3.99 kB │ gzip: 0.99 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.13 kB │ gzip: 1.61 kB
|
|
138
|
+
dist/api/captcha/getPuzzleCaptchaChallenge.js 5.35 kB │ gzip: 1.64 kB
|
|
139
|
+
dist/api/captcha/getImageCaptchaChallenge.js 5.39 kB │ gzip: 1.74 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.16 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/api/startProviderApi.js 8.47 kB │ gzip: 2.81 kB
|
|
146
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js 8.91 kB │ gzip: 2.03 kB
|
|
147
|
+
dist/tasks/decisionMachine/decisionMachineRunner.js 9.40 kB │ gzip: 2.86 kB
|
|
148
|
+
dist/api/blacklistRequestInspector.js 11.57 kB │ gzip: 4.19 kB
|
|
149
|
+
dist/api/verify.js 12.03 kB │ gzip: 2.44 kB
|
|
150
|
+
dist/util.js 12.92 kB │ gzip: 3.16 kB
|
|
151
|
+
dist/tasks/client/clientTasks.js 13.21 kB │ gzip: 3.28 kB
|
|
152
|
+
dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 13.94 kB │ gzip: 3.55 kB
|
|
153
|
+
dist/tasks/frictionless/frictionlessTasks.js 14.62 kB │ gzip: 3.94 kB
|
|
154
|
+
dist/tasks/captchaManager.js 16.63 kB │ gzip: 4.85 kB
|
|
155
|
+
dist/tasks/detection/decodeBehavior.js 17.15 kB │ gzip: 6.60 kB
|
|
156
|
+
dist/tasks/puzzleCaptcha/puzzleTasks.js 17.94 kB │ gzip: 4.31 kB
|
|
157
|
+
dist/tasks/detection/decodeSimd.js 19.34 kB │ gzip: 8.30 kB
|
|
158
|
+
dist/tasks/powCaptcha/powTasks.js 20.18 kB │ gzip: 5.24 kB
|
|
159
|
+
dist/tasks/imgCaptcha/imgCaptchaTasks.js 23.90 kB │ gzip: 5.84 kB
|
|
160
|
+
dist/tasks/detection/decodePayload.js 26.98 kB │ gzip: 9.17 kB
|
|
161
|
+
|
|
162
|
+
[32m✓ built in 161ms[39m
|
|
160
163
|
[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
|
|
161
164
|
[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
|
|
162
165
|
[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,83 @@
|
|
|
1
1
|
# @prosopo/provider
|
|
2
2
|
|
|
3
|
+
## 4.15.15
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- 103318c: feat(traffic-filter): add `datacenterNameDenylist` alongside the existing allowlist
|
|
7
|
+
|
|
8
|
+
Operators can now name datacenter / provider / ASN organisations they want
|
|
9
|
+
force-included in the datacenter block, mirroring the shape of
|
|
10
|
+
`datacenterNameAllowlist`. Denylist entries take precedence over the
|
|
11
|
+
`providerType === "isp"` short-circuit and over the allowlist for the same
|
|
12
|
+
name, so operators can opt named providers back into the datacenter rule when
|
|
13
|
+
upstream classifies them as ISP.
|
|
14
|
+
|
|
15
|
+
Same case-insensitive / whitespace-trimmed matching, same three name sources
|
|
16
|
+
(`datacenterName`, `providerName`, `asnOrganization`), same
|
|
17
|
+
`MAX_DATACENTER_ALLOWLIST_ENTRIES` / `MAX_DATACENTER_ALLOWLIST_ENTRY_LENGTH`
|
|
18
|
+
validators. Missing or empty denylist preserves existing behaviour.
|
|
19
|
+
|
|
20
|
+
Wired through the mongoose `ClientSettings.trafficFilter` schema, the zod
|
|
21
|
+
`TrafficFilterSchema`, `checkTrafficFilter`, and `enrichDnsEvent.countDc` so
|
|
22
|
+
the denylist is honoured on both the primary rule and the DNS-asymmetry
|
|
23
|
+
scoring. Unit tests cover the ISP-bypass override, the allowlist-precedence
|
|
24
|
+
edge case, category-suppression interaction, and the extras path.
|
|
25
|
+
- 8a400eb: fix(provider): return 400 not 500 for CAPTCHA.INVALID_SOLUTION
|
|
26
|
+
- e14fce6: chore(deps): bump vite to 6.4.3 and mongoose to 8.24.1, and adjust types for the mongoose 8.24 Document/ObjectId changes
|
|
27
|
+
- Updated dependencies [a58d007]
|
|
28
|
+
- Updated dependencies [2c47bb7]
|
|
29
|
+
- Updated dependencies [0e1171c]
|
|
30
|
+
- Updated dependencies [103318c]
|
|
31
|
+
- Updated dependencies [270a8d8]
|
|
32
|
+
- Updated dependencies [e14fce6]
|
|
33
|
+
- @prosopo/api-route@2.6.53
|
|
34
|
+
- @prosopo/util@3.3.5
|
|
35
|
+
- @prosopo/locale@3.2.8
|
|
36
|
+
- @prosopo/types@4.10.0
|
|
37
|
+
- @prosopo/types-database@4.11.17
|
|
38
|
+
- @prosopo/ipinfo@0.3.0
|
|
39
|
+
- @prosopo/api@3.5.20
|
|
40
|
+
- @prosopo/common@3.1.48
|
|
41
|
+
- @prosopo/database@3.15.20
|
|
42
|
+
- @prosopo/datasets@3.1.55
|
|
43
|
+
- @prosopo/env@3.6.20
|
|
44
|
+
- @prosopo/keyring@2.9.61
|
|
45
|
+
- @prosopo/load-balancer@2.10.16
|
|
46
|
+
- @prosopo/redis-client@1.0.30
|
|
47
|
+
- @prosopo/types-env@2.10.17
|
|
48
|
+
- @prosopo/user-access-policy@3.12.9
|
|
49
|
+
- @prosopo/api-express-router@3.1.51
|
|
50
|
+
- @prosopo/logger@2.0.4
|
|
51
|
+
|
|
52
|
+
## 4.15.14
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- c61dfb5: fix(access-policy): reject Block+captchaType at schema level; add follow-up test coverage
|
|
56
|
+
|
|
57
|
+
**Fix.** The `sanitizeAccessPolicy` helper silently strips `captchaType` and `solvedImagesCount` from Block policies at write time, which meant operators writing e.g. `--block --ip X --captchaType image` got a rule that actually blocked EVERY captcha type for that IP — not just image. Same root cause as the Block+deferToVerify request-time 400 bug (see #2885). Rejecting at input surfaces the mismatch loudly with a message that points the operator at Restrict:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Block policies cannot pin a captchaType — Block always applies to every
|
|
61
|
+
captcha type. Use a Restrict policy if you want to narrow the effect to
|
|
62
|
+
one captcha type.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`accessPolicyInput` now has a `superRefine` that rejects Block+captchaType and Block+solvedImagesCount. The read path still accepts the legacy shape (records written before the refinement landed can still be parsed by the reader). The `addUserAccessPolicy` script was updated to only emit those fields for Restrict, so its `--block` path no longer 400s.
|
|
66
|
+
|
|
67
|
+
**Follow-up tests added** — closing the gaps flagged in the previous session:
|
|
68
|
+
|
|
69
|
+
- **Coord threading lands on the puzzle record** (`puzzleTasks.unit.test.ts`) — extends the verify-puzzle-solution suite to encode a real salt with `(158, 42)`, submit, and assert `coords[0][0] === [158, 42]` on the persisted record. Guards against a regression that drops the salt decode or writes `[0, 0]` — the whole point of the puzzle DM threading PR (#2873).
|
|
70
|
+
- **DM deny reason lands on the pow commitment** (`powTasks.unit.test.ts`) — pow's existing "should deny when decision machine returns deny" test only asserted `verified:false`; now also asserts the DM's reason string is persisted on the commitment.
|
|
71
|
+
- **checkForHardBlock wins over DM deny at verify** (`puzzleTasks.unit.test.ts`) — stubs `checkForHardBlock` to match, stubs the DM to also deny with a distinguishable reason, asserts the commitment carries `ACCESS_POLICY_BLOCK` and that the DM was never consulted. Locks in the ordering that the audit trail depends on.
|
|
72
|
+
- **Rule expiry** (`redisRulesStorage.integration.test.ts`) — inserts a rule with a 2 s TTL, waits past expiry, asserts the Redis hash is gone and the RediSearch index no longer counts it. The existing "inserts time limited rule" test only verified the TTL was set, not that expired rules stop matching.
|
|
73
|
+
- Updated dependencies [c61dfb5]
|
|
74
|
+
- @prosopo/user-access-policy@3.12.8
|
|
75
|
+
- @prosopo/database@3.15.19
|
|
76
|
+
- @prosopo/types-database@4.11.16
|
|
77
|
+
- @prosopo/env@3.6.19
|
|
78
|
+
- @prosopo/types-env@2.10.16
|
|
79
|
+
- @prosopo/api-express-router@3.1.50
|
|
80
|
+
|
|
3
81
|
## 4.15.13
|
|
4
82
|
### Patch Changes
|
|
5
83
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ApiToggleMaintenanceModeEndpoint } from "./apiToggleMaintenanceModeEndpoint.js";
|
|
2
2
|
import { ApiClearAllCountersEndpoint } from "./apiClearAllCountersEndpoint.js";
|
|
3
3
|
import { ApiDnsEventEndpoint } from "./apiDnsEventEndpoint.js";
|
|
4
4
|
import { ApiGetAllDecisionMachinesEndpoint } from "./apiGetAllDecisionMachinesEndpoint.js";
|
|
@@ -10,51 +10,32 @@ import { ApiRemoveDecisionMachineEndpoint } from "./apiRemoveDecisionMachineEndp
|
|
|
10
10
|
import { ApiRemoveDetectorKeyEndpoint } from "./apiRemoveDetectorKeyEndpoint.js";
|
|
11
11
|
import { ApiRemoveSiteKeyEndpoint } from "./apiRemoveSiteKeyEndpoint.js";
|
|
12
12
|
import { ApiRemoveSiteKeysEndpoint } from "./apiRemoveSiteKeysEndpoint.js";
|
|
13
|
-
import { ApiToggleMaintenanceModeEndpoint } from "./apiToggleMaintenanceModeEndpoint.js";
|
|
14
13
|
import { ApiUpdateDecisionMachineEndpoint } from "./apiUpdateDecisionMachineEndpoint.js";
|
|
15
14
|
import { ApiUpdateDetectorKeyEndpoint } from "./apiUpdateDetectorKeyEndpoint.js";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
[AdminApiPaths.RemoveAllDecisionMachines]: new ApiRemoveAllDecisionMachinesEndpoint(this.tasks.clientTaskManager),
|
|
41
|
-
[AdminApiPaths.ClearAllCounters]: new ApiClearAllCountersEndpoint(
|
|
42
|
-
this.tasks.usageCounters
|
|
43
|
-
),
|
|
44
|
-
[AdminApiPaths.SiteKeyRemove]: new ApiRemoveSiteKeyEndpoint(
|
|
45
|
-
this.tasks.clientTaskManager
|
|
46
|
-
),
|
|
47
|
-
[AdminApiPaths.SiteKeysRemove]: new ApiRemoveSiteKeysEndpoint(
|
|
48
|
-
this.tasks.clientTaskManager
|
|
49
|
-
),
|
|
50
|
-
[AdminApiPaths.ToggleMaintenanceMode]: new ApiToggleMaintenanceModeEndpoint(),
|
|
51
|
-
[AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(
|
|
52
|
-
this.tasks.db,
|
|
53
|
-
this.tasks.env.ipInfoService
|
|
54
|
-
)
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
export {
|
|
59
|
-
ApiAdminRoutesProvider
|
|
15
|
+
import { AdminApiPaths } from "@prosopo/types";
|
|
16
|
+
//#region src/api/admin/apiAdminRoutesProvider.ts
|
|
17
|
+
var ApiAdminRoutesProvider = class {
|
|
18
|
+
constructor(tasks) {
|
|
19
|
+
this.tasks = tasks;
|
|
20
|
+
}
|
|
21
|
+
getRoutes() {
|
|
22
|
+
return {
|
|
23
|
+
[AdminApiPaths.SiteKeyRegister]: new ApiRegisterSiteKeyEndpoint(this.tasks.clientTaskManager),
|
|
24
|
+
[AdminApiPaths.SiteKeysRegister]: new ApiRegisterSiteKeysEndpoint(this.tasks.clientTaskManager),
|
|
25
|
+
[AdminApiPaths.UpdateDetectorKey]: new ApiUpdateDetectorKeyEndpoint(this.tasks.clientTaskManager),
|
|
26
|
+
[AdminApiPaths.RemoveDetectorKey]: new ApiRemoveDetectorKeyEndpoint(this.tasks.clientTaskManager),
|
|
27
|
+
[AdminApiPaths.UpdateDecisionMachine]: new ApiUpdateDecisionMachineEndpoint(this.tasks.clientTaskManager),
|
|
28
|
+
[AdminApiPaths.GetAllDecisionMachines]: new ApiGetAllDecisionMachinesEndpoint(this.tasks.clientTaskManager),
|
|
29
|
+
[AdminApiPaths.GetDecisionMachine]: new ApiGetDecisionMachineEndpoint(this.tasks.clientTaskManager),
|
|
30
|
+
[AdminApiPaths.RemoveDecisionMachine]: new ApiRemoveDecisionMachineEndpoint(this.tasks.clientTaskManager),
|
|
31
|
+
[AdminApiPaths.RemoveAllDecisionMachines]: new ApiRemoveAllDecisionMachinesEndpoint(this.tasks.clientTaskManager),
|
|
32
|
+
[AdminApiPaths.ClearAllCounters]: new ApiClearAllCountersEndpoint(this.tasks.usageCounters),
|
|
33
|
+
[AdminApiPaths.SiteKeyRemove]: new ApiRemoveSiteKeyEndpoint(this.tasks.clientTaskManager),
|
|
34
|
+
[AdminApiPaths.SiteKeysRemove]: new ApiRemoveSiteKeysEndpoint(this.tasks.clientTaskManager),
|
|
35
|
+
[AdminApiPaths.ToggleMaintenanceMode]: new ApiToggleMaintenanceModeEndpoint(),
|
|
36
|
+
[AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(this.tasks.db, this.tasks.env.ipInfoService)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
60
39
|
};
|
|
40
|
+
//#endregion
|
|
41
|
+
export { ApiAdminRoutesProvider };
|
|
@@ -1,59 +1,64 @@
|
|
|
1
|
-
import { ApiEndpointResponseStatus } from "@prosopo/api-route";
|
|
2
1
|
import { getLogger } from "@prosopo/logger";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
2
|
+
import { ClearAllCountersBody, ClearAllCountersResponse } from "@prosopo/types";
|
|
3
|
+
import { ApiEndpointResponseStatus } from "@prosopo/api-route";
|
|
4
|
+
//#region src/api/admin/apiClearAllCountersEndpoint.ts
|
|
5
|
+
/**
|
|
6
|
+
* Admin endpoint: delete every per-sitekey usage counter (optionally scoped
|
|
7
|
+
* to a single dappAccount). Intended for manual integration testing and
|
|
8
|
+
* staging-environment resets — not part of the hot path. Returns the number
|
|
9
|
+
* of Redis keys deleted.
|
|
10
|
+
*/
|
|
11
|
+
var ApiClearAllCountersEndpoint = class {
|
|
12
|
+
constructor(usageCounters) {
|
|
13
|
+
this.usageCounters = usageCounters;
|
|
14
|
+
}
|
|
15
|
+
async processRequest(args, logger) {
|
|
16
|
+
logger = logger ? logger.with({}, "admin:counters:clear-all") : getLogger("info", "provider:admin:counters:clear-all");
|
|
17
|
+
const dappAccount = args.dapp;
|
|
18
|
+
const scope = dappAccount ?? "all";
|
|
19
|
+
try {
|
|
20
|
+
logger.info(() => ({
|
|
21
|
+
msg: "Clearing usage counters",
|
|
22
|
+
data: { scope }
|
|
23
|
+
}));
|
|
24
|
+
if (!this.usageCounters) return {
|
|
25
|
+
status: ApiEndpointResponseStatus.FAIL,
|
|
26
|
+
error: "Usage counters not available (Redis unreachable)"
|
|
27
|
+
};
|
|
28
|
+
const deleted = await this.usageCounters.clearAll(dappAccount);
|
|
29
|
+
if (deleted === null) return {
|
|
30
|
+
status: ApiEndpointResponseStatus.FAIL,
|
|
31
|
+
error: "Counter clear failed"
|
|
32
|
+
};
|
|
33
|
+
logger.info(() => ({
|
|
34
|
+
msg: "Usage counters cleared",
|
|
35
|
+
data: {
|
|
36
|
+
scope,
|
|
37
|
+
deletedCount: deleted
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
return {
|
|
41
|
+
status: ApiEndpointResponseStatus.SUCCESS,
|
|
42
|
+
data: ClearAllCountersResponse.parse({
|
|
43
|
+
success: true,
|
|
44
|
+
deletedCount: deleted,
|
|
45
|
+
scope
|
|
46
|
+
})
|
|
47
|
+
};
|
|
48
|
+
} catch (error) {
|
|
49
|
+
logger.error(() => ({
|
|
50
|
+
msg: "Error clearing usage counters",
|
|
51
|
+
err: error
|
|
52
|
+
}));
|
|
53
|
+
return {
|
|
54
|
+
status: ApiEndpointResponseStatus.FAIL,
|
|
55
|
+
error: error.message
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
getRequestArgsSchema() {
|
|
60
|
+
return ClearAllCountersBody;
|
|
61
|
+
}
|
|
59
62
|
};
|
|
63
|
+
//#endregion
|
|
64
|
+
export { ApiClearAllCountersEndpoint };
|