@prosopo/procaptcha-common 2.11.17 → 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.
- package/.turbo/turbo-build$colon$cjs.log +22 -20
- package/.turbo/turbo-build$colon$tsc.log +18 -18
- package/.turbo/turbo-build.log +23 -19
- package/CHANGELOG.md +28 -0
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/callbacks/defaultCallbacks.js +100 -152
- package/dist/callbacks/defaultEvents.js +6 -6
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/callbacks/defaultCallbacks.cjs +100 -151
- package/dist/cjs/callbacks/defaultEvents.cjs +6 -6
- package/dist/cjs/elements/form.cjs +10 -17
- package/dist/cjs/elements/window.cjs +17 -15
- package/dist/cjs/extensionLoader.cjs +3 -25
- package/dist/cjs/index.cjs +29 -27
- package/dist/cjs/providers.cjs +29 -42
- package/dist/cjs/reactComponents/Checkbox.cjs +102 -121
- package/dist/cjs/reactComponents/Honeypot.cjs +54 -62
- package/dist/cjs/reactComponents/Reload.cjs +59 -80
- package/dist/cjs/reactComponents/TestModeBanner.cjs +31 -44
- package/dist/cjs/simdReadings.cjs +24 -0
- package/dist/cjs/state/builder.cjs +70 -83
- package/dist/elements/form.js +10 -18
- package/dist/elements/window.js +18 -17
- package/dist/extensionLoader.js +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -19
- package/dist/index.js.map +1 -1
- package/dist/providers.js +29 -45
- package/dist/reactComponents/Checkbox.js +99 -121
- package/dist/reactComponents/Honeypot.js +53 -61
- package/dist/reactComponents/Reload.js +58 -80
- package/dist/reactComponents/TestModeBanner.js +30 -45
- package/dist/simdReadings.d.ts +6 -0
- package/dist/simdReadings.d.ts.map +1 -0
- package/dist/simdReadings.js +23 -0
- package/dist/simdReadings.js.map +1 -0
- package/dist/state/builder.js +71 -85
- package/dist/tests/simdReadings.test.d.ts +2 -0
- package/dist/tests/simdReadings.test.d.ts.map +1 -0
- package/dist/tests/simdReadings.test.js +76 -0
- package/dist/tests/simdReadings.test.js.map +1 -0
- package/package.json +8 -8
- package/src/index.ts +1 -0
- package/src/simdReadings.ts +45 -0
- package/src/tests/simdReadings.test.ts +149 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,158 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
16
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
2
|
-
var
|
|
3
|
-
|
|
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;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
exports.
|
|
27
|
-
exports.
|
|
28
|
-
exports.
|
|
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;
|
package/dist/cjs/providers.cjs
CHANGED
|
@@ -1,49 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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;
|