@prosopo/procaptcha-bundle 2.0.3 → 2.1.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.
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.d.ts +1 -14
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.d.ts.map +1 -1
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.js +18 -206
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.js.map +1 -1
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.d.ts +2 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.js +36 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.d.ts +2 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.js +69 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.d.ts +2 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.js +8 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/config.d.ts +8 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/config.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/config.js +31 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/config.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.d.ts +19 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.js +147 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/form.d.ts +2 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/form.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/form.js +2 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/form.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/language.d.ts +3 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/language.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/language.js +17 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/language.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.d.ts +3 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.js +9 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.js.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.d.ts +3 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.d.ts.map +1 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.js +9 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.js.map +1 -0
- package/dist/bundle/ProcaptchaWidget-BZq2OhjK.js +615 -0
- package/dist/bundle/ProcaptchaWidget-b_oUhvT9.js +149 -0
- package/dist/bundle/index-Ck7UqzKB.js +19822 -0
- package/dist/bundle/index.d.ts +1 -14
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/procaptcha.bundle.js +1 -1
- package/dist/bundle/tests/captchaType.test.d.ts +2 -0
- package/dist/bundle/tests/captchaType.test.d.ts.map +1 -0
- package/dist/bundle/tests/config.test.d.ts +2 -0
- package/dist/bundle/tests/config.test.d.ts.map +1 -0
- package/dist/bundle/util/captchaType.d.ts +2 -0
- package/dist/bundle/util/captchaType.d.ts.map +1 -0
- package/dist/bundle/util/config.d.ts +8 -0
- package/dist/bundle/util/config.d.ts.map +1 -0
- package/dist/bundle/util/defaultCallbacks.d.ts +19 -0
- package/dist/bundle/util/defaultCallbacks.d.ts.map +1 -0
- package/dist/bundle/util/form.d.ts +2 -0
- package/dist/bundle/util/form.d.ts.map +1 -0
- package/dist/bundle/util/language.d.ts +3 -0
- package/dist/bundle/util/language.d.ts.map +1 -0
- package/dist/bundle/util/theme.d.ts +3 -0
- package/dist/bundle/util/theme.d.ts.map +1 -0
- package/dist/bundle/util/timeout.d.ts +3 -0
- package/dist/bundle/util/timeout.d.ts.map +1 -0
- package/dist/bundle/{utils-Cpz4o_0n.js → utils-9IQXYrRR.js} +8025 -12046
- package/dist/cjs/index.cjs +30 -199
- package/dist/cjs/util/captchaType.cjs +12 -0
- package/dist/cjs/util/config.cjs +33 -0
- package/dist/cjs/util/defaultCallbacks.cjs +134 -0
- package/dist/cjs/util/form.cjs +4 -0
- package/dist/cjs/util/language.cjs +18 -0
- package/dist/cjs/util/theme.cjs +9 -0
- package/dist/cjs/util/timeout.cjs +14 -0
- package/dist/index.d.ts +1 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -206
- package/dist/index.js.map +1 -1
- package/dist/tests/captchaType.test.d.ts +2 -0
- package/dist/tests/captchaType.test.d.ts.map +1 -0
- package/dist/tests/captchaType.test.js +36 -0
- package/dist/tests/captchaType.test.js.map +1 -0
- package/dist/tests/config.test.d.ts +2 -0
- package/dist/tests/config.test.d.ts.map +1 -0
- package/dist/tests/config.test.js +69 -0
- package/dist/tests/config.test.js.map +1 -0
- package/dist/util/captchaType.d.ts +3 -0
- package/dist/util/captchaType.d.ts.map +1 -0
- package/dist/util/captchaType.js +8 -0
- package/dist/util/captchaType.js.map +1 -0
- package/dist/util/config.d.ts +8 -0
- package/dist/util/config.d.ts.map +1 -0
- package/dist/util/config.js +31 -0
- package/dist/util/config.js.map +1 -0
- package/dist/util/defaultCallbacks.d.ts +19 -0
- package/dist/util/defaultCallbacks.d.ts.map +1 -0
- package/dist/util/defaultCallbacks.js +147 -0
- package/dist/util/defaultCallbacks.js.map +1 -0
- package/dist/util/form.d.ts +2 -0
- package/dist/util/form.d.ts.map +1 -0
- package/dist/util/form.js +2 -0
- package/dist/util/form.js.map +1 -0
- package/dist/util/language.d.ts +3 -0
- package/dist/util/language.d.ts.map +1 -0
- package/dist/util/language.js +17 -0
- package/dist/util/language.js.map +1 -0
- package/dist/util/theme.d.ts +3 -0
- package/dist/util/theme.d.ts.map +1 -0
- package/dist/util/theme.js +9 -0
- package/dist/util/theme.js.map +1 -0
- package/dist/util/timeout.d.ts +3 -0
- package/dist/util/timeout.d.ts.map +1 -0
- package/dist/util/timeout.js +9 -0
- package/dist/util/timeout.js.map +1 -0
- package/package.json +64 -59
- package/stats.html +1 -1
- package/vite.config.ts +24 -24
- package/vite.test.config.ts +34 -0
- package/dist/bundle/ProcaptchaWidget-BzBkw8-_.js +0 -775
- package/dist/bundle/ProcaptchaWidget-nO3NsM0R.js +0 -155
- package/dist/bundle/index-DsnIPyZG.js +0 -14976
package/dist/cjs/index.cjs
CHANGED
|
@@ -4,227 +4,58 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const procaptchaFrictionless = require("@prosopo/procaptcha-frictionless");
|
|
5
5
|
const procaptchaPow = require("@prosopo/procaptcha-pow");
|
|
6
6
|
const procaptchaReact = require("@prosopo/procaptcha-react");
|
|
7
|
-
const types = require("@prosopo/types");
|
|
8
7
|
const util = require("@prosopo/util");
|
|
9
8
|
const client = require("react-dom/client");
|
|
9
|
+
const captchaType = require("./util/captchaType.cjs");
|
|
10
|
+
const config = require("./util/config.cjs");
|
|
11
|
+
const defaultCallbacks = require("./util/defaultCallbacks.cjs");
|
|
12
|
+
const language = require("./util/language.cjs");
|
|
13
|
+
const theme = require("./util/theme.cjs");
|
|
14
|
+
const timeout = require("./util/timeout.cjs");
|
|
10
15
|
const BUNDLE_NAME = "procaptcha.bundle.js";
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
if (script && script.src.indexOf(`${name}`) !== -1) {
|
|
15
|
-
const params = new URLSearchParams(script.src.split("?")[1]);
|
|
16
|
-
return {
|
|
17
|
-
onloadUrlCallback: params.get("onload") || void 0,
|
|
18
|
-
renderExplicit: params.get("render") || void 0
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
return { onloadUrlCallback: void 0, renderExplicit: void 0 };
|
|
22
|
-
};
|
|
23
|
-
const getConfig = (siteKey) => {
|
|
24
|
-
if (!siteKey) {
|
|
25
|
-
siteKey = process.env.PROSOPO_SITE_KEY || "";
|
|
26
|
-
}
|
|
27
|
-
return types.ProcaptchaConfigSchema.parse({
|
|
28
|
-
defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? types.EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : types.EnvironmentTypesSchema.enum.development,
|
|
29
|
-
userAccountAddress: "",
|
|
30
|
-
account: {
|
|
31
|
-
address: siteKey
|
|
32
|
-
},
|
|
33
|
-
serverUrl: process.env.PROSOPO_SERVER_URL || "",
|
|
34
|
-
mongoAtlasUri: process.env.PROSOPO_MONGO_EVENTS_URI || "",
|
|
35
|
-
devOnlyWatchEvents: process.env._DEV_ONLY_WATCH_EVENTS === "true" || false
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
const getParentForm = (element) => element.closest("form");
|
|
39
|
-
const getWindowCallback = (callbackName) => {
|
|
40
|
-
const fn = window[callbackName.replace("window.", "")];
|
|
41
|
-
if (typeof fn !== "function") {
|
|
42
|
-
throw new Error(
|
|
43
|
-
`Callback ${callbackName} is not defined on the window object`
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
return fn;
|
|
47
|
-
};
|
|
48
|
-
const handleOnHuman = (element, token) => {
|
|
49
|
-
removeProcaptchaResponse();
|
|
50
|
-
const form = getParentForm(element);
|
|
51
|
-
if (!form) {
|
|
52
|
-
console.error("Parent form not found for the element:", element);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const input = document.createElement("input");
|
|
56
|
-
input.type = "hidden";
|
|
57
|
-
input.name = types.ApiParams.procaptchaResponse;
|
|
58
|
-
input.value = token;
|
|
59
|
-
form.appendChild(input);
|
|
60
|
-
};
|
|
61
|
-
const customThemeSet = /* @__PURE__ */ new Set(["light", "dark"]);
|
|
62
|
-
const validateTheme = (themeAttribute) => customThemeSet.has(themeAttribute) ? themeAttribute : "light";
|
|
63
|
-
const setValidChallengeLength = (renderOptions, element, config) => {
|
|
64
|
-
const challengeValidLengthAttribute = renderOptions?.["challenge-valid-length"] || element.getAttribute("data-challenge-valid-length");
|
|
65
|
-
if (challengeValidLengthAttribute) {
|
|
66
|
-
config.captchas.image.solutionTimeout = Number.parseInt(
|
|
67
|
-
challengeValidLengthAttribute
|
|
68
|
-
);
|
|
69
|
-
config.captchas.pow.solutionTimeout = Number.parseInt(
|
|
70
|
-
challengeValidLengthAttribute
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
const removeProcaptchaResponse = () => {
|
|
75
|
-
const element = Array.from(
|
|
76
|
-
document.getElementsByName(types.ApiParams.procaptchaResponse)
|
|
16
|
+
const implicitRender = () => {
|
|
17
|
+
const elements = Array.from(
|
|
18
|
+
document.getElementsByClassName("procaptcha")
|
|
77
19
|
);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
removeProcaptchaResponse();
|
|
84
|
-
console.log("Challenge expired");
|
|
85
|
-
},
|
|
86
|
-
onExpired: () => {
|
|
87
|
-
removeProcaptchaResponse();
|
|
88
|
-
alert("Completed challenge has expired, please try again");
|
|
89
|
-
},
|
|
90
|
-
onError: (error) => {
|
|
91
|
-
removeProcaptchaResponse();
|
|
92
|
-
console.error(error);
|
|
93
|
-
},
|
|
94
|
-
onClose: () => {
|
|
95
|
-
console.log("Challenge closed");
|
|
96
|
-
},
|
|
97
|
-
onOpen: () => {
|
|
98
|
-
console.log("Challenge opened");
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
const setTheme = (renderOptions, element, config) => {
|
|
102
|
-
const themeAttribute = renderOptions?.theme || element.getAttribute("data-theme") || "light";
|
|
103
|
-
config.theme = validateTheme(themeAttribute);
|
|
104
|
-
};
|
|
105
|
-
function setUserCallbacks(renderOptions, callbacks, element) {
|
|
106
|
-
if (typeof renderOptions?.callback === "function") {
|
|
107
|
-
const fn = renderOptions.callback;
|
|
108
|
-
callbacks.onHuman = (token) => {
|
|
109
|
-
handleOnHuman(element, token);
|
|
110
|
-
fn(token);
|
|
111
|
-
};
|
|
112
|
-
} else {
|
|
113
|
-
const callbackName = typeof renderOptions?.callback === "string" ? renderOptions?.callback : element.getAttribute("data-callback");
|
|
114
|
-
if (callbackName)
|
|
115
|
-
callbacks.onHuman = (token) => {
|
|
116
|
-
handleOnHuman(element, token);
|
|
117
|
-
const fn = getWindowCallback(callbackName);
|
|
118
|
-
fn(token);
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
if (renderOptions && renderOptions["chalexpired-callback"] && typeof renderOptions["chalexpired-callback"] === "function") {
|
|
122
|
-
const fn = renderOptions["chalexpired-callback"];
|
|
123
|
-
callbacks.onChallengeExpired = () => {
|
|
124
|
-
removeProcaptchaResponse();
|
|
125
|
-
fn();
|
|
126
|
-
};
|
|
127
|
-
} else {
|
|
128
|
-
const chalExpiredCallbackName = typeof renderOptions?.["chalexpired-callback"] === "string" ? renderOptions?.["chalexpired-callback"] : element.getAttribute("data-chalexpired-callback");
|
|
129
|
-
if (chalExpiredCallbackName)
|
|
130
|
-
callbacks.onChallengeExpired = () => {
|
|
131
|
-
const fn = getWindowCallback(chalExpiredCallbackName);
|
|
132
|
-
removeProcaptchaResponse();
|
|
133
|
-
fn();
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
if (renderOptions && renderOptions["expired-callback"] && typeof renderOptions["expired-callback"] === "function") {
|
|
137
|
-
const fn = renderOptions["expired-callback"];
|
|
138
|
-
callbacks.onExpired = () => {
|
|
139
|
-
removeProcaptchaResponse();
|
|
140
|
-
fn();
|
|
141
|
-
};
|
|
142
|
-
} else {
|
|
143
|
-
const onExpiredCallbackName = typeof renderOptions?.["expired-callback"] === "string" ? renderOptions?.["expired-callback"] : element.getAttribute("data-expired-callback");
|
|
144
|
-
if (onExpiredCallbackName)
|
|
145
|
-
callbacks.onExpired = () => {
|
|
146
|
-
const fn = getWindowCallback(onExpiredCallbackName);
|
|
147
|
-
removeProcaptchaResponse();
|
|
148
|
-
fn();
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
if (renderOptions && renderOptions?.["error-callback"] && typeof renderOptions["error-callback"] === "function") {
|
|
152
|
-
const fn = renderOptions["error-callback"];
|
|
153
|
-
callbacks.onError = () => {
|
|
154
|
-
removeProcaptchaResponse();
|
|
155
|
-
fn();
|
|
156
|
-
};
|
|
157
|
-
} else {
|
|
158
|
-
const errorCallbackName = typeof renderOptions?.["error-callback"] === "string" ? renderOptions?.["error-callback"] : element.getAttribute("data-error-callback");
|
|
159
|
-
if (errorCallbackName)
|
|
160
|
-
callbacks.onError = () => {
|
|
161
|
-
const fn = getWindowCallback(errorCallbackName);
|
|
162
|
-
removeProcaptchaResponse();
|
|
163
|
-
fn();
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
if (typeof renderOptions?.["close-callback"] === "function") {
|
|
167
|
-
callbacks.onClose = renderOptions["close-callback"];
|
|
168
|
-
} else {
|
|
169
|
-
const onCloseCallbackName = typeof renderOptions?.["close-callback"] === "string" ? renderOptions?.["close-callback"] : element.getAttribute("data-close-callback");
|
|
170
|
-
if (onCloseCallbackName)
|
|
171
|
-
callbacks.onClose = getWindowCallback(onCloseCallbackName);
|
|
172
|
-
}
|
|
173
|
-
if (renderOptions?.["open-callback"]) {
|
|
174
|
-
if (typeof renderOptions["open-callback"] === "function") {
|
|
175
|
-
callbacks.onOpen = renderOptions["open-callback"];
|
|
176
|
-
} else {
|
|
177
|
-
const onOpenCallbackName = typeof renderOptions?.["open-callback"] === "string" ? renderOptions?.["open-callback"] : element.getAttribute("data-open-callback");
|
|
178
|
-
if (onOpenCallbackName)
|
|
179
|
-
callbacks.onOpen = getWindowCallback(onOpenCallbackName);
|
|
20
|
+
if (elements.length) {
|
|
21
|
+
const siteKey = util.at(elements, 0).getAttribute("data-sitekey");
|
|
22
|
+
if (!siteKey) {
|
|
23
|
+
console.error("No siteKey found");
|
|
24
|
+
return;
|
|
180
25
|
}
|
|
26
|
+
const captchaType$1 = captchaType.getCaptchaType(elements);
|
|
27
|
+
renderLogic(elements, config.getConfig(siteKey), { captchaType: captchaType$1, siteKey });
|
|
181
28
|
}
|
|
182
|
-
}
|
|
183
|
-
const renderLogic = (elements,
|
|
29
|
+
};
|
|
30
|
+
const renderLogic = (elements, config2, renderOptions) => {
|
|
184
31
|
for (const element of elements) {
|
|
185
|
-
const callbacks = getDefaultCallbacks(element);
|
|
186
|
-
setUserCallbacks(renderOptions, callbacks, element);
|
|
187
|
-
setTheme(renderOptions, element,
|
|
188
|
-
setValidChallengeLength(renderOptions, element,
|
|
32
|
+
const callbacks = defaultCallbacks.getDefaultCallbacks(element);
|
|
33
|
+
defaultCallbacks.setUserCallbacks(renderOptions, callbacks, element);
|
|
34
|
+
theme.setTheme(renderOptions, element, config2);
|
|
35
|
+
timeout.setValidChallengeLength(renderOptions, element, config2);
|
|
36
|
+
language.setLanguage(renderOptions, element, config2);
|
|
189
37
|
switch (renderOptions?.captchaType) {
|
|
190
38
|
case "pow":
|
|
191
39
|
client.createRoot(element).render(
|
|
192
|
-
/* @__PURE__ */ jsxRuntime.jsx(procaptchaPow.ProcaptchaPow, { config, callbacks })
|
|
40
|
+
/* @__PURE__ */ jsxRuntime.jsx(procaptchaPow.ProcaptchaPow, { config: config2, callbacks })
|
|
193
41
|
);
|
|
194
42
|
break;
|
|
195
43
|
case "frictionless":
|
|
196
44
|
client.createRoot(element).render(
|
|
197
|
-
/* @__PURE__ */ jsxRuntime.jsx(procaptchaFrictionless.ProcaptchaFrictionless, { config, callbacks })
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(procaptchaFrictionless.ProcaptchaFrictionless, { config: config2, callbacks })
|
|
198
46
|
);
|
|
199
47
|
break;
|
|
200
48
|
default:
|
|
201
49
|
client.createRoot(element).render(
|
|
202
|
-
/* @__PURE__ */ jsxRuntime.jsx(procaptchaReact.Procaptcha, { config, callbacks })
|
|
50
|
+
/* @__PURE__ */ jsxRuntime.jsx(procaptchaReact.Procaptcha, { config: config2, callbacks })
|
|
203
51
|
);
|
|
204
52
|
break;
|
|
205
53
|
}
|
|
206
54
|
}
|
|
207
55
|
};
|
|
208
|
-
const implicitRender = () => {
|
|
209
|
-
const elements = Array.from(
|
|
210
|
-
document.getElementsByClassName("procaptcha")
|
|
211
|
-
);
|
|
212
|
-
if (elements.length) {
|
|
213
|
-
const siteKey = util.at(elements, 0).getAttribute("data-sitekey");
|
|
214
|
-
if (!siteKey) {
|
|
215
|
-
console.error("No siteKey found");
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
const features = Object.values(types.FeaturesEnum);
|
|
219
|
-
const captchaType = features.find(
|
|
220
|
-
(feature) => feature === util.at(elements, 0).getAttribute("data-captcha-type")
|
|
221
|
-
) || "frictionless";
|
|
222
|
-
renderLogic(elements, getConfig(siteKey), { captchaType, siteKey });
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
56
|
const render = (element, renderOptions) => {
|
|
226
57
|
const siteKey = renderOptions.siteKey;
|
|
227
|
-
renderLogic([element], getConfig(siteKey), renderOptions);
|
|
58
|
+
renderLogic([element], config.getConfig(siteKey), renderOptions);
|
|
228
59
|
};
|
|
229
60
|
function ready(fn) {
|
|
230
61
|
if (document && document.readyState !== "loading") {
|
|
@@ -236,13 +67,13 @@ function ready(fn) {
|
|
|
236
67
|
}
|
|
237
68
|
}
|
|
238
69
|
window.procaptcha = { ready, render };
|
|
239
|
-
const { onloadUrlCallback, renderExplicit } = extractParams(BUNDLE_NAME);
|
|
70
|
+
const { onloadUrlCallback, renderExplicit } = config.extractParams(BUNDLE_NAME);
|
|
240
71
|
if (renderExplicit !== "explicit") {
|
|
241
72
|
ready(implicitRender);
|
|
242
73
|
}
|
|
243
74
|
if (onloadUrlCallback) {
|
|
244
|
-
const onloadCallback = getWindowCallback(onloadUrlCallback);
|
|
245
|
-
getProcaptchaScript()?.addEventListener("load", () => {
|
|
75
|
+
const onloadCallback = defaultCallbacks.getWindowCallback(onloadUrlCallback);
|
|
76
|
+
config.getProcaptchaScript(BUNDLE_NAME)?.addEventListener("load", () => {
|
|
246
77
|
ready(onloadCallback);
|
|
247
78
|
});
|
|
248
79
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const types = require("@prosopo/types");
|
|
4
|
+
const util = require("@prosopo/util");
|
|
5
|
+
function getCaptchaType(elements) {
|
|
6
|
+
const features = Object.values(types.FeaturesEnum);
|
|
7
|
+
const captchaType = features.find(
|
|
8
|
+
(feature) => feature === util.at(elements, 0).getAttribute("data-captcha-type")
|
|
9
|
+
) || "frictionless";
|
|
10
|
+
return captchaType;
|
|
11
|
+
}
|
|
12
|
+
exports.getCaptchaType = getCaptchaType;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const types = require("@prosopo/types");
|
|
4
|
+
const getConfig = (siteKey) => {
|
|
5
|
+
if (!siteKey) {
|
|
6
|
+
siteKey = process.env.PROSOPO_SITE_KEY || "";
|
|
7
|
+
}
|
|
8
|
+
return types.ProcaptchaConfigSchema.parse({
|
|
9
|
+
defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? types.EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : types.EnvironmentTypesSchema.enum.development,
|
|
10
|
+
userAccountAddress: "",
|
|
11
|
+
account: {
|
|
12
|
+
address: siteKey
|
|
13
|
+
},
|
|
14
|
+
serverUrl: process.env.PROSOPO_SERVER_URL || "",
|
|
15
|
+
mongoAtlasUri: process.env.PROSOPO_MONGO_EVENTS_URI || "",
|
|
16
|
+
devOnlyWatchEvents: process.env._DEV_ONLY_WATCH_EVENTS === "true" || false
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
const getProcaptchaScript = (name) => document.querySelector(`script[src*="${name}"]`);
|
|
20
|
+
const extractParams = (name) => {
|
|
21
|
+
const script = getProcaptchaScript(name);
|
|
22
|
+
if (script && script.src.indexOf(`${name}`) !== -1) {
|
|
23
|
+
const params = new URLSearchParams(script.src.split("?")[1]);
|
|
24
|
+
return {
|
|
25
|
+
onloadUrlCallback: params.get("onload") || void 0,
|
|
26
|
+
renderExplicit: params.get("render") || void 0
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return { onloadUrlCallback: void 0, renderExplicit: void 0 };
|
|
30
|
+
};
|
|
31
|
+
exports.extractParams = extractParams;
|
|
32
|
+
exports.getConfig = getConfig;
|
|
33
|
+
exports.getProcaptchaScript = getProcaptchaScript;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const types = require("@prosopo/types");
|
|
4
|
+
const form = require("./form.cjs");
|
|
5
|
+
const getWindowCallback = (callbackName) => {
|
|
6
|
+
const fn = window[callbackName.replace("window.", "")];
|
|
7
|
+
if (typeof fn !== "function") {
|
|
8
|
+
throw new Error(
|
|
9
|
+
`Callback ${callbackName} is not defined on the window object`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
return fn;
|
|
13
|
+
};
|
|
14
|
+
const getDefaultCallbacks = (element) => ({
|
|
15
|
+
onHuman: (token) => handleOnHuman(element, token),
|
|
16
|
+
onChallengeExpired: () => {
|
|
17
|
+
removeProcaptchaResponse();
|
|
18
|
+
console.log("Challenge expired");
|
|
19
|
+
},
|
|
20
|
+
onExpired: () => {
|
|
21
|
+
removeProcaptchaResponse();
|
|
22
|
+
alert("Completed challenge has expired, please try again");
|
|
23
|
+
},
|
|
24
|
+
onError: (error) => {
|
|
25
|
+
removeProcaptchaResponse();
|
|
26
|
+
console.error(error);
|
|
27
|
+
},
|
|
28
|
+
onClose: () => {
|
|
29
|
+
console.log("Challenge closed");
|
|
30
|
+
},
|
|
31
|
+
onOpen: () => {
|
|
32
|
+
console.log("Challenge opened");
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
function setUserCallbacks(renderOptions, callbacks, element) {
|
|
36
|
+
if (typeof renderOptions?.callback === "function") {
|
|
37
|
+
const fn = renderOptions.callback;
|
|
38
|
+
callbacks.onHuman = (token) => {
|
|
39
|
+
handleOnHuman(element, token);
|
|
40
|
+
fn(token);
|
|
41
|
+
};
|
|
42
|
+
} else {
|
|
43
|
+
const callbackName = typeof renderOptions?.callback === "string" ? renderOptions?.callback : element.getAttribute("data-callback");
|
|
44
|
+
if (callbackName)
|
|
45
|
+
callbacks.onHuman = (token) => {
|
|
46
|
+
handleOnHuman(element, token);
|
|
47
|
+
const fn = getWindowCallback(callbackName);
|
|
48
|
+
fn(token);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (renderOptions?.["chalexpired-callback"] && typeof renderOptions["chalexpired-callback"] === "function") {
|
|
52
|
+
const fn = renderOptions["chalexpired-callback"];
|
|
53
|
+
callbacks.onChallengeExpired = () => {
|
|
54
|
+
removeProcaptchaResponse();
|
|
55
|
+
fn();
|
|
56
|
+
};
|
|
57
|
+
} else {
|
|
58
|
+
const chalExpiredCallbackName = typeof renderOptions?.["chalexpired-callback"] === "string" ? renderOptions?.["chalexpired-callback"] : element.getAttribute("data-chalexpired-callback");
|
|
59
|
+
if (chalExpiredCallbackName)
|
|
60
|
+
callbacks.onChallengeExpired = () => {
|
|
61
|
+
const fn = getWindowCallback(chalExpiredCallbackName);
|
|
62
|
+
removeProcaptchaResponse();
|
|
63
|
+
fn();
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (renderOptions?.["expired-callback"] && typeof renderOptions["expired-callback"] === "function") {
|
|
67
|
+
const fn = renderOptions["expired-callback"];
|
|
68
|
+
callbacks.onExpired = () => {
|
|
69
|
+
removeProcaptchaResponse();
|
|
70
|
+
fn();
|
|
71
|
+
};
|
|
72
|
+
} else {
|
|
73
|
+
const onExpiredCallbackName = typeof renderOptions?.["expired-callback"] === "string" ? renderOptions?.["expired-callback"] : element.getAttribute("data-expired-callback");
|
|
74
|
+
if (onExpiredCallbackName)
|
|
75
|
+
callbacks.onExpired = () => {
|
|
76
|
+
const fn = getWindowCallback(onExpiredCallbackName);
|
|
77
|
+
removeProcaptchaResponse();
|
|
78
|
+
fn();
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
if (renderOptions?.["error-callback"] && typeof renderOptions["error-callback"] === "function") {
|
|
82
|
+
const fn = renderOptions["error-callback"];
|
|
83
|
+
callbacks.onError = () => {
|
|
84
|
+
removeProcaptchaResponse();
|
|
85
|
+
fn();
|
|
86
|
+
};
|
|
87
|
+
} else {
|
|
88
|
+
const errorCallbackName = typeof renderOptions?.["error-callback"] === "string" ? renderOptions?.["error-callback"] : element.getAttribute("data-error-callback");
|
|
89
|
+
if (errorCallbackName)
|
|
90
|
+
callbacks.onError = () => {
|
|
91
|
+
const fn = getWindowCallback(errorCallbackName);
|
|
92
|
+
removeProcaptchaResponse();
|
|
93
|
+
fn();
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (typeof renderOptions?.["close-callback"] === "function") {
|
|
97
|
+
callbacks.onClose = renderOptions["close-callback"];
|
|
98
|
+
} else {
|
|
99
|
+
const onCloseCallbackName = typeof renderOptions?.["close-callback"] === "string" ? renderOptions?.["close-callback"] : element.getAttribute("data-close-callback");
|
|
100
|
+
if (onCloseCallbackName)
|
|
101
|
+
callbacks.onClose = getWindowCallback(onCloseCallbackName);
|
|
102
|
+
}
|
|
103
|
+
if (renderOptions?.["open-callback"]) {
|
|
104
|
+
if (typeof renderOptions["open-callback"] === "function") {
|
|
105
|
+
callbacks.onOpen = renderOptions["open-callback"];
|
|
106
|
+
} else {
|
|
107
|
+
const onOpenCallbackName = typeof renderOptions?.["open-callback"] === "string" ? renderOptions?.["open-callback"] : element.getAttribute("data-open-callback");
|
|
108
|
+
if (onOpenCallbackName)
|
|
109
|
+
callbacks.onOpen = getWindowCallback(onOpenCallbackName);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const handleOnHuman = (element, token) => {
|
|
114
|
+
removeProcaptchaResponse();
|
|
115
|
+
const form$1 = form.getParentForm(element);
|
|
116
|
+
if (!form$1) {
|
|
117
|
+
console.error("Parent form not found for the element:", element);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const input = document.createElement("input");
|
|
121
|
+
input.type = "hidden";
|
|
122
|
+
input.name = types.ApiParams.procaptchaResponse;
|
|
123
|
+
input.value = token;
|
|
124
|
+
form$1.appendChild(input);
|
|
125
|
+
};
|
|
126
|
+
const removeProcaptchaResponse = () => {
|
|
127
|
+
const element = Array.from(
|
|
128
|
+
document.getElementsByName(types.ApiParams.procaptchaResponse)
|
|
129
|
+
);
|
|
130
|
+
element.map((el) => el.remove());
|
|
131
|
+
};
|
|
132
|
+
exports.getDefaultCallbacks = getDefaultCallbacks;
|
|
133
|
+
exports.getWindowCallback = getWindowCallback;
|
|
134
|
+
exports.setUserCallbacks = setUserCallbacks;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const types = require("@prosopo/types");
|
|
4
|
+
const setLanguage = (renderOptions, element, config) => {
|
|
5
|
+
const languageAttribute = renderOptions?.language || element.getAttribute("data-language");
|
|
6
|
+
if (languageAttribute) {
|
|
7
|
+
config.language = validateLanguage(languageAttribute);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const validateLanguage = (languageAttribute) => {
|
|
11
|
+
try {
|
|
12
|
+
return types.LanguageSchema.parse(languageAttribute);
|
|
13
|
+
} catch (error) {
|
|
14
|
+
console.error(`Invalid language attribute: ${languageAttribute}`);
|
|
15
|
+
return types.LanguageSchema.parse("en");
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
exports.setLanguage = setLanguage;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const setTheme = (renderOptions, element, config) => {
|
|
4
|
+
const themeAttribute = renderOptions?.theme || element.getAttribute("data-theme") || "light";
|
|
5
|
+
config.theme = validateTheme(themeAttribute);
|
|
6
|
+
};
|
|
7
|
+
const customThemeSet = /* @__PURE__ */ new Set(["light", "dark"]);
|
|
8
|
+
const validateTheme = (themeAttribute) => customThemeSet.has(themeAttribute) ? themeAttribute : "light";
|
|
9
|
+
exports.setTheme = setTheme;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const setValidChallengeLength = (renderOptions, element, config) => {
|
|
4
|
+
const challengeValidLengthAttribute = renderOptions?.["challenge-valid-length"] || element.getAttribute("data-challenge-valid-length");
|
|
5
|
+
if (challengeValidLengthAttribute) {
|
|
6
|
+
config.captchas.image.solutionTimeout = Number.parseInt(
|
|
7
|
+
challengeValidLengthAttribute
|
|
8
|
+
);
|
|
9
|
+
config.captchas.pow.solutionTimeout = Number.parseInt(
|
|
10
|
+
challengeValidLengthAttribute
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.setValidChallengeLength = setValidChallengeLength;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
interface ProcaptchaRenderOptions {
|
|
3
|
-
siteKey: string;
|
|
4
|
-
theme?: "light" | "dark";
|
|
5
|
-
captchaType?: Features;
|
|
6
|
-
callback?: string | ((token: ProcaptchaToken) => void);
|
|
7
|
-
"challenge-valid-length"?: string;
|
|
8
|
-
"chalexpired-callback"?: string | (() => void);
|
|
9
|
-
"expired-callback"?: string | (() => void);
|
|
10
|
-
"open-callback"?: string | (() => void);
|
|
11
|
-
"close-callback"?: string | (() => void);
|
|
12
|
-
"error-callback"?: string | (() => void);
|
|
13
|
-
}
|
|
1
|
+
import type { ProcaptchaRenderOptions } from "@prosopo/types";
|
|
14
2
|
export declare const render: (element: Element, renderOptions: ProcaptchaRenderOptions) => void;
|
|
15
3
|
export default function ready(fn: () => void): void;
|
|
16
4
|
declare global {
|
|
@@ -21,5 +9,4 @@ declare global {
|
|
|
21
9
|
};
|
|
22
10
|
}
|
|
23
11
|
}
|
|
24
|
-
export {};
|
|
25
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAEX,uBAAuB,EACvB,MAAM,gBAAgB,CAAC;AA0ExB,eAAO,MAAM,MAAM,YACT,OAAO,iBACD,uBAAuB,SAKtC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,QAQ3C;AAGD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,UAAU,EAAE;YAAE,KAAK,EAAE,OAAO,KAAK,CAAC;YAAC,MAAM,EAAE,OAAO,MAAM,CAAA;SAAE,CAAC;KAC3D;CACD"}
|