@prosopo/provider 5.13.0 → 5.13.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 (118) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +22 -21
  2. package/.turbo/turbo-build$colon$tsc.log +27 -27
  3. package/.turbo/turbo-build.log +22 -21
  4. package/CHANGELOG.md +113 -0
  5. package/dist/api/admin/apiDnsEventEndpoint.d.ts +2 -2
  6. package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -1
  7. package/dist/api/admin/apiDnsEventEndpoint.js +28 -5
  8. package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -1
  9. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  10. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +1 -1
  11. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  12. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  13. package/dist/api/captcha/getPoWCaptchaChallenge.js +2 -1
  14. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  15. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  16. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +2 -1
  17. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  18. package/dist/api/captcha/submitImageCaptchaSolution.d.ts.map +1 -1
  19. package/dist/api/captcha/submitImageCaptchaSolution.js +3 -2
  20. package/dist/api/captcha/submitImageCaptchaSolution.js.map +1 -1
  21. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  22. package/dist/api/captcha/submitPoWCaptchaSolution.js +3 -2
  23. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  24. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -1
  25. package/dist/api/captcha/submitPuzzleCaptchaSolution.js +3 -2
  26. package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -1
  27. package/dist/api/hardBlockVerdictCache.d.ts +1 -0
  28. package/dist/api/hardBlockVerdictCache.d.ts.map +1 -1
  29. package/dist/api/hardBlockVerdictCache.js +4 -1
  30. package/dist/api/hardBlockVerdictCache.js.map +1 -1
  31. package/dist/api/requestBodySummary.d.ts +14 -0
  32. package/dist/api/requestBodySummary.d.ts.map +1 -0
  33. package/dist/api/requestBodySummary.js +47 -0
  34. package/dist/api/requestBodySummary.js.map +1 -0
  35. package/dist/api/verify.d.ts.map +1 -1
  36. package/dist/api/verify.js +9 -8
  37. package/dist/api/verify.js.map +1 -1
  38. package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +27 -4
  39. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +1 -1
  40. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +2 -1
  41. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +2 -1
  42. package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +3 -2
  43. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +3 -2
  44. package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +3 -2
  45. package/dist/cjs/api/hardBlockVerdictCache.cjs +4 -1
  46. package/dist/cjs/api/requestBodySummary.cjs +47 -0
  47. package/dist/cjs/api/verify.cjs +9 -8
  48. package/dist/cjs/pairs.cjs +70 -6
  49. package/dist/cjs/tasks/captchaManager.cjs +16 -0
  50. package/dist/cjs/tasks/detection/bundlePool.cjs +4 -3
  51. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +4 -1
  52. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +21 -6
  53. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +9 -1
  54. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +5 -4
  55. package/dist/cjs/tasks/tasks.cjs +1 -37
  56. package/dist/pairs.d.ts +6 -1
  57. package/dist/pairs.d.ts.map +1 -1
  58. package/dist/pairs.js +67 -7
  59. package/dist/pairs.js.map +1 -1
  60. package/dist/tasks/captchaManager.d.ts.map +1 -1
  61. package/dist/tasks/captchaManager.js +16 -0
  62. package/dist/tasks/captchaManager.js.map +1 -1
  63. package/dist/tasks/detection/bundlePool.d.ts.map +1 -1
  64. package/dist/tasks/detection/bundlePool.js +4 -3
  65. package/dist/tasks/detection/bundlePool.js.map +1 -1
  66. package/dist/tasks/detection/bundlePool.test.js +30 -0
  67. package/dist/tasks/detection/bundlePool.test.js.map +1 -1
  68. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  69. package/dist/tasks/frictionless/frictionlessTasks.js +4 -1
  70. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  71. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  72. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +24 -8
  73. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  74. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  75. package/dist/tasks/powCaptcha/powTasks.js +9 -1
  76. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  77. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  78. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +5 -4
  79. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  80. package/dist/tasks/tasks.d.ts +0 -1
  81. package/dist/tasks/tasks.d.ts.map +1 -1
  82. package/dist/tasks/tasks.js +1 -37
  83. package/dist/tasks/tasks.js.map +1 -1
  84. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.d.ts +2 -0
  85. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.d.ts.map +1 -0
  86. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.js +81 -0
  87. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.js.map +1 -0
  88. package/dist/tests/integration/imgCaptcha.integration.test.js +37 -1
  89. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -1
  90. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js +39 -3
  91. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js.map +1 -1
  92. package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.js +32 -0
  93. package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.js.map +1 -1
  94. package/dist/tests/unit/api/requestBodySummary.unit.test.d.ts +2 -0
  95. package/dist/tests/unit/api/requestBodySummary.unit.test.d.ts.map +1 -0
  96. package/dist/tests/unit/api/requestBodySummary.unit.test.js +172 -0
  97. package/dist/tests/unit/api/requestBodySummary.unit.test.js.map +1 -0
  98. package/dist/tests/unit/pairs.unit.test.js +126 -1
  99. package/dist/tests/unit/pairs.unit.test.js.map +1 -1
  100. package/dist/tests/unit/tasks/captchaManager.unit.test.js +38 -0
  101. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  102. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +0 -8
  103. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
  104. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +236 -17
  105. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
  106. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +70 -14
  107. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
  108. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +27 -1
  109. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
  110. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.d.ts +2 -0
  111. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.d.ts.map +1 -0
  112. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.js +34 -0
  113. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.js.map +1 -0
  114. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +0 -49
  115. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -1
  116. package/dist/tests/unit/util/redisCache.unit.test.js +1 -104
  117. package/dist/tests/unit/util/redisCache.unit.test.js.map +1 -1
  118. package/package.json +23 -23
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/provider@5.13.0 build:cjs
2
+ > @prosopo/provider@5.13.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: .
@@ -32,7 +32,6 @@ ViteCommonJSConfig: .
32
32
  {
33
33
  externals: [
34
34
  '@prosopo/api-route',
35
- The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
36
35
  '@prosopo/logger',
37
36
  '@prosopo/util',
38
37
  '@prosopo/api-express-router',
@@ -56,10 +55,11 @@ ViteCommonJSConfig: .
56
55
  '@prosopo/web-bot-auth'
57
56
  ]
58
57
  }
58
+ The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
59
59
  vite v8.1.5 building ssr environment for production...
60
60
  Bundle build started
61
61
  
62
- ✓ 116 modules transformed.
62
+ ✓ 117 modules transformed.
63
63
  rendering chunks...
64
64
  computing gzip size...
65
65
  dist/cjs/tasks/index.cjs 0.08 kB │ gzip: 0.07 kB
@@ -98,7 +98,6 @@ dist/cjs/schedulers/getClientList.cjs 1
98
98
  dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs 1.33 kB │ gzip: 0.52 kB
99
99
  dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs 1.36 kB │ gzip: 0.52 kB
100
100
  dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs 1.36 kB │ gzip: 0.54 kB
101
- dist/cjs/pairs.cjs 1.39 kB │ gzip: 0.60 kB
102
101
  dist/cjs/tasks/dataset/datasetTasksUtils.cjs 1.42 kB │ gzip: 0.49 kB
103
102
  dist/cjs/tasks/puzzle/backgroundBuffer.cjs 1.44 kB │ gzip: 0.54 kB
104
103
  dist/cjs/utils/clientMetaData.cjs 1.48 kB │ gzip: 0.72 kB
@@ -116,6 +115,7 @@ dist/cjs/tasks/imgCaptcha/imgCaptchaTasksUtils.cjs 1
116
115
  dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs 1.80 kB │ gzip: 0.72 kB
117
116
  dist/cjs/utils/honeypot/phraseBank.cjs 1.87 kB │ gzip: 0.91 kB
118
117
  dist/cjs/api/handshakeTimingMiddleware.cjs 1.88 kB │ gzip: 0.71 kB
118
+ dist/cjs/api/requestBodySummary.cjs 1.96 kB │ gzip: 0.88 kB
119
119
  dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs 2.01 kB │ gzip: 0.78 kB
120
120
  dist/cjs/tasks/frictionless/ipMatch.cjs 2.03 kB │ gzip: 1.03 kB
121
121
  dist/cjs/tasks/spam/updateSpamEmailDomains.cjs 2.12 kB │ gzip: 0.85 kB
@@ -126,21 +126,22 @@ dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs 2
126
126
  dist/cjs/api/captcha/signedAssetsResolver.cjs 2.24 kB │ gzip: 1.00 kB
127
127
  dist/cjs/api/captcha/sealedAssetsResolver.cjs 2.37 kB │ gzip: 0.98 kB
128
128
  dist/cjs/tasks/captchaTypeSelection.cjs 2.44 kB │ gzip: 1.04 kB
129
- dist/cjs/api/admin/apiDnsEventEndpoint.cjs 2.59 kB │ gzip: 1.00 kB
130
129
  dist/cjs/utils/dns.cjs 2.66 kB │ gzip: 1.02 kB
131
130
  dist/cjs/api/forwardVerify.cjs 2.66 kB │ gzip: 1.12 kB
132
131
  dist/cjs/tasks/puzzle/puzzleDifficulty.cjs 2.66 kB │ gzip: 1.10 kB
133
132
  dist/cjs/api/captcha/checkSpamEmail.cjs 2.73 kB │ gzip: 0.95 kB
134
- dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs 2.77 kB │ gzip: 0.99 kB
135
133
  dist/cjs/api/public.cjs 2.79 kB │ gzip: 1.07 kB
136
134
  dist/cjs/api/captcha/maintenanceModeResponses.cjs 2.91 kB │ gzip: 0.77 kB
137
- dist/cjs/api/captcha/submitImageCaptchaSolution.cjs 2.93 kB │ gzip: 1.03 kB
135
+ dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs 2.93 kB │ gzip: 1.01 kB
136
+ dist/cjs/api/captcha/submitImageCaptchaSolution.cjs 3.09 kB │ gzip: 1.06 kB
137
+ dist/cjs/api/admin/apiDnsEventEndpoint.cjs 3.20 kB │ gzip: 1.22 kB
138
138
  dist/cjs/tasks/detection/getBotScore.cjs 3.37 kB │ gzip: 1.33 kB
139
139
  dist/cjs/compositeIpAddress.cjs 3.39 kB │ gzip: 1.36 kB
140
140
  dist/cjs/api/captcha/assetSealFormat.cjs 3.59 kB │ gzip: 1.37 kB
141
141
  dist/cjs/api/captcha/assignDetectorBundle.cjs 3.63 kB │ gzip: 1.37 kB
142
142
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs 3.66 kB │ gzip: 1.35 kB
143
143
  dist/cjs/api/admin/apiAdminRoutesProvider.cjs 3.67 kB │ gzip: 0.62 kB
144
+ dist/cjs/tasks/tasks.cjs 3.82 kB │ gzip: 1.07 kB
144
145
  dist/cjs/api/rawTlsSignalsMiddleware.cjs 3.84 kB │ gzip: 1.16 kB
145
146
  dist/cjs/api/domainMiddleware.cjs 3.85 kB │ gzip: 1.26 kB
146
147
  dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs 4.03 kB │ gzip: 1.60 kB
@@ -148,22 +149,22 @@ dist/cjs/services/ipComparison.cjs 4
148
149
  dist/cjs/tasks/spam/checkSpamEmail.cjs 4.14 kB │ gzip: 1.14 kB
149
150
  dist/cjs/api/captcha/trafficFilterRequestTime.cjs 4.17 kB │ gzip: 1.53 kB
150
151
  dist/cjs/api/cpuProfiler.cjs 4.21 kB │ gzip: 1.78 kB
151
- dist/cjs/api/hardBlockVerdictCache.cjs 4.27 kB │ gzip: 1.70 kB
152
152
  dist/cjs/tasks/puzzle/puzzleRenderer.cjs 4.36 kB │ gzip: 1.55 kB
153
+ dist/cjs/api/hardBlockVerdictCache.cjs 4.39 kB │ gzip: 1.74 kB
153
154
  dist/cjs/api/captcha.cjs 4.51 kB │ gzip: 1.40 kB
154
155
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs 4.56 kB │ gzip: 1.07 kB
156
+ dist/cjs/pairs.cjs 4.64 kB │ gzip: 1.61 kB
155
157
  dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs 4.84 kB │ gzip: 1.74 kB
156
158
  dist/cjs/index.cjs 5.02 kB │ gzip: 1.05 kB
157
- dist/cjs/tasks/tasks.cjs 5.07 kB │ gzip: 1.57 kB
158
159
  dist/cjs/tasks/detection/decoderPool.cjs 5.47 kB │ gzip: 2.06 kB
159
160
  dist/cjs/util/usageCounters.cjs 5.72 kB │ gzip: 2.03 kB
160
- dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs 6.73 kB │ gzip: 1.89 kB
161
+ dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs 6.85 kB │ gzip: 1.92 kB
161
162
  dist/cjs/api/healthzGeo.cjs 7.03 kB │ gzip: 2.70 kB
162
163
  dist/cjs/api/captcha/getImageCaptchaChallenge.cjs 7.39 kB │ gzip: 2.06 kB
163
164
  dist/cjs/tasks/spam/checkTrafficFilter.cjs 7.47 kB │ gzip: 2.48 kB
164
- dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs 7.56 kB │ gzip: 2.03 kB
165
- dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs 9.12 kB │ gzip: 2.71 kB
166
- dist/cjs/tasks/detection/bundlePool.cjs 9.24 kB │ gzip: 3.37 kB
165
+ dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs 7.67 kB │ gzip: 2.05 kB
166
+ dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs 9.28 kB │ gzip: 2.74 kB
167
+ dist/cjs/tasks/detection/bundlePool.cjs 9.29 kB │ gzip: 3.38 kB
167
168
  dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs 10.33 kB │ gzip: 1.82 kB
168
169
  dist/cjs/api/startProviderApi.cjs 11.73 kB │ gzip: 3.72 kB
169
170
  dist/cjs/tasks/client/clientTasks.cjs 11.73 kB │ gzip: 3.04 kB
@@ -171,15 +172,15 @@ dist/cjs/api/metrics.cjs 11
171
172
  dist/cjs/tasks/decisionMachine/decisionMachineRunner.cjs 12.69 kB │ gzip: 3.91 kB
172
173
  dist/cjs/util.cjs 13.15 kB │ gzip: 3.26 kB
173
174
  dist/cjs/api/blacklistRequestInspector.cjs 13.39 kB │ gzip: 4.50 kB
174
- dist/cjs/api/verify.cjs 16.79 kB │ gzip: 2.93 kB
175
- dist/cjs/tasks/frictionless/frictionlessTasks.cjs 18.37 kB │ gzip: 4.89 kB
176
- dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs 20.05 kB │ gzip: 4.59 kB
177
- dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs 24.12 kB │ gzip: 5.17 kB
178
- dist/cjs/tasks/captchaManager.cjs 24.62 kB │ gzip: 7.42 kB
179
- dist/cjs/tasks/powCaptcha/powTasks.cjs 25.55 kB │ gzip: 6.16 kB
180
- dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs 27.94 kB │ gzip: 6.36 kB
175
+ dist/cjs/api/verify.cjs 17.22 kB │ gzip: 2.97 kB
176
+ dist/cjs/tasks/frictionless/frictionlessTasks.cjs 18.43 kB │ gzip: 4.88 kB
177
+ dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs 20.15 kB │ gzip: 4.63 kB
178
+ dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs 24.26 kB │ gzip: 5.18 kB
179
+ dist/cjs/tasks/captchaManager.cjs 25.12 kB │ gzip: 7.48 kB
180
+ dist/cjs/tasks/powCaptcha/powTasks.cjs 25.99 kB │ gzip: 6.23 kB
181
+ dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs 28.88 kB │ gzip: 6.55 kB
181
182
 
182
- ✓ built in 191ms
183
+ ✓ built in 194ms
183
184
  [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
184
185
  [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
185
186
  [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@5.13.0 build:tsc
2
+ > @prosopo/provider@5.13.2 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 9:06:33 AM - Projects in this build:
5
+ 9:57:12 AM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../util/tsconfig.json
8
8
  * ../logger/tsconfig.json
@@ -28,53 +28,53 @@
28
28
  * ../web-bot-auth/tsconfig.json
29
29
  * tsconfig.json
30
30
 
31
- 9:06:33 AM - 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'
31
+ 9:57:12 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/vite.frontend.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
32
32
 
33
- 9:06:33 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
33
+ 9:57:12 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/verifyRecency.ts' is older than output '../util/tsconfig.tsbuildinfo'
34
34
 
35
- 9:06:33 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
35
+ 9:57:12 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/tests/loggerBrowser.unit.test.ts' is older than output '../logger/tsconfig.tsbuildinfo'
36
36
 
37
- 9:06:33 AM - 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'
37
+ 9:57:12 AM - 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'
38
38
 
39
- 9:06:33 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
39
+ 9:57:12 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/util.ts' is older than output '../locale/tsconfig.tsbuildinfo'
40
40
 
41
- 9:06:33 AM - 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'
41
+ 9:57:12 AM - 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'
42
42
 
43
- 9:06:33 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
43
+ 9:57:12 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
44
44
 
45
- 9:06:33 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
45
+ 9:57:12 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
46
46
 
47
- 9:06:33 AM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/types.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
47
+ 9:57:12 AM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
48
48
 
49
- 9:06:33 AM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/redisClient.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
49
+ 9:57:12 AM - 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'
50
50
 
51
- 9:06:33 AM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
51
+ 9:57:12 AM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/tests/apiHarness.ts' is older than output '../api/tsconfig.tsbuildinfo'
52
52
 
53
- 9:06:33 AM - 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'
53
+ 9:57:12 AM - 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'
54
54
 
55
- 9:06:33 AM - 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'
55
+ 9:57:12 AM - 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'
56
56
 
57
- 9:06:33 AM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/captchaLabel.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
57
+ 9:57:12 AM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/captchaLabel.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
58
58
 
59
- 9:06:33 AM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
59
+ 9:57:12 AM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
60
60
 
61
- 9:06:33 AM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/index.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
61
+ 9:57:12 AM - 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'
62
62
 
63
- 9:06:33 AM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
63
+ 9:57:12 AM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
64
64
 
65
- 9:06:33 AM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/tests/unit/testDoubles.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
65
+ 9:57:12 AM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/tests/unit/apiExpressDefaultEndpointAdapter.unit.test.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
66
66
 
67
- 9:06:33 AM - Project '../captcha-severity/tsconfig.json' is up to date because newest input '../captcha-severity/src/index.test.ts' is older than output '../captcha-severity/tsconfig.tsbuildinfo'
67
+ 9:57:12 AM - Project '../captcha-severity/tsconfig.json' is up to date because newest input '../captcha-severity/src/index.test.ts' is older than output '../captcha-severity/tsconfig.tsbuildinfo'
68
68
 
69
- 9:06:33 AM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
69
+ 9:57:12 AM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/tests/mocks/data/captchas.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
70
70
 
71
- 9:06:33 AM - 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'
71
+ 9:57:12 AM - 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'
72
72
 
73
- 9:06:33 AM - Project '../puzzle-assets/tsconfig.json' is up to date because newest input '../puzzle-assets/src/background.ts' is older than output '../puzzle-assets/tsconfig.tsbuildinfo'
73
+ 9:57:12 AM - Project '../puzzle-assets/tsconfig.json' is up to date because newest input '../puzzle-assets/src/background.ts' is older than output '../puzzle-assets/tsconfig.tsbuildinfo'
74
74
 
75
- 9:06:33 AM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/base64.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
75
+ 9:57:12 AM - Project '../web-bot-auth/tsconfig.json' is up to date because newest input '../web-bot-auth/src/verify.ts' is older than output '../web-bot-auth/tsconfig.tsbuildinfo'
76
76
 
77
- 9:06:33 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
77
+ 9:57:12 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
78
78
 
79
- 9:06:33 AM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
79
+ 9:57:12 AM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
80
80
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/provider@5.13.0 build
2
+ > @prosopo/provider@5.13.2 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/provider@5.13.0 build:cross-env
6
+ > @prosopo/provider@5.13.2 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -63,7 +63,7 @@ ViteEsmConfig: .
63
63
  vite v8.1.5 building ssr environment for production...
64
64
  Bundle build started
65
65
  
66
- ✓ 116 modules transformed.
66
+ ✓ 117 modules transformed.
67
67
  rendering chunks...
68
68
  computing gzip size...
69
69
  dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
@@ -98,7 +98,6 @@ dist/api/admin/apiRemoveSiteKeyEndpoint.js 1.08 k
98
98
  dist/api/block.js 1.08 kB │ gzip: 0.46 kB
99
99
  dist/schedulers/captchaScheduler.js 1.11 kB │ gzip: 0.48 kB
100
100
  dist/utils/normalizeRequestIp.js 1.14 kB │ gzip: 0.52 kB
101
- dist/pairs.js 1.19 kB │ gzip: 0.58 kB
102
101
  dist/schedulers/getClientList.js 1.19 kB │ gzip: 0.53 kB
103
102
  dist/api/admin/apiGetDecisionMachineEndpoint.js 1.26 kB │ gzip: 0.50 kB
104
103
  dist/tasks/puzzle/backgroundBuffer.js 1.26 kB │ gzip: 0.51 kB
@@ -122,6 +121,7 @@ dist/utils/honeypot/phraseBank.js 1.69 k
122
121
  dist/api/handshakeTimingMiddleware.js 1.75 kB │ gzip: 0.69 kB
123
122
  dist/tasks/spam/updateSpamEmailDomains.js 1.87 kB │ gzip: 0.77 kB
124
123
  dist/api/admin/apiClearAllCountersEndpoint.js 1.89 kB │ gzip: 0.76 kB
124
+ dist/api/requestBodySummary.js 1.94 kB │ gzip: 0.88 kB
125
125
  dist/tasks/frictionless/ipMatch.js 1.98 kB │ gzip: 1.02 kB
126
126
  dist/api/captcha/signedAssetsResolver.js 2.08 kB │ gzip: 0.98 kB
127
127
  dist/migrations/frictionlessLadder.js 2.12 kB │ gzip: 0.93 kB
@@ -132,20 +132,21 @@ dist/tasks/frictionless/routingMachine.js 2.20 k
132
132
  dist/tasks/captchaTypeSelection.js 2.22 kB │ gzip: 1.03 kB
133
133
  dist/api/captcha/sealedAssetsResolver.js 2.26 kB │ gzip: 0.97 kB
134
134
  dist/utils/dns.js 2.36 kB │ gzip: 0.95 kB
135
- dist/api/admin/apiDnsEventEndpoint.js 2.43 kB │ gzip: 0.96 kB
136
135
  dist/api/public.js 2.45 kB │ gzip: 0.98 kB
137
136
  dist/api/captcha/checkSpamEmail.js 2.47 kB │ gzip: 0.91 kB
138
137
  dist/tasks/puzzle/puzzleDifficulty.js 2.50 kB │ gzip: 1.09 kB
139
- dist/api/captcha/submitPuzzleCaptchaSolution.js 2.55 kB │ gzip: 0.96 kB
140
138
  dist/api/forwardVerify.js 2.59 kB │ gzip: 1.10 kB
141
- dist/api/captcha/submitImageCaptchaSolution.js 2.59 kB │ gzip: 1.00 kB
139
+ dist/api/captcha/submitPuzzleCaptchaSolution.js 2.65 kB │ gzip: 0.99 kB
140
+ dist/api/captcha/submitImageCaptchaSolution.js 2.69 kB │ gzip: 1.03 kB
142
141
  dist/api/admin/apiAdminRoutesProvider.js 2.78 kB │ gzip: 0.55 kB
143
142
  dist/index.js 2.95 kB │ gzip: 0.81 kB
143
+ dist/api/admin/apiDnsEventEndpoint.js 3.05 kB │ gzip: 1.18 kB
144
144
  dist/compositeIpAddress.js 3.15 kB │ gzip: 1.34 kB
145
145
  dist/tasks/detection/getBotScore.js 3.29 kB │ gzip: 1.32 kB
146
146
  dist/api/captcha/assetSealFormat.js 3.38 kB │ gzip: 1.34 kB
147
147
  dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js 3.39 kB │ gzip: 1.32 kB
148
148
  dist/api/captcha/assignDetectorBundle.js 3.40 kB │ gzip: 1.34 kB
149
+ dist/tasks/tasks.js 3.44 kB │ gzip: 1.01 kB
149
150
  dist/api/domainMiddleware.js 3.52 kB │ gzip: 1.22 kB
150
151
  dist/api/rawTlsSignalsMiddleware.js 3.69 kB │ gzip: 1.13 kB
151
152
  dist/tasks/spam/evaluateEmailSpamRules.js 3.84 kB │ gzip: 1.59 kB
@@ -155,19 +156,19 @@ dist/services/ipComparison.js 4.04 k
155
156
  dist/api/captcha.js 4.05 kB │ gzip: 1.31 kB
156
157
  dist/tasks/spam/checkSpamEmail.js 4.12 kB │ gzip: 1.12 kB
157
158
  dist/api/cpuProfiler.js 4.12 kB │ gzip: 1.77 kB
158
- dist/api/hardBlockVerdictCache.js 4.14 kB │ gzip: 1.69 kB
159
+ dist/api/hardBlockVerdictCache.js 4.26 kB │ gzip: 1.72 kB
160
+ dist/pairs.js 4.27 kB │ gzip: 1.57 kB
159
161
  dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js 4.35 kB │ gzip: 1.07 kB
160
- dist/tasks/tasks.js 4.69 kB │ gzip: 1.51 kB
161
162
  dist/tasks/dnsEvent/enrichDnsEvent.js 4.71 kB │ gzip: 1.72 kB
162
163
  dist/tasks/detection/decoderPool.js 5.34 kB │ gzip: 2.02 kB
163
164
  dist/util/usageCounters.js 5.65 kB │ gzip: 2.01 kB
164
- dist/api/captcha/getPoWCaptchaChallenge.js 6.09 kB │ gzip: 1.83 kB
165
+ dist/api/captcha/getPoWCaptchaChallenge.js 6.17 kB │ gzip: 1.85 kB
165
166
  dist/api/captcha/getImageCaptchaChallenge.js 6.61 kB │ gzip: 2.00 kB
166
- dist/api/captcha/getPuzzleCaptchaChallenge.js 6.84 kB │ gzip: 1.97 kB
167
167
  dist/api/healthzGeo.js 6.86 kB │ gzip: 2.68 kB
168
+ dist/api/captcha/getPuzzleCaptchaChallenge.js 6.92 kB │ gzip: 1.99 kB
168
169
  dist/tasks/spam/checkTrafficFilter.js 7.16 kB │ gzip: 2.45 kB
169
- dist/api/captcha/submitPoWCaptchaSolution.js 8.60 kB │ gzip: 2.66 kB
170
- dist/tasks/detection/bundlePool.js 8.80 kB │ gzip: 3.32 kB
170
+ dist/api/captcha/submitPoWCaptchaSolution.js 8.70 kB │ gzip: 2.69 kB
171
+ dist/tasks/detection/bundlePool.js 8.86 kB │ gzip: 3.34 kB
171
172
  dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js 9.36 kB │ gzip: 1.80 kB
172
173
  dist/api/startProviderApi.js 10.02 kB │ gzip: 3.45 kB
173
174
  dist/api/metrics.js 11.27 kB │ gzip: 3.53 kB
@@ -175,15 +176,15 @@ dist/tasks/client/clientTasks.js 11.27 k
175
176
  dist/tasks/decisionMachine/decisionMachineRunner.js 12.28 kB │ gzip: 3.85 kB
176
177
  dist/util.js 12.47 kB │ gzip: 3.20 kB
177
178
  dist/api/blacklistRequestInspector.js 12.75 kB │ gzip: 4.46 kB
178
- dist/api/verify.js 15.12 kB │ gzip: 2.82 kB
179
- dist/tasks/frictionless/frictionlessTasks.js 17.80 kB │ gzip: 4.86 kB
180
- dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 18.54 kB │ gzip: 4.48 kB
181
- dist/tasks/puzzleCaptcha/puzzleTasks.js 22.71 kB │ gzip: 5.12 kB
182
- dist/tasks/captchaManager.js 24.12 kB │ gzip: 7.34 kB
183
- dist/tasks/powCaptcha/powTasks.js 24.13 kB │ gzip: 6.12 kB
184
- dist/tasks/imgCaptcha/imgCaptchaTasks.js 26.42 kB │ gzip: 6.30 kB
179
+ dist/api/verify.js 15.32 kB │ gzip: 2.84 kB
180
+ dist/tasks/frictionless/frictionlessTasks.js 17.86 kB │ gzip: 4.86 kB
181
+ dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 18.63 kB │ gzip: 4.53 kB
182
+ dist/tasks/puzzleCaptcha/puzzleTasks.js 22.85 kB │ gzip: 5.14 kB
183
+ dist/tasks/powCaptcha/powTasks.js 24.56 kB │ gzip: 6.17 kB
184
+ dist/tasks/captchaManager.js 24.61 kB │ gzip: 7.41 kB
185
+ dist/tasks/imgCaptcha/imgCaptchaTasks.js 27.39 kB │ gzip: 6.51 kB
185
186
 
186
- ✓ built in 484ms
187
+ ✓ built in 185ms
187
188
  [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
188
189
  [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
189
190
  [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,118 @@
1
1
  # @prosopo/provider
2
2
 
3
+ ## 5.13.2
4
+ ### Patch Changes
5
+
6
+ - f650c66: A Web Bot Auth (authenticated) token can now only be verified once, even when several verify requests for it arrive at the same time. Before, the provider checked whether the session was already used and then marked it used in a separate step, so parallel verifies could all return `verified: true`. Marking the session used is now a single conditional database write, and only the request that wins it is verified; the rest get `API.USER_ALREADY_VERIFIED`.
7
+ - e482b25: When a captcha challenge, solution or verify request fails to parse, the provider now logs a short summary of the body (its type, size, top-level keys and a preview of at most 512 characters) instead of the whole body. Signature, token, secret, proof, salt, email, password and IP fields are replaced with `[redacted]` in the preview, however deeply they are nested. Before, a caller could post a body close to the 1 MB limit and have all of it copied into the logs, including any tokens and signatures it carried.
8
+ - 8933ad5: Build the proofs returned after a passed image captcha from the right leaves, and refuse to build a proof for a hash that is not a leaf.
9
+
10
+ The provider asked the commitment tree for a proof of each captcha ID, but the tree's leaves are solution hashes, so no captcha ID is ever a leaf. `proof()` did not check, and returned a proof that linked nothing to the root. The provider now asks for a proof of each leaf, and `proof()` throws `DATASET.MERKLE_ERROR` when the hash is not a leaf. Several merkle tests that could never fail (`expect(x > -1)`) now assert properly.
11
+ - 026b126: A PoW captcha challenge can now only be submitted once. Before, submitting the same solved challenge again after the site's server had verified the token reset the record to "not yet checked", so the same token could pass server verification a second time for as long as the verify window lasted. Puzzle captchas already refused a second submission, and PoW now does the same.
12
+ - 0c8678e: The DNS event ingest endpoint now checks each event on its own. One malformed event used to make
13
+ the whole batch fail validation, so every good event sent alongside it was lost. Bad events are now
14
+ dropped and counted, the rest are stored, and the response reports how many were dropped. A single
15
+ warning names up to five of the dropped events and why they failed.
16
+ - b77c5f4: The image captcha widget now tells the provider whether each tile, and the checkbox, was picked with a mouse or finger or with the keyboard. Keyboard presses have no screen position, so they all arrive as (0, 0). The provider used to see those repeats as a script clicking the same pixel and reject people who solve with the keyboard. It now looks for repeated positions among pointer selections only. It rejects a keyboard selection that claims a position. Requests from older widgets, which send no input method, are checked as strictly as before. The input method is stored on the commitment next to the coordinates.
17
+ - 7065689: Removed the Redis session write queue. Nothing ever put a session on it, yet every provider polled Redis for it every 10 seconds, and its drain step could duplicate, drop or delete records if it had ever been used. `RedisWriteQueue` loses `queueSessionRecord`, `drainSessionRecords`, `startPeriodicFlush` and `stopPeriodicFlush`, and `Tasks.flushWriteQueue` is gone. The session read cache is unchanged.
18
+ - 9318584: A frictionless session can now only be used by the site it was issued for. Before, a session created on one site, for example one set up for easy PoW, could be passed with a request for a different site and the provider would issue the captcha type and difficulty chosen for the first site. The provider now refuses the session when its site key does not match the site asking for a captcha, with the same "no session found" answer it gives for an unknown session.
19
+ - 084da7e: Changing an access rule now reliably clears the provider's cached block verdicts. A verdict lookup that was already running when the rules changed used to finish afterwards and write the old answer back into the cache, so a just-deleted block rule could keep blocking (or a just-added one keep allowing) for up to ten more seconds. Lookups that started before the change no longer write their result, and new requests no longer wait on them.
20
+ - fa316d6: A captcha token now verifies at most once even when a site's server sends several verify requests for it at the same moment. Before, each request read the record, saw it had not been checked yet, and then marked it checked, so every request that arrived before the first write finished was accepted. Marking a PoW, puzzle or image result as checked is now a single conditional write, and only the request that wins it is verified. The same applies to image captcha submissions: a request hash can now only be spent by one submission, so answers can no longer be tried in parallel against one challenge.
21
+ - 9ed0ac5: Web Bot Auth signatures are now held to the replay window the spec requires. A signature must carry `created`, `expires` and `tag="web-bot-auth"`. It is rejected if it was created in the future (allowing 5s of clock skew) or if it stays valid for more than 24 hours. Before this, a signature with no `expires` could be replayed forever.
22
+
23
+ The signer key directory is fetched more carefully, since its URL comes from a request header:
24
+ - The URL must be https and a public hostname. IP literals, localhost and dotless hosts are refused, except in test and development.
25
+ - The fetch times out after 3s and does not follow redirects.
26
+ - The body is capped at 64KiB.
27
+ - The cache holds at most 1000 entries, each for at most 24 hours.
28
+ - Updated dependencies [f650c66]
29
+ - Updated dependencies [59b7e87]
30
+ - Updated dependencies [b5e55a6]
31
+ - Updated dependencies [e5aefc6]
32
+ - Updated dependencies [d528f41]
33
+ - Updated dependencies [8933ad5]
34
+ - Updated dependencies [5375d10]
35
+ - Updated dependencies [294b480]
36
+ - Updated dependencies [0a4ae2f]
37
+ - Updated dependencies [0c8678e]
38
+ - Updated dependencies [b77c5f4]
39
+ - Updated dependencies [4109641]
40
+ - Updated dependencies [7065689]
41
+ - Updated dependencies [dab0338]
42
+ - Updated dependencies [dffecf0]
43
+ - Updated dependencies [0d29dde]
44
+ - Updated dependencies [fa316d6]
45
+ - Updated dependencies [9ed0ac5]
46
+ - @prosopo/database@4.1.0
47
+ - @prosopo/types-database@5.7.0
48
+ - @prosopo/types@5.11.0
49
+ - @prosopo/common@3.1.60
50
+ - @prosopo/load-balancer@2.11.2
51
+ - @prosopo/captcha-severity@1.1.2
52
+ - @prosopo/datasets@3.1.92
53
+ - @prosopo/locale@3.6.1
54
+ - @prosopo/native-ja4@0.0.7
55
+ - @prosopo/redis-client@1.0.38
56
+ - @prosopo/api@4.3.6
57
+ - @prosopo/util@3.3.12
58
+ - @prosopo/web-bot-auth@0.1.3
59
+ - @prosopo/env@3.6.65
60
+ - @prosopo/types-env@2.11.11
61
+ - @prosopo/api-express-router@3.1.96
62
+ - @prosopo/ipinfo@0.4.11
63
+ - @prosopo/keyring@2.9.98
64
+ - @prosopo/user-access-policy@3.14.12
65
+ - @prosopo/api-route@2.6.61
66
+ - @prosopo/logger@2.1.1
67
+
68
+ ## 5.13.1
69
+ ### Patch Changes
70
+
71
+ - fda0eba: Decision machines can now see which page the captcha was rendered on. `currentUrl` (the top-frame page) and `iframeUrl` (the widget's own frame, when embedded) were already stored on the session and already read back from the database, but the verify-time path never passed them to the decision machine, so rules always saw them as undefined.
72
+
73
+ They are now forwarded on all three verify paths (image, PoW and puzzle). No behaviour changes on its own — it just makes the fields available to rules that need to treat an embedded widget differently from a first-party one.
74
+
75
+ Both values are reported by the client and are not checked against the request's Origin or Referer header, so a rule must not hand out an exemption on the strength of these fields alone.
76
+ - 1728cd0: Carry the detector bundle's `keyMap` through the pool push.
77
+
78
+ `keyMap` is an opaque per-bundle decode parameter, written alongside each
79
+ bundle by the pool build and meaningless without it — the same contract as
80
+ `payloadLayout`. The admin pool-replace body schema never declared it, so zod
81
+ stripped it from every push, and the endpoint's persist step then wrote the
82
+ bundle back to disk without it.
83
+
84
+ The result was a pool the provider served but could not decode: the push
85
+ returned success with `persisted: true`, the bundles loaded and sessions were
86
+ assigned them, but what they produced could not be read. Pools copied onto the
87
+ volume were unaffected, because that path never goes through the schema.
88
+
89
+ Adds `keyMap` to `ReplaceDetectorPoolBody` and writes it in
90
+ `persistDetectorBundlePool`.
91
+ - 20542d8: Send page scroll events with the captcha's behavioural data.
92
+
93
+ The widget now passes a fourth collector, the page's scroll position and the
94
+ time of each scroll, alongside mouse, touch and click data, and the provider
95
+ stores it as `c4` on the captcha record. People scroll in uneven bursts while
96
+ bots tend to scroll at a steady rate, so this gives detection something to
97
+ work with. Detector bundles that predate the scroll tracker simply send no
98
+ `c4`.
99
+ - Updated dependencies [fda0eba]
100
+ - Updated dependencies [1728cd0]
101
+ - Updated dependencies [20542d8]
102
+ - Updated dependencies [eebe6ee]
103
+ - @prosopo/types@5.10.2
104
+ - @prosopo/types-database@5.6.5
105
+ - @prosopo/api@4.3.5
106
+ - @prosopo/api-express-router@3.1.95
107
+ - @prosopo/database@4.0.41
108
+ - @prosopo/datasets@3.1.91
109
+ - @prosopo/env@3.6.64
110
+ - @prosopo/ipinfo@0.4.10
111
+ - @prosopo/keyring@2.9.97
112
+ - @prosopo/load-balancer@2.11.1
113
+ - @prosopo/types-env@2.11.10
114
+ - @prosopo/user-access-policy@3.14.11
115
+
3
116
  ## 5.13.0
4
117
  ### Minor Changes
5
118
 
@@ -1,10 +1,10 @@
1
1
  import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
2
2
  import type { IIpInfoService } from "@prosopo/ipinfo";
3
3
  import { type Logger } from "@prosopo/logger";
4
- import { type DnsEvent, DnsEventBatchSchema } from "@prosopo/types";
4
+ import { type DnsEvent, DnsEventIngestBatchSchema } from "@prosopo/types";
5
5
  import type { IProviderDatabase } from "@prosopo/types-database";
6
6
  import type { z } from "zod";
7
- type DnsEventBatchSchemaType = typeof DnsEventBatchSchema;
7
+ type DnsEventBatchSchemaType = typeof DnsEventIngestBatchSchema;
8
8
  export declare const dnsEventToFields: (event: DnsEvent) => {
9
9
  resolverIp?: string;
10
10
  peerIp?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"apiDnsEventEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B,KAAK,uBAAuB,GAAG,OAAO,mBAAmB,CAAC;AAG1D,eAAO,MAAM,gBAAgB,UACrB,QAAQ,KACb;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAW7D,CAAC;AAEF,cAAM,mBAAoB,YAAW,WAAW,CAAC,uBAAuB,CAAC;IAEvE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADd,EAAE,EAAE,iBAAiB,EACrB,aAAa,CAAC,EAAE,cAAc,YAAA;IAG1C,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,EACtC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAgDxB,oBAAoB,IAAI,uBAAuB;YAIxC,qBAAqB;CAkCnC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"apiDnsEventEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACN,KAAK,QAAQ,EACb,yBAAyB,EAEzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAU7B,KAAK,uBAAuB,GAAG,OAAO,yBAAyB,CAAC;AAGhE,eAAO,MAAM,gBAAgB,UACrB,QAAQ,KACb;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAW7D,CAAC;AAEF,cAAM,mBAAoB,YAAW,WAAW,CAAC,uBAAuB,CAAC;IAEvE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADd,EAAE,EAAE,iBAAiB,EACrB,aAAa,CAAC,EAAE,cAAc,YAAA;IAG1C,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,EACtC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAuExB,oBAAoB,IAAI,uBAAuB;YAIxC,qBAAqB;CAkCnC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { computeDnsAsymmetry, enrichDnsEvent } from "../../tasks/dnsEvent/enrichDnsEvent.js";
2
2
  import { getLogger } from "@prosopo/logger";
3
- import { DnsEventBatchSchema } from "@prosopo/types";
3
+ import { DnsEventIngestBatchSchema, DnsEventSchema } from "@prosopo/types";
4
4
  import { ApiEndpointResponseStatus } from "@prosopo/api-route";
5
5
  //#region src/api/admin/apiDnsEventEndpoint.ts
6
+ var MAX_LOGGED_INVALID = 5;
6
7
  var dnsEventToFields = (event) => {
7
8
  if (event.kind === "dns") return { resolverIp: event.src_ip };
8
9
  const out = { peerIp: event.src_ip };
@@ -19,8 +20,20 @@ var ApiDnsEventEndpoint = class {
19
20
  const { events } = args;
20
21
  let stored = 0;
21
22
  let errors = 0;
23
+ let dropped = 0;
24
+ const invalid = [];
22
25
  const now = /* @__PURE__ */ new Date();
23
- for (const event of events) {
26
+ for (const [index, raw] of events.entries()) {
27
+ const parsed = DnsEventSchema.safeParse(raw);
28
+ if (!parsed.success) {
29
+ dropped += 1;
30
+ if (invalid.length < MAX_LOGGED_INVALID) invalid.push({
31
+ index,
32
+ issues: parsed.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`)
33
+ });
34
+ continue;
35
+ }
36
+ const event = parsed.data;
24
37
  const sessionId = event.jti;
25
38
  if (!sessionId) continue;
26
39
  try {
@@ -41,11 +54,20 @@ var ApiDnsEventEndpoint = class {
41
54
  }));
42
55
  }
43
56
  }
57
+ if (dropped > 0) logger.warn(() => ({
58
+ data: {
59
+ received: events.length,
60
+ dropped,
61
+ invalid
62
+ },
63
+ msg: "Dropped invalid DNS events from batch"
64
+ }));
44
65
  logger.info(() => ({
45
66
  data: {
46
67
  received: events.length,
47
68
  stored,
48
- errors
69
+ errors,
70
+ dropped
49
71
  },
50
72
  msg: "Processed DNS event batch"
51
73
  }));
@@ -53,12 +75,13 @@ var ApiDnsEventEndpoint = class {
53
75
  status: ApiEndpointResponseStatus.SUCCESS,
54
76
  data: {
55
77
  stored,
56
- errors
78
+ errors,
79
+ dropped
57
80
  }
58
81
  };
59
82
  }
60
83
  getRequestArgsSchema() {
61
- return DnsEventBatchSchema;
84
+ return DnsEventIngestBatchSchema;
62
85
  }
63
86
  async recomputeDnsAsymmetry(sessionId, logger) {
64
87
  if (!this.ipInfoService) return;
@@ -1 +1 @@
1
- {"version":3,"file":"apiDnsEventEndpoint.js","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiDnsEventEndpoint.js","sourceRoot":"","sources":["../../../src/api/admin/apiDnsEventEndpoint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/api/captcha/getFrictionlessCaptchaChallenge/handler.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;8BAuCtD,mBAAmB,0BACA,kBAAkB,WAGpC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAPpB,wBAq3BG"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/api/captcha/getFrictionlessCaptchaChallenge/handler.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;8BAuCtD,mBAAmB,0BACA,kBAAkB,WAGpC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAPpB,wBA43BG"}
@@ -237,7 +237,7 @@ var handler_default = (env, userAccessRulesStorage) => async (req, res, next) =>
237
237
  method: req.method,
238
238
  url: `https://${req.headers.host ?? ""}${req.originalUrl ?? req.url}`,
239
239
  headers: flatten(req.headers)
240
- });
240
+ }, { allowLocalSigners: process.env.NODE_ENV === "test" || process.env.NODE_ENV === "development" });
241
241
  const verifiedSignerUrl = verified.verified ? verified.signerUrl : void 0;
242
242
  const userScope = getRequestUserScope(flatten(req.headers), req.ja4, normalizedIp, user, void 0, void 0, countryCode, asn, verifiedSignerUrl);
243
243
  const [decryptedPayload, validation, accessPolicies] = await Promise.all([