@prosopo/provider 5.13.4 → 5.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +15 -13
  2. package/.turbo/turbo-build$colon$tsc.log +27 -27
  3. package/.turbo/turbo-build.log +15 -13
  4. package/CHANGELOG.md +105 -0
  5. package/dist/api/adminAuthOptions.d.ts +4 -0
  6. package/dist/api/adminAuthOptions.d.ts.map +1 -0
  7. package/dist/api/adminAuthOptions.js +34 -0
  8. package/dist/api/adminAuthOptions.js.map +1 -0
  9. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  10. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +1 -3
  11. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  12. package/dist/api/detectorPoolBodyParser.d.ts +4 -0
  13. package/dist/api/detectorPoolBodyParser.d.ts.map +1 -0
  14. package/dist/api/detectorPoolBodyParser.js +31 -0
  15. package/dist/api/detectorPoolBodyParser.js.map +1 -0
  16. package/dist/api/domainMiddleware.d.ts.map +1 -1
  17. package/dist/api/domainMiddleware.js +5 -1
  18. package/dist/api/domainMiddleware.js.map +1 -1
  19. package/dist/api/metrics.d.ts +2 -1
  20. package/dist/api/metrics.d.ts.map +1 -1
  21. package/dist/api/metrics.js +46 -4
  22. package/dist/api/metrics.js.map +1 -1
  23. package/dist/api/startProviderApi.d.ts.map +1 -1
  24. package/dist/api/startProviderApi.js +6 -3
  25. package/dist/api/startProviderApi.js.map +1 -1
  26. package/dist/api/verify.d.ts.map +1 -1
  27. package/dist/api/verify.js +50 -8
  28. package/dist/api/verify.js.map +1 -1
  29. package/dist/cjs/api/adminAuthOptions.cjs +35 -0
  30. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +0 -1
  31. package/dist/cjs/api/detectorPoolBodyParser.cjs +33 -0
  32. package/dist/cjs/api/domainMiddleware.cjs +5 -1
  33. package/dist/cjs/api/metrics.cjs +46 -3
  34. package/dist/cjs/api/startProviderApi.cjs +6 -3
  35. package/dist/cjs/api/verify.cjs +50 -8
  36. package/dist/cjs/tasks/client/clientTasks.cjs +25 -4
  37. package/dist/cjs/tasks/dataset/datasetTasksUtils.cjs +1 -1
  38. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +2 -2
  39. package/dist/cjs/utils/tarpitPadding.cjs +81 -10
  40. package/dist/tasks/client/clientTasks.d.ts +1 -0
  41. package/dist/tasks/client/clientTasks.d.ts.map +1 -1
  42. package/dist/tasks/client/clientTasks.js +25 -5
  43. package/dist/tasks/client/clientTasks.js.map +1 -1
  44. package/dist/tasks/dataset/datasetTasksUtils.js +1 -1
  45. package/dist/tasks/dataset/datasetTasksUtils.js.map +1 -1
  46. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +2 -2
  47. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  48. package/dist/tests/unit/api/adminAuthOptions.unit.test.d.ts +2 -0
  49. package/dist/tests/unit/api/adminAuthOptions.unit.test.d.ts.map +1 -0
  50. package/dist/tests/unit/api/adminAuthOptions.unit.test.js +38 -0
  51. package/dist/tests/unit/api/adminAuthOptions.unit.test.js.map +1 -0
  52. package/dist/tests/unit/api/detectorPoolBodyParser.unit.test.d.ts +2 -0
  53. package/dist/tests/unit/api/detectorPoolBodyParser.unit.test.d.ts.map +1 -0
  54. package/dist/tests/unit/api/detectorPoolBodyParser.unit.test.js +64 -0
  55. package/dist/tests/unit/api/detectorPoolBodyParser.unit.test.js.map +1 -0
  56. package/dist/tests/unit/api/domainMiddlewareErrorBody.unit.test.d.ts +2 -0
  57. package/dist/tests/unit/api/domainMiddlewareErrorBody.unit.test.d.ts.map +1 -0
  58. package/dist/tests/unit/api/domainMiddlewareErrorBody.unit.test.js +67 -0
  59. package/dist/tests/unit/api/domainMiddlewareErrorBody.unit.test.js.map +1 -0
  60. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +26 -23
  61. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  62. package/dist/tests/unit/api/metricsAccess.unit.test.d.ts +2 -0
  63. package/dist/tests/unit/api/metricsAccess.unit.test.d.ts.map +1 -0
  64. package/dist/tests/unit/api/metricsAccess.unit.test.js +87 -0
  65. package/dist/tests/unit/api/metricsAccess.unit.test.js.map +1 -0
  66. package/dist/tests/unit/api/public.unit.test.js +4 -1
  67. package/dist/tests/unit/api/public.unit.test.js.map +1 -1
  68. package/dist/tests/unit/api/validateAddress.unit.test.js +1 -1
  69. package/dist/tests/unit/api/validateAddress.unit.test.js.map +1 -1
  70. package/dist/tests/unit/api/verifyBadDappSignature.unit.test.d.ts +2 -0
  71. package/dist/tests/unit/api/verifyBadDappSignature.unit.test.d.ts.map +1 -0
  72. package/dist/tests/unit/api/verifyBadDappSignature.unit.test.js +96 -0
  73. package/dist/tests/unit/api/verifyBadDappSignature.unit.test.js.map +1 -0
  74. package/dist/tests/unit/api/verifyMalformedToken.unit.test.d.ts +2 -0
  75. package/dist/tests/unit/api/verifyMalformedToken.unit.test.d.ts.map +1 -0
  76. package/dist/tests/unit/api/verifyMalformedToken.unit.test.js +89 -0
  77. package/dist/tests/unit/api/verifyMalformedToken.unit.test.js.map +1 -0
  78. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +33 -1
  79. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
  80. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +14 -1
  81. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +1 -1
  82. package/dist/tests/unit/utils/tarpitPadding.unit.test.js +118 -36
  83. package/dist/tests/unit/utils/tarpitPadding.unit.test.js.map +1 -1
  84. package/dist/utils/tarpitPadding.d.ts.map +1 -1
  85. package/dist/utils/tarpitPadding.js +81 -10
  86. package/dist/utils/tarpitPadding.js.map +1 -1
  87. package/package.json +20 -20
@@ -1,4 +1,6 @@
1
1
  let _prosopo_types = require("@prosopo/types");
2
+ let node_crypto = require("node:crypto");
3
+ let node_net = require("node:net");
2
4
  let prom_client = require("prom-client");
3
5
  //#region src/api/metrics.ts
4
6
  var metricsEnabled = () => process.env.PROSOPO_METRICS_ENABLED !== "false";
@@ -340,11 +342,51 @@ var metricsMiddleware = () => {
340
342
  next();
341
343
  };
342
344
  };
345
+ var internalNetworks = () => {
346
+ const list = new node_net.BlockList();
347
+ list.addSubnet("127.0.0.0", 8, "ipv4");
348
+ list.addSubnet("10.0.0.0", 8, "ipv4");
349
+ list.addSubnet("172.16.0.0", 12, "ipv4");
350
+ list.addSubnet("192.168.0.0", 16, "ipv4");
351
+ list.addAddress("::1", "ipv6");
352
+ list.addSubnet("fc00::", 7, "ipv6");
353
+ list.addSubnet("fe80::", 10, "ipv6");
354
+ return list;
355
+ };
356
+ var INTERNAL_NETWORKS = internalNetworks();
357
+ var isInternalAddress = (address) => {
358
+ if (!address) return false;
359
+ const v4 = address.startsWith("::ffff:") ? address.slice(7) : address;
360
+ if ((0, node_net.isIPv4)(v4)) return INTERNAL_NETWORKS.check(v4, "ipv4");
361
+ if ((0, node_net.isIPv6)(address)) return INTERNAL_NETWORKS.check(address, "ipv6");
362
+ return false;
363
+ };
364
+ var tokenMatches = (header, token) => {
365
+ const expected = Buffer.from(`Bearer ${token}`);
366
+ const actual = Buffer.from(header ?? "");
367
+ return actual.length === expected.length && (0, node_crypto.timingSafeEqual)(actual, expected);
368
+ };
369
+ /**
370
+ * Who may scrape /metrics.
371
+ *
372
+ * - PROSOPO_METRICS_TOKEN set: any caller with `Authorization: Bearer <token>`.
373
+ * - Otherwise only direct connections from loopback or private addresses, e.g.
374
+ * vector on the docker network. A request that came through a reverse proxy
375
+ * (it carries a forwarding header) is refused even though its socket peer is
376
+ * the proxy's private address, so the public site cannot reach it.
377
+ * - PROSOPO_METRICS_PUBLIC=true restores the old open endpoint.
378
+ */
379
+ var metricsAccess = (req, vars = process.env) => {
380
+ const token = vars.PROSOPO_METRICS_TOKEN;
381
+ if (token) return tokenMatches(req.headers.authorization, token) ? 200 : 401;
382
+ if (vars.PROSOPO_METRICS_PUBLIC === "true") return 200;
383
+ return !(req.headers["x-forwarded-for"] !== void 0 || req.headers.forwarded !== void 0 || req.headers["x-real-ip"] !== void 0) && isInternalAddress(req.socket?.remoteAddress) ? 200 : 403;
384
+ };
343
385
  var metricsHandler = (env) => {
344
386
  return async (req, res) => {
345
- const token = process.env.PROSOPO_METRICS_TOKEN;
346
- if (token && req.headers.authorization !== `Bearer ${token}`) {
347
- res.status(401).send("Unauthorized");
387
+ const access = metricsAccess(req);
388
+ if (access !== 200) {
389
+ res.status(access).send(access === 401 ? "Unauthorized" : "Forbidden");
348
390
  return;
349
391
  }
350
392
  const m = getMetrics();
@@ -363,6 +405,7 @@ var metricsHandler = (env) => {
363
405
  //#endregion
364
406
  exports.getMetrics = getMetrics;
365
407
  exports.measureSync = measureSync;
408
+ exports.metricsAccess = metricsAccess;
366
409
  exports.metricsEnabled = metricsEnabled;
367
410
  exports.metricsHandler = metricsHandler;
368
411
  exports.metricsMiddleware = metricsMiddleware;
@@ -11,7 +11,9 @@ const require_handshakeTimingMiddleware = require("./handshakeTimingMiddleware.c
11
11
  const require_public = require("./public.cjs");
12
12
  const require_domainMiddleware = require("./domainMiddleware.cjs");
13
13
  const require_createApiAdminRoutesProvider = require("./admin/createApiAdminRoutesProvider.cjs");
14
+ const require_adminAuthOptions = require("./adminAuthOptions.cjs");
14
15
  const require_cpuProfiler = require("./cpuProfiler.cjs");
16
+ const require_detectorPoolBodyParser = require("./detectorPoolBodyParser.cjs");
15
17
  const require_headerCheckMiddleware = require("./headerCheckMiddleware.cjs");
16
18
  const require_ignoreMiddleware = require("./ignoreMiddleware.cjs");
17
19
  const require_ipInfoMiddleware = require("./ipInfoMiddleware.cjs");
@@ -162,7 +164,7 @@ async function startProviderApi(env, admin = false, port) {
162
164
  ],
163
165
  maxAge: 86400
164
166
  }));
165
- apiApp.use(_prosopo_types.AdminApiPaths.ReplaceDetectorPool, express.default.json({ limit: DETECTOR_POOL_BODY_LIMIT }));
167
+ apiApp.use(_prosopo_types.AdminApiPaths.ReplaceDetectorPool, require_detectorPoolBodyParser.detectorPoolBodyParser(DETECTOR_POOL_BODY_LIMIT, env.pair, env.authAccount));
166
168
  apiApp.use(express.default.json({ limit: "1mb" }));
167
169
  apiApp.use(require_public.publicRouter(env));
168
170
  apiApp.use(require_metrics.metricsMiddleware());
@@ -218,10 +220,11 @@ async function startProviderApi(env, admin = false, port) {
218
220
  apiApp.use(clientPathsExcludingVerify, require_headerCheckMiddleware.headerCheckMiddleware(env));
219
221
  apiApp.use(require_verify.prosopoVerifyRouter(env));
220
222
  env.logger.info(() => ({ msg: "Enabling admin auth middleware" }));
221
- apiApp.use("/v1/prosopo/provider/admin", (0, _prosopo_api_express_router.authMiddleware)(env.pair, env.authAccount));
223
+ const adminAuth = (0, _prosopo_api_express_router.authMiddleware)(env.pair, env.authAccount, require_adminAuthOptions.adminAuthOptions(process.env, env.config.host));
224
+ apiApp.use("/v1/prosopo/provider/admin", adminAuth);
222
225
  if (apiRuleRoutesProvider) {
223
226
  const userAccessRuleRoutes = apiRuleRoutesProvider.getRoutes();
224
- for (const userAccessRuleRoute in userAccessRuleRoutes) apiApp.use(userAccessRuleRoute, (0, _prosopo_api_express_router.authMiddleware)(env.pair, env.authAccount));
227
+ for (const userAccessRuleRoute in userAccessRuleRoutes) apiApp.use(userAccessRuleRoute, adminAuth);
225
228
  for (const userAccessRuleRoute in userAccessRuleRoutes) apiApp.use(userAccessRuleRoute, (req, res, next) => {
226
229
  if (req.method === "POST") res.on("finish", () => {
227
230
  if (res.statusCode >= 200 && res.statusCode < 300) require_blacklistRequestInspector.getVerdictCache().clear();
@@ -30,6 +30,36 @@ var VERIFY_PATH_TYPE = {
30
30
  [_prosopo_types.ClientApiPaths.VerifyPowCaptchaSolution]: _prosopo_types.CaptchaType.pow,
31
31
  [_prosopo_types.ClientApiPaths.VerifyPuzzleCaptchaSolution]: _prosopo_types.CaptchaType.puzzle
32
32
  };
33
+ var decodeTokenOr400 = (token, i18n, logger, next) => {
34
+ try {
35
+ return (0, _prosopo_types.decodeProcaptchaOutput)(token);
36
+ } catch (error) {
37
+ next(new _prosopo_common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
38
+ context: {
39
+ code: 400,
40
+ error
41
+ },
42
+ i18n,
43
+ logger
44
+ }));
45
+ return null;
46
+ }
47
+ };
48
+ var dappSignatureError = (signature, message, pair, req) => {
49
+ try {
50
+ (0, _prosopo_api_express_router.verifySignature)(signature, message, pair);
51
+ return;
52
+ } catch {
53
+ return new _prosopo_common.ProsopoApiError("GENERAL.INVALID_SIGNATURE", {
54
+ context: {
55
+ code: 400,
56
+ siteKey: pair.address
57
+ },
58
+ i18n: req.i18n,
59
+ logger: req.logger
60
+ });
61
+ }
62
+ };
33
63
  /**
34
64
  * Returns a router connected to the database which can interact with the Proposo protocol
35
65
  *
@@ -98,7 +128,9 @@ function prosopoVerifyRouter(env) {
98
128
  }
99
129
  const { dappSignature, token, ip, maxVerifiedTime, email, clientSessionId } = parsed;
100
130
  try {
101
- const { user, dapp, timestamp, commitmentId, providerUrl } = (0, _prosopo_types.decodeProcaptchaOutput)(token);
131
+ const decoded = decodeTokenOr400(token, req.i18n, req.logger, next);
132
+ if (decoded === null) return;
133
+ const { user, dapp, timestamp, commitmentId, providerUrl } = decoded;
102
134
  const testVerdict = require_testSiteKey.resolveTestSiteKeyVerdict(dapp, req.logger);
103
135
  if (testVerdict !== null) {
104
136
  const verificationResponse = {
@@ -132,7 +164,8 @@ function prosopoVerifyRouter(env) {
132
164
  logger: req.logger
133
165
  }));
134
166
  const keyPair = env.keyring.addFromAddress(dapp);
135
- (0, _prosopo_api_express_router.verifySignature)(dappSignature, timestamp.toString(), keyPair);
167
+ const signatureError = dappSignatureError(dappSignature, timestamp.toString(), keyPair, req);
168
+ if (signatureError) return next(signatureError);
136
169
  const response = await tasks.imgCaptchaManager.verifyImageCaptchaSolution(user, dapp, commitmentId, env, maxVerifiedTime, ip, clientRecord.settings.disallowWebView, userAccessRulesStorage, email, clientRecord.settings.spamEmailDomainCheckEnabled, clientRecord.settings.spamFilter, clientRecord.settings.trafficFilter, clientRecord.settings.storeMetadata, clientSessionId);
137
170
  req.logger.debug(() => ({ data: { response } }));
138
171
  const verificationResponse = tasks.imgCaptchaManager.getVerificationResponse(response[_prosopo_types.ApiParams.verified], clientRecord, req.i18n.t, response[_prosopo_types.ApiParams.score], response[_prosopo_types.ApiParams.commitmentId], response[_prosopo_types.ApiParams.status], response[_prosopo_types.ApiParams.sessionId]);
@@ -183,7 +216,9 @@ function prosopoVerifyRouter(env) {
183
216
  }
184
217
  try {
185
218
  const { token, dappSignature, ip, email, clientSessionId } = parsed;
186
- const { dapp, user, timestamp, challenge, providerUrl } = (0, _prosopo_types.decodeProcaptchaOutput)(token);
219
+ const decoded = decodeTokenOr400(token, req.i18n, req.logger, next);
220
+ if (decoded === null) return;
221
+ const { dapp, user, timestamp, challenge, providerUrl } = decoded;
187
222
  const testVerdict = require_testSiteKey.resolveTestSiteKeyVerdict(dapp, req.logger);
188
223
  if (testVerdict !== null) {
189
224
  const verificationResponse = {
@@ -223,7 +258,8 @@ function prosopoVerifyRouter(env) {
223
258
  return res.json(unverifiedResponse);
224
259
  }
225
260
  const dappPair = env.keyring.addFromAddress(dapp);
226
- (0, _prosopo_api_express_router.verifySignature)(dappSignature, timestamp.toString(), dappPair);
261
+ const signatureError = dappSignatureError(dappSignature, timestamp.toString(), dappPair, req);
262
+ if (signatureError) return next(signatureError);
227
263
  const { verified, score, reason, sessionId } = await tasks.powCaptchaManager.serverVerifyPowCaptchaSolution(dapp, challenge, clientRecord.settings.verifiedTimeout, env, ip, userAccessRulesStorage, email, clientRecord.settings.spamEmailDomainCheckEnabled, clientRecord.settings.spamFilter, clientRecord.settings.trafficFilter, clientRecord.settings.storeMetadata, clientSessionId);
228
264
  const verificationResponse = tasks.powCaptchaManager.getVerificationResponse(verified, clientRecord, req.i18n.t, score, reason, sessionId);
229
265
  return res.json(verificationResponse);
@@ -272,7 +308,9 @@ function prosopoVerifyRouter(env) {
272
308
  }
273
309
  try {
274
310
  const { token, dappSignature, ip, email, clientSessionId } = parsed;
275
- const { dapp, user, timestamp, challenge, providerUrl } = (0, _prosopo_types.decodeProcaptchaOutput)(token);
311
+ const decoded = decodeTokenOr400(token, req.i18n, req.logger, next);
312
+ if (decoded === null) return;
313
+ const { dapp, user, timestamp, challenge, providerUrl } = decoded;
276
314
  const testVerdict = require_testSiteKey.resolveTestSiteKeyVerdict(dapp, req.logger);
277
315
  if (testVerdict !== null) {
278
316
  const verificationResponse = {
@@ -312,7 +350,8 @@ function prosopoVerifyRouter(env) {
312
350
  return res.json(unverifiedResponse);
313
351
  }
314
352
  const dappPair = env.keyring.addFromAddress(dapp);
315
- (0, _prosopo_api_express_router.verifySignature)(dappSignature, timestamp.toString(), dappPair);
353
+ const signatureError = dappSignatureError(dappSignature, timestamp.toString(), dappPair, req);
354
+ if (signatureError) return next(signatureError);
316
355
  const { verified, score, sessionId } = await tasks.puzzleCaptchaManager.serverVerifyPuzzleCaptchaSolution(dapp, challenge, clientRecord.settings.verifiedTimeout, env, ip, userAccessRulesStorage, email, clientRecord.settings.spamEmailDomainCheckEnabled, clientRecord.settings.spamFilter, clientRecord.settings.trafficFilter, clientRecord.settings.storeMetadata, clientSessionId);
317
356
  const verificationResponse = tasks.puzzleCaptchaManager.getVerificationResponse(verified, clientRecord, req.i18n.t, score, void 0, sessionId);
318
357
  return res.json(verificationResponse);
@@ -361,7 +400,9 @@ function prosopoVerifyRouter(env) {
361
400
  }
362
401
  const { dappSignature, token, ip, clientSessionId } = parsed;
363
402
  try {
364
- const { user, dapp, timestamp, commitmentId: sessionId, providerUrl } = (0, _prosopo_types.decodeProcaptchaOutput)(token);
403
+ const decoded = decodeTokenOr400(token, req.i18n, req.logger, next);
404
+ if (decoded === null) return;
405
+ const { user, dapp, timestamp, commitmentId: sessionId, providerUrl } = decoded;
365
406
  const testVerdict = require_testSiteKey.resolveTestSiteKeyVerdict(dapp, req.logger);
366
407
  if (testVerdict !== null) return res.json({
367
408
  status: "ok",
@@ -391,7 +432,8 @@ function prosopoVerifyRouter(env) {
391
432
  logger: req.logger
392
433
  }));
393
434
  const keyPair = env.keyring.addFromAddress(dapp);
394
- (0, _prosopo_api_express_router.verifySignature)(dappSignature, timestamp.toString(), keyPair);
435
+ const signatureError = dappSignatureError(dappSignature, timestamp.toString(), keyPair, req);
436
+ if (signatureError) return next(signatureError);
395
437
  if (!sessionId) return res.json({
396
438
  status: "API.USER_NOT_VERIFIED_NO_SOLUTION",
397
439
  verified: false
@@ -5,6 +5,29 @@ let _prosopo_database = require("@prosopo/database");
5
5
  let _prosopo_types = require("@prosopo/types");
6
6
  require("node:crypto");
7
7
  let _prosopo_util = require("@prosopo/util");
8
+ /**
9
+ * Matches `text` against a pattern where `*` matches any run of characters.
10
+ * Greedy two-pointer match, retrying from the last `*` on mismatch, so time
11
+ * is bounded by pattern length times text length.
12
+ */
13
+ var matchesGlob = (pattern, text) => {
14
+ let p = 0;
15
+ let t = 0;
16
+ let starP = -1;
17
+ let starT = 0;
18
+ while (t < text.length) if (p < pattern.length && pattern[p] === "*") {
19
+ starP = p++;
20
+ starT = t;
21
+ } else if (p < pattern.length && pattern[p] === text[t]) {
22
+ p++;
23
+ t++;
24
+ } else if (starP !== -1) {
25
+ p = starP + 1;
26
+ t = ++starT;
27
+ } else return false;
28
+ while (p < pattern.length && pattern[p] === "*") p++;
29
+ return p === pattern.length;
30
+ };
8
31
  var ClientTaskManager = class {
9
32
  constructor(config, logger, db) {
10
33
  this.config = config;
@@ -251,10 +274,7 @@ var ClientTaskManager = class {
251
274
  const allowed = (0, _prosopo_util.parseUrl)(suffix).hostname.replace(/\.$/, "");
252
275
  return referrerHost.endsWith(`.${allowed}`) || referrerHost === allowed;
253
276
  }
254
- if (pattern.includes("*")) {
255
- const escaped = pattern.replace(/[.+?^${}()|\[\]\\]/g, "\\$&").replace(/\*/g, ".*");
256
- return new RegExp(`^${escaped}$`, "i").test(referrerHost);
257
- }
277
+ if (pattern.includes("*")) return matchesGlob(pattern, referrerHost.toLowerCase());
258
278
  const allowedHost = (0, _prosopo_util.parseUrl)(pattern).hostname.replace(/\.$/, "");
259
279
  return referrerHost === allowedHost || referrerHost.endsWith(`.${allowedHost}`);
260
280
  } catch (e) {
@@ -297,3 +317,4 @@ var ClientTaskManager = class {
297
317
  };
298
318
  //#endregion
299
319
  exports.ClientTaskManager = ClientTaskManager;
320
+ exports.matchesGlob = matchesGlob;
@@ -5,7 +5,7 @@ var providerValidateDataset = async (datasetRaw, minSolvedCaptchas, minUnsolvedC
5
5
  if (datasetRaw.captchas.length < minSolvedCaptchas + minUnsolvedCaptchas) throw new _prosopo_common.ProsopoEnvError("DATASET.CAPTCHAS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
6
6
  const solutions = datasetRaw.captchas.map((captcha) => captcha.solution ? 1 : 0).reduce((partialSum, b) => partialSum + b, 0);
7
7
  if (solutions < minSolvedCaptchas) throw new _prosopo_common.ProsopoEnvError("DATASET.SOLUTIONS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
8
- if (solutions < minUnsolvedCaptchas) throw new _prosopo_common.ProsopoEnvError("DATASET.SOLUTIONS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
8
+ if (datasetRaw.captchas.length - solutions < minUnsolvedCaptchas) throw new _prosopo_common.ProsopoEnvError("DATASET.CAPTCHAS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
9
9
  const dataset = await (0, _prosopo_datasets.buildDataset)(datasetRaw);
10
10
  if (!dataset.datasetId || !dataset.datasetContentId) throw new _prosopo_common.ProsopoEnvError("DATASET.DATASET_ID_UNDEFINED", { context: {
11
11
  failedFuncName: providerValidateDataset.name,
@@ -202,7 +202,7 @@ var ImgCaptchaManager = class extends require_captchaManager.CaptchaManager {
202
202
  }));
203
203
  const totalImages = storedCaptchas[0]?.items.length || 0;
204
204
  if (require_pairs.selectionsLookScripted(pairs, inputMethods) && process.env.NODE_ENV !== "test") {
205
- const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, "CAPTCHA.INVALID_SOLUTION", pairs)];
205
+ const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, _prosopo_types.ResultReason.CAPTCHA_INVALID_SOLUTION, pairs)];
206
206
  if (pendingRecord.sessionId) {
207
207
  writePromises.push(this.updateSessionRecordWithCache(pendingRecord.sessionId, {
208
208
  userSubmitted: true,
@@ -243,7 +243,7 @@ var ImgCaptchaManager = class extends require_captchaManager.CaptchaManager {
243
243
  }
244
244
  await Promise.all(writePromises);
245
245
  } else {
246
- const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, "CAPTCHA.INVALID_SOLUTION", pairs)];
246
+ const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, _prosopo_types.ResultReason.CAPTCHA_INVALID_SOLUTION, pairs)];
247
247
  if (pendingRecord.sessionId) {
248
248
  writePromises.push(this.updateSessionRecordWithCache(pendingRecord.sessionId, {
249
249
  userSubmitted: true,
@@ -1,22 +1,93 @@
1
1
  let _prosopo_types = require("@prosopo/types");
2
2
  //#region src/utils/tarpitPadding.ts
3
3
  var POOL = (0, require("node:crypto").randomBytes)(Math.ceil(_prosopo_types.MAX_PAD_BYTES * 3 / 4)).toString("base64");
4
+ var CHUNK_BYTES = 64 * 1024;
5
+ var KEY_ALPHABET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
6
+ var MIN_KEY_LENGTH = 3;
7
+ var MAX_KEY_LENGTH = 12;
4
8
  var clampPadBytes = (padBytes) => padBytes && padBytes > 0 ? Math.min(Math.floor(padBytes), _prosopo_types.MAX_PAD_BYTES) : 0;
5
- var streamWithPad = (res, body, n) => {
6
- const offset = Math.floor(Math.random() * (POOL.length - n + 1));
7
- const fields = JSON.stringify(body).slice(1, -1);
9
+ var isPlainObject = (body) => typeof body === "object" && body !== null && !Array.isArray(body);
10
+ var bodyMembers = (body) => {
11
+ const serialised = JSON.stringify(body);
12
+ if (serialised === void 0 || !serialised.startsWith("{")) return void 0;
13
+ const normalised = JSON.parse(serialised);
14
+ return Object.entries(normalised).map(([key, value]) => ({
15
+ key,
16
+ encoded: `${JSON.stringify(key)}:${JSON.stringify(value)}`
17
+ }));
18
+ };
19
+ var randomKey = (taken) => {
20
+ for (;;) {
21
+ const length = MIN_KEY_LENGTH + Math.floor(Math.random() * (MAX_KEY_LENGTH - MIN_KEY_LENGTH + 1));
22
+ let key = "";
23
+ for (let index = 0; index < length; index++) key += KEY_ALPHABET.charAt(Math.floor(Math.random() * KEY_ALPHABET.length));
24
+ if (!taken.has(key)) {
25
+ taken.add(key);
26
+ return key;
27
+ }
28
+ }
29
+ };
30
+ var partition = (total, parts) => {
31
+ const cuts = [0, total];
32
+ for (let index = 1; index < parts; index++) cuts.push(Math.floor(Math.random() * (total + 1)));
33
+ cuts.sort((a, b) => a - b);
34
+ const sizes = [];
35
+ for (let index = 1; index < cuts.length; index++) sizes.push((cuts[index] ?? 0) - (cuts[index - 1] ?? 0));
36
+ return sizes;
37
+ };
38
+ var awaitDrain = (res) => new Promise((resolve) => {
39
+ const settle = (drained) => {
40
+ res.removeListener("drain", onDrain);
41
+ res.removeListener("close", onClose);
42
+ resolve(drained);
43
+ };
44
+ const onDrain = () => settle(true);
45
+ const onClose = () => settle(false);
46
+ res.once("drain", onDrain);
47
+ res.once("close", onClose);
48
+ });
49
+ var write = async (res, chunk) => {
50
+ if (res.writableEnded || res.destroyed) return false;
51
+ return res.write(chunk) ? true : await awaitDrain(res);
52
+ };
53
+ var writePad = async (res, size) => {
54
+ const offset = Math.floor(Math.random() * (POOL.length - size + 1));
55
+ for (let written = 0; written < size; written += CHUNK_BYTES) {
56
+ const from = offset + written;
57
+ const to = offset + Math.min(written + CHUNK_BYTES, size);
58
+ if (!await write(res, POOL.slice(from, to))) return false;
59
+ }
60
+ return true;
61
+ };
62
+ var streamWithPad = async (res, members, total) => {
63
+ const segments = Math.max(members.length, 1);
64
+ const sizes = partition(total, segments);
65
+ const taken = new Set(members.map((member) => member.key));
8
66
  res.setHeader("content-type", "application/json; charset=utf-8");
9
- res.write("{\"pad\":\"");
10
- res.write(POOL.slice(offset, offset + n));
11
- res.write(fields ? `",${fields}}` : "\"}");
12
- return res.end();
67
+ let separator = "{";
68
+ for (let index = 0; index < segments; index++) {
69
+ if (!await write(res, `${separator}"${randomKey(taken)}":"`)) return;
70
+ if (!await writePad(res, sizes[index] ?? 0)) return;
71
+ const member = members[index];
72
+ if (!await write(res, member ? `",${member.encoded}` : "\"")) return;
73
+ separator = ",";
74
+ }
75
+ if (!await write(res, "}")) return;
76
+ res.end();
13
77
  };
14
- var isPlainObject = (body) => typeof body === "object" && body !== null && !Array.isArray(body);
15
78
  var padResponseMiddleware = (_req, res, next) => {
16
79
  const originalJson = res.json.bind(res);
17
80
  res.json = (body) => {
18
- const n = clampPadBytes(res.locals.padBytes);
19
- return n === 0 || !isPlainObject(body) ? originalJson(body) : streamWithPad(res, body, n);
81
+ const total = clampPadBytes(res.locals.padBytes);
82
+ if (total === 0 || !isPlainObject(body)) return originalJson(body);
83
+ const members = bodyMembers(body);
84
+ if (members === void 0) return originalJson(body);
85
+ const swallow = () => void 0;
86
+ res.on("error", swallow);
87
+ streamWithPad(res, members, total).catch(() => {
88
+ if (!res.destroyed) res.destroy();
89
+ }).finally(() => res.removeListener("error", swallow));
90
+ return res;
20
91
  };
21
92
  next();
22
93
  };
@@ -2,6 +2,7 @@ import { CaptchaDatabase } from "@prosopo/database";
2
2
  import type { Logger } from "@prosopo/logger";
3
3
  import { type DecisionMachineCaptchaType, type DecisionMachineKind, type DecisionMachineLanguage, type DecisionMachineRuntime, DecisionMachineScope, type IUserSettings, type ProsopoConfigOutput, type Tier } from "@prosopo/types";
4
4
  import type { IProviderDatabase } from "@prosopo/types-database";
5
+ export declare const matchesGlob: (pattern: string, text: string) => boolean;
5
6
  export declare class ClientTaskManager {
6
7
  config: ProsopoConfigOutput;
7
8
  logger: Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"clientTasks.d.ts","sourceRoot":"","sources":["../../../src/tasks/client/clientTasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientTasks.d.ts","sourceRoot":"","sources":["../../../src/tasks/client/clientTasks.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAkB,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,oBAAoB,EACpB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EAGxB,KAAK,IAAI,EAET,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEX,iBAAiB,EAEjB,MAAM,yBAAyB,CAAC;AA2BjC,eAAO,MAAM,WAAW,YAAa,MAAM,QAAQ,MAAM,KAAG,OAqB3D,CAAC;AAEF,qBAAa,iBAAiB;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;gBAEtC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,iBAAiB;IAWtB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,eAAe;IAmBhD,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyIzC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA0E9B,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC;IAWV,gBAAgB,CACrB,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,aAAa,CAAA;KAAE,CAAC,GACvE,OAAO,CAAC,IAAI,CAAC;IAaV,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnE,qBAAqB,CAC1B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,uBAAuB,EAClC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,0BAA0B,EACxC,IAAI,CAAC,EAAE,mBAAmB,GACxB,OAAO,CAAC;QACV,KAAK,EAAE,oBAAoB,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,mBAAmB,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;IAwCI,sBAAsB,IAAI,OAAO,CACtC;QACC,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,oBAAoB,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,mBAAmB,CAAC;QAC3B,OAAO,EAAE,sBAAsB,CAAC;QAChC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,0BAA0B,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KAClB,EAAE,CACH;IAkBK,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,oBAAoB,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,mBAAmB,CAAC;QAC3B,OAAO,EAAE,sBAAsB,CAAC;QAChC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,0BAA0B,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;IAwBI,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;IAcI,yBAAyB,IAAI,OAAO,CAAC;QAC1C,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;KACrB,CAAC;IAaF,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IA2CrE,OAAO,CAAC,eAAe;YAoBT,wBAAwB;CAkBtC"}
@@ -5,6 +5,29 @@ import { CaptchaDatabase, ClientDatabase } from "@prosopo/database";
5
5
  import { DecisionMachineScope, ScheduledTaskNames, ScheduledTaskStatus } from "@prosopo/types";
6
6
  import "node:crypto";
7
7
  import { parseUrl } from "@prosopo/util";
8
+ /**
9
+ * Matches `text` against a pattern where `*` matches any run of characters.
10
+ * Greedy two-pointer match, retrying from the last `*` on mismatch, so time
11
+ * is bounded by pattern length times text length.
12
+ */
13
+ var matchesGlob = (pattern, text) => {
14
+ let p = 0;
15
+ let t = 0;
16
+ let starP = -1;
17
+ let starT = 0;
18
+ while (t < text.length) if (p < pattern.length && pattern[p] === "*") {
19
+ starP = p++;
20
+ starT = t;
21
+ } else if (p < pattern.length && pattern[p] === text[t]) {
22
+ p++;
23
+ t++;
24
+ } else if (starP !== -1) {
25
+ p = starP + 1;
26
+ t = ++starT;
27
+ } else return false;
28
+ while (p < pattern.length && pattern[p] === "*") p++;
29
+ return p === pattern.length;
30
+ };
8
31
  var ClientTaskManager = class {
9
32
  constructor(config, logger, db) {
10
33
  this.config = config;
@@ -250,10 +273,7 @@ var ClientTaskManager = class {
250
273
  const allowed = parseUrl(pattern.slice(2)).hostname.replace(/\.$/, "");
251
274
  return referrerHost.endsWith(`.${allowed}`) || referrerHost === allowed;
252
275
  }
253
- if (pattern.includes("*")) {
254
- const escaped = pattern.replace(/[.+?^${}()|\[\]\\]/g, "\\$&").replace(/\*/g, ".*");
255
- return new RegExp(`^${escaped}$`, "i").test(referrerHost);
256
- }
276
+ if (pattern.includes("*")) return matchesGlob(pattern, referrerHost.toLowerCase());
257
277
  const allowedHost = parseUrl(pattern).hostname.replace(/\.$/, "");
258
278
  return referrerHost === allowedHost || referrerHost.endsWith(`.${allowedHost}`);
259
279
  } catch (e) {
@@ -295,4 +315,4 @@ var ClientTaskManager = class {
295
315
  }
296
316
  };
297
317
  //#endregion
298
- export { ClientTaskManager };
318
+ export { ClientTaskManager, matchesGlob };
@@ -1 +1 @@
1
- {"version":3,"file":"clientTasks.js","sourceRoot":"","sources":["../../../src/tasks/client/clientTasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientTasks.js","sourceRoot":"","sources":["../../../src/tasks/client/clientTasks.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ var providerValidateDataset = async (datasetRaw, minSolvedCaptchas, minUnsolvedC
5
5
  if (datasetRaw.captchas.length < minSolvedCaptchas + minUnsolvedCaptchas) throw new ProsopoEnvError("DATASET.CAPTCHAS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
6
6
  const solutions = datasetRaw.captchas.map((captcha) => captcha.solution ? 1 : 0).reduce((partialSum, b) => partialSum + b, 0);
7
7
  if (solutions < minSolvedCaptchas) throw new ProsopoEnvError("DATASET.SOLUTIONS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
8
- if (solutions < minUnsolvedCaptchas) throw new ProsopoEnvError("DATASET.SOLUTIONS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
8
+ if (datasetRaw.captchas.length - solutions < minUnsolvedCaptchas) throw new ProsopoEnvError("DATASET.CAPTCHAS_COUNT_LESS_THAN_CONFIGURED", { context: { failedFuncName: providerValidateDataset.name } });
9
9
  const dataset = await buildDataset(datasetRaw);
10
10
  if (!dataset.datasetId || !dataset.datasetContentId) throw new ProsopoEnvError("DATASET.DATASET_ID_UNDEFINED", { context: {
11
11
  failedFuncName: providerValidateDataset.name,
@@ -1 +1 @@
1
- {"version":3,"file":"datasetTasksUtils.js","sourceRoot":"","sources":["../../../src/tasks/dataset/datasetTasksUtils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC3C,UAAsB,EACtB,iBAAyB,EACzB,mBAA2B,EAC1B,EAAE;IAEH,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAiB,GAAG,mBAAmB,EAAE,CAAC;QAC1E,MAAM,IAAI,eAAe,CAAC,6CAA6C,EAAE;YACxE,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC,IAAI,EAAE;SACzD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ;SACnC,GAAG,CAAC,CAAC,OAAO,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAG/C,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,IAAI,eAAe,CAAC,8CAA8C,EAAE;YACzE,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC,IAAI,EAAE;SACzD,CAAC,CAAC;IACJ,CAAC;IAGD,IAAI,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,IAAI,eAAe,CAAC,8CAA8C,EAAE;YACzE,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC,IAAI,EAAE;SACzD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAG/C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACrD,MAAM,IAAI,eAAe,CAAC,8BAA8B,EAAE;YACzD,OAAO,EAAE;gBACR,cAAc,EAAE,uBAAuB,CAAC,IAAI;gBAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC1C;SACD,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"datasetTasksUtils.js","sourceRoot":"","sources":["../../../src/tasks/dataset/datasetTasksUtils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC3C,UAAsB,EACtB,iBAAyB,EACzB,mBAA2B,EAC1B,EAAE;IAEH,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAiB,GAAG,mBAAmB,EAAE,CAAC;QAC1E,MAAM,IAAI,eAAe,CAAC,6CAA6C,EAAE;YACxE,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC,IAAI,EAAE;SACzD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ;SACnC,GAAG,CAAC,CAAC,OAAO,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAG/C,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,IAAI,eAAe,CAAC,8CAA8C,EAAE;YACzE,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC,IAAI,EAAE;SACzD,CAAC,CAAC;IACJ,CAAC;IAGD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,mBAAmB,EAAE,CAAC;QAClE,MAAM,IAAI,eAAe,CAAC,6CAA6C,EAAE;YACxE,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC,IAAI,EAAE;SACzD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAG/C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACrD,MAAM,IAAI,eAAe,CAAC,8BAA8B,EAAE;YACzD,OAAO,EAAE;gBACR,cAAc,EAAE,uBAAuB,CAAC,IAAI;gBAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC1C;SACD,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC"}
@@ -202,7 +202,7 @@ var ImgCaptchaManager = class extends CaptchaManager {
202
202
  }));
203
203
  const totalImages = storedCaptchas[0]?.items.length || 0;
204
204
  if (selectionsLookScripted(pairs, inputMethods) && process.env.NODE_ENV !== "test") {
205
- const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, "CAPTCHA.INVALID_SOLUTION", pairs)];
205
+ const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, ResultReason.CAPTCHA_INVALID_SOLUTION, pairs)];
206
206
  if (pendingRecord.sessionId) {
207
207
  writePromises.push(this.updateSessionRecordWithCache(pendingRecord.sessionId, {
208
208
  userSubmitted: true,
@@ -243,7 +243,7 @@ var ImgCaptchaManager = class extends CaptchaManager {
243
243
  }
244
244
  await Promise.all(writePromises);
245
245
  } else {
246
- const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, "CAPTCHA.INVALID_SOLUTION", pairs)];
246
+ const writePromises = [this.db.disapproveDappUserCommitment(commitmentId, ResultReason.CAPTCHA_INVALID_SOLUTION, pairs)];
247
247
  if (pendingRecord.sessionId) {
248
248
  writePromises.push(this.updateSessionRecordWithCache(pendingRecord.sessionId, {
249
249
  userSubmitted: true,