@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
@@ -3,6 +3,7 @@ import { Tasks } from "../tasks/tasks.js";
3
3
  import { getMaintenanceMode } from "./admin/apiToggleMaintenanceModeEndpoint.js";
4
4
  import { isReservedTestSiteKey, resolveTestSiteKeyVerdict } from "./testSiteKey.js";
5
5
  import { buildMaintenanceVerificationResponse } from "./captcha/maintenanceModeResponses.js";
6
+ import { summariseRequestBody } from "./requestBodySummary.js";
6
7
  import { forwardVerifyIfNotIssuer } from "./forwardVerify.js";
7
8
  import { ProsopoApiError } from "@prosopo/common";
8
9
  import { ApiParams, CaptchaType, ClientApiPaths, ServerPowCaptchaVerifyRequestBody, ServerPuzzleCaptchaVerifyRequestBody, VerifySolutionBody, decodeProcaptchaOutput } from "@prosopo/types";
@@ -87,7 +88,7 @@ function prosopoVerifyRouter(env) {
87
88
  context: {
88
89
  code: 400,
89
90
  error: err,
90
- body: req.body
91
+ body: summariseRequestBody(req)
91
92
  },
92
93
  i18n: req.i18n,
93
94
  logger: req.logger
@@ -138,7 +139,7 @@ function prosopoVerifyRouter(env) {
138
139
  req.logger.error(() => ({
139
140
  err,
140
141
  msg: "Error in verifyImageCaptchaSolution",
141
- data: { body: req.body }
142
+ data: { body: summariseRequestBody(req) }
142
143
  }));
143
144
  return next(new ProsopoApiError("API.BAD_REQUEST", {
144
145
  context: {
@@ -172,7 +173,7 @@ function prosopoVerifyRouter(env) {
172
173
  context: {
173
174
  code: 400,
174
175
  error: err,
175
- body: req.body
176
+ body: summariseRequestBody(req)
176
177
  },
177
178
  i18n: req.i18n,
178
179
  logger: req.logger
@@ -228,7 +229,7 @@ function prosopoVerifyRouter(env) {
228
229
  req.logger.error(() => ({
229
230
  msg: "Error in verifyPowCaptchaSolution",
230
231
  err,
231
- data: { body: req.body }
232
+ data: { body: summariseRequestBody(req) }
232
233
  }));
233
234
  return next(new ProsopoApiError("API.BAD_REQUEST", {
234
235
  context: {
@@ -261,7 +262,7 @@ function prosopoVerifyRouter(env) {
261
262
  context: {
262
263
  code: 400,
263
264
  error: err,
264
- body: req.body
265
+ body: summariseRequestBody(req)
265
266
  },
266
267
  i18n: req.i18n,
267
268
  logger: req.logger
@@ -317,7 +318,7 @@ function prosopoVerifyRouter(env) {
317
318
  req.logger.error(() => ({
318
319
  msg: "Error in verifyPuzzleCaptchaSolution",
319
320
  err,
320
- data: { body: req.body }
321
+ data: { body: summariseRequestBody(req) }
321
322
  }));
322
323
  return next(new ProsopoApiError("API.BAD_REQUEST", {
323
324
  context: {
@@ -350,7 +351,7 @@ function prosopoVerifyRouter(env) {
350
351
  context: {
351
352
  code: 400,
352
353
  error: err,
353
- body: req.body
354
+ body: summariseRequestBody(req)
354
355
  },
355
356
  i18n: req.i18n,
356
357
  logger: req.logger
@@ -399,7 +400,7 @@ function prosopoVerifyRouter(env) {
399
400
  req.logger.error(() => ({
400
401
  err,
401
402
  msg: "Error in verifyAuthenticatedSession",
402
- data: { body: req.body }
403
+ data: { body: summariseRequestBody(req) }
403
404
  }));
404
405
  return next(new ProsopoApiError("API.BAD_REQUEST", {
405
406
  context: {
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ let _prosopo_logger = require("@prosopo/logger");
3
3
  let _prosopo_types = require("@prosopo/types");
4
4
  let _prosopo_api_route = require("@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 = _prosopo_types.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: _prosopo_api_route.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 _prosopo_types.DnsEventBatchSchema;
84
+ return _prosopo_types.DnsEventIngestBatchSchema;
62
85
  }
63
86
  async recomputeDnsAsymmetry(sessionId, logger) {
64
87
  if (!this.ipInfoService) return;
@@ -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: (0, _prosopo_util.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 = require_blacklistRequestInspector.getRequestUserScope((0, _prosopo_util.flatten)(req.headers), req.ja4, normalizedIp, user, void 0, void 0, countryCode, asn, verifiedSignerUrl);
243
243
  const [decryptedPayload, validation, accessPolicies] = await Promise.all([
@@ -8,6 +8,7 @@ const require_testSiteKey = require("../testSiteKey.cjs");
8
8
  const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
9
9
  const require_maintenanceModeResponses = require("./maintenanceModeResponses.cjs");
10
10
  const require_trafficFilterRequestTime = require("./trafficFilterRequestTime.cjs");
11
+ const require_requestBodySummary = require("../requestBodySummary.cjs");
11
12
  let _prosopo_common = require("@prosopo/common");
12
13
  let _prosopo_types = require("@prosopo/types");
13
14
  let _prosopo_util = require("@prosopo/util");
@@ -130,7 +131,7 @@ var getPoWCaptchaChallenge_default = (env, userAccessRulesStorage) => async (req
130
131
  require_metrics.recordCaptchaIssueError(_prosopo_types.CaptchaType.pow);
131
132
  req.logger.error(() => ({
132
133
  err,
133
- body: req.body,
134
+ body: require_requestBodySummary.summariseRequestBody(req),
134
135
  msg: "Error in PoW captcha challenge request"
135
136
  }));
136
137
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
@@ -9,6 +9,7 @@ const require_testSiteKey = require("../testSiteKey.cjs");
9
9
  const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
10
10
  const require_maintenanceModeResponses = require("./maintenanceModeResponses.cjs");
11
11
  const require_trafficFilterRequestTime = require("./trafficFilterRequestTime.cjs");
12
+ const require_requestBodySummary = require("../requestBodySummary.cjs");
12
13
  let _prosopo_common = require("@prosopo/common");
13
14
  let _prosopo_types = require("@prosopo/types");
14
15
  let _prosopo_util = require("@prosopo/util");
@@ -140,7 +141,7 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
140
141
  require_metrics.recordCaptchaIssueError(_prosopo_types.CaptchaType.puzzle);
141
142
  req.logger.error(() => ({
142
143
  err,
143
- body: req.body,
144
+ body: require_requestBodySummary.summariseRequestBody(req),
144
145
  msg: "Error in puzzle captcha challenge request"
145
146
  }));
146
147
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
@@ -2,6 +2,7 @@ const require_validateAddress = require("../validateAddress.cjs");
2
2
  const require_tasks = require("../../tasks/tasks.cjs");
3
3
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
4
4
  const require_testSiteKey = require("../testSiteKey.cjs");
5
+ const require_requestBodySummary = require("../requestBodySummary.cjs");
5
6
  let _prosopo_common = require("@prosopo/common");
6
7
  let _prosopo_types = require("@prosopo/types");
7
8
  let _prosopo_util = require("@prosopo/util");
@@ -24,7 +25,7 @@ var submitImageCaptchaSolution_default = (env) => async (req, res, next) => {
24
25
  context: {
25
26
  code: 400,
26
27
  error: err,
27
- body: req.body
28
+ body: require_requestBodySummary.summariseRequestBody(req)
28
29
  },
29
30
  i18n: req.i18n,
30
31
  logger: req.logger
@@ -60,7 +61,7 @@ var submitImageCaptchaSolution_default = (env) => async (req, res, next) => {
60
61
  } catch (err) {
61
62
  req.logger.error(() => ({
62
63
  err,
63
- body: req.body,
64
+ body: require_requestBodySummary.summariseRequestBody(req),
64
65
  msg: "Error in image captcha solution submission"
65
66
  }));
66
67
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
@@ -6,6 +6,7 @@ const require_tasks = require("../../tasks/tasks.cjs");
6
6
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
7
7
  const require_testSiteKey = require("../testSiteKey.cjs");
8
8
  const require_rawTlsSignalsMiddleware = require("../rawTlsSignalsMiddleware.cjs");
9
+ const require_requestBodySummary = require("../requestBodySummary.cjs");
9
10
  let _prosopo_common = require("@prosopo/common");
10
11
  let _prosopo_types = require("@prosopo/types");
11
12
  let _prosopo_util = require("@prosopo/util");
@@ -29,7 +30,7 @@ var submitPoWCaptchaSolution_default = (env) => async (req, res, next) => {
29
30
  context: {
30
31
  code: 400,
31
32
  error: err,
32
- body: req.body
33
+ body: require_requestBodySummary.summariseRequestBody(req)
33
34
  },
34
35
  i18n: req.i18n,
35
36
  logger: req.logger
@@ -111,7 +112,7 @@ var submitPoWCaptchaSolution_default = (env) => async (req, res, next) => {
111
112
  } catch (err) {
112
113
  req.logger.error(() => ({
113
114
  err,
114
- body: req.body,
115
+ body: require_requestBodySummary.summariseRequestBody(req),
115
116
  msg: "Error in PoW captcha solution submission"
116
117
  }));
117
118
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
@@ -2,6 +2,7 @@ const require_validateAddress = require("../validateAddress.cjs");
2
2
  const require_tasks = require("../../tasks/tasks.cjs");
3
3
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
4
4
  const require_testSiteKey = require("../testSiteKey.cjs");
5
+ const require_requestBodySummary = require("../requestBodySummary.cjs");
5
6
  let _prosopo_common = require("@prosopo/common");
6
7
  let _prosopo_types = require("@prosopo/types");
7
8
  let _prosopo_util = require("@prosopo/util");
@@ -23,7 +24,7 @@ var submitPuzzleCaptchaSolution_default = (env) => async (req, res, next) => {
23
24
  context: {
24
25
  code: 400,
25
26
  error: err,
26
- body: req.body
27
+ body: require_requestBodySummary.summariseRequestBody(req)
27
28
  },
28
29
  i18n: req.i18n,
29
30
  logger: req.logger
@@ -59,7 +60,7 @@ var submitPuzzleCaptchaSolution_default = (env) => async (req, res, next) => {
59
60
  } catch (err) {
60
61
  req.logger.error(() => ({
61
62
  err,
62
- body: req.body,
63
+ body: require_requestBodySummary.summariseRequestBody(req),
63
64
  msg: "Error in puzzle captcha solution submission"
64
65
  }));
65
66
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
@@ -25,6 +25,7 @@ var HardBlockVerdictCache = class {
25
25
  this.maxEntries = maxEntries;
26
26
  this.store = /* @__PURE__ */ new Map();
27
27
  this.inflight = /* @__PURE__ */ new Map();
28
+ this.generation = 0;
28
29
  }
29
30
  get(key) {
30
31
  const entry = this.store.get(key);
@@ -73,9 +74,10 @@ var HardBlockVerdictCache = class {
73
74
  if (cached !== void 0) return cached;
74
75
  const existing = this.inflight.get(key);
75
76
  if (existing !== void 0) return existing;
77
+ const generation = this.generation;
76
78
  const promise = (async () => {
77
79
  const value = await compute();
78
- this.set(key, value);
80
+ if (generation === this.generation) this.set(key, value);
79
81
  return value;
80
82
  })();
81
83
  this.inflight.set(key, promise);
@@ -86,6 +88,7 @@ var HardBlockVerdictCache = class {
86
88
  }
87
89
  }
88
90
  clear() {
91
+ this.generation++;
89
92
  this.store.clear();
90
93
  this.inflight.clear();
91
94
  }
@@ -0,0 +1,47 @@
1
+ //#region src/api/requestBodySummary.ts
2
+ var SENSITIVE_KEY = /signature|token|secret|proof|procaptcha|salt|mnemonic|password|email|behavioral|detectorKey|^ip$/i;
3
+ var REDACTED = "[redacted]";
4
+ var MAX_DEPTH = 3;
5
+ var MAX_KEYS = 20;
6
+ var MAX_ARRAY_ITEMS = 5;
7
+ var MAX_STRING_CHARS = 64;
8
+ var truncateString = (value) => value.length > MAX_STRING_CHARS ? `${value.slice(0, MAX_STRING_CHARS)}...(+${value.length - MAX_STRING_CHARS} chars)` : value;
9
+ var redact = (value, depth) => {
10
+ if (typeof value === "string") return truncateString(value);
11
+ if (value === null || typeof value !== "object") return value;
12
+ if (depth >= MAX_DEPTH) return Array.isArray(value) ? `[array(${value.length})]` : "[object]";
13
+ if (Array.isArray(value)) {
14
+ const items = value.slice(0, MAX_ARRAY_ITEMS).map((item) => redact(item, depth + 1));
15
+ return value.length > MAX_ARRAY_ITEMS ? [...items, `...(+${value.length - MAX_ARRAY_ITEMS} items)`] : items;
16
+ }
17
+ const entries = Object.entries(value);
18
+ const out = {};
19
+ for (const [key, child] of entries.slice(0, MAX_KEYS)) out[key] = SENSITIVE_KEY.test(key) ? REDACTED : redact(child, depth + 1);
20
+ if (entries.length > MAX_KEYS) out["..."] = `+${entries.length - MAX_KEYS} keys`;
21
+ return out;
22
+ };
23
+ var contentLength = (headers) => {
24
+ const bytes = Number(headers["content-length"]);
25
+ return Number.isFinite(bytes) ? bytes : void 0;
26
+ };
27
+ var summariseRequestBody = (req) => {
28
+ const { body } = req;
29
+ const type = body === null ? "null" : Array.isArray(body) ? "array" : typeof body;
30
+ const bytes = contentLength(req.headers);
31
+ const preview = (JSON.stringify(redact(body, 0)) ?? "").slice(0, 512);
32
+ if (type !== "object" || body === null || body === void 0) return {
33
+ type,
34
+ ...bytes !== void 0 && { bytes },
35
+ preview
36
+ };
37
+ const keys = Object.keys(body);
38
+ return {
39
+ type,
40
+ ...bytes !== void 0 && { bytes },
41
+ keys: keys.slice(0, MAX_KEYS),
42
+ keyCount: keys.length,
43
+ preview
44
+ };
45
+ };
46
+ //#endregion
47
+ exports.summariseRequestBody = summariseRequestBody;
@@ -4,6 +4,7 @@ const require_tasks = require("../tasks/tasks.cjs");
4
4
  const require_apiToggleMaintenanceModeEndpoint = require("./admin/apiToggleMaintenanceModeEndpoint.cjs");
5
5
  const require_testSiteKey = require("./testSiteKey.cjs");
6
6
  const require_maintenanceModeResponses = require("./captcha/maintenanceModeResponses.cjs");
7
+ const require_requestBodySummary = require("./requestBodySummary.cjs");
7
8
  const require_forwardVerify = require("./forwardVerify.cjs");
8
9
  let _prosopo_common = require("@prosopo/common");
9
10
  let _prosopo_types = require("@prosopo/types");
@@ -89,7 +90,7 @@ function prosopoVerifyRouter(env) {
89
90
  context: {
90
91
  code: 400,
91
92
  error: err,
92
- body: req.body
93
+ body: require_requestBodySummary.summariseRequestBody(req)
93
94
  },
94
95
  i18n: req.i18n,
95
96
  logger: req.logger
@@ -140,7 +141,7 @@ function prosopoVerifyRouter(env) {
140
141
  req.logger.error(() => ({
141
142
  err,
142
143
  msg: "Error in verifyImageCaptchaSolution",
143
- data: { body: req.body }
144
+ data: { body: require_requestBodySummary.summariseRequestBody(req) }
144
145
  }));
145
146
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
146
147
  context: {
@@ -174,7 +175,7 @@ function prosopoVerifyRouter(env) {
174
175
  context: {
175
176
  code: 400,
176
177
  error: err,
177
- body: req.body
178
+ body: require_requestBodySummary.summariseRequestBody(req)
178
179
  },
179
180
  i18n: req.i18n,
180
181
  logger: req.logger
@@ -230,7 +231,7 @@ function prosopoVerifyRouter(env) {
230
231
  req.logger.error(() => ({
231
232
  msg: "Error in verifyPowCaptchaSolution",
232
233
  err,
233
- data: { body: req.body }
234
+ data: { body: require_requestBodySummary.summariseRequestBody(req) }
234
235
  }));
235
236
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
236
237
  context: {
@@ -263,7 +264,7 @@ function prosopoVerifyRouter(env) {
263
264
  context: {
264
265
  code: 400,
265
266
  error: err,
266
- body: req.body
267
+ body: require_requestBodySummary.summariseRequestBody(req)
267
268
  },
268
269
  i18n: req.i18n,
269
270
  logger: req.logger
@@ -319,7 +320,7 @@ function prosopoVerifyRouter(env) {
319
320
  req.logger.error(() => ({
320
321
  msg: "Error in verifyPuzzleCaptchaSolution",
321
322
  err,
322
- data: { body: req.body }
323
+ data: { body: require_requestBodySummary.summariseRequestBody(req) }
323
324
  }));
324
325
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
325
326
  context: {
@@ -352,7 +353,7 @@ function prosopoVerifyRouter(env) {
352
353
  context: {
353
354
  code: 400,
354
355
  error: err,
355
- body: req.body
356
+ body: require_requestBodySummary.summariseRequestBody(req)
356
357
  },
357
358
  i18n: req.i18n,
358
359
  logger: req.logger
@@ -401,7 +402,7 @@ function prosopoVerifyRouter(env) {
401
402
  req.logger.error(() => ({
402
403
  err,
403
404
  msg: "Error in verifyAuthenticatedSession",
404
- data: { body: req.body }
405
+ data: { body: require_requestBodySummary.summariseRequestBody(req) }
405
406
  }));
406
407
  return next(new _prosopo_common.ProsopoApiError("API.BAD_REQUEST", {
407
408
  context: {
@@ -1,3 +1,4 @@
1
+ let _prosopo_types = require("@prosopo/types");
1
2
  let _prosopo_util = require("@prosopo/util");
2
3
  //#region src/pairs.ts
3
4
  /** Construct list of pairs from flat list
@@ -20,18 +21,81 @@ var peelCheckboxPrefix = (flat, solutionLengths) => {
20
21
  return { flat };
21
22
  };
22
23
  /**
23
- * Check if there are identical pairs in flattened lists of pairs
24
+ * The input method of every coordinate pair embedded in each captcha's salt.
25
+ * A captcha that declares none gets pointer for every pair, which keeps
26
+ * requests from older widgets under the full repeated-position check.
27
+ * Returns `undefined` when a captcha declares a different number of methods
28
+ * than it has pairs: the official widget never sends that.
29
+ * @param flat the coordinates extracted from each captcha's salt
30
+ * @param declared the input methods each captcha declared, if any
31
+ */
32
+ var resolveInputMethods = (flat, declared) => {
33
+ const resolved = [];
34
+ for (const [index, list] of flat.entries()) {
35
+ const pairCount = list.length / 2;
36
+ const methods = declared[index];
37
+ if (methods === void 0) resolved.push(new Array(pairCount).fill(_prosopo_types.InputMethod.pointer));
38
+ else if (methods.length === pairCount) resolved.push([...methods]);
39
+ else return;
40
+ }
41
+ return resolved;
42
+ };
43
+ /**
44
+ * Give the checkbox's input method its own list, as `peelCheckboxPrefix` does
45
+ * for its coordinates, so the result lines up with the pair lists.
46
+ * @param methods the input methods of each captcha, checkbox first
47
+ */
48
+ var peelCheckboxInputMethod = (methods) => {
49
+ const [first, ...rest] = methods;
50
+ if (first === void 0 || first.length === 0) return methods;
51
+ return [
52
+ first.slice(0, 1),
53
+ first.slice(1),
54
+ ...rest
55
+ ];
56
+ };
57
+ var isKeyboard = (inputMethods, listIndex, pairIndex) => inputMethods?.[listIndex]?.[pairIndex] === _prosopo_types.InputMethod.keyboard;
58
+ /**
59
+ * Whether any keyboard selection carries a pointer position. Keyboard
60
+ * activation has none, and the widget sends (0, 0) for it, so a position here
61
+ * means the request did not come from the widget.
24
62
  * @param pairsLists
63
+ * @param inputMethods the same shape as `pairsLists`
25
64
  */
26
- var containsIdenticalPairs = (pairsLists) => {
27
- const set = /* @__PURE__ */ new Set();
28
- for (const pairList of pairsLists) for (const pair of pairList) {
65
+ var keyboardSelectionHasPosition = (pairsLists, inputMethods) => pairsLists.some((pairList, listIndex) => pairList.some(([x, y], pairIndex) => isKeyboard(inputMethods, listIndex, pairIndex) && (x !== 0 || y !== 0)));
66
+ /**
67
+ * Check whether any pointer position repeats across the lists of pairs. A
68
+ * person selecting the same tile in two rounds almost never lands on the same
69
+ * pixel twice, whereas a script clicking each element's centre does. Keyboard
70
+ * selections have no position and are left out; without `inputMethods` every
71
+ * pair is a pointer selection.
72
+ * @param pairsLists
73
+ * @param inputMethods the same shape as `pairsLists`
74
+ */
75
+ var containsIdenticalPairs = (pairsLists, inputMethods) => {
76
+ const seen = /* @__PURE__ */ new Set();
77
+ for (const [listIndex, pairList] of pairsLists.entries()) for (const [pairIndex, pair] of pairList.entries()) {
78
+ if (isKeyboard(inputMethods, listIndex, pairIndex)) continue;
29
79
  const coordString = `${(0, _prosopo_util.at)(pair, 0)},${(0, _prosopo_util.at)(pair, 1)}`;
30
- set.add(coordString);
80
+ if (seen.has(coordString)) return true;
81
+ seen.add(coordString);
31
82
  }
32
- return set.size !== pairsLists.flat().flat().length / 2;
83
+ return false;
33
84
  };
85
+ /**
86
+ * Whether the selections point to a script rather than a person: the declared
87
+ * input methods do not line up with the coordinates, a keyboard selection
88
+ * carries a position, or a pointer position repeats.
89
+ * @param pairsLists
90
+ * @param inputMethods the same shape as `pairsLists`, or `undefined` when the
91
+ * declared methods did not line up with the coordinates
92
+ */
93
+ var selectionsLookScripted = (pairsLists, inputMethods) => inputMethods === void 0 || keyboardSelectionHasPosition(pairsLists, inputMethods) || containsIdenticalPairs(pairsLists, inputMethods);
34
94
  //#endregion
35
95
  exports.constructPairList = constructPairList;
36
96
  exports.containsIdenticalPairs = containsIdenticalPairs;
97
+ exports.keyboardSelectionHasPosition = keyboardSelectionHasPosition;
98
+ exports.peelCheckboxInputMethod = peelCheckboxInputMethod;
37
99
  exports.peelCheckboxPrefix = peelCheckboxPrefix;
100
+ exports.resolveInputMethods = resolveInputMethods;
101
+ exports.selectionsLookScripted = selectionsLookScripted;
@@ -294,6 +294,21 @@ var CaptchaManager = class CaptchaManager {
294
294
  }
295
295
  sessionId = resolvedSessionId;
296
296
  if (this.writeQueue) await Promise.all([this.writeQueue.invalidateCachedSession(sessionId), sessionRecord.userSitekeyIpHash ? this.writeQueue.invalidateCachedSessionByHash(sessionRecord.userSitekeyIpHash) : Promise.resolve()]);
297
+ if (sessionRecord.siteKey !== void 0 && sessionRecord.siteKey !== clientSettings.account) {
298
+ this.logger.warn(() => ({
299
+ msg: "Session was issued for a different site key",
300
+ data: {
301
+ account: clientSettings.account,
302
+ sessionId,
303
+ sessionSiteKey: sessionRecord.siteKey
304
+ }
305
+ }));
306
+ return {
307
+ valid: false,
308
+ reason: _prosopo_types.ResultReason.CAPTCHA_NO_SESSION_FOUND,
309
+ type: requestedCaptchaType
310
+ };
311
+ }
297
312
  if (currentIP) {
298
313
  const ipValidation = await this.validateSessionIP(sessionRecord, currentIP, env);
299
314
  if (!ipValidation.valid) return {
@@ -491,6 +506,7 @@ var CaptchaManager = class CaptchaManager {
491
506
  c1Length: result.collector1?.length || 0,
492
507
  c2Length: result.collector2?.length || 0,
493
508
  c3Length: result.collector3?.length || 0,
509
+ c4Length: result.collector4?.length || 0,
494
510
  deviceCapability: result.deviceCapability
495
511
  }
496
512
  }));
@@ -7,8 +7,8 @@ let node_path = require("node:path");
7
7
  * Loads a pool of precomputed, obfuscated detector bundles from disk and caches
8
8
  * them in memory — the Node analogue of the Rust "bumblebee" `bundle_manager`.
9
9
  * Each bundle is a `{id}.js` (served to the browser) paired with a `{id}.json`
10
- * (`{ privateKey, innerConfig, payloadLayout }`, kept server-side) produced by
11
- * the catcher `bundle:pool` build script.
10
+ * (`{ privateKey, innerConfig, payloadLayout, keyMap }`, kept server-side)
11
+ * produced by the catcher `bundle:pool` build script.
12
12
  *
13
13
  * A bundle is assigned per detector session by {@link DetectorBundlePool.at},
14
14
  * served by id, and resolved again at decryption time so the provider uses the
@@ -172,7 +172,8 @@ function persistDetectorBundlePool(bundles, dir = globalPoolDir) {
172
172
  privateKey: bundle.privateKey,
173
173
  innerConfig: bundle.innerConfig,
174
174
  ...bundle.release && { release: bundle.release },
175
- ...bundle.payloadLayout && { payloadLayout: bundle.payloadLayout }
175
+ ...bundle.payloadLayout && { payloadLayout: bundle.payloadLayout },
176
+ ...bundle.keyMap && { keyMap: bundle.keyMap }
176
177
  }), {
177
178
  encoding: "utf8",
178
179
  mode: 384
@@ -217,7 +217,10 @@ var FrictionlessManager = class extends require_captchaManager.CaptchaManager {
217
217
  verified: false,
218
218
  status: "API.CLIENT_SESSION_MISMATCH"
219
219
  };
220
- await this.db.updateSessionRecord(sessionId, { serverChecked: true });
220
+ if (!await this.db.claimSessionServerCheck(sessionId)) return {
221
+ verified: false,
222
+ status: "API.USER_ALREADY_VERIFIED"
223
+ };
221
224
  return {
222
225
  verified: true,
223
226
  status: "API.USER_VERIFIED"