@prosopo/procaptcha-bundle 2.1.4 → 2.1.6
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/dist/cjs/index.cjs +70 -0
- package/dist/cjs/util/captchaType.cjs +12 -0
- package/dist/cjs/util/config.cjs +33 -0
- package/dist/cjs/util/defaultCallbacks.cjs +159 -0
- package/dist/cjs/util/form.cjs +4 -0
- package/dist/cjs/util/language.cjs +18 -0
- package/dist/cjs/util/renderLogic.cjs +45 -0
- package/dist/cjs/util/theme.cjs +9 -0
- package/dist/cjs/util/timeout.cjs +14 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/tests/util/captchaType.test.d.ts +2 -0
- package/dist/tests/util/captchaType.test.d.ts.map +1 -0
- package/dist/tests/util/captchaType.test.js +36 -0
- package/dist/tests/util/captchaType.test.js.map +1 -0
- package/dist/tests/util/config.test.d.ts +2 -0
- package/dist/tests/util/config.test.d.ts.map +1 -0
- package/dist/tests/util/config.test.js +69 -0
- package/dist/tests/util/config.test.js.map +1 -0
- package/dist/tests/util/renderLogic.test.d.ts +2 -0
- package/dist/tests/util/renderLogic.test.d.ts.map +1 -0
- package/dist/tests/util/renderLogic.test.js +131 -0
- package/dist/tests/util/renderLogic.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 +23 -0
- package/dist/util/defaultCallbacks.d.ts.map +1 -0
- package/dist/util/defaultCallbacks.js +178 -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/renderLogic.d.ts +4 -0
- package/dist/util/renderLogic.d.ts.map +1 -0
- package/dist/util/renderLogic.js +41 -0
- package/dist/util/renderLogic.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 +10 -10
- package/webpack.config.cjs +13 -5
- package/stats.html +0 -4842
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const util = require("@prosopo/util");
|
|
4
|
+
const captchaType = require("./util/captchaType.cjs");
|
|
5
|
+
const config = require("./util/config.cjs");
|
|
6
|
+
const defaultCallbacks = require("./util/defaultCallbacks.cjs");
|
|
7
|
+
const renderLogic = require("./util/renderLogic.cjs");
|
|
8
|
+
const BUNDLE_NAME = "procaptcha.bundle.js";
|
|
9
|
+
let procaptchaRoots = [];
|
|
10
|
+
const implicitRender = () => {
|
|
11
|
+
const elements = Array.from(
|
|
12
|
+
document.getElementsByClassName("procaptcha")
|
|
13
|
+
);
|
|
14
|
+
if (elements.length) {
|
|
15
|
+
const siteKey = util.at(elements, 0).getAttribute("data-sitekey");
|
|
16
|
+
if (!siteKey) {
|
|
17
|
+
console.error("No siteKey found");
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const captchaType$1 = captchaType.getCaptchaType(elements);
|
|
21
|
+
const root = renderLogic.renderLogic(elements, config.getConfig(siteKey), {
|
|
22
|
+
captchaType: captchaType$1,
|
|
23
|
+
siteKey
|
|
24
|
+
});
|
|
25
|
+
procaptchaRoots.push(...root);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const render = (element, renderOptions) => {
|
|
29
|
+
const siteKey = renderOptions.siteKey;
|
|
30
|
+
const roots = renderLogic.renderLogic([element], config.getConfig(siteKey), renderOptions);
|
|
31
|
+
procaptchaRoots.push(...roots);
|
|
32
|
+
};
|
|
33
|
+
function ready(fn) {
|
|
34
|
+
if (document && document.readyState !== "loading") {
|
|
35
|
+
console.log("document.readyState ready!");
|
|
36
|
+
fn();
|
|
37
|
+
} else {
|
|
38
|
+
console.log("DOMContentLoaded listener!");
|
|
39
|
+
document.addEventListener("DOMContentLoaded", fn);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const start = () => {
|
|
43
|
+
const { onloadUrlCallback, renderExplicit } = config.extractParams(BUNDLE_NAME);
|
|
44
|
+
if (renderExplicit !== "explicit") {
|
|
45
|
+
ready(implicitRender);
|
|
46
|
+
}
|
|
47
|
+
if (onloadUrlCallback) {
|
|
48
|
+
const onloadCallback = defaultCallbacks.getWindowCallback(onloadUrlCallback);
|
|
49
|
+
let readyCalled = false;
|
|
50
|
+
config.getProcaptchaScript(BUNDLE_NAME)?.addEventListener("load", () => {
|
|
51
|
+
ready(onloadCallback);
|
|
52
|
+
readyCalled = true;
|
|
53
|
+
});
|
|
54
|
+
if (document.readyState === "complete" && !readyCalled) {
|
|
55
|
+
ready(onloadCallback);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const reset = () => {
|
|
60
|
+
for (const root of procaptchaRoots) {
|
|
61
|
+
root.unmount();
|
|
62
|
+
}
|
|
63
|
+
procaptchaRoots = [];
|
|
64
|
+
start();
|
|
65
|
+
};
|
|
66
|
+
window.procaptcha = { ready, render, reset };
|
|
67
|
+
start();
|
|
68
|
+
exports.default = ready;
|
|
69
|
+
exports.render = render;
|
|
70
|
+
exports.reset = reset;
|
|
@@ -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,159 @@
|
|
|
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
|
+
},
|
|
23
|
+
onError: (error) => {
|
|
24
|
+
removeProcaptchaResponse();
|
|
25
|
+
console.error(error);
|
|
26
|
+
},
|
|
27
|
+
onClose: () => {
|
|
28
|
+
console.log("Challenge closed");
|
|
29
|
+
},
|
|
30
|
+
onOpen: () => {
|
|
31
|
+
console.log("Challenge opened");
|
|
32
|
+
},
|
|
33
|
+
onFailed: () => {
|
|
34
|
+
alert("Captcha challenge failed. Please try again");
|
|
35
|
+
console.log("Challenge failed");
|
|
36
|
+
},
|
|
37
|
+
onReset: () => {
|
|
38
|
+
removeProcaptchaResponse();
|
|
39
|
+
console.log("Captcha widget reset");
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
function setUserCallbacks(renderOptions, callbacks, element) {
|
|
43
|
+
if (typeof renderOptions?.callback === "function") {
|
|
44
|
+
const fn = renderOptions.callback;
|
|
45
|
+
callbacks.onHuman = (token) => {
|
|
46
|
+
handleOnHuman(element, token);
|
|
47
|
+
fn(token);
|
|
48
|
+
};
|
|
49
|
+
} else {
|
|
50
|
+
const callbackName = typeof renderOptions?.callback === "string" ? renderOptions?.callback : element.getAttribute("data-callback");
|
|
51
|
+
if (callbackName)
|
|
52
|
+
callbacks.onHuman = (token) => {
|
|
53
|
+
handleOnHuman(element, token);
|
|
54
|
+
const fn = getWindowCallback(callbackName);
|
|
55
|
+
fn(token);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (renderOptions?.["chalexpired-callback"] && typeof renderOptions["chalexpired-callback"] === "function") {
|
|
59
|
+
const fn = renderOptions["chalexpired-callback"];
|
|
60
|
+
callbacks.onChallengeExpired = () => {
|
|
61
|
+
removeProcaptchaResponse();
|
|
62
|
+
fn();
|
|
63
|
+
};
|
|
64
|
+
} else {
|
|
65
|
+
const chalExpiredCallbackName = typeof renderOptions?.["chalexpired-callback"] === "string" ? renderOptions?.["chalexpired-callback"] : element.getAttribute("data-chalexpired-callback");
|
|
66
|
+
if (chalExpiredCallbackName)
|
|
67
|
+
callbacks.onChallengeExpired = () => {
|
|
68
|
+
const fn = getWindowCallback(chalExpiredCallbackName);
|
|
69
|
+
removeProcaptchaResponse();
|
|
70
|
+
fn();
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
if (renderOptions?.["expired-callback"] && typeof renderOptions["expired-callback"] === "function") {
|
|
74
|
+
const fn = renderOptions["expired-callback"];
|
|
75
|
+
callbacks.onExpired = () => {
|
|
76
|
+
removeProcaptchaResponse();
|
|
77
|
+
fn();
|
|
78
|
+
};
|
|
79
|
+
} else {
|
|
80
|
+
const onExpiredCallbackName = typeof renderOptions?.["expired-callback"] === "string" ? renderOptions?.["expired-callback"] : element.getAttribute("data-expired-callback");
|
|
81
|
+
if (onExpiredCallbackName)
|
|
82
|
+
callbacks.onExpired = () => {
|
|
83
|
+
const fn = getWindowCallback(onExpiredCallbackName);
|
|
84
|
+
removeProcaptchaResponse();
|
|
85
|
+
fn();
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (renderOptions?.["error-callback"] && typeof renderOptions["error-callback"] === "function") {
|
|
89
|
+
const fn = renderOptions["error-callback"];
|
|
90
|
+
callbacks.onError = () => {
|
|
91
|
+
removeProcaptchaResponse();
|
|
92
|
+
fn();
|
|
93
|
+
};
|
|
94
|
+
} else {
|
|
95
|
+
const errorCallbackName = typeof renderOptions?.["error-callback"] === "string" ? renderOptions?.["error-callback"] : element.getAttribute("data-error-callback");
|
|
96
|
+
if (errorCallbackName)
|
|
97
|
+
callbacks.onError = () => {
|
|
98
|
+
const fn = getWindowCallback(errorCallbackName);
|
|
99
|
+
removeProcaptchaResponse();
|
|
100
|
+
fn();
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (typeof renderOptions?.["close-callback"] === "function") {
|
|
104
|
+
callbacks.onClose = renderOptions["close-callback"];
|
|
105
|
+
} else {
|
|
106
|
+
const onCloseCallbackName = typeof renderOptions?.["close-callback"] === "string" ? renderOptions?.["close-callback"] : element.getAttribute("data-close-callback");
|
|
107
|
+
if (onCloseCallbackName)
|
|
108
|
+
callbacks.onClose = getWindowCallback(onCloseCallbackName);
|
|
109
|
+
}
|
|
110
|
+
if (renderOptions?.["open-callback"]) {
|
|
111
|
+
if (typeof renderOptions["open-callback"] === "function") {
|
|
112
|
+
callbacks.onOpen = renderOptions["open-callback"];
|
|
113
|
+
} else {
|
|
114
|
+
const onOpenCallbackName = typeof renderOptions?.["open-callback"] === "string" ? renderOptions?.["open-callback"] : element.getAttribute("data-open-callback");
|
|
115
|
+
if (onOpenCallbackName)
|
|
116
|
+
callbacks.onOpen = getWindowCallback(onOpenCallbackName);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (renderOptions?.["failed-callback"]) {
|
|
120
|
+
if (typeof renderOptions["failed-callback"] === "function") {
|
|
121
|
+
callbacks.onFailed = renderOptions["failed-callback"];
|
|
122
|
+
} else {
|
|
123
|
+
const onFailedCallbackName = typeof renderOptions?.["failed-callback"] === "string" ? renderOptions?.["failed-callback"] : element.getAttribute("data-failed-callback");
|
|
124
|
+
if (onFailedCallbackName)
|
|
125
|
+
callbacks.onFailed = getWindowCallback(onFailedCallbackName);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (renderOptions?.["reset-callback"]) {
|
|
129
|
+
if (typeof renderOptions["reset-callback"] === "function") {
|
|
130
|
+
callbacks.onReset = renderOptions["reset-callback"];
|
|
131
|
+
} else {
|
|
132
|
+
const onResetCallbackName = typeof renderOptions?.["reset-callback"] === "string" ? renderOptions?.["reset-callback"] : element.getAttribute("data-reset-callback");
|
|
133
|
+
if (onResetCallbackName)
|
|
134
|
+
callbacks.onReset = getWindowCallback(onResetCallbackName);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const handleOnHuman = (element, token) => {
|
|
139
|
+
removeProcaptchaResponse();
|
|
140
|
+
const form$1 = form.getParentForm(element);
|
|
141
|
+
if (!form$1) {
|
|
142
|
+
console.error("Parent form not found for the element:", element);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const input = document.createElement("input");
|
|
146
|
+
input.type = "hidden";
|
|
147
|
+
input.name = types.ApiParams.procaptchaResponse;
|
|
148
|
+
input.value = token;
|
|
149
|
+
form$1.appendChild(input);
|
|
150
|
+
};
|
|
151
|
+
const removeProcaptchaResponse = () => {
|
|
152
|
+
const element = Array.from(
|
|
153
|
+
document.getElementsByName(types.ApiParams.procaptchaResponse)
|
|
154
|
+
);
|
|
155
|
+
element.map((el) => el.remove());
|
|
156
|
+
};
|
|
157
|
+
exports.getDefaultCallbacks = getDefaultCallbacks;
|
|
158
|
+
exports.getWindowCallback = getWindowCallback;
|
|
159
|
+
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,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const procaptchaFrictionless = require("@prosopo/procaptcha-frictionless");
|
|
5
|
+
const procaptchaPow = require("@prosopo/procaptcha-pow");
|
|
6
|
+
const procaptchaReact = require("@prosopo/procaptcha-react");
|
|
7
|
+
const client = require("react-dom/client");
|
|
8
|
+
const defaultCallbacks = require("./defaultCallbacks.cjs");
|
|
9
|
+
const language = require("./language.cjs");
|
|
10
|
+
const theme = require("./theme.cjs");
|
|
11
|
+
const timeout = require("./timeout.cjs");
|
|
12
|
+
const identifierPrefix = "procaptcha-";
|
|
13
|
+
const renderLogic = (elements, config, renderOptions) => {
|
|
14
|
+
const roots = [];
|
|
15
|
+
for (const element of elements) {
|
|
16
|
+
const callbacks = defaultCallbacks.getDefaultCallbacks(element);
|
|
17
|
+
defaultCallbacks.setUserCallbacks(renderOptions, callbacks, element);
|
|
18
|
+
theme.setTheme(renderOptions, element, config);
|
|
19
|
+
timeout.setValidChallengeLength(renderOptions, element, config);
|
|
20
|
+
language.setLanguage(renderOptions, element, config);
|
|
21
|
+
let root = null;
|
|
22
|
+
switch (renderOptions?.captchaType) {
|
|
23
|
+
case "pow":
|
|
24
|
+
console.log("rendering pow");
|
|
25
|
+
root = client.createRoot(element, { identifierPrefix });
|
|
26
|
+
root.render(/* @__PURE__ */ jsxRuntime.jsx(procaptchaPow.ProcaptchaPow, { config, callbacks }));
|
|
27
|
+
break;
|
|
28
|
+
case "image":
|
|
29
|
+
console.log("rendering image");
|
|
30
|
+
root = client.createRoot(element, { identifierPrefix });
|
|
31
|
+
root.render(/* @__PURE__ */ jsxRuntime.jsx(procaptchaReact.Procaptcha, { config, callbacks }));
|
|
32
|
+
break;
|
|
33
|
+
default:
|
|
34
|
+
console.log("rendering frictionless");
|
|
35
|
+
root = client.createRoot(element, { identifierPrefix });
|
|
36
|
+
root.render(
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx(procaptchaFrictionless.ProcaptchaFrictionless, { config, callbacks })
|
|
38
|
+
);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
roots.push(root);
|
|
42
|
+
}
|
|
43
|
+
return roots;
|
|
44
|
+
};
|
|
45
|
+
exports.renderLogic = renderLogic;
|
|
@@ -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
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ProcaptchaRenderOptions } from "@prosopo/types";
|
|
2
|
+
export declare const render: (element: Element, renderOptions: ProcaptchaRenderOptions) => void;
|
|
3
|
+
export default function ready(fn: () => void): void;
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
procaptcha: {
|
|
7
|
+
ready: typeof ready;
|
|
8
|
+
render: typeof render;
|
|
9
|
+
reset: typeof reset;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare const reset: () => void;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAyC9D,eAAO,MAAM,MAAM,YACT,OAAO,iBACD,uBAAuB,SAOtC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,QAQ3C;AAGD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,UAAU,EAAE;YACX,KAAK,EAAE,OAAO,KAAK,CAAC;YACpB,MAAM,EAAE,OAAO,MAAM,CAAC;YACtB,KAAK,EAAE,OAAO,KAAK,CAAC;SACpB,CAAC;KACF;CACD;AA2BD,eAAO,MAAM,KAAK,YAOjB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { at } from "@prosopo/util";
|
|
2
|
+
import { getCaptchaType } from "./util/captchaType.js";
|
|
3
|
+
import { extractParams, getConfig, getProcaptchaScript, } from "./util/config.js";
|
|
4
|
+
import { getWindowCallback } from "./util/defaultCallbacks.js";
|
|
5
|
+
import { renderLogic } from "./util/renderLogic.js";
|
|
6
|
+
const BUNDLE_NAME = "procaptcha.bundle.js";
|
|
7
|
+
let procaptchaRoots = [];
|
|
8
|
+
const implicitRender = () => {
|
|
9
|
+
const elements = Array.from(document.getElementsByClassName("procaptcha"));
|
|
10
|
+
if (elements.length) {
|
|
11
|
+
const siteKey = at(elements, 0).getAttribute("data-sitekey");
|
|
12
|
+
if (!siteKey) {
|
|
13
|
+
console.error("No siteKey found");
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const captchaType = getCaptchaType(elements);
|
|
17
|
+
const root = renderLogic(elements, getConfig(siteKey), {
|
|
18
|
+
captchaType,
|
|
19
|
+
siteKey,
|
|
20
|
+
});
|
|
21
|
+
procaptchaRoots.push(...root);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const render = (element, renderOptions) => {
|
|
25
|
+
const siteKey = renderOptions.siteKey;
|
|
26
|
+
const roots = renderLogic([element], getConfig(siteKey), renderOptions);
|
|
27
|
+
procaptchaRoots.push(...roots);
|
|
28
|
+
};
|
|
29
|
+
export default function ready(fn) {
|
|
30
|
+
if (document && document.readyState !== "loading") {
|
|
31
|
+
console.log("document.readyState ready!");
|
|
32
|
+
fn();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log("DOMContentLoaded listener!");
|
|
36
|
+
document.addEventListener("DOMContentLoaded", fn);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const start = () => {
|
|
40
|
+
const { onloadUrlCallback, renderExplicit } = extractParams(BUNDLE_NAME);
|
|
41
|
+
if (renderExplicit !== "explicit") {
|
|
42
|
+
ready(implicitRender);
|
|
43
|
+
}
|
|
44
|
+
if (onloadUrlCallback) {
|
|
45
|
+
const onloadCallback = getWindowCallback(onloadUrlCallback);
|
|
46
|
+
let readyCalled = false;
|
|
47
|
+
getProcaptchaScript(BUNDLE_NAME)?.addEventListener("load", () => {
|
|
48
|
+
ready(onloadCallback);
|
|
49
|
+
readyCalled = true;
|
|
50
|
+
});
|
|
51
|
+
if (document.readyState === "complete" && !readyCalled) {
|
|
52
|
+
ready(onloadCallback);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export const reset = () => {
|
|
57
|
+
for (const root of procaptchaRoots) {
|
|
58
|
+
root.unmount();
|
|
59
|
+
}
|
|
60
|
+
procaptchaRoots = [];
|
|
61
|
+
start();
|
|
62
|
+
};
|
|
63
|
+
window.procaptcha = { ready, render, reset };
|
|
64
|
+
start();
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captchaType.test.d.ts","sourceRoot":"","sources":["../../../src/tests/util/captchaType.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FeaturesEnum } from "@prosopo/types";
|
|
2
|
+
import { JSDOM } from "jsdom";
|
|
3
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
4
|
+
import { getCaptchaType } from "../../util/captchaType.js";
|
|
5
|
+
describe("getCaptchaType", () => {
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
const dom = new JSDOM("<!DOCTYPE html><html><body></body></html>");
|
|
8
|
+
global.document = dom.window.document;
|
|
9
|
+
});
|
|
10
|
+
it("should return the correct captcha type when a valid type is set", () => {
|
|
11
|
+
const element = document.createElement("div");
|
|
12
|
+
element.setAttribute("data-captcha-type", FeaturesEnum.Pow);
|
|
13
|
+
const result = getCaptchaType([element]);
|
|
14
|
+
expect(result).toBe(FeaturesEnum.Pow);
|
|
15
|
+
});
|
|
16
|
+
it('should return "frictionless" when no captcha type is set', () => {
|
|
17
|
+
const element = document.createElement("div");
|
|
18
|
+
const result = getCaptchaType([element]);
|
|
19
|
+
expect(result).toBe("frictionless");
|
|
20
|
+
});
|
|
21
|
+
it('should return "frictionless" when an invalid captcha type is set', () => {
|
|
22
|
+
const element = document.createElement("div");
|
|
23
|
+
element.setAttribute("data-captcha-type", "invalid-type");
|
|
24
|
+
const result = getCaptchaType([element]);
|
|
25
|
+
expect(result).toBe("frictionless");
|
|
26
|
+
});
|
|
27
|
+
it("should work with all valid FeaturesEnum values", () => {
|
|
28
|
+
const element = document.createElement("div");
|
|
29
|
+
for (const feature of Object.values(FeaturesEnum)) {
|
|
30
|
+
element.setAttribute("data-captcha-type", feature);
|
|
31
|
+
const result = getCaptchaType([element]);
|
|
32
|
+
expect(result).toBe(feature);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=captchaType.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captchaType.test.js","sourceRoot":"","sources":["../../../src/tests/util/captchaType.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACf,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACnE,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC1E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE9C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../src/tests/util/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { JSDOM } from "jsdom";
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
3
|
+
import { extractParams, getProcaptchaScript } from "../../util/config.js";
|
|
4
|
+
describe("Config utility functions", () => {
|
|
5
|
+
let dom;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
dom = new JSDOM("<!DOCTYPE html><html><body></body></html>", {
|
|
8
|
+
url: "https://example.com",
|
|
9
|
+
});
|
|
10
|
+
global.document = dom.window.document;
|
|
11
|
+
});
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
global.document = undefined;
|
|
14
|
+
});
|
|
15
|
+
describe("getProcaptchaScript", () => {
|
|
16
|
+
it("should return null when no matching script is found", () => {
|
|
17
|
+
const result = getProcaptchaScript("nonexistent");
|
|
18
|
+
expect(result).toBeNull();
|
|
19
|
+
});
|
|
20
|
+
it("should return the script element when a matching script is found", () => {
|
|
21
|
+
const script = document.createElement("script");
|
|
22
|
+
script.src = "https://example.com/procaptcha.js";
|
|
23
|
+
document.body.appendChild(script);
|
|
24
|
+
const result = getProcaptchaScript("procaptcha");
|
|
25
|
+
expect(result).toBe(script);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe("extractParams", () => {
|
|
29
|
+
it("should return undefined values when no matching script is found", () => {
|
|
30
|
+
const result = extractParams("nonexistent");
|
|
31
|
+
expect(result).toEqual({
|
|
32
|
+
onloadUrlCallback: undefined,
|
|
33
|
+
renderExplicit: undefined,
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
it("should extract parameters from the script URL", () => {
|
|
37
|
+
const script = document.createElement("script");
|
|
38
|
+
script.src =
|
|
39
|
+
"https://example.com/procaptcha.js?onload=onloadCallback&render=explicit";
|
|
40
|
+
document.body.appendChild(script);
|
|
41
|
+
const result = extractParams("procaptcha");
|
|
42
|
+
expect(result).toEqual({
|
|
43
|
+
onloadUrlCallback: "onloadCallback",
|
|
44
|
+
renderExplicit: "explicit",
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
it("should return undefined for missing parameters", () => {
|
|
48
|
+
const script = document.createElement("script");
|
|
49
|
+
script.src = "https://example.com/procaptcha.js?onload=onloadCallback";
|
|
50
|
+
document.body.appendChild(script);
|
|
51
|
+
const result = extractParams("procaptcha");
|
|
52
|
+
expect(result).toEqual({
|
|
53
|
+
onloadUrlCallback: "onloadCallback",
|
|
54
|
+
renderExplicit: undefined,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
it("should handle scripts without query parameters", () => {
|
|
58
|
+
const script = document.createElement("script");
|
|
59
|
+
script.src = "https://example.com/procaptcha.js";
|
|
60
|
+
document.body.appendChild(script);
|
|
61
|
+
const result = extractParams("procaptcha");
|
|
62
|
+
expect(result).toEqual({
|
|
63
|
+
onloadUrlCallback: undefined,
|
|
64
|
+
renderExplicit: undefined,
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/tests/util/config.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACzC,IAAI,GAAU,CAAC;IAEf,UAAU,CAAC,GAAG,EAAE;QACf,GAAG,GAAG,IAAI,KAAK,CAAC,2CAA2C,EAAE;YAC5D,GAAG,EAAE,qBAAqB;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QAEb,MAAc,CAAC,QAAQ,GAAG,SAAS,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC9D,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,GAAG,mCAAmC,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YAC1E,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACtB,iBAAiB,EAAE,SAAS;gBAC5B,cAAc,EAAE,SAAS;aACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG;gBACT,yEAAyE,CAAC;YAC3E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACtB,iBAAiB,EAAE,gBAAgB;gBACnC,cAAc,EAAE,UAAU;aAC1B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,GAAG,yDAAyD,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACtB,iBAAiB,EAAE,gBAAgB;gBACnC,cAAc,EAAE,SAAS;aACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,GAAG,mCAAmC,CAAC;YACjD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACtB,iBAAiB,EAAE,SAAS;gBAC5B,cAAc,EAAE,SAAS;aACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderLogic.test.d.ts","sourceRoot":"","sources":["../../../src/tests/util/renderLogic.test.tsx"],"names":[],"mappings":""}
|