@prosopo/provider 5.2.0 → 5.3.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 (66) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +17 -13
  2. package/.turbo/turbo-build$colon$tsc.log +27 -24
  3. package/.turbo/turbo-build.log +18 -14
  4. package/CHANGELOG.md +57 -0
  5. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  6. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +11 -4
  7. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  8. package/dist/api/captcha/maintenanceModeResponses.d.ts +1 -1
  9. package/dist/api/captcha/maintenanceModeResponses.d.ts.map +1 -1
  10. package/dist/api/captcha/maintenanceModeResponses.js +11 -6
  11. package/dist/api/captcha/maintenanceModeResponses.js.map +1 -1
  12. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  13. package/dist/api/captcha/submitPoWCaptchaSolution.js +4 -2
  14. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  15. package/dist/api/captcha/trafficFilterRequestTime.d.ts +2 -1
  16. package/dist/api/captcha/trafficFilterRequestTime.d.ts.map +1 -1
  17. package/dist/api/captcha/trafficFilterRequestTime.js +1 -0
  18. package/dist/api/captcha/trafficFilterRequestTime.js.map +1 -1
  19. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +11 -4
  20. package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +11 -6
  21. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +4 -2
  22. package/dist/cjs/api/captcha/trafficFilterRequestTime.cjs +1 -0
  23. package/dist/cjs/tasks/detection/decodePayload.cjs +1189 -1265
  24. package/dist/cjs/tasks/detection/decodePayload.js +2 -1
  25. package/dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs +17 -11
  26. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +2 -1
  27. package/dist/cjs/tasks/puzzle/backgroundBuffer.cjs +39 -0
  28. package/dist/cjs/tasks/puzzle/puzzleRenderer.cjs +78 -0
  29. package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +62 -31
  30. package/dist/tasks/detection/decodePayload.d.ts +2 -2
  31. package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
  32. package/dist/tasks/detection/decodePayload.js +2 -1
  33. package/dist/tasks/detection/decodePayload.js.map +1 -1
  34. package/dist/tasks/detection/getBotScore.js +2 -2
  35. package/dist/tasks/dnsEvent/enrichDnsEvent.d.ts.map +1 -1
  36. package/dist/tasks/dnsEvent/enrichDnsEvent.js +17 -11
  37. package/dist/tasks/dnsEvent/enrichDnsEvent.js.map +1 -1
  38. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  39. package/dist/tasks/frictionless/frictionlessTasks.js +2 -1
  40. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  41. package/dist/tasks/puzzle/backgroundBuffer.d.ts +21 -0
  42. package/dist/tasks/puzzle/backgroundBuffer.d.ts.map +1 -0
  43. package/dist/tasks/puzzle/backgroundBuffer.js +37 -0
  44. package/dist/tasks/puzzle/backgroundBuffer.js.map +1 -0
  45. package/dist/tasks/puzzle/puzzleRenderer.d.ts +13 -0
  46. package/dist/tasks/puzzle/puzzleRenderer.d.ts.map +1 -0
  47. package/dist/tasks/puzzle/puzzleRenderer.js +75 -0
  48. package/dist/tasks/puzzle/puzzleRenderer.js.map +1 -0
  49. package/dist/tasks/spam/checkTrafficFilter.d.ts +3 -1
  50. package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
  51. package/dist/tasks/spam/checkTrafficFilter.js +62 -32
  52. package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
  53. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js +8 -7
  54. package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js.map +1 -1
  55. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +1 -1
  56. package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -1
  57. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js +2 -1
  58. package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js.map +1 -1
  59. package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.js.map +1 -1
  60. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.d.ts +2 -0
  61. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.d.ts.map +1 -0
  62. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js +84 -0
  63. package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js.map +1 -0
  64. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +66 -4
  65. package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
  66. package/package.json +14 -13
@@ -1,5 +1,5 @@
1
1
  import type { Logger } from "@prosopo/logger";
2
- import { CaptchaType, type IPInfoResponse, type ITrafficFilter } from "@prosopo/types";
2
+ import { CaptchaType, type IPInfoResponse, type IPuzzleSettings, type ITrafficFilter } from "@prosopo/types";
3
3
  import type { ClientRecord } from "@prosopo/types-database";
4
4
  import type { Response } from "express";
5
5
  import type { FrictionlessManager } from "../../tasks/frictionless/frictionlessTasks.js";
@@ -12,6 +12,7 @@ export type RequestTimeTrafficVerdict = {
12
12
  powDifficulty?: number;
13
13
  solvedImagesCount?: number;
14
14
  puzzleTolerance?: number;
15
+ puzzleSettings?: IPuzzleSettings;
15
16
  sourceCategories: ResolvedChallengePolicy["sourceCategories"];
16
17
  };
17
18
  export declare const applyTrafficFilterAtRequestTime: (ipInfo: IPInfoResponse | undefined, trafficFilter: Partial<ITrafficFilter> | undefined, logger?: Logger) => RequestTimeTrafficVerdict;
@@ -1 +1 @@
1
- {"version":3,"file":"trafficFilterRequestTime.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,WAAW,EAEX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACN,KAAK,uBAAuB,EAG5B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IACA,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;CAC7D,CAAC;AAeL,eAAO,MAAM,+BAA+B,WACnC,cAAc,GAAG,SAAS,iBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,WACzC,MAAM,KACb,yBAgCF,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACzC;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,yBAAyB,CAAC;IACnC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,eAAO,MAAM,+BAA+B,UACpC,8BAA8B,OAChC,QAAQ,KACX,OAAO,CAAC,gCAAgC,CAyD1C,CAAC"}
1
+ {"version":3,"file":"trafficFilterRequestTime.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,WAAW,EAEX,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACN,KAAK,uBAAuB,EAG5B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IACA,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;CAC7D,CAAC;AAeL,eAAO,MAAM,+BAA+B,WACnC,cAAc,GAAG,SAAS,iBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,WACzC,MAAM,KACb,yBAiCF,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACzC;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,yBAAyB,CAAC;IACnC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,eAAO,MAAM,+BAA+B,UACpC,8BAA8B,OAChC,QAAQ,KACX,OAAO,CAAC,gCAAgC,CAyD1C,CAAC"}
@@ -34,6 +34,7 @@ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
34
34
  powDifficulty: resolved.powDifficulty,
35
35
  solvedImagesCount: resolved.solvedImagesCount,
36
36
  puzzleTolerance: resolved.puzzleTolerance,
37
+ puzzleSettings: resolved.puzzleSettings,
37
38
  sourceCategories: resolved.sourceCategories
38
39
  };
39
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"trafficFilterRequestTime.js","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trafficFilterRequestTime.js","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAeA,OAAO,EACN,WAAW,GAKX,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAEN,kBAAkB,EAClB,sBAAsB,GACtB,MAAM,wCAAwC,CAAC;AAiChD,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC9C,MAAkC,EAClC,aAAkD,EAClD,MAAe,EACa,EAAE;IAC9B,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAO5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEvC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnB,GAAG,EAAE,4CAA4C;QACjD,IAAI,EAAE;YACL,UAAU,EAAE,QAAQ,CAAC,gBAAgB;YACrC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;YAC7C,eAAe,EAAE,QAAQ,CAAC,eAAe;SACzC;KACD,CAAC,CAAC,CAAC;IAEJ,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;KAC3C,CAAC;AACH,CAAC,CAAC;AA0BF,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,EACnD,KAAqC,EACrC,GAAa,EAC+B,EAAE;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAEvD,MAAM,UAAU,GAAG;QAClB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,OAAO,EAAE,KAAK,CAAC,IAAI;QACnB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,WAAW;KAC1B,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,WAAwB,EAAQ,EAAE;QACtD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACxB,GAAG,EAAE,uBAAuB;YAC5B,IAAI,EAAE;gBACL,QAAQ,EAAE,gBAAgB;gBAC1B,WAAW;gBACX,UAAU,EAAE,OAAO,CAAC,gBAAgB;aACpC;SACD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,QAAoD,CAAC;IACzD,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;QAC/C,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/B,QAAQ,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;YAC3D,GAAG,UAAU;YACb,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CACR,OAAO,CAAC,iBAAiB,EACzB,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAC1C;gBACF,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc;SAC7C,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;QACpD,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,QAAQ,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC;YACzD,GAAG,UAAU;YACb,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI;gBAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;aACpC,CAAC;SACF,CAAC,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QACvD,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,QAAQ,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxD,CAAC;IAOD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC"}
@@ -2,6 +2,7 @@ const require_validateAddress = require("../validateAddress.cjs");
2
2
  const require_compositeIpAddress = require("../../compositeIpAddress.cjs");
3
3
  const require_metrics = require("../metrics.cjs");
4
4
  const require_blacklistRequestInspector = require("../blacklistRequestInspector.cjs");
5
+ const require_puzzleRenderer = require("../../tasks/puzzle/puzzleRenderer.cjs");
5
6
  const require_tasks = require("../../tasks/tasks.cjs");
6
7
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
7
8
  const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
@@ -37,7 +38,7 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
37
38
  sessionId
38
39
  }
39
40
  }));
40
- return res.json(require_maintenanceModeResponses.buildPuzzleMaintenanceResponse(user, dapp));
41
+ return res.json(await require_maintenanceModeResponses.buildPuzzleMaintenanceResponse(user, dapp));
41
42
  }
42
43
  const tasks = new require_tasks.Tasks(env, req.logger);
43
44
  try {
@@ -80,6 +81,8 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
80
81
  }));
81
82
  const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
82
83
  const tolerance = (trafficVerdict.kind === "challenge" ? trafficVerdict.puzzleTolerance : void 0) ?? clientSettings?.settings?.puzzleTolerance;
84
+ const trafficPuzzleSettings = trafficVerdict.kind === "challenge" ? trafficVerdict.puzzleSettings : void 0;
85
+ const effectivePuzzleSettings = require_puzzleRenderer.resolvePuzzleRenderSettings(clientSettings?.settings?.puzzle, trafficPuzzleSettings);
83
86
  const challenge = await tasks.puzzleCaptchaManager.getPuzzleCaptchaChallenge(user, dapp, origin, tolerance);
84
87
  if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, _prosopo_types.SimdReadingsStage.challenge).catch((updateErr) => {
85
88
  req.logger.warn(() => ({
@@ -92,14 +95,18 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
92
95
  userAccount: user,
93
96
  dappAccount: dapp
94
97
  }, challenge.targetX, challenge.targetY, challenge.originX, challenge.originY, challenge.tolerance, challenge.providerSignature, require_compositeIpAddress.getCompositeIpAddress(normalizedIp), (0, _prosopo_util.flatten)(req.headers), req.ja4, validSessionId, req.ipInfo);
98
+ const images = await require_puzzleRenderer.renderPuzzleImages({
99
+ targetX: challenge.targetX,
100
+ targetY: challenge.targetY
101
+ }, effectivePuzzleSettings);
95
102
  const getPuzzleCaptchaResponse = {
96
103
  [_prosopo_types.ApiParams.status]: "ok",
97
104
  [_prosopo_types.ApiParams.challenge]: challenge.challenge,
98
- [_prosopo_types.ApiParams.targetX]: challenge.targetX,
99
- [_prosopo_types.ApiParams.targetY]: challenge.targetY,
105
+ [_prosopo_types.ApiParams.background]: images.background,
106
+ [_prosopo_types.ApiParams.piece]: images.piece,
107
+ [_prosopo_types.ApiParams.pieceSize]: images.pieceSize,
100
108
  [_prosopo_types.ApiParams.originX]: challenge.originX,
101
109
  [_prosopo_types.ApiParams.originY]: challenge.originY,
102
- [_prosopo_types.ApiParams.tolerance]: challenge.tolerance,
103
110
  [_prosopo_types.ApiParams.timestamp]: challenge.requestedAtTimestamp.toString(),
104
111
  [_prosopo_types.ApiParams.signature]: { [_prosopo_types.ApiParams.provider]: { [_prosopo_types.ApiParams.challenge]: challenge.providerSignature } }
105
112
  };
@@ -1,3 +1,4 @@
1
+ const require_puzzleRenderer = require("../../tasks/puzzle/puzzleRenderer.cjs");
1
2
  let _prosopo_types = require("@prosopo/types");
2
3
  let node_crypto = require("node:crypto");
3
4
  //#region src/api/captcha/maintenanceModeResponses.ts
@@ -30,16 +31,20 @@ var buildImageMaintenanceResponse = () => ({
30
31
  [_prosopo_types.ApiParams.timestamp]: Date.now().toString(),
31
32
  [_prosopo_types.ApiParams.signature]: { [_prosopo_types.ApiParams.provider]: { [_prosopo_types.ApiParams.requestHash]: "" } }
32
33
  });
33
- var buildPuzzleMaintenanceResponse = (user, dapp) => {
34
+ var buildPuzzleMaintenanceResponse = async (user, dapp) => {
34
35
  const timestamp = Date.now();
36
+ const images = await require_puzzleRenderer.renderPuzzleImages({
37
+ targetX: 200,
38
+ targetY: 100
39
+ });
35
40
  return {
36
41
  [_prosopo_types.ApiParams.status]: "ok",
37
42
  [_prosopo_types.ApiParams.challenge]: buildChallenge(user, dapp),
38
- [_prosopo_types.ApiParams.targetX]: 100,
39
- [_prosopo_types.ApiParams.targetY]: 100,
40
- [_prosopo_types.ApiParams.originX]: 0,
41
- [_prosopo_types.ApiParams.originY]: 0,
42
- [_prosopo_types.ApiParams.tolerance]: 1e3,
43
+ [_prosopo_types.ApiParams.background]: images.background,
44
+ [_prosopo_types.ApiParams.piece]: images.piece,
45
+ [_prosopo_types.ApiParams.pieceSize]: images.pieceSize,
46
+ [_prosopo_types.ApiParams.originX]: 60,
47
+ [_prosopo_types.ApiParams.originY]: 100,
43
48
  [_prosopo_types.ApiParams.timestamp]: timestamp.toString(),
44
49
  [_prosopo_types.ApiParams.signature]: { [_prosopo_types.ApiParams.provider]: { [_prosopo_types.ApiParams.challenge]: "" } }
45
50
  };
@@ -1,4 +1,5 @@
1
1
  const require_validateAddress = require("../validateAddress.cjs");
2
+ const require_puzzleRenderer = require("../../tasks/puzzle/puzzleRenderer.cjs");
2
3
  const require_tasks = require("../../tasks/tasks.cjs");
3
4
  const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
4
5
  const require_devicePlatform = require("../../utils/devicePlatform.cjs");
@@ -130,11 +131,12 @@ var buildEscalation = async (tasks, result, challenge, handshakeTiming) => {
130
131
  const originSession = await tasks.db.getSessionRecordBySessionId(powRecord.sessionId);
131
132
  if (!originSession) return void 0;
132
133
  const routed = result.routingOutput;
134
+ const escalatedType = require_puzzleRenderer.downgradePuzzleIfUnavailable(routed.captchaType);
133
135
  const selectionReason = routed.reason ?? originSession.reason;
134
- const newSession = await tasks.frictionlessManager.createSession(originSession.token, originSession.score, originSession.threshold, originSession.scoreComponents, originSession.ipAddress, routed.captchaType, originSession.siteKey ?? powRecord.dappAccount, routed.captchaType === _prosopo_types.CaptchaType.image ? routed.solvedImagesCount ?? originSession.solvedImagesCount : void 0, void 0, originSession.userSitekeyIpHash, originSession.webView, originSession.iFrame, originSession.decryptedHeadHash, selectionReason, void 0, void 0, originSession.ipInfo, originSession.headers, originSession.mode, originSession.simdReadings, originSession.entropyMathRandomFingerprint, originSession.entropyCryptoFingerprint, originSession.entropyWallClockOffsetMs, originSession.entropyMathRandomFirst, originSession.bundleId, originSession.currentUrl, handshakeTiming?.tcpToChelloUs, handshakeTiming?.chelloToHandshakeUs, true, originSession.iframeUrl, originSession.isProtect, originSession.sessionId, originSession.g, void 0, originSession.i, originSession.sw, originSession.md, originSession.bn, originSession.fs);
136
+ const newSession = await tasks.frictionlessManager.createSession(originSession.token, originSession.score, originSession.threshold, originSession.scoreComponents, originSession.ipAddress, escalatedType, originSession.siteKey ?? powRecord.dappAccount, escalatedType === _prosopo_types.CaptchaType.image ? routed.solvedImagesCount ?? originSession.solvedImagesCount : void 0, void 0, originSession.userSitekeyIpHash, originSession.webView, originSession.iFrame, originSession.decryptedHeadHash, selectionReason, void 0, void 0, originSession.ipInfo, originSession.headers, originSession.mode, originSession.simdReadings, originSession.entropyMathRandomFingerprint, originSession.entropyCryptoFingerprint, originSession.entropyWallClockOffsetMs, originSession.entropyMathRandomFirst, originSession.bundleId, originSession.currentUrl, handshakeTiming?.tcpToChelloUs, handshakeTiming?.chelloToHandshakeUs, true, originSession.iframeUrl, originSession.isProtect, originSession.sessionId, originSession.g, void 0, originSession.i, originSession.sw, originSession.md, originSession.bn, originSession.fs);
135
137
  if (tasks.writeQueue) await tasks.writeQueue.cacheSessionEscalation(powRecord.sessionId, newSession.sessionId);
136
138
  return {
137
- captchaType: routed.captchaType,
139
+ captchaType: escalatedType,
138
140
  sessionId: newSession.sessionId
139
141
  };
140
142
  };
@@ -35,6 +35,7 @@ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
35
35
  powDifficulty: resolved.powDifficulty,
36
36
  solvedImagesCount: resolved.solvedImagesCount,
37
37
  puzzleTolerance: resolved.puzzleTolerance,
38
+ puzzleSettings: resolved.puzzleSettings,
38
39
  sourceCategories: resolved.sourceCategories
39
40
  };
40
41
  };