@prosopo/procaptcha-common 2.9.19 → 2.10.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$cjs.log +22 -15
- package/.turbo/turbo-build$colon$tsc.log +52 -0
- package/.turbo/turbo-build.log +26 -16
- package/CHANGELOG.md +392 -0
- package/dist/callbacks/defaultCallbacks.d.ts +4 -0
- package/dist/callbacks/defaultCallbacks.d.ts.map +1 -0
- package/dist/callbacks/defaultCallbacks.js.map +1 -0
- package/dist/callbacks/defaultEvents.d.ts +14 -0
- package/dist/callbacks/defaultEvents.d.ts.map +1 -0
- package/dist/callbacks/defaultEvents.js.map +1 -0
- package/dist/cjs/elements/form.cjs +8 -2
- package/dist/cjs/elements/window.cjs +7 -0
- package/dist/cjs/index.cjs +5 -0
- package/dist/cjs/reactComponents/Checkbox.cjs +11 -7
- package/dist/cjs/reactComponents/Honeypot.cjs +67 -0
- package/dist/cjs/reactComponents/TestModeBanner.cjs +47 -0
- package/dist/elements/form.d.ts +5 -0
- package/dist/elements/form.d.ts.map +1 -0
- package/dist/elements/form.js +8 -2
- package/dist/elements/form.js.map +1 -0
- package/dist/elements/window.d.ts +3 -0
- package/dist/elements/window.d.ts.map +1 -0
- package/dist/elements/window.js +8 -1
- package/dist/elements/window.js.map +1 -0
- package/dist/extensionLoader.d.ts +2 -0
- package/dist/extensionLoader.d.ts.map +1 -0
- package/dist/extensionLoader.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -0
- package/dist/providers.d.ts +4 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js.map +1 -0
- package/dist/reactComponents/Checkbox.d.ts +13 -0
- package/dist/reactComponents/Checkbox.d.ts.map +1 -0
- package/dist/reactComponents/Checkbox.js +11 -7
- package/dist/reactComponents/Checkbox.js.map +1 -0
- package/dist/reactComponents/Honeypot.d.ts +6 -0
- package/dist/reactComponents/Honeypot.d.ts.map +1 -0
- package/dist/reactComponents/Honeypot.js +67 -0
- package/dist/reactComponents/Honeypot.js.map +1 -0
- package/dist/reactComponents/Reload.d.ts +8 -0
- package/dist/reactComponents/Reload.d.ts.map +1 -0
- package/dist/reactComponents/Reload.js.map +1 -0
- package/dist/reactComponents/TestModeBanner.d.ts +7 -0
- package/dist/reactComponents/TestModeBanner.d.ts.map +1 -0
- package/dist/reactComponents/TestModeBanner.js +47 -0
- package/dist/reactComponents/TestModeBanner.js.map +1 -0
- package/dist/state/builder.d.ts +9 -0
- package/dist/state/builder.d.ts.map +1 -0
- package/dist/state/builder.js.map +1 -0
- package/dist/tests/defaultCallbacks.test.d.ts +2 -0
- package/dist/tests/defaultCallbacks.test.d.ts.map +1 -0
- package/dist/tests/defaultCallbacks.test.js +219 -0
- package/dist/tests/defaultCallbacks.test.js.map +1 -0
- package/dist/tests/defaultEvents.test.d.ts +2 -0
- package/dist/tests/defaultEvents.test.d.ts.map +1 -0
- package/dist/tests/defaultEvents.test.js +54 -0
- package/dist/tests/defaultEvents.test.js.map +1 -0
- package/dist/tests/extensionLoader.test.d.ts +2 -0
- package/dist/tests/extensionLoader.test.d.ts.map +1 -0
- package/dist/tests/extensionLoader.test.js +21 -0
- package/dist/tests/extensionLoader.test.js.map +1 -0
- package/dist/tests/form.test.d.ts +2 -0
- package/dist/tests/form.test.d.ts.map +1 -0
- package/dist/tests/form.test.js +98 -0
- package/dist/tests/form.test.js.map +1 -0
- package/dist/tests/providers.test.d.ts +2 -0
- package/dist/tests/providers.test.d.ts.map +1 -0
- package/dist/tests/providers.test.js +111 -0
- package/dist/tests/providers.test.js.map +1 -0
- package/dist/tests/state-builder.test.d.ts +2 -0
- package/dist/tests/state-builder.test.d.ts.map +1 -0
- package/dist/tests/state-builder.test.js +193 -0
- package/dist/tests/state-builder.test.js.map +1 -0
- package/dist/tests/window.test.d.ts +2 -0
- package/dist/tests/window.test.d.ts.map +1 -0
- package/dist/tests/window.test.js +80 -0
- package/dist/tests/window.test.js.map +1 -0
- package/package.json +13 -9
- package/src/callbacks/defaultCallbacks.ts +197 -0
- package/src/callbacks/defaultEvents.ts +21 -0
- package/src/elements/form.ts +41 -0
- package/src/elements/window.ts +39 -0
- package/src/extensionLoader.ts +17 -0
- package/src/index.ts +24 -0
- package/src/providers.ts +49 -0
- package/src/reactComponents/Checkbox.tsx +203 -0
- package/src/reactComponents/Honeypot.tsx +133 -0
- package/src/reactComponents/Reload.tsx +99 -0
- package/src/reactComponents/TestModeBanner.tsx +75 -0
- package/src/state/builder.ts +137 -0
- package/src/tests/defaultCallbacks.test.ts +372 -0
- package/src/tests/defaultEvents.test.ts +80 -0
- package/src/tests/extensionLoader.test.ts +41 -0
- package/src/tests/form.test.ts +154 -0
- package/src/tests/providers.test.ts +175 -0
- package/src/tests/state-builder.test.ts +264 -0
- package/src/tests/window.test.ts +137 -0
- package/tsconfig.cjs.json +32 -0
- package/tsconfig.json +33 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/tsconfig.types.json +9 -0
- package/vite.cjs.config.ts +1 -1
- package/vite.esm.config.ts +1 -1
- package/vite.test.config.ts +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -8,6 +8,8 @@ const extensionLoader = require("./extensionLoader.cjs");
|
|
|
8
8
|
const window = require("./elements/window.cjs");
|
|
9
9
|
const Reload = require("./reactComponents/Reload.cjs");
|
|
10
10
|
const Checkbox = require("./reactComponents/Checkbox.cjs");
|
|
11
|
+
const Honeypot = require("./reactComponents/Honeypot.cjs");
|
|
12
|
+
const TestModeBanner = require("./reactComponents/TestModeBanner.cjs");
|
|
11
13
|
exports.getProcaptchaRandomActiveProvider = providers.getProcaptchaRandomActiveProvider;
|
|
12
14
|
exports.providerRetry = providers.providerRetry;
|
|
13
15
|
exports.buildUpdateState = builder.buildUpdateState;
|
|
@@ -17,5 +19,8 @@ exports.setUserCallbacks = defaultCallbacks.setUserCallbacks;
|
|
|
17
19
|
exports.getDefaultEvents = defaultEvents.getDefaultEvents;
|
|
18
20
|
exports.ExtensionLoader = extensionLoader.ExtensionLoader;
|
|
19
21
|
exports.getWindowCallback = window.getWindowCallback;
|
|
22
|
+
exports.isSecureBrowserContext = window.isSecureBrowserContext;
|
|
20
23
|
exports.ReloadButton = Reload.ReloadButton;
|
|
21
24
|
exports.Checkbox = Checkbox.Checkbox;
|
|
25
|
+
exports.Honeypot = Honeypot.Honeypot;
|
|
26
|
+
exports.TestModeBanner = TestModeBanner.TestModeBanner;
|
|
@@ -52,20 +52,24 @@ const Checkbox = ({
|
|
|
52
52
|
const ResponsiveLabel = styled.label`
|
|
53
53
|
color: ${theme.palette.background.contrastText};
|
|
54
54
|
position: relative;
|
|
55
|
-
display: flex;
|
|
55
|
+
display: flex !important;
|
|
56
56
|
cursor: pointer;
|
|
57
57
|
user-select: none;
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
font-weight: normal;
|
|
59
|
+
font-family: ${theme.font.fontFamily};
|
|
60
|
+
@container prosopo-widget (max-width: 169px) {
|
|
60
61
|
display: none;
|
|
61
62
|
}
|
|
62
|
-
@container widget (min-width:
|
|
63
|
+
@container prosopo-widget (min-width: 170px) {
|
|
64
|
+
font-size: 10px;
|
|
65
|
+
}
|
|
66
|
+
@container prosopo-widget (min-width: 220px) {
|
|
63
67
|
font-size: 12px;
|
|
64
68
|
}
|
|
65
|
-
@container widget (min-width: 250px) {
|
|
69
|
+
@container prosopo-widget (min-width: 250px) {
|
|
66
70
|
font-size: 14px;
|
|
67
71
|
}
|
|
68
|
-
@container widget (min-width: 270px) {
|
|
72
|
+
@container prosopo-widget (min-width: 270px) {
|
|
69
73
|
font-size: 16px;
|
|
70
74
|
}
|
|
71
75
|
`;
|
|
@@ -130,7 +134,7 @@ const Checkbox = ({
|
|
|
130
134
|
checked,
|
|
131
135
|
style: checkboxStyle,
|
|
132
136
|
disabled: error !== void 0,
|
|
133
|
-
className: loading ? "checkbox__loading-spinner" : "",
|
|
137
|
+
className: loading ? "prosopo-checkbox__loading-spinner" : "",
|
|
134
138
|
"data-cy": "captcha-checkbox"
|
|
135
139
|
}
|
|
136
140
|
),
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const reactDom = require("react-dom");
|
|
6
|
+
const offscreenStyle = {
|
|
7
|
+
position: "absolute",
|
|
8
|
+
left: "-9999px",
|
|
9
|
+
top: "-9999px",
|
|
10
|
+
width: "1px",
|
|
11
|
+
height: "1px",
|
|
12
|
+
overflow: "hidden",
|
|
13
|
+
opacity: 0
|
|
14
|
+
};
|
|
15
|
+
const decodeBase64Utf8 = (b64) => {
|
|
16
|
+
const binary = atob(b64);
|
|
17
|
+
const bytes = Uint8Array.from(binary, (c) => c.charCodeAt(0));
|
|
18
|
+
return new TextDecoder().decode(bytes);
|
|
19
|
+
};
|
|
20
|
+
const findAncestorForm = (anchor) => {
|
|
21
|
+
const root = anchor.getRootNode();
|
|
22
|
+
const lightDomEntry = root instanceof ShadowRoot ? root.host : anchor;
|
|
23
|
+
return lightDomEntry instanceof Element ? lightDomEntry.closest("form") : null;
|
|
24
|
+
};
|
|
25
|
+
const Honeypot = react.forwardRef(
|
|
26
|
+
({ encodedQuestion }, ref) => {
|
|
27
|
+
const id = react.useId();
|
|
28
|
+
const detachedFormId = `${id}-d`;
|
|
29
|
+
const question = react.useMemo(
|
|
30
|
+
() => decodeBase64Utf8(encodedQuestion),
|
|
31
|
+
[encodedQuestion]
|
|
32
|
+
);
|
|
33
|
+
const anchorRef = react.useRef(null);
|
|
34
|
+
const [portalTarget, setPortalTarget] = react.useState(null);
|
|
35
|
+
react.useEffect(() => {
|
|
36
|
+
const anchor = anchorRef.current;
|
|
37
|
+
if (!anchor) return;
|
|
38
|
+
setPortalTarget(findAncestorForm(anchor) ?? document.body);
|
|
39
|
+
}, []);
|
|
40
|
+
if (typeof document === "undefined") return null;
|
|
41
|
+
if (!portalTarget) {
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { ref: anchorRef, "aria-hidden": "true", style: { display: "none" } });
|
|
43
|
+
}
|
|
44
|
+
return reactDom.createPortal(
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", style: offscreenStyle, children: /* @__PURE__ */ jsxRuntime.jsxs("label", { children: [
|
|
46
|
+
question,
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
"input",
|
|
49
|
+
{
|
|
50
|
+
ref,
|
|
51
|
+
id,
|
|
52
|
+
form: detachedFormId,
|
|
53
|
+
type: "text",
|
|
54
|
+
name: "email_confirm",
|
|
55
|
+
defaultValue: "",
|
|
56
|
+
tabIndex: -1,
|
|
57
|
+
autoComplete: "off",
|
|
58
|
+
"aria-hidden": "true"
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
] }) }),
|
|
62
|
+
portalTarget
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
Honeypot.displayName = "Honeypot";
|
|
67
|
+
exports.Honeypot = Honeypot;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const types = require("@prosopo/types");
|
|
5
|
+
const react = require("react");
|
|
6
|
+
const TestModeBanner = ({
|
|
7
|
+
siteKey
|
|
8
|
+
}) => {
|
|
9
|
+
const mode = types.getTestSiteKeyMode(siteKey);
|
|
10
|
+
react.useEffect(() => {
|
|
11
|
+
if (mode !== null) {
|
|
12
|
+
console.warn(
|
|
13
|
+
`[Procaptcha] WARNING: site key "${siteKey}" is a TEST key that ALWAYS ${mode === types.TestSiteKeyMode.Pass ? "PASSES" : "FAILS"}. Never use it in production.`
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
}, [mode, siteKey]);
|
|
17
|
+
if (mode === null) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const action = mode === types.TestSiteKeyMode.Pass ? "ALWAYS PASSES" : "ALWAYS FAILS";
|
|
21
|
+
return (
|
|
22
|
+
// biome-ignore lint/a11y/useSemanticElements: the "alert" role has no native HTML element equivalent
|
|
23
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
role: "alert",
|
|
27
|
+
"data-cy": "test-mode-banner",
|
|
28
|
+
css: {
|
|
29
|
+
width: "100%",
|
|
30
|
+
boxSizing: "border-box",
|
|
31
|
+
padding: "6px 10px",
|
|
32
|
+
backgroundColor: "#fff3cd",
|
|
33
|
+
color: "#664d03",
|
|
34
|
+
border: "1px solid #ffe69c",
|
|
35
|
+
borderRadius: "4px",
|
|
36
|
+
fontSize: "11px",
|
|
37
|
+
lineHeight: "1.3",
|
|
38
|
+
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
39
|
+
textAlign: "center"
|
|
40
|
+
},
|
|
41
|
+
children: `⚠ Test mode: this site key ${action}. Do not use in production.`
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
exports.TestModeBanner = TestModeBanner;
|
|
47
|
+
exports.default = TestModeBanner;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/elements/form.ts"],"names":[],"mappings":"AAgBA,KAAK,UAAU,GAAG,eAAe,GAAG,IAAI,CAAC;AAEzC,wBAAgB,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,UAAU,CAehE;AAED,eAAO,MAAM,wBAAwB,YAKpC,CAAC"}
|
package/dist/elements/form.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { ApiParams } from "@prosopo/types";
|
|
2
2
|
function getParentForm(widgetElement) {
|
|
3
|
+
const parentForm = widgetElement.closest("form");
|
|
4
|
+
if (parentForm) {
|
|
5
|
+
return parentForm;
|
|
6
|
+
}
|
|
3
7
|
const rootWidgetNode = widgetElement.getRootNode();
|
|
4
|
-
|
|
5
|
-
|
|
8
|
+
if (rootWidgetNode instanceof ShadowRoot) {
|
|
9
|
+
return rootWidgetNode.host.closest("form");
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
6
12
|
}
|
|
7
13
|
const removeProcaptchaResponse = () => {
|
|
8
14
|
const element = Array.from(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/elements/form.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,MAAM,UAAU,aAAa,CAAC,aAAsB;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAe,CAAC;IAE/D,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,UAAU,CAAC;IACnB,CAAC;IAID,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,cAAc,YAAY,UAAU,EAAE,CAAC;QAC1C,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAe,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACzB,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CACxD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/elements/window.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,iBAAiB,iBAAkB,MAAM,QASrD,CAAC;AAUF,eAAO,MAAM,sBAAsB,QAAO,OAKzC,CAAC"}
|
package/dist/elements/window.js
CHANGED
|
@@ -7,6 +7,13 @@ const getWindowCallback = (callbackName) => {
|
|
|
7
7
|
}
|
|
8
8
|
return fn;
|
|
9
9
|
};
|
|
10
|
+
const isSecureBrowserContext = () => {
|
|
11
|
+
if (typeof window === "undefined") {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
return window.isSecureContext === true;
|
|
15
|
+
};
|
|
10
16
|
export {
|
|
11
|
-
getWindowCallback
|
|
17
|
+
getWindowCallback,
|
|
18
|
+
isSecureBrowserContext
|
|
12
19
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/elements/window.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAEzD,MAAM,EAAE,GAAI,MAAc,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACd,YAAY,YAAY,sCAAsC,CAC9D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAY,EAAE;IACnD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionLoader.d.ts","sourceRoot":"","sources":["../src/extensionLoader.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,eAAe,SAAgB,OAAO,qFAGmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionLoader.js","sourceRoot":"","sources":["../src/extensionLoader.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE,CACtD,IAAI;IACH,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC,OAAO;IACpE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC,OAAO,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./providers.js";
|
|
2
|
+
export * from "./state/builder.js";
|
|
3
|
+
export * from "./callbacks/defaultCallbacks.js";
|
|
4
|
+
export * from "./callbacks/defaultEvents.js";
|
|
5
|
+
export * from "./extensionLoader.js";
|
|
6
|
+
export * from "./elements/window.js";
|
|
7
|
+
export * from "./reactComponents/Reload.js";
|
|
8
|
+
export * from "./reactComponents/Checkbox.js";
|
|
9
|
+
export * from "./reactComponents/Honeypot.js";
|
|
10
|
+
export * from "./reactComponents/TestModeBanner.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,18 +3,23 @@ import { buildUpdateState, useProcaptcha } from "./state/builder.js";
|
|
|
3
3
|
import { getDefaultCallbacks, setUserCallbacks } from "./callbacks/defaultCallbacks.js";
|
|
4
4
|
import { getDefaultEvents } from "./callbacks/defaultEvents.js";
|
|
5
5
|
import { ExtensionLoader } from "./extensionLoader.js";
|
|
6
|
-
import { getWindowCallback } from "./elements/window.js";
|
|
6
|
+
import { getWindowCallback, isSecureBrowserContext } from "./elements/window.js";
|
|
7
7
|
import { ReloadButton } from "./reactComponents/Reload.js";
|
|
8
8
|
import { Checkbox } from "./reactComponents/Checkbox.js";
|
|
9
|
+
import { Honeypot } from "./reactComponents/Honeypot.js";
|
|
10
|
+
import { TestModeBanner } from "./reactComponents/TestModeBanner.js";
|
|
9
11
|
export {
|
|
10
12
|
Checkbox,
|
|
11
13
|
ExtensionLoader,
|
|
14
|
+
Honeypot,
|
|
12
15
|
ReloadButton,
|
|
16
|
+
TestModeBanner,
|
|
13
17
|
buildUpdateState,
|
|
14
18
|
getDefaultCallbacks,
|
|
15
19
|
getDefaultEvents,
|
|
16
20
|
getProcaptchaRandomActiveProvider,
|
|
17
21
|
getWindowCallback,
|
|
22
|
+
isSecureBrowserContext,
|
|
18
23
|
providerRetry,
|
|
19
24
|
setUserCallbacks,
|
|
20
25
|
useProcaptcha
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EnvironmentTypes } from "@prosopo/types";
|
|
2
|
+
export declare const getProcaptchaRandomActiveProvider: (defaultEnvironment: EnvironmentTypes) => Promise<import("@prosopo/types").RandomProvider>;
|
|
3
|
+
export declare const providerRetry: (currentFn: () => Promise<void>, retryFn: () => Promise<void>, stateReset: () => void, attemptCount: number, retryMax: number) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,eAAO,MAAM,iCAAiC,uBACzB,gBAAgB,qDAKpC,CAAC;AAEF,eAAO,MAAM,aAAa,cACd,MAAM,OAAO,CAAC,IAAI,CAAC,WACrB,MAAM,OAAO,CAAC,IAAI,CAAC,cAChB,MAAM,IAAI,gBACR,MAAM,YACV,MAAM,kBAkBhB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,EACrD,kBAAoC,EACnC,EAAE;IACH,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,OAAO,MAAM,uBAAuB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EACjC,SAA8B,EAC9B,OAA4B,EAC5B,UAAsB,EACtB,YAAoB,EACpB,QAAgB,EACf,EAAE;IACH,IAAI,CAAC;QACJ,MAAM,SAAS,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,KAAK,CACZ,gBAAgB,YAAY,OAAO,QAAQ,qBAAqB,CAChE,CAAC;YACF,OAAO,UAAU,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnB,UAAU,EAAE,CAAC;QAEb,MAAM,OAAO,EAAE,CAAC;IACjB,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Theme } from "@prosopo/widget-skeleton";
|
|
2
|
+
import { type ButtonHTMLAttributes, type FC } from "react";
|
|
3
|
+
interface CheckboxProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
+
theme: Theme;
|
|
5
|
+
checked: boolean;
|
|
6
|
+
onChange: (event: any) => Promise<void>;
|
|
7
|
+
labelText: string;
|
|
8
|
+
error?: string;
|
|
9
|
+
loading: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const Checkbox: FC<CheckboxProps>;
|
|
12
|
+
export default Checkbox;
|
|
13
|
+
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACN,KAAK,KAAK,EAEV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,KAAK,oBAAoB,EAEzB,KAAK,EAAE,EAGP,MAAM,OAAO,CAAC;AAEf,UAAU,aAAc,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACjB;AA4CD,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAyHtC,CAAC;AACF,eAAe,QAAQ,CAAC"}
|
|
@@ -50,20 +50,24 @@ const Checkbox = ({
|
|
|
50
50
|
const ResponsiveLabel = styled.label`
|
|
51
51
|
color: ${theme.palette.background.contrastText};
|
|
52
52
|
position: relative;
|
|
53
|
-
display: flex;
|
|
53
|
+
display: flex !important;
|
|
54
54
|
cursor: pointer;
|
|
55
55
|
user-select: none;
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
font-weight: normal;
|
|
57
|
+
font-family: ${theme.font.fontFamily};
|
|
58
|
+
@container prosopo-widget (max-width: 169px) {
|
|
58
59
|
display: none;
|
|
59
60
|
}
|
|
60
|
-
@container widget (min-width:
|
|
61
|
+
@container prosopo-widget (min-width: 170px) {
|
|
62
|
+
font-size: 10px;
|
|
63
|
+
}
|
|
64
|
+
@container prosopo-widget (min-width: 220px) {
|
|
61
65
|
font-size: 12px;
|
|
62
66
|
}
|
|
63
|
-
@container widget (min-width: 250px) {
|
|
67
|
+
@container prosopo-widget (min-width: 250px) {
|
|
64
68
|
font-size: 14px;
|
|
65
69
|
}
|
|
66
|
-
@container widget (min-width: 270px) {
|
|
70
|
+
@container prosopo-widget (min-width: 270px) {
|
|
67
71
|
font-size: 16px;
|
|
68
72
|
}
|
|
69
73
|
`;
|
|
@@ -128,7 +132,7 @@ const Checkbox = ({
|
|
|
128
132
|
checked,
|
|
129
133
|
style: checkboxStyle,
|
|
130
134
|
disabled: error !== void 0,
|
|
131
|
-
className: loading ? "checkbox__loading-spinner" : "",
|
|
135
|
+
className: loading ? "prosopo-checkbox__loading-spinner" : "",
|
|
132
136
|
"data-cy": "captcha-checkbox"
|
|
133
137
|
}
|
|
134
138
|
),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Honeypot.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Honeypot.tsx"],"names":[],"mappings":"AAyBA,UAAU,aAAa;IACtB,eAAe,EAAE,MAAM,CAAC;CACxB;AA8CD,eAAO,MAAM,QAAQ,4GAyDpB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useId, useMemo, useRef, useState, useEffect } from "react";
|
|
3
|
+
import { createPortal } from "react-dom";
|
|
4
|
+
const offscreenStyle = {
|
|
5
|
+
position: "absolute",
|
|
6
|
+
left: "-9999px",
|
|
7
|
+
top: "-9999px",
|
|
8
|
+
width: "1px",
|
|
9
|
+
height: "1px",
|
|
10
|
+
overflow: "hidden",
|
|
11
|
+
opacity: 0
|
|
12
|
+
};
|
|
13
|
+
const decodeBase64Utf8 = (b64) => {
|
|
14
|
+
const binary = atob(b64);
|
|
15
|
+
const bytes = Uint8Array.from(binary, (c) => c.charCodeAt(0));
|
|
16
|
+
return new TextDecoder().decode(bytes);
|
|
17
|
+
};
|
|
18
|
+
const findAncestorForm = (anchor) => {
|
|
19
|
+
const root = anchor.getRootNode();
|
|
20
|
+
const lightDomEntry = root instanceof ShadowRoot ? root.host : anchor;
|
|
21
|
+
return lightDomEntry instanceof Element ? lightDomEntry.closest("form") : null;
|
|
22
|
+
};
|
|
23
|
+
const Honeypot = forwardRef(
|
|
24
|
+
({ encodedQuestion }, ref) => {
|
|
25
|
+
const id = useId();
|
|
26
|
+
const detachedFormId = `${id}-d`;
|
|
27
|
+
const question = useMemo(
|
|
28
|
+
() => decodeBase64Utf8(encodedQuestion),
|
|
29
|
+
[encodedQuestion]
|
|
30
|
+
);
|
|
31
|
+
const anchorRef = useRef(null);
|
|
32
|
+
const [portalTarget, setPortalTarget] = useState(null);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
const anchor = anchorRef.current;
|
|
35
|
+
if (!anchor) return;
|
|
36
|
+
setPortalTarget(findAncestorForm(anchor) ?? document.body);
|
|
37
|
+
}, []);
|
|
38
|
+
if (typeof document === "undefined") return null;
|
|
39
|
+
if (!portalTarget) {
|
|
40
|
+
return /* @__PURE__ */ jsx("span", { ref: anchorRef, "aria-hidden": "true", style: { display: "none" } });
|
|
41
|
+
}
|
|
42
|
+
return createPortal(
|
|
43
|
+
/* @__PURE__ */ jsx("div", { "aria-hidden": "true", style: offscreenStyle, children: /* @__PURE__ */ jsxs("label", { children: [
|
|
44
|
+
question,
|
|
45
|
+
/* @__PURE__ */ jsx(
|
|
46
|
+
"input",
|
|
47
|
+
{
|
|
48
|
+
ref,
|
|
49
|
+
id,
|
|
50
|
+
form: detachedFormId,
|
|
51
|
+
type: "text",
|
|
52
|
+
name: "email_confirm",
|
|
53
|
+
defaultValue: "",
|
|
54
|
+
tabIndex: -1,
|
|
55
|
+
autoComplete: "off",
|
|
56
|
+
"aria-hidden": "true"
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
] }) }),
|
|
60
|
+
portalTarget
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
Honeypot.displayName = "Honeypot";
|
|
65
|
+
export {
|
|
66
|
+
Honeypot
|
|
67
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Honeypot.js","sourceRoot":"","sources":["../../src/reactComponents/Honeypot.tsx"],"names":[],"mappings":";AAcA,OAAO,EAEN,UAAU,EACV,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,GACR,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAMzC,MAAM,cAAc,GAAkB;IACrC,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,CAAC;CACV,CAAC;AAKF,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC;AAKF,MAAM,gBAAgB,GAAG,CAAC,MAAe,EAA0B,EAAE;IACpE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,aAAa,GAAG,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACtE,OAAO,aAAa,YAAY,OAAO;QACtC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC;AACT,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CACjC,CAAC,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,EAAE;IAC5B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAOnB,MAAM,cAAc,GAAG,GAAG,EAAE,IAAI,CAAC;IACjC,MAAM,QAAQ,GAAG,OAAO,CACvB,GAAG,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,EACvC,CAAC,eAAe,CAAC,CACjB,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAE3E,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAKjD,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,OAAO,CACN,eAAM,GAAG,EAAE,SAAS,iBAAc,MAAM,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAI,CACvE,CAAC;IACH,CAAC;IAKD,OAAO,YAAY,CAClB,6BAAiB,MAAM,EAAC,KAAK,EAAE,cAAc,YAC5C,4BACE,QAAQ,EACT,gBACC,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,cAAc,EACpB,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,eAAe,EACpB,YAAY,EAAC,EAAE,EACf,QAAQ,EAAE,CAAC,CAAC,EACZ,YAAY,EAAC,KAAK,iBACN,MAAM,GACjB,IACK,GACH,EACN,YAAY,CACZ,CAAC;AACH,CAAC,CACD,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type FC } from "react";
|
|
2
|
+
interface ReloadButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3
|
+
themeColor: "light" | "dark";
|
|
4
|
+
onReload: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare const ReloadButton: FC<ReloadButtonProps>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=Reload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reload.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Reload.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAqB,MAAM,OAAO,CAAC;AAE9E,UAAU,iBAAkB,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAaD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAiE9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reload.js","sourceRoot":"","sources":["../../src/reactComponents/Reload.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestModeBanner.d.ts","sourceRoot":"","sources":["../../src/reactComponents/TestModeBanner.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAC;AAE3C,UAAU,mBAAmB;IAC5B,OAAO,EAAE,MAAM,CAAC;CAChB;AAMD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA6ClD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { getTestSiteKeyMode, TestSiteKeyMode } from "@prosopo/types";
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
const TestModeBanner = ({
|
|
5
|
+
siteKey
|
|
6
|
+
}) => {
|
|
7
|
+
const mode = getTestSiteKeyMode(siteKey);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
if (mode !== null) {
|
|
10
|
+
console.warn(
|
|
11
|
+
`[Procaptcha] WARNING: site key "${siteKey}" is a TEST key that ALWAYS ${mode === TestSiteKeyMode.Pass ? "PASSES" : "FAILS"}. Never use it in production.`
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
}, [mode, siteKey]);
|
|
15
|
+
if (mode === null) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const action = mode === TestSiteKeyMode.Pass ? "ALWAYS PASSES" : "ALWAYS FAILS";
|
|
19
|
+
return (
|
|
20
|
+
// biome-ignore lint/a11y/useSemanticElements: the "alert" role has no native HTML element equivalent
|
|
21
|
+
/* @__PURE__ */ jsx(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
role: "alert",
|
|
25
|
+
"data-cy": "test-mode-banner",
|
|
26
|
+
css: {
|
|
27
|
+
width: "100%",
|
|
28
|
+
boxSizing: "border-box",
|
|
29
|
+
padding: "6px 10px",
|
|
30
|
+
backgroundColor: "#fff3cd",
|
|
31
|
+
color: "#664d03",
|
|
32
|
+
border: "1px solid #ffe69c",
|
|
33
|
+
borderRadius: "4px",
|
|
34
|
+
fontSize: "11px",
|
|
35
|
+
lineHeight: "1.3",
|
|
36
|
+
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
37
|
+
textAlign: "center"
|
|
38
|
+
},
|
|
39
|
+
children: `⚠ Test mode: this site key ${action}. Do not use in production.`
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
export {
|
|
45
|
+
TestModeBanner,
|
|
46
|
+
TestModeBanner as default
|
|
47
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestModeBanner.js","sourceRoot":"","sources":["../../src/reactComponents/TestModeBanner.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAW,SAAS,EAAE,MAAM,OAAO,CAAC;AAU3C,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,EACvD,OAAO,GACc,EAAE,EAAE;IACzB,MAAM,IAAI,GAA2B,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEjE,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACX,mCAAmC,OAAO,+BACzC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAC5C,+BAA+B,CAC/B,CAAC;QACH,CAAC;IACF,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GACX,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;IAElE,OAAO,CAEN,cACC,IAAI,EAAC,OAAO,aACJ,kBAAkB,EAC1B,GAAG,EAAE;YACJ,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,YAAY;YACvB,OAAO,EAAE,UAAU;YACnB,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,mBAAmB;YAC3B,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,KAAK;YACjB,UAAU,EACT,mEAAmE;YACpE,SAAS,EAAE,QAAQ;SACnB,YAEA,8BAA8B,MAAM,6BAA6B,GAC7D,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProcaptchaState, ProcaptchaStateUpdateFn } from "@prosopo/types";
|
|
2
|
+
type useRefType = <T>(defaultValue: T) => {
|
|
3
|
+
current: T;
|
|
4
|
+
};
|
|
5
|
+
type useStateType = <T>(defaultValue: T) => [T, (value: T) => void];
|
|
6
|
+
export declare const buildUpdateState: (state: ProcaptchaState, onStateUpdate: ProcaptchaStateUpdateFn) => (nextState: Partial<ProcaptchaState>) => void;
|
|
7
|
+
export declare const useProcaptcha: (useState: useStateType, useRef: useRefType) => [ProcaptchaState, ProcaptchaStateUpdateFn];
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/state/builder.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAIX,eAAe,EACf,uBAAuB,EAEvB,MAAM,gBAAgB,CAAC;AAExB,KAAK,UAAU,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,KAAK;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AACzD,KAAK,YAAY,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;AAEpE,eAAO,MAAM,gBAAgB,UACpB,eAAe,iBAAiB,uBAAuB,iBACnD,OAAO,CAAC,eAAe,CAAC,SAMnC,CAAC;AAoBH,eAAO,MAAM,aAAa,aACf,YAAY,UACd,UAAU,KAChB,CAAC,eAAe,EAAE,uBAAuB,CAgF3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/state/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultCallbacks.test.d.ts","sourceRoot":"","sources":["../../src/tests/defaultCallbacks.test.ts"],"names":[],"mappings":""}
|