@prosopo/procaptcha-bundle 2.0.3 → 2.1.1
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/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/index.d.ts +12 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/index.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/index.js +71 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/index.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.d.ts +2 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.js +36 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/captchaType.test.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.d.ts +2 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.js +69 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/tests/config.test.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.d.ts +2 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.js +8 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/captchaType.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/config.d.ts +8 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/config.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/config.js +31 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/config.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.d.ts +19 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.js +147 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/defaultCallbacks.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/form.d.ts +2 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/form.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/form.js +2 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/form.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/language.d.ts +3 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/language.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/language.js +17 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/language.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.d.ts +3 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.js +9 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/theme.js.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.d.ts +3 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.d.ts.map +1 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.js +9 -0
- package/.rollup.cache/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/dist/bundle/util/timeout.js.map +1 -0
- package/dist/bundle/ProcaptchaWidget-BJTWbWXX.js +157 -0
- package/dist/bundle/ProcaptchaWidget-CyCdGVAQ.js +624 -0
- package/dist/bundle/index-DkYajG2c.js +19015 -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-CAk_TqSc.js} +9596 -11830
- package/dist/cjs/index.cjs +43 -200
- 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 +65 -59
- package/stats.html +1 -1
- package/vite.config.ts +24 -24
- package/vite.config.ts.timestamp-1717674816132-b375b28e04de9.mjs +56 -0
- package/vite.config.ts.timestamp-1723148478701-50a086cc53355.mjs +56 -0
- package/vite.test.config.ts +34 -0
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.d.ts +0 -25
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.d.ts.map +0 -1
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.js +0 -259
- package/.rollup.cache/home/runner/work/captcha/captcha/packages/procaptcha-bundle/dist/bundle/index.js.map +0 -1
- 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
|
@@ -1,230 +1,73 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-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__ */
|
|
40
|
+
/* @__PURE__ */ jsxDevRuntime.jsxDEV(procaptchaPow.ProcaptchaPow, { config: config2, callbacks }, void 0, false, {
|
|
41
|
+
fileName: "/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/src/index.tsx",
|
|
42
|
+
lineNumber: 77,
|
|
43
|
+
columnNumber: 6
|
|
44
|
+
}, void 0)
|
|
193
45
|
);
|
|
194
46
|
break;
|
|
195
47
|
case "frictionless":
|
|
196
48
|
client.createRoot(element).render(
|
|
197
|
-
/* @__PURE__ */
|
|
49
|
+
/* @__PURE__ */ jsxDevRuntime.jsxDEV(procaptchaFrictionless.ProcaptchaFrictionless, { config: config2, callbacks }, void 0, false, {
|
|
50
|
+
fileName: "/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/src/index.tsx",
|
|
51
|
+
lineNumber: 82,
|
|
52
|
+
columnNumber: 6
|
|
53
|
+
}, void 0)
|
|
198
54
|
);
|
|
199
55
|
break;
|
|
200
56
|
default:
|
|
201
57
|
client.createRoot(element).render(
|
|
202
|
-
/* @__PURE__ */
|
|
58
|
+
/* @__PURE__ */ jsxDevRuntime.jsxDEV(procaptchaReact.Procaptcha, { config: config2, callbacks }, void 0, false, {
|
|
59
|
+
fileName: "/home/chris/dev/prosopo/captcha-private/captcha/packages/procaptcha-bundle/src/index.tsx",
|
|
60
|
+
lineNumber: 87,
|
|
61
|
+
columnNumber: 6
|
|
62
|
+
}, void 0)
|
|
203
63
|
);
|
|
204
64
|
break;
|
|
205
65
|
}
|
|
206
66
|
}
|
|
207
67
|
};
|
|
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
68
|
const render = (element, renderOptions) => {
|
|
226
69
|
const siteKey = renderOptions.siteKey;
|
|
227
|
-
renderLogic([element], getConfig(siteKey), renderOptions);
|
|
70
|
+
renderLogic([element], config.getConfig(siteKey), renderOptions);
|
|
228
71
|
};
|
|
229
72
|
function ready(fn) {
|
|
230
73
|
if (document && document.readyState !== "loading") {
|
|
@@ -236,13 +79,13 @@ function ready(fn) {
|
|
|
236
79
|
}
|
|
237
80
|
}
|
|
238
81
|
window.procaptcha = { ready, render };
|
|
239
|
-
const { onloadUrlCallback, renderExplicit } = extractParams(BUNDLE_NAME);
|
|
82
|
+
const { onloadUrlCallback, renderExplicit } = config.extractParams(BUNDLE_NAME);
|
|
240
83
|
if (renderExplicit !== "explicit") {
|
|
241
84
|
ready(implicitRender);
|
|
242
85
|
}
|
|
243
86
|
if (onloadUrlCallback) {
|
|
244
|
-
const onloadCallback = getWindowCallback(onloadUrlCallback);
|
|
245
|
-
getProcaptchaScript()?.addEventListener("load", () => {
|
|
87
|
+
const onloadCallback = defaultCallbacks.getWindowCallback(onloadUrlCallback);
|
|
88
|
+
config.getProcaptchaScript(BUNDLE_NAME)?.addEventListener("load", () => {
|
|
246
89
|
ready(onloadCallback);
|
|
247
90
|
});
|
|
248
91
|
}
|
|
@@ -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 locale = require("@prosopo/locale");
|
|
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 locale.LanguageSchema.parse(languageAttribute);
|
|
13
|
+
} catch (error) {
|
|
14
|
+
console.error(`Invalid language attribute: ${languageAttribute}`);
|
|
15
|
+
return locale.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"}
|