@prosopo/procaptcha-common 2.11.16 → 2.11.18

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 (47) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +22 -20
  2. package/.turbo/turbo-build$colon$tsc.log +18 -18
  3. package/.turbo/turbo-build.log +23 -19
  4. package/CHANGELOG.md +36 -0
  5. package/dist/_virtual/_rolldown/runtime.js +3 -0
  6. package/dist/callbacks/defaultCallbacks.js +100 -152
  7. package/dist/callbacks/defaultEvents.js +6 -6
  8. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  9. package/dist/cjs/callbacks/defaultCallbacks.cjs +100 -151
  10. package/dist/cjs/callbacks/defaultEvents.cjs +6 -6
  11. package/dist/cjs/elements/form.cjs +10 -17
  12. package/dist/cjs/elements/window.cjs +17 -15
  13. package/dist/cjs/extensionLoader.cjs +3 -25
  14. package/dist/cjs/index.cjs +29 -27
  15. package/dist/cjs/providers.cjs +29 -42
  16. package/dist/cjs/reactComponents/Checkbox.cjs +102 -121
  17. package/dist/cjs/reactComponents/Honeypot.cjs +54 -62
  18. package/dist/cjs/reactComponents/Reload.cjs +59 -80
  19. package/dist/cjs/reactComponents/TestModeBanner.cjs +31 -44
  20. package/dist/cjs/simdReadings.cjs +24 -0
  21. package/dist/cjs/state/builder.cjs +70 -83
  22. package/dist/elements/form.js +10 -18
  23. package/dist/elements/window.js +18 -17
  24. package/dist/extensionLoader.js +4 -4
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -19
  28. package/dist/index.js.map +1 -1
  29. package/dist/providers.js +29 -45
  30. package/dist/reactComponents/Checkbox.js +99 -121
  31. package/dist/reactComponents/Honeypot.js +53 -61
  32. package/dist/reactComponents/Reload.js +58 -80
  33. package/dist/reactComponents/TestModeBanner.js +30 -45
  34. package/dist/simdReadings.d.ts +6 -0
  35. package/dist/simdReadings.d.ts.map +1 -0
  36. package/dist/simdReadings.js +23 -0
  37. package/dist/simdReadings.js.map +1 -0
  38. package/dist/state/builder.js +71 -85
  39. package/dist/tests/simdReadings.test.d.ts +2 -0
  40. package/dist/tests/simdReadings.test.d.ts.map +1 -0
  41. package/dist/tests/simdReadings.test.js +76 -0
  42. package/dist/tests/simdReadings.test.js.map +1 -0
  43. package/package.json +8 -8
  44. package/src/index.ts +1 -0
  45. package/src/simdReadings.ts +45 -0
  46. package/src/tests/simdReadings.test.ts +149 -0
  47. package/tsconfig.tsbuildinfo +1 -1
@@ -1,158 +1,107 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const types = require("@prosopo/types");
4
- const form = require("../elements/form.cjs");
5
- const window = require("../elements/window.cjs");
6
- const getDefaultCallbacks = (element) => ({
7
- onHuman: (token) => handleOnHuman(token, element),
8
- onChallengeExpired: () => {
9
- form.removeProcaptchaResponse();
10
- console.log("Challenge expired");
11
- },
12
- onExtensionNotFound: () => {
13
- console.error("Extension not found");
14
- },
15
- onExpired: () => {
16
- form.removeProcaptchaResponse();
17
- },
18
- onError: (error) => {
19
- form.removeProcaptchaResponse();
20
- console.error(error);
21
- },
22
- onClose: () => {
23
- console.log("Challenge closed");
24
- },
25
- onOpen: () => {
26
- console.log("Challenge opened");
27
- },
28
- onFailed: () => {
29
- alert("Captcha challenge failed. Please try again");
30
- console.log("Challenge failed");
31
- },
32
- onReset: () => {
33
- form.removeProcaptchaResponse();
34
- console.log("Captcha widget reset");
35
- },
36
- onReload: () => {
37
- console.log("Challenge reloaded");
38
- }
1
+ const require_form = require("../elements/form.cjs");
2
+ const require_window = require("../elements/window.cjs");
3
+ let _prosopo_types = require("@prosopo/types");
4
+ //#region src/callbacks/defaultCallbacks.ts
5
+ var getDefaultCallbacks = (element) => ({
6
+ onHuman: (token) => handleOnHuman(token, element),
7
+ onChallengeExpired: () => {
8
+ require_form.removeProcaptchaResponse();
9
+ console.log("Challenge expired");
10
+ },
11
+ onExtensionNotFound: () => {
12
+ console.error("Extension not found");
13
+ },
14
+ onExpired: () => {
15
+ require_form.removeProcaptchaResponse();
16
+ },
17
+ onError: (error) => {
18
+ require_form.removeProcaptchaResponse();
19
+ console.error(error);
20
+ },
21
+ onClose: () => {
22
+ console.log("Challenge closed");
23
+ },
24
+ onOpen: () => {
25
+ console.log("Challenge opened");
26
+ },
27
+ onFailed: () => {
28
+ alert("Captcha challenge failed. Please try again");
29
+ console.log("Challenge failed");
30
+ },
31
+ onReset: () => {
32
+ require_form.removeProcaptchaResponse();
33
+ console.log("Captcha widget reset");
34
+ },
35
+ onReload: () => {
36
+ console.log("Challenge reloaded");
37
+ }
39
38
  });
40
- const getUserCallback = (callback, element, callbackFnOrName) => {
41
- const callbackFnName = element.getAttribute(`data-${callback}`);
42
- if (callbackFnName) {
43
- const callbackFn = window.getWindowCallback(callbackFnName);
44
- if (callbackFn) {
45
- return callbackFn;
46
- }
47
- }
48
- if (typeof callbackFnOrName === "function") {
49
- return callbackFnOrName;
50
- }
51
- if (typeof callbackFnOrName === "string") {
52
- return window.getWindowCallback(callbackFnOrName);
53
- }
39
+ /**
40
+ * Set the a user callback function for an element. Data tags take precedence over renderOptions.
41
+ */
42
+ var getUserCallback = (callback, element, callbackFnOrName) => {
43
+ const callbackFnName = element.getAttribute(`data-${callback}`);
44
+ if (callbackFnName) {
45
+ const callbackFn = require_window.getWindowCallback(callbackFnName);
46
+ if (callbackFn) return callbackFn;
47
+ }
48
+ if (typeof callbackFnOrName === "function") return callbackFnOrName;
49
+ if (typeof callbackFnOrName === "string") return require_window.getWindowCallback(callbackFnOrName);
54
50
  };
55
51
  function setUserCallbacks(renderOptions, callbacks, element) {
56
- const humanCallback = getUserCallback(
57
- "callback",
58
- element,
59
- renderOptions?.callback
60
- );
61
- if (humanCallback) {
62
- callbacks.onHuman = (token) => {
63
- handleOnHuman(token, element);
64
- humanCallback(token);
65
- };
66
- }
67
- const chalExpiredCallback = getUserCallback(
68
- "chalexpired-callback",
69
- element,
70
- renderOptions?.["chalexpired-callback"]
71
- );
72
- if (chalExpiredCallback) {
73
- callbacks.onChallengeExpired = () => {
74
- form.removeProcaptchaResponse();
75
- chalExpiredCallback();
76
- };
77
- }
78
- const expiredCallback = getUserCallback(
79
- "expired-callback",
80
- element,
81
- renderOptions?.["expired-callback"]
82
- );
83
- if (expiredCallback) {
84
- callbacks.onExpired = () => {
85
- form.removeProcaptchaResponse();
86
- expiredCallback();
87
- };
88
- }
89
- const errorCallback = getUserCallback(
90
- "error-callback",
91
- element,
92
- renderOptions?.["error-callback"]
93
- );
94
- if (errorCallback) {
95
- callbacks.onError = (error) => {
96
- form.removeProcaptchaResponse();
97
- errorCallback(error);
98
- };
99
- }
100
- const closeCallback = getUserCallback(
101
- "close-callback",
102
- element,
103
- renderOptions?.["close-callback"]
104
- );
105
- if (closeCallback) {
106
- callbacks.onClose = () => {
107
- closeCallback();
108
- };
109
- }
110
- const openCallback = getUserCallback(
111
- "open-callback",
112
- element,
113
- renderOptions?.["open-callback"]
114
- );
115
- if (openCallback) {
116
- callbacks.onOpen = () => {
117
- openCallback();
118
- };
119
- }
120
- const failedCallback = getUserCallback(
121
- "failed-callback",
122
- element,
123
- renderOptions?.["failed-callback"]
124
- );
125
- if (failedCallback) {
126
- callbacks.onFailed = () => {
127
- failedCallback();
128
- };
129
- }
130
- const resetCallback = getUserCallback(
131
- "reset-callback",
132
- element,
133
- renderOptions?.["reset-callback"]
134
- );
135
- if (resetCallback) {
136
- callbacks.onReset = () => {
137
- form.removeProcaptchaResponse();
138
- resetCallback();
139
- };
140
- }
52
+ const humanCallback = getUserCallback("callback", element, renderOptions?.callback);
53
+ if (humanCallback) callbacks.onHuman = (token) => {
54
+ handleOnHuman(token, element);
55
+ humanCallback(token);
56
+ };
57
+ const chalExpiredCallback = getUserCallback("chalexpired-callback", element, renderOptions?.["chalexpired-callback"]);
58
+ if (chalExpiredCallback) callbacks.onChallengeExpired = () => {
59
+ require_form.removeProcaptchaResponse();
60
+ chalExpiredCallback();
61
+ };
62
+ const expiredCallback = getUserCallback("expired-callback", element, renderOptions?.["expired-callback"]);
63
+ if (expiredCallback) callbacks.onExpired = () => {
64
+ require_form.removeProcaptchaResponse();
65
+ expiredCallback();
66
+ };
67
+ const errorCallback = getUserCallback("error-callback", element, renderOptions?.["error-callback"]);
68
+ if (errorCallback) callbacks.onError = (error) => {
69
+ require_form.removeProcaptchaResponse();
70
+ errorCallback(error);
71
+ };
72
+ const closeCallback = getUserCallback("close-callback", element, renderOptions?.["close-callback"]);
73
+ if (closeCallback) callbacks.onClose = () => {
74
+ closeCallback();
75
+ };
76
+ const openCallback = getUserCallback("open-callback", element, renderOptions?.["open-callback"]);
77
+ if (openCallback) callbacks.onOpen = () => {
78
+ openCallback();
79
+ };
80
+ const failedCallback = getUserCallback("failed-callback", element, renderOptions?.["failed-callback"]);
81
+ if (failedCallback) callbacks.onFailed = () => {
82
+ failedCallback();
83
+ };
84
+ const resetCallback = getUserCallback("reset-callback", element, renderOptions?.["reset-callback"]);
85
+ if (resetCallback) callbacks.onReset = () => {
86
+ require_form.removeProcaptchaResponse();
87
+ resetCallback();
88
+ };
141
89
  }
142
- const handleOnHuman = (token, element) => {
143
- form.removeProcaptchaResponse();
144
- if (element) {
145
- const form$1 = form.getParentForm(element);
146
- if (!form$1) {
147
- console.error("Parent form not found for the element:", element);
148
- return;
149
- }
150
- const input = document.createElement("input");
151
- input.type = "hidden";
152
- input.name = types.ApiParams.procaptchaResponse;
153
- input.value = token;
154
- form$1.appendChild(input);
155
- }
90
+ var handleOnHuman = (token, element) => {
91
+ require_form.removeProcaptchaResponse();
92
+ if (element) {
93
+ const form = require_form.getParentForm(element);
94
+ if (!form) {
95
+ console.error("Parent form not found for the element:", element);
96
+ return;
97
+ }
98
+ const input = document.createElement("input");
99
+ input.type = "hidden";
100
+ input.name = _prosopo_types.ApiParams.procaptchaResponse;
101
+ input.value = token;
102
+ form.appendChild(input);
103
+ }
156
104
  };
105
+ //#endregion
157
106
  exports.getDefaultCallbacks = getDefaultCallbacks;
158
107
  exports.setUserCallbacks = setUserCallbacks;
@@ -1,8 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const defaultCallbacks = require("./defaultCallbacks.cjs");
4
- const getDefaultEvents = (callbacks) => ({
5
- ...defaultCallbacks.getDefaultCallbacks(void 0),
6
- ...callbacks
1
+ const require_defaultCallbacks = require("./defaultCallbacks.cjs");
2
+ //#region src/callbacks/defaultEvents.ts
3
+ var getDefaultEvents = (callbacks) => ({
4
+ ...require_defaultCallbacks.getDefaultCallbacks(void 0),
5
+ ...callbacks
7
6
  });
7
+ //#endregion
8
8
  exports.getDefaultEvents = getDefaultEvents;
@@ -1,22 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const types = require("@prosopo/types");
1
+ let _prosopo_types = require("@prosopo/types");
2
+ //#region src/elements/form.ts
4
3
  function getParentForm(widgetElement) {
5
- const parentForm = widgetElement.closest("form");
6
- if (parentForm) {
7
- return parentForm;
8
- }
9
- const rootWidgetNode = widgetElement.getRootNode();
10
- if (rootWidgetNode instanceof ShadowRoot) {
11
- return rootWidgetNode.host.closest("form");
12
- }
13
- return null;
4
+ const parentForm = widgetElement.closest("form");
5
+ if (parentForm) return parentForm;
6
+ const rootWidgetNode = widgetElement.getRootNode();
7
+ if (rootWidgetNode instanceof ShadowRoot) return rootWidgetNode.host.closest("form");
8
+ return null;
14
9
  }
15
- const removeProcaptchaResponse = () => {
16
- const element = Array.from(
17
- document.getElementsByName(types.ApiParams.procaptchaResponse)
18
- );
19
- element.map((el) => el.remove());
10
+ var removeProcaptchaResponse = () => {
11
+ Array.from(document.getElementsByName(_prosopo_types.ApiParams.procaptchaResponse)).map((el) => el.remove());
20
12
  };
13
+ //#endregion
21
14
  exports.getParentForm = getParentForm;
22
15
  exports.removeProcaptchaResponse = removeProcaptchaResponse;
@@ -1,19 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const getWindowCallback = (callbackName) => {
4
- const fn = window[callbackName.replace("window.", "")];
5
- if (typeof fn !== "function") {
6
- throw new Error(
7
- `Callback ${callbackName} is not defined on the window object`
8
- );
9
- }
10
- return fn;
1
+ //#region src/elements/window.ts
2
+ var getWindowCallback = (callbackName) => {
3
+ const fn = window[callbackName.replace("window.", "")];
4
+ if (typeof fn !== "function") throw new Error(`Callback ${callbackName} is not defined on the window object`);
5
+ return fn;
11
6
  };
12
- const isSecureBrowserContext = () => {
13
- if (typeof window === "undefined") {
14
- return true;
15
- }
16
- return window.isSecureContext === true;
7
+ /**
8
+ * Procaptcha depends on secure-context-only browser APIs (e.g. SubtleCrypto)
9
+ * to run a challenge. These are unavailable when the widget is served over
10
+ * plain HTTP, which otherwise surfaces as a cryptic provider-selection
11
+ * failure. The browser already treats HTTPS and localhost as secure contexts,
12
+ * so this only flags genuine HTTP origins. Non-browser (SSR) environments are
13
+ * treated as secure since the HTTP restriction does not apply there.
14
+ */
15
+ var isSecureBrowserContext = () => {
16
+ if (typeof window === "undefined") return true;
17
+ return window.isSecureContext === true;
17
18
  };
19
+ //#endregion
18
20
  exports.getWindowCallback = getWindowCallback;
19
21
  exports.isSecureBrowserContext = isSecureBrowserContext;
@@ -1,26 +1,4 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
- mod
23
- ));
24
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
25
- const ExtensionLoader = async (web2) => web2 ? (await import("@prosopo/account/extension/ExtensionWeb2")).default : (await import("@prosopo/account/extension/ExtensionWeb3")).default;
1
+ //#region src/extensionLoader.ts
2
+ var ExtensionLoader = async (web2) => web2 ? (await import("@prosopo/account/extension/ExtensionWeb2")).default : (await import("@prosopo/account/extension/ExtensionWeb3")).default;
3
+ //#endregion
26
4
  exports.ExtensionLoader = ExtensionLoader;
@@ -1,28 +1,30 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const providers = require("./providers.cjs");
4
- const builder = require("./state/builder.cjs");
5
- const defaultCallbacks = require("./callbacks/defaultCallbacks.cjs");
6
- const defaultEvents = require("./callbacks/defaultEvents.cjs");
7
- const extensionLoader = require("./extensionLoader.cjs");
8
- const window = require("./elements/window.cjs");
9
- const Reload = require("./reactComponents/Reload.cjs");
10
- const Checkbox = require("./reactComponents/Checkbox.cjs");
11
- const Honeypot = require("./reactComponents/Honeypot.cjs");
12
- const TestModeBanner = require("./reactComponents/TestModeBanner.cjs");
13
- exports.getProcaptchaRandomActiveProvider = providers.getProcaptchaRandomActiveProvider;
14
- exports.getRetryDelayMs = providers.getRetryDelayMs;
15
- exports.pickIpMode = providers.pickIpMode;
16
- exports.providerRetry = providers.providerRetry;
17
- exports.buildUpdateState = builder.buildUpdateState;
18
- exports.useProcaptcha = builder.useProcaptcha;
19
- exports.getDefaultCallbacks = defaultCallbacks.getDefaultCallbacks;
20
- exports.setUserCallbacks = defaultCallbacks.setUserCallbacks;
21
- exports.getDefaultEvents = defaultEvents.getDefaultEvents;
22
- exports.ExtensionLoader = extensionLoader.ExtensionLoader;
23
- exports.getWindowCallback = window.getWindowCallback;
24
- exports.isSecureBrowserContext = window.isSecureBrowserContext;
25
- exports.ReloadButton = Reload.ReloadButton;
26
- exports.Checkbox = Checkbox.Checkbox;
27
- exports.Honeypot = Honeypot.Honeypot;
28
- exports.TestModeBanner = TestModeBanner.TestModeBanner;
2
+ const require_providers = require("./providers.cjs");
3
+ const require_builder = require("./state/builder.cjs");
4
+ const require_window = require("./elements/window.cjs");
5
+ const require_defaultCallbacks = require("./callbacks/defaultCallbacks.cjs");
6
+ const require_defaultEvents = require("./callbacks/defaultEvents.cjs");
7
+ const require_extensionLoader = require("./extensionLoader.cjs");
8
+ const require_simdReadings = require("./simdReadings.cjs");
9
+ const require_Reload = require("./reactComponents/Reload.cjs");
10
+ const require_Checkbox = require("./reactComponents/Checkbox.cjs");
11
+ const require_Honeypot = require("./reactComponents/Honeypot.cjs");
12
+ const require_TestModeBanner = require("./reactComponents/TestModeBanner.cjs");
13
+ exports.Checkbox = require_Checkbox.Checkbox;
14
+ exports.ExtensionLoader = require_extensionLoader.ExtensionLoader;
15
+ exports.Honeypot = require_Honeypot.Honeypot;
16
+ exports.ReloadButton = require_Reload.ReloadButton;
17
+ exports.SIMD_READINGS_SUBMIT_TIMEOUT_MS = require_simdReadings.SIMD_READINGS_SUBMIT_TIMEOUT_MS;
18
+ exports.TestModeBanner = require_TestModeBanner.TestModeBanner;
19
+ exports.buildUpdateState = require_builder.buildUpdateState;
20
+ exports.getDefaultCallbacks = require_defaultCallbacks.getDefaultCallbacks;
21
+ exports.getDefaultEvents = require_defaultEvents.getDefaultEvents;
22
+ exports.getProcaptchaRandomActiveProvider = require_providers.getProcaptchaRandomActiveProvider;
23
+ exports.getRetryDelayMs = require_providers.getRetryDelayMs;
24
+ exports.getSimdReadingsForSubmit = require_simdReadings.getSimdReadingsForSubmit;
25
+ exports.getWindowCallback = require_window.getWindowCallback;
26
+ exports.isSecureBrowserContext = require_window.isSecureBrowserContext;
27
+ exports.pickIpMode = require_providers.pickIpMode;
28
+ exports.providerRetry = require_providers.providerRetry;
29
+ exports.setUserCallbacks = require_defaultCallbacks.setUserCallbacks;
30
+ exports.useProcaptcha = require_builder.useProcaptcha;
@@ -1,49 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const loadBalancer = require("@prosopo/load-balancer");
4
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
5
- const pickIpMode = (flags) => {
6
- if (flags?.ipv4) return "ipv4";
7
- if (flags?.ipv6) return "ipv6";
8
- return void 0;
1
+ let _prosopo_load_balancer = require("@prosopo/load-balancer");
2
+ //#region src/providers.ts
3
+ var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
4
+ var pickIpMode = (flags) => {
5
+ if (flags?.ipv4) return "ipv4";
6
+ if (flags?.ipv6) return "ipv6";
9
7
  };
10
- const getProcaptchaRandomActiveProvider = async (defaultEnvironment, ipMode, retryContext) => {
11
- if (!retryContext || retryContext.attempt <= 1) {
12
- return loadBalancer.getRandomActiveProvider(defaultEnvironment, ipMode);
13
- }
14
- return loadBalancer.getRandomProviderFromList(
15
- defaultEnvironment,
16
- ipMode,
17
- retryContext.excludeUrl
18
- );
8
+ var getProcaptchaRandomActiveProvider = async (defaultEnvironment, ipMode, retryContext) => {
9
+ if (!retryContext || retryContext.attempt <= 1) return (0, _prosopo_load_balancer.getRandomActiveProvider)(defaultEnvironment, ipMode);
10
+ return (0, _prosopo_load_balancer.getRandomProviderFromList)(defaultEnvironment, ipMode, retryContext.excludeUrl);
19
11
  };
20
- const RETRY_BASE_DELAY_MS = 500;
21
- const RETRY_MAX_DELAY_MS = 1e4;
22
- const getRetryDelayMs = (attemptCount, random = Math.random) => {
23
- const safeAttempt = Math.max(0, Math.floor(attemptCount));
24
- const cappedDelay = Math.min(
25
- RETRY_MAX_DELAY_MS,
26
- RETRY_BASE_DELAY_MS * 2 ** safeAttempt
27
- );
28
- return Math.round(random() * cappedDelay);
12
+ var RETRY_BASE_DELAY_MS = 500;
13
+ var RETRY_MAX_DELAY_MS = 1e4;
14
+ var getRetryDelayMs = (attemptCount, random = Math.random) => {
15
+ const cappedDelay = Math.min(RETRY_MAX_DELAY_MS, RETRY_BASE_DELAY_MS * 2 ** Math.max(0, Math.floor(attemptCount)));
16
+ return Math.round(random() * cappedDelay);
29
17
  };
30
- const providerRetry = async (currentFn, retryFn, stateReset, attemptCount, retryMax, backoffMs = getRetryDelayMs(attemptCount)) => {
31
- try {
32
- await currentFn();
33
- } catch (err) {
34
- if (attemptCount >= retryMax) {
35
- console.error(err);
36
- console.error(
37
- `Max retries (${attemptCount} of ${retryMax}) reached, aborting`
38
- );
39
- return stateReset();
40
- }
41
- console.error(err);
42
- stateReset();
43
- await sleep(backoffMs);
44
- await retryFn();
45
- }
18
+ var providerRetry = async (currentFn, retryFn, stateReset, attemptCount, retryMax, backoffMs = getRetryDelayMs(attemptCount)) => {
19
+ try {
20
+ await currentFn();
21
+ } catch (err) {
22
+ if (attemptCount >= retryMax) {
23
+ console.error(err);
24
+ console.error(`Max retries (${attemptCount} of ${retryMax}) reached, aborting`);
25
+ return stateReset();
26
+ }
27
+ console.error(err);
28
+ stateReset();
29
+ await sleep(backoffMs);
30
+ await retryFn();
31
+ }
46
32
  };
33
+ //#endregion
47
34
  exports.getProcaptchaRandomActiveProvider = getProcaptchaRandomActiveProvider;
48
35
  exports.getRetryDelayMs = getRetryDelayMs;
49
36
  exports.pickIpMode = pickIpMode;