@prosopo/provider 4.11.1 → 4.11.2

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.
Files changed (41) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +7 -7
  2. package/.turbo/turbo-build$colon$tsc.log +24 -24
  3. package/.turbo/turbo-build.log +9 -9
  4. package/CHANGELOG.md +31 -0
  5. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
  6. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  7. package/dist/api/captcha/submitPoWCaptchaSolution.js +24 -3
  8. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  9. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +24 -3
  10. package/dist/cjs/tasks/detection/decodeBehavior.cjs +243 -220
  11. package/dist/cjs/tasks/detection/decodeBehavior.js +1 -1
  12. package/dist/cjs/tasks/detection/decodePayload.cjs +383 -764
  13. package/dist/cjs/tasks/detection/decodePayload.js +1 -1
  14. package/dist/cjs/tasks/detection/decodeSimd.cjs +225 -238
  15. package/dist/cjs/tasks/detection/decodeSimd.js +1 -1
  16. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +5 -1
  17. package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +14 -1
  18. package/dist/tasks/detection/decodeBehavior.d.ts +2 -2
  19. package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -1
  20. package/dist/tasks/detection/decodeBehavior.js +1 -1
  21. package/dist/tasks/detection/decodeBehavior.js.map +1 -1
  22. package/dist/tasks/detection/decodePayload.d.ts +2 -2
  23. package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
  24. package/dist/tasks/detection/decodePayload.js +1 -1
  25. package/dist/tasks/detection/decodePayload.js.map +1 -1
  26. package/dist/tasks/detection/decodeSimd.d.ts +2 -2
  27. package/dist/tasks/detection/decodeSimd.d.ts.map +1 -1
  28. package/dist/tasks/detection/decodeSimd.js +1 -1
  29. package/dist/tasks/detection/decodeSimd.js.map +1 -1
  30. package/dist/tasks/detection/getBotScore.js +2 -2
  31. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  32. package/dist/tasks/powCaptcha/powTasks.js +5 -1
  33. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  34. package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
  35. package/dist/tasks/spam/checkTrafficFilter.js +14 -1
  36. package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
  37. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +1 -0
  38. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
  39. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +84 -0
  40. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
  41. package/package.json +13 -13
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/provider@4.11.1 build:cjs
2
+ > @prosopo/provider@4.11.2 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -112,9 +112,9 @@ rendering chunks...
112
112
  dist/cjs/tasks/spam/updateSpamEmailDomains.cjs  2.13 kB
113
113
  dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs  2.16 kB
114
114
  dist/cjs/api/captcha/maintenanceModeResponses.cjs  2.20 kB
115
- dist/cjs/tasks/spam/checkTrafficFilter.cjs  2.24 kB
116
115
  dist/cjs/api/captcha/checkSpamEmail.cjs  2.47 kB
117
116
  dist/cjs/api/captcha.cjs  2.66 kB
117
+ dist/cjs/tasks/spam/checkTrafficFilter.cjs  2.68 kB
118
118
  dist/cjs/api/ja4Middleware.cjs  2.74 kB
119
119
  dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs  3.00 kB
120
120
  dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs  3.03 kB
@@ -127,10 +127,10 @@ rendering chunks...
127
127
  dist/cjs/index.cjs  4.01 kB
128
128
  dist/cjs/services/ipComparison.cjs  4.10 kB
129
129
  dist/cjs/tasks/spam/checkSpamEmail.cjs  4.32 kB
130
- dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs  5.35 kB
131
130
  dist/cjs/tasks/tasks.cjs  5.35 kB
132
131
  dist/cjs/util/usageCounters.cjs  5.80 kB
133
132
  dist/cjs/api/captcha/getImageCaptchaChallenge.cjs  6.00 kB
133
+ dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs  6.07 kB
134
134
  dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs  6.23 kB
135
135
  dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs  6.42 kB
136
136
  dist/cjs/api/startProviderApi.cjs  9.53 kB
@@ -143,13 +143,13 @@ rendering chunks...
143
143
  dist/cjs/tasks/client/clientTasks.cjs 15.63 kB
144
144
  dist/cjs/tasks/captchaManager.cjs 16.08 kB
145
145
  dist/cjs/tasks/frictionless/frictionlessTasks.cjs 16.20 kB
146
- dist/cjs/tasks/detection/decodeSimd.cjs 18.20 kB
147
146
  dist/cjs/tasks/detection/decodeBehavior.cjs 19.16 kB
148
147
  dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs 20.40 kB
149
- dist/cjs/tasks/powCaptcha/powTasks.cjs 22.39 kB
148
+ dist/cjs/tasks/detection/decodeSimd.cjs 21.53 kB
149
+ dist/cjs/tasks/powCaptcha/powTasks.cjs 22.69 kB
150
150
  dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs 28.48 kB
151
- dist/cjs/tasks/detection/decodePayload.cjs 44.26 kB
152
- ✓ built in 740ms
151
+ dist/cjs/tasks/detection/decodePayload.cjs 29.94 kB
152
+ ✓ built in 732ms
153
153
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeBehavior.js
154
154
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodePayload.js
155
155
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeSimd.js
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/provider@4.11.1 build:tsc
2
+ > @prosopo/provider@4.11.2 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 1:49:09 PM - Projects in this build:
5
+ 12:06:36 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../util/tsconfig.json
8
8
  * ../logger/tsconfig.json
@@ -25,47 +25,47 @@
25
25
  * ../load-balancer/tsconfig.json
26
26
  * tsconfig.json
27
27
 
28
- 1:49:09 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
28
+ 12:06:36 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/NodejsPolarsNativeFilePlugin.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
29
29
 
30
- 1:49:09 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
30
+ 12:06:36 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
31
31
 
32
- 1:49:09 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
32
+ 12:06:36 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
33
33
 
34
- 1:49:09 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
34
+ 12:06:36 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
35
35
 
36
- 1:49:09 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
36
+ 12:06:36 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
37
37
 
38
- 1:49:09 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
38
+ 12:06:36 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
39
39
 
40
- 1:49:09 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/provider/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
40
+ 12:06:36 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/keyring/keyring/types.ts' is older than output '../types/tsconfig.tsbuildinfo'
41
41
 
42
- 1:49:09 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
42
+ 12:06:36 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
43
43
 
44
- 1:49:10 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
44
+ 12:06:36 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
45
45
 
46
- 1:49:10 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/tests/testRedisConnection.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
46
+ 12:06:36 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
47
47
 
48
- 1:49:10 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
48
+ 12:06:36 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
49
49
 
50
- 1:49:10 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/transformRule.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
50
+ 12:06:36 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
51
51
 
52
- 1:49:10 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
52
+ 12:06:36 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/types/captcha.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
53
53
 
54
- 1:49:10 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/integration/centralStreamingEnrichment.integration.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
54
+ 12:06:36 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/databases/centralDbStreamer.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
55
55
 
56
- 1:49:10 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
56
+ 12:06:36 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/keyring/keyring.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
57
57
 
58
- 1:49:10 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/env.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
58
+ 12:06:36 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/env.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
59
59
 
60
- 1:49:10 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
60
+ 12:06:36 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/index.ts' is older than output '../env/tsconfig.tsbuildinfo'
61
61
 
62
- 1:49:10 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/middlewares/requestLoggerMiddleware.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
62
+ 12:06:36 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/apiExpressRouterFactory.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
63
63
 
64
- 1:49:10 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/tests/dataset.unit.test.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
64
+ 12:06:36 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
65
65
 
66
- 1:49:10 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/balancer.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
66
+ 12:06:36 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/balancer.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
67
67
 
68
- 1:49:10 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
68
+ 12:06:36 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
69
69
 
70
- 1:49:10 PM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
70
+ 12:06:36 PM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
71
71
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/provider@4.11.1 build
2
+ > @prosopo/provider@4.11.2 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/provider@4.11.1 build:cross-env
6
+ > @prosopo/provider@4.11.2 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -114,10 +114,10 @@ rendering chunks...
114
114
  dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js  1.95 kB
115
115
  dist/tasks/dnsEvent/enrichDnsEvent.js  1.97 kB
116
116
  dist/tasks/spam/updateSpamEmailDomains.js  2.03 kB
117
- dist/tasks/spam/checkTrafficFilter.js  2.14 kB
118
117
  dist/api/ja4Middleware.js  2.19 kB
119
118
  dist/api/captcha/checkSpamEmail.js  2.39 kB
120
119
  dist/api/captcha.js  2.49 kB
120
+ dist/tasks/spam/checkTrafficFilter.js  2.57 kB
121
121
  dist/utils/dns.js  2.57 kB
122
122
  dist/index.js  2.66 kB
123
123
  dist/api/admin/apiDnsEventEndpoint.js  2.66 kB
@@ -130,9 +130,9 @@ rendering chunks...
130
130
  dist/services/ipComparison.js  4.00 kB
131
131
  dist/tasks/spam/checkSpamEmail.js  4.26 kB
132
132
  dist/tasks/tasks.js  5.15 kB
133
- dist/api/captcha/submitPoWCaptchaSolution.js  5.24 kB
134
133
  dist/util/usageCounters.js  5.69 kB
135
134
  dist/api/captcha/getImageCaptchaChallenge.js  5.81 kB
135
+ dist/api/captcha/submitPoWCaptchaSolution.js  5.96 kB
136
136
  dist/api/captcha/getPoWCaptchaChallenge.js  6.00 kB
137
137
  dist/api/captcha/getPuzzleCaptchaChallenge.js  6.17 kB
138
138
  dist/api/startProviderApi.js  7.65 kB
@@ -145,13 +145,13 @@ rendering chunks...
145
145
  dist/tasks/client/clientTasks.js 15.37 kB
146
146
  dist/tasks/captchaManager.js 15.43 kB
147
147
  dist/tasks/frictionless/frictionlessTasks.js 15.89 kB
148
- dist/tasks/detection/decodeSimd.js 18.06 kB
149
- dist/tasks/detection/decodeBehavior.js 19.03 kB
148
+ dist/tasks/detection/decodeBehavior.js 19.02 kB
150
149
  dist/tasks/puzzleCaptcha/puzzleTasks.js 20.10 kB
151
- dist/tasks/powCaptcha/powTasks.js 21.98 kB
150
+ dist/tasks/detection/decodeSimd.js 21.39 kB
151
+ dist/tasks/powCaptcha/powTasks.js 22.29 kB
152
152
  dist/tasks/imgCaptcha/imgCaptchaTasks.js 28.04 kB
153
- dist/tasks/detection/decodePayload.js 44.24 kB
154
- ✓ built in 1.34s
153
+ dist/tasks/detection/decodePayload.js 29.92 kB
154
+ ✓ built in 1.39s
155
155
  [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
156
156
  [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
157
157
  [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,36 @@
1
1
  # @prosopo/provider
2
2
 
3
+ ## 4.11.2
4
+ ### Patch Changes
5
+
6
+ - 3a46191: feat(traffic-filter): allowlist datacenter operators by name
7
+
8
+ Apple's iCloud Private Relay exits from datacenter IPs, so sites with
9
+ `blockDatacenter: true` were dropping legitimate Safari traffic. ipapi
10
+ already reports the operator name verbatim in `datacenter.datacenter`
11
+ — expose it on `IPInfoResult.datacenterName` and let `TrafficFilter`
12
+ carry an optional `datacenterNameAllowlist` so operators can opt the
13
+ relay traffic through without disabling the rest of the rule. Match
14
+ is case-/whitespace-insensitive; the allowlist only suppresses the
15
+ datacenter check, so a VPN/Tor/Proxy/Abuser hit on the same IP still
16
+ blocks. New field is wired through Zod (capped 50 × 128 chars) and
17
+ the Mongoose client settings schema so it persists.
18
+ - dde23e8: Internal bot-detection signal improvements.
19
+ - Updated dependencies [3a46191]
20
+ - Updated dependencies [dde23e8]
21
+ - @prosopo/ipinfo@0.2.21
22
+ - @prosopo/types@4.7.0
23
+ - @prosopo/types-database@4.10.3
24
+ - @prosopo/api@3.5.0
25
+ - @prosopo/env@3.5.16
26
+ - @prosopo/api-express-router@3.1.26
27
+ - @prosopo/database@3.14.3
28
+ - @prosopo/datasets@3.1.35
29
+ - @prosopo/keyring@2.9.41
30
+ - @prosopo/load-balancer@2.9.17
31
+ - @prosopo/types-env@2.9.25
32
+ - @prosopo/user-access-policy@3.10.3
33
+
3
34
  ## 4.11.1
4
35
  ### Patch Changes
5
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"apiRemoveDetectorKeyEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiRemoveDetectorKeyEndpoint.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,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,KAAK,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AAElE,cAAM,4BACL,YAAW,WAAW,CAAC,yBAAyB,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAElE,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACxC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0BxB,oBAAoB;qBAMmrlG,EAAG,SAAS;;;;;;;;;CAH1tlG;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
1
+ {"version":3,"file":"apiRemoveDetectorKeyEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiRemoveDetectorKeyEndpoint.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,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,KAAK,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AAElE,cAAM,4BACL,YAAW,WAAW,CAAC,yBAAyB,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAElE,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACxC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0BxB,oBAAoB;qBAM+qnG,EAAG,SAAS;;;;;;;;;CAHttnG;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"submitPoWCaptchaSolution.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAOpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAJpB,wBAoJG"}
1
+ {"version":3,"file":"submitPoWCaptchaSolution.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAOpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAJpB,wBAkLG"}
@@ -39,7 +39,8 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
39
39
  behavioralData,
40
40
  salt,
41
41
  simdReadings,
42
- clientMetaData
42
+ clientMetaData,
43
+ fingerprintProof
43
44
  } = parsed;
44
45
  validateSiteKey(dapp);
45
46
  validateAddr(user);
@@ -65,6 +66,14 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
65
66
  const flatHeaders = flatten(req.headers);
66
67
  const userAgent = req.headers["user-agent"] ?? "";
67
68
  const countryCode = req.ipInfo && "isValid" in req.ipInfo && req.ipInfo.isValid ? req.ipInfo.countryCode : void 0;
69
+ req.logger.info(() => ({
70
+ msg: fingerprintProof ? "fingerprintProof detected" : "no fingerprintProof on PoW submission",
71
+ data: {
72
+ fingerprintProofPresent: fingerprintProof !== void 0,
73
+ fingerprintProofBytes: fingerprintProof?.length ?? 0,
74
+ challenge
75
+ }
76
+ }));
68
77
  tasks.powCaptchaManager.setPostPowContext({
69
78
  ip: req.ip || "",
70
79
  countryCode,
@@ -74,7 +83,8 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
74
83
  raw: {
75
84
  headers: flatHeaders,
76
85
  userAgent,
77
- ...req.ja4 && { ja4: req.ja4 }
86
+ ...req.ja4 && { ja4: req.ja4 },
87
+ ...fingerprintProof && { fingerprintProof }
78
88
  }
79
89
  });
80
90
  const persistedSolutionTimeout = clientRecord.settings.solutionTimeout;
@@ -92,6 +102,16 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
92
102
  simdReadings,
93
103
  clientMetaData
94
104
  );
105
+ if (result.routingOutput) {
106
+ req.logger.info(() => ({
107
+ msg: "post-PoW routing decision",
108
+ data: {
109
+ routedCaptchaType: result.routingOutput?.captchaType,
110
+ routingReason: result.routingOutput?.reason,
111
+ challenge
112
+ }
113
+ }));
114
+ }
95
115
  const escalation = await buildEscalation(tasks, result, challenge);
96
116
  const response = {
97
117
  status: "ok",
@@ -133,6 +153,7 @@ const buildEscalation = async (tasks, result, challenge) => {
133
153
  );
134
154
  if (!originSession) return void 0;
135
155
  const routed = result.routingOutput;
156
+ const selectionReason = routed.reason ?? originSession.reason;
136
157
  const newSession = await tasks.frictionlessManager.createSession(
137
158
  originSession.token,
138
159
  originSession.score,
@@ -148,7 +169,7 @@ const buildEscalation = async (tasks, result, challenge) => {
148
169
  originSession.webView,
149
170
  originSession.iFrame,
150
171
  originSession.decryptedHeadHash,
151
- originSession.reason,
172
+ selectionReason,
152
173
  void 0,
153
174
  void 0,
154
175
  originSession.ipInfo,
@@ -1 +1 @@
1
- {"version":3,"file":"submitPoWCaptchaSolution.js","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACN,WAAW,EAGX,4BAA4B,GAE5B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,eAAe,CAAC,GAAwB,EAAE,EAAE,CAC3C,KAAK,EACJ,GAA+B,EAC/B,GAAa,EACb,IAAkB,EACjB,EAAE;IAIH,IAAI,kBAAkB,EAAE,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtB,GAAG,EAAE,8CAA8C;SACnD,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAA+B;YAC5C,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;SACd,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,MAA8C,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC;QACJ,MAAM,GAAG,4BAA4B,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,IAAI,CACV,IAAI,eAAe,CAAC,qBAAqB,EAAE;YAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;YAClD,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;SAClB,CAAC,CACF,CAAC;IACH,CAAC;IAED,MAAM,EACL,SAAS,EACT,SAAS,EACT,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,cAAc,GACd,GAAG,MAAM,CAAC;IAEX,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,YAAY,CAAC,IAAI,CAAC,CAAC;IAInB,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAA+B;YAC5C,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,WAAW;SACrB,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,IAAI,CACV,IAAI,eAAe,CAAC,6BAA6B,EAAE;gBAClD,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;gBACrC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;aAClB,CAAC,CACF,CAAC;QACH,CAAC;QAMD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,WAAW,GAChB,GAAG,CAAC,MAAM,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO;YAC1D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW;YACxB,CAAC,CAAC,SAAS,CAAC;QACd,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;YACzC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE;YAChB,WAAW;YAGX,QAAQ,EAAE,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;YAC1C,GAAG,EAAE;gBACJ,OAAO,EAAE,WAAW;gBACpB,SAAS;gBACT,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;aAChC;SACD,CAAC,CAAC;QAOH,MAAM,wBAAwB,GAAG,YAAY,CAAC,QAAQ,CAAC,eAE3C,CAAC;QACb,MAAM,cAAc,GACnB,wBAAwB,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,wBAAwB,CACpE,SAAS,EACT,SAAS,CAAC,QAAQ,CAAC,SAAS,EAC5B,KAAK,EACL,cAAc,EACd,SAAS,CAAC,IAAI,CAAC,SAAS,EACxB,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAC1B,WAAW,EACX,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,cAAc,CACd,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,QAAQ,GAA+B;YAC5C,MAAM,EAAE,IAAI;YAGZ,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;YAC9C,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC;SACjC,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACvB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,0CAA0C;SAC/C,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CACV,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACtC,OAAO,EAAE;gBACR,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI;gBACtB,KAAK,EAAE,GAAG;aACV;YACD,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;SAClB,CAAC,CACF,CAAC;IACH,CAAC;AACF,CAAC,CAAC;AAQH,MAAM,eAAe,GAAG,KAAK,EAC5B,KAAY,EACZ,MAA2E,EAC3E,SAAiB,EACmC,EAAE;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;IACpD,IAAI,UAAU,KAAK,WAAW,CAAC,KAAK,IAAI,UAAU,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3E,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,EAAE,SAAS;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAC/D,SAAS,CAAC,SAAS,CACnB,CAAC;IACF,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAErC,MAAM,MAAM,GAAG,MAAM,CAAC,aAIrB,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAC/D,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,eAAe,EAC7B,aAAa,CAAC,qBAAqB,EACnC,aAAa,CAAC,SAAS,EACvB,MAAM,CAAC,WAAW,EAClB,aAAa,CAAC,OAAO,IAAI,SAAS,CAAC,WAAW,EAC9C,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK;QACvC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,IAAI,aAAa,CAAC,iBAAiB,CAAC;QAC/D,CAAC,CAAC,SAAS,EACZ,SAAS,EACT,aAAa,CAAC,iBAAiB,EAC/B,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,MAAM,EACpB,aAAa,CAAC,iBAAiB,EAC/B,aAAa,CAAC,MAAM,EACpB,SAAS,EACT,SAAS,EACT,aAAa,CAAC,MAAM,EACpB,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,IAAI,EAClB,aAAa,CAAC,YAAY,CAC1B,CAAC;IAEF,OAAO;QACN,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,UAAU,CAAC,SAAS;KAC/B,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"submitPoWCaptchaSolution.js","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,8 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
40
40
  behavioralData,
41
41
  salt,
42
42
  simdReadings,
43
- clientMetaData
43
+ clientMetaData,
44
+ fingerprintProof
44
45
  } = parsed;
45
46
  validateAddress.validateSiteKey(dapp);
46
47
  validateAddress.validateAddr(user);
@@ -66,6 +67,14 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
66
67
  const flatHeaders = util.flatten(req.headers);
67
68
  const userAgent = req.headers["user-agent"] ?? "";
68
69
  const countryCode = req.ipInfo && "isValid" in req.ipInfo && req.ipInfo.isValid ? req.ipInfo.countryCode : void 0;
70
+ req.logger.info(() => ({
71
+ msg: fingerprintProof ? "fingerprintProof detected" : "no fingerprintProof on PoW submission",
72
+ data: {
73
+ fingerprintProofPresent: fingerprintProof !== void 0,
74
+ fingerprintProofBytes: fingerprintProof?.length ?? 0,
75
+ challenge
76
+ }
77
+ }));
69
78
  tasks$1.powCaptchaManager.setPostPowContext({
70
79
  ip: req.ip || "",
71
80
  countryCode,
@@ -75,7 +84,8 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
75
84
  raw: {
76
85
  headers: flatHeaders,
77
86
  userAgent,
78
- ...req.ja4 && { ja4: req.ja4 }
87
+ ...req.ja4 && { ja4: req.ja4 },
88
+ ...fingerprintProof && { fingerprintProof }
79
89
  }
80
90
  });
81
91
  const persistedSolutionTimeout = clientRecord.settings.solutionTimeout;
@@ -93,6 +103,16 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
93
103
  simdReadings,
94
104
  clientMetaData
95
105
  );
106
+ if (result.routingOutput) {
107
+ req.logger.info(() => ({
108
+ msg: "post-PoW routing decision",
109
+ data: {
110
+ routedCaptchaType: result.routingOutput?.captchaType,
111
+ routingReason: result.routingOutput?.reason,
112
+ challenge
113
+ }
114
+ }));
115
+ }
96
116
  const escalation = await buildEscalation(tasks$1, result, challenge);
97
117
  const response = {
98
118
  status: "ok",
@@ -134,6 +154,7 @@ const buildEscalation = async (tasks2, result, challenge) => {
134
154
  );
135
155
  if (!originSession) return void 0;
136
156
  const routed = result.routingOutput;
157
+ const selectionReason = routed.reason ?? originSession.reason;
137
158
  const newSession = await tasks2.frictionlessManager.createSession(
138
159
  originSession.token,
139
160
  originSession.score,
@@ -149,7 +170,7 @@ const buildEscalation = async (tasks2, result, challenge) => {
149
170
  originSession.webView,
150
171
  originSession.iFrame,
151
172
  originSession.decryptedHeadHash,
152
- originSession.reason,
173
+ selectionReason,
153
174
  void 0,
154
175
  void 0,
155
176
  originSession.ipInfo,