@prosopo/provider 5.6.1 → 5.6.3

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 (100) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +16 -13
  2. package/.turbo/turbo-build$colon$tsc.log +25 -25
  3. package/.turbo/turbo-build.log +17 -14
  4. package/CHANGELOG.md +55 -0
  5. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts.map +1 -1
  6. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +4 -1
  7. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js.map +1 -1
  8. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  9. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +9 -3
  10. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  11. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  12. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +4 -4
  13. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  14. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts +4 -1
  15. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  16. package/dist/api/captcha/submitPoWCaptchaSolution.js +27 -8
  17. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  18. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +4 -1
  19. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +9 -3
  20. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +4 -4
  21. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +26 -7
  22. package/dist/cjs/tasks/captchaTypeSelection.cjs +53 -0
  23. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +25 -7
  24. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +3 -1
  25. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +3 -1
  26. package/dist/cjs/tasks/puzzle/puzzleDifficulty.cjs +208 -0
  27. package/dist/cjs/tasks/puzzle/puzzleRenderer.cjs +13 -61
  28. package/dist/cjs/tasks/puzzle/stratifiedSampler.cjs +61 -0
  29. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +3 -1
  30. package/dist/cjs/utils/devicePlatform.cjs +34 -0
  31. package/dist/tasks/captchaManager.d.ts +2 -2
  32. package/dist/tasks/captchaManager.d.ts.map +1 -1
  33. package/dist/tasks/captchaManager.js.map +1 -1
  34. package/dist/tasks/captchaTypeSelection.d.ts +5 -0
  35. package/dist/tasks/captchaTypeSelection.d.ts.map +1 -0
  36. package/dist/tasks/captchaTypeSelection.js +53 -0
  37. package/dist/tasks/captchaTypeSelection.js.map +1 -0
  38. package/dist/tasks/decisionMachine/decisionMachineRunner.d.ts.map +1 -1
  39. package/dist/tasks/decisionMachine/decisionMachineRunner.js.map +1 -1
  40. package/dist/tasks/frictionless/frictionlessTasks.d.ts +1 -1
  41. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  42. package/dist/tasks/frictionless/frictionlessTasks.js +26 -8
  43. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  44. package/dist/tasks/frictionless/routingMachine.d.ts +3 -1
  45. package/dist/tasks/frictionless/routingMachine.d.ts.map +1 -1
  46. package/dist/tasks/frictionless/routingMachine.js.map +1 -1
  47. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  48. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +3 -1
  49. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  50. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  51. package/dist/tasks/powCaptcha/powTasks.js +3 -1
  52. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  53. package/dist/tasks/puzzle/puzzleDifficulty.d.ts +25 -0
  54. package/dist/tasks/puzzle/puzzleDifficulty.d.ts.map +1 -0
  55. package/dist/tasks/puzzle/puzzleDifficulty.js +204 -0
  56. package/dist/tasks/puzzle/puzzleDifficulty.js.map +1 -0
  57. package/dist/tasks/puzzle/puzzleRenderer.d.ts +1 -3
  58. package/dist/tasks/puzzle/puzzleRenderer.d.ts.map +1 -1
  59. package/dist/tasks/puzzle/puzzleRenderer.js +15 -62
  60. package/dist/tasks/puzzle/puzzleRenderer.js.map +1 -1
  61. package/dist/tasks/puzzle/stratifiedSampler.d.ts +7 -0
  62. package/dist/tasks/puzzle/stratifiedSampler.d.ts.map +1 -0
  63. package/dist/tasks/puzzle/stratifiedSampler.js +61 -0
  64. package/dist/tasks/puzzle/stratifiedSampler.js.map +1 -0
  65. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  66. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +3 -1
  67. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  68. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +2 -0
  69. package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -1
  70. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +1 -0
  71. package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
  72. package/dist/tests/integration/routingDecisionMachines.integration.test.js +280 -3
  73. package/dist/tests/integration/routingDecisionMachines.integration.test.js.map +1 -1
  74. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +1 -0
  75. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -1
  76. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js +3 -0
  77. package/dist/tests/unit/api/captcha/submitPoWCaptchaSolution.escalation.unit.test.js.map +1 -1
  78. package/dist/tests/unit/tasks/captchaManager.unit.test.js +1 -0
  79. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  80. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.d.ts +2 -0
  81. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.d.ts.map +1 -0
  82. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js +54 -0
  83. package/dist/tests/unit/tasks/captchaTypeSelection.unit.test.js.map +1 -0
  84. package/dist/tests/unit/tasks/frictionless/routerImageRoundsClamp.unit.test.js +3 -3
  85. package/dist/tests/unit/tasks/frictionless/routerImageRoundsClamp.unit.test.js.map +1 -1
  86. package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.d.ts +2 -0
  87. package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.d.ts.map +1 -0
  88. package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.js +119 -0
  89. package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.js.map +1 -0
  90. package/dist/tests/unit/tasks/puzzleDifficulty.unit.test.d.ts +2 -0
  91. package/dist/tests/unit/tasks/puzzleDifficulty.unit.test.d.ts.map +1 -0
  92. package/dist/tests/unit/tasks/puzzleDifficulty.unit.test.js +137 -0
  93. package/dist/tests/unit/tasks/puzzleDifficulty.unit.test.js.map +1 -0
  94. package/dist/tests/unit/utils/devicePlatform.unit.test.js +61 -1
  95. package/dist/tests/unit/utils/devicePlatform.unit.test.js.map +1 -1
  96. package/dist/utils/devicePlatform.d.ts +2 -1
  97. package/dist/utils/devicePlatform.d.ts.map +1 -1
  98. package/dist/utils/devicePlatform.js +34 -1
  99. package/dist/utils/devicePlatform.js.map +1 -1
  100. package/package.json +13 -13
@@ -1,5 +1,6 @@
1
+ import { CaptchaType, TrafficFilterAction, } from "@prosopo/types";
1
2
  import { describe, expect, it } from "vitest";
2
- import { derivePlatform } from "../../../utils/devicePlatform.js";
3
+ import { derivePlatform, deriveTrafficPolicies, } from "../../../utils/devicePlatform.js";
3
4
  const IPHONE_UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1";
4
5
  const IPAD_UA = "Mozilla/5.0 (iPad; CPU OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1";
5
6
  const MAC_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15";
@@ -55,4 +56,63 @@ describe("derivePlatform", () => {
55
56
  });
56
57
  });
57
58
  });
59
+ describe("deriveTrafficPolicies", () => {
60
+ const block = { action: TrafficFilterAction.Block };
61
+ const challenge = { action: TrafficFilterAction.Challenge };
62
+ it("returns undefined when there is no trafficFilter", () => {
63
+ expect(deriveTrafficPolicies(undefined)).toBeUndefined();
64
+ });
65
+ it("returns undefined when no category is configured", () => {
66
+ const tf = {
67
+ abuserScoreThreshold: 0.9,
68
+ skipExtrasOnValidDnsPath: true,
69
+ datacenterNameAllowlist: ["Cloudflare"],
70
+ };
71
+ expect(deriveTrafficPolicies(tf)).toBeUndefined();
72
+ });
73
+ it("carries challenge policies through, not just blocks", () => {
74
+ const tf = { vpn: challenge, datacenter: block };
75
+ expect(deriveTrafficPolicies(tf)).toEqual({
76
+ vpn: challenge,
77
+ datacenter: block,
78
+ });
79
+ });
80
+ it("preserves the challenge policy's captcha overrides", () => {
81
+ const vpn = {
82
+ action: TrafficFilterAction.Challenge,
83
+ captchaType: CaptchaType.image,
84
+ solvedImagesCount: 4,
85
+ };
86
+ const tf = { vpn };
87
+ expect(deriveTrafficPolicies(tf)?.vpn).toEqual(vpn);
88
+ });
89
+ it("omits a category that is absent from the filter", () => {
90
+ const tf = { datacenter: block };
91
+ const policies = deriveTrafficPolicies(tf);
92
+ expect(policies).toEqual({ datacenter: block });
93
+ expect(policies?.vpn).toBeUndefined();
94
+ });
95
+ it("covers every policy-carrying category", () => {
96
+ const tf = {
97
+ vpn: block,
98
+ proxy: block,
99
+ tor: block,
100
+ datacenter: block,
101
+ abuser: block,
102
+ mobile: block,
103
+ satellite: block,
104
+ crawler: block,
105
+ };
106
+ expect(Object.keys(deriveTrafficPolicies(tf) ?? {}).sort()).toEqual([
107
+ "abuser",
108
+ "crawler",
109
+ "datacenter",
110
+ "mobile",
111
+ "proxy",
112
+ "satellite",
113
+ "tor",
114
+ "vpn",
115
+ ]);
116
+ });
117
+ });
58
118
  //# sourceMappingURL=devicePlatform.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devicePlatform.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/utils/devicePlatform.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devicePlatform.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/utils/devicePlatform.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import type { RoutingMachinePlatform } from "@prosopo/types";
1
+ import type { ITrafficFilter, RoutingMachinePlatform, TrafficCategoryPolicies } from "@prosopo/types";
2
2
  export declare const derivePlatform: (userAgent: string, webView: boolean, ipInfo?: {
3
3
  isMobile?: boolean;
4
4
  }) => RoutingMachinePlatform;
5
+ export declare const deriveTrafficPolicies: (trafficFilter: Partial<ITrafficFilter> | undefined) => TrafficCategoryPolicies | undefined;
5
6
  //# sourceMappingURL=devicePlatform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"devicePlatform.d.ts","sourceRoot":"","sources":["../../src/utils/devicePlatform.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAW7D,eAAO,MAAM,cAAc,cACf,MAAM,WACR,OAAO,WACP;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7B,sBAOD,CAAC"}
1
+ {"version":3,"file":"devicePlatform.d.ts","sourceRoot":"","sources":["../../src/utils/devicePlatform.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACX,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,MAAM,gBAAgB,CAAC;AAcxB,eAAO,MAAM,cAAc,cACf,MAAM,WACR,OAAO,WACP;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7B,sBAOD,CAAC;AA0BH,eAAO,MAAM,qBAAqB,kBAClB,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,KAChD,uBAAuB,GAAG,SAY5B,CAAC"}
@@ -12,5 +12,38 @@ var derivePlatform = (userAgent, webView, ipInfo) => ({
12
12
  isWebView: webView,
13
13
  isMobile: typeof ipInfo?.isMobile === "boolean" ? ipInfo.isMobile : MOBILE_UA_REGEX.test(userAgent)
14
14
  });
15
+ var TRAFFIC_FILTER_CATEGORIES = [
16
+ "vpn",
17
+ "proxy",
18
+ "tor",
19
+ "datacenter",
20
+ "abuser",
21
+ "mobile",
22
+ "satellite",
23
+ "crawler"
24
+ ];
25
+ /**
26
+ * Project a site's `trafficFilter` down to just its per-category policies, for
27
+ * consumption by routing / decision machines. Machines use these both to tell
28
+ * whether the operator rejects an egress class at all, and to inherit the
29
+ * operator's configured action when they classify one themselves — see
30
+ * `TrafficCategoryPolicies`.
31
+ *
32
+ * Returns `undefined` when no category is configured, so the field can be
33
+ * omitted from the machine input entirely.
34
+ */
35
+ var deriveTrafficPolicies = (trafficFilter) => {
36
+ if (!trafficFilter) return void 0;
37
+ const policies = {};
38
+ let any = false;
39
+ for (const category of TRAFFIC_FILTER_CATEGORIES) {
40
+ const policy = trafficFilter[category];
41
+ if (policy) {
42
+ policies[category] = policy;
43
+ any = true;
44
+ }
45
+ }
46
+ return any ? policies : void 0;
47
+ };
15
48
  //#endregion
16
- export { derivePlatform };
49
+ export { derivePlatform, deriveTrafficPolicies };
@@ -1 +1 @@
1
- {"version":3,"file":"devicePlatform.js","sourceRoot":"","sources":["../../src/utils/devicePlatform.ts"],"names":[],"mappings":"AAgBA,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAC9D,MAAM,eAAe,GAAG,sDAAsD,CAAC;AAQ/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,SAAiB,EACjB,OAAgB,EAChB,MAA+B,EACN,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC,SAAS,EAAE,OAAO;IAClB,QAAQ,EACP,OAAO,MAAM,EAAE,QAAQ,KAAK,SAAS;QACpC,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;CACnC,CAAC,CAAC"}
1
+ {"version":3,"file":"devicePlatform.js","sourceRoot":"","sources":["../../src/utils/devicePlatform.ts"],"names":[],"mappings":"AAuBA,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAC9D,MAAM,eAAe,GAAG,sDAAsD,CAAC;AAQ/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,SAAiB,EACjB,OAAgB,EAChB,MAA+B,EACN,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC,SAAS,EAAE,OAAO;IAClB,QAAQ,EACP,OAAO,MAAM,EAAE,QAAQ,KAAK,SAAS;QACpC,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;CACnC,CAAC,CAAC;AAKH,MAAM,yBAAyB,GAAG;IACjC,KAAK;IACL,OAAO;IACP,KAAK;IACL,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,SAAS;CACqD,CAAC;AAYhE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,aAAkD,EACZ,EAAE;IACxC,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,MAAM,QAAQ,IAAI,yBAAyB,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC;QACZ,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACnC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/provider",
3
- "version": "5.6.1",
3
+ "version": "5.6.3",
4
4
  "author": "PROSOPO LIMITED <info@prosopo.io>",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -23,26 +23,26 @@
23
23
  "dependencies": {
24
24
  "@noble/hashes": "1.8.0",
25
25
  "@polkadot/util": "13.5.7",
26
- "@prosopo/api": "4.1.1",
27
- "@prosopo/api-express-router": "3.1.77",
26
+ "@prosopo/api": "4.1.3",
27
+ "@prosopo/api-express-router": "3.1.79",
28
28
  "@prosopo/api-route": "2.6.56",
29
29
  "@prosopo/common": "3.1.52",
30
- "@prosopo/database": "4.0.23",
31
- "@prosopo/datasets": "3.1.73",
32
- "@prosopo/env": "3.6.46",
33
- "@prosopo/ipinfo": "0.3.18",
34
- "@prosopo/keyring": "2.9.80",
35
- "@prosopo/load-balancer": "2.10.35",
30
+ "@prosopo/database": "4.0.25",
31
+ "@prosopo/datasets": "3.1.75",
32
+ "@prosopo/env": "3.6.48",
33
+ "@prosopo/ipinfo": "0.3.20",
34
+ "@prosopo/keyring": "2.9.82",
35
+ "@prosopo/load-balancer": "2.10.37",
36
36
  "@prosopo/locale": "3.4.0",
37
37
  "@prosopo/logger": "2.0.7",
38
38
  "@prosopo/native-ja4": "0.0.3",
39
39
  "@prosopo/native-merkle": "0.0.3",
40
40
  "@prosopo/puzzle-assets": "0.1.3",
41
41
  "@prosopo/redis-client": "1.0.33",
42
- "@prosopo/types": "5.5.0",
43
- "@prosopo/types-database": "5.3.1",
44
- "@prosopo/types-env": "2.10.40",
45
- "@prosopo/user-access-policy": "3.12.29",
42
+ "@prosopo/types": "5.5.2",
43
+ "@prosopo/types-database": "5.3.3",
44
+ "@prosopo/types-env": "2.10.42",
45
+ "@prosopo/user-access-policy": "3.12.31",
46
46
  "@prosopo/util": "3.3.7",
47
47
  "@prosopo/util-crypto": "13.5.30",
48
48
  "cron": "3.1.7",