@prosopo/procaptcha-common 2.9.23 → 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 +22 -16
- package/.turbo/turbo-build.log +22 -16
- package/CHANGELOG.md +347 -0
- 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/window.d.ts +1 -0
- package/dist/elements/window.d.ts.map +1 -1
- package/dist/elements/window.js +8 -1
- package/dist/elements/window.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/reactComponents/Checkbox.d.ts.map +1 -1
- package/dist/reactComponents/Checkbox.js +11 -7
- package/dist/reactComponents/Checkbox.js.map +1 -1
- 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/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/tests/window.test.js +22 -1
- package/dist/tests/window.test.js.map +1 -1
- package/package.json +11 -8
- 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
|
@@ -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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/elements/window.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,iBAAiB,iBAAkB,MAAM,QASrD,CAAC"}
|
|
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
|
};
|
|
@@ -1 +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"}
|
|
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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,4 +6,6 @@ export * from "./extensionLoader.js";
|
|
|
6
6
|
export * from "./elements/window.js";
|
|
7
7
|
export * from "./reactComponents/Reload.js";
|
|
8
8
|
export * from "./reactComponents/Checkbox.js";
|
|
9
|
+
export * from "./reactComponents/Honeypot.js";
|
|
10
|
+
export * from "./reactComponents/TestModeBanner.js";
|
|
9
11
|
//# 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.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"}
|
|
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
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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"}
|
|
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"}
|
|
@@ -1 +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,
|
|
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
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":";AAcA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAEN,iCAAiC,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIN,OAAO,EACP,QAAQ,GACR,MAAM,OAAO,CAAC;AAYf,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;EAOxB,CAAC;AAEH,MAAM,SAAS,GAAkB;IAChC,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,GAAG;IACZ,YAAY,EAAE,OAAO;IACrB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,UAAU,GAAG,sDAAsD,CAAC;AAE1E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB;IAC5C,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,iBAAiB,CAAC,CAAC,IAAI,GAAG;IACtE,CAAC,CAAC,wCAAwC,CAAC;AAE5C,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC7B,OAAO,KAAK,CAAC,IAAI,CAChB,EAAE,MAAM,EAAE,CAAC,EAAE,EACb,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAC/D,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACZ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,EAC3C,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,GACQ,EAAE,EAAE;IACnB,MAAM,iBAAiB,GAAkB;QACxC,GAAG,SAAS;QACZ,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE;KAC5D,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAsB;WAChD,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY
|
|
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 @@
|
|
|
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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { afterEach, describe, expect, it } from "vitest";
|
|
2
|
-
import { getWindowCallback } from "../elements/window.js";
|
|
2
|
+
import { getWindowCallback, isSecureBrowserContext, } from "../elements/window.js";
|
|
3
3
|
describe("elements/window", () => {
|
|
4
4
|
describe("getWindowCallback", () => {
|
|
5
5
|
const originalWindow = global.window;
|
|
@@ -55,5 +55,26 @@ describe("elements/window", () => {
|
|
|
55
55
|
expect(result(5)).toBe(10);
|
|
56
56
|
});
|
|
57
57
|
});
|
|
58
|
+
describe("isSecureBrowserContext", () => {
|
|
59
|
+
const originalIsSecureContext = window.isSecureContext;
|
|
60
|
+
const setIsSecureContext = (value) => {
|
|
61
|
+
Object.defineProperty(window, "isSecureContext", {
|
|
62
|
+
value,
|
|
63
|
+
configurable: true,
|
|
64
|
+
writable: true,
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
afterEach(() => {
|
|
68
|
+
setIsSecureContext(originalIsSecureContext);
|
|
69
|
+
});
|
|
70
|
+
it("should return true in a secure context (HTTPS/localhost)", () => {
|
|
71
|
+
setIsSecureContext(true);
|
|
72
|
+
expect(isSecureBrowserContext()).toBe(true);
|
|
73
|
+
});
|
|
74
|
+
it("should return false in an insecure context (plain HTTP)", () => {
|
|
75
|
+
setIsSecureContext(false);
|
|
76
|
+
expect(isSecureBrowserContext()).toBe(false);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
58
79
|
});
|
|
59
80
|
//# sourceMappingURL=window.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.test.js","sourceRoot":"","sources":["../../src/tests/window.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"window.test.js","sourceRoot":"","sources":["../../src/tests/window.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/procaptcha-common",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.17",
|
|
4
4
|
"author": "PROSOPO LIMITED <info@prosopo.io>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,17 +34,19 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@emotion/react": "11.11.1",
|
|
36
36
|
"@emotion/styled": "11.11.0",
|
|
37
|
-
"@prosopo/account": "2.8.
|
|
38
|
-
"@prosopo/load-balancer": "2.
|
|
39
|
-
"@prosopo/types": "3.
|
|
40
|
-
"@prosopo/widget-skeleton": "2.
|
|
41
|
-
"react": "18.3.1"
|
|
37
|
+
"@prosopo/account": "2.8.35",
|
|
38
|
+
"@prosopo/load-balancer": "2.9.10",
|
|
39
|
+
"@prosopo/types": "4.3.0",
|
|
40
|
+
"@prosopo/widget-skeleton": "2.8.3",
|
|
41
|
+
"react": "18.3.1",
|
|
42
|
+
"react-dom": "18.3.1"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@prosopo/config": "3.3.
|
|
45
|
+
"@prosopo/config": "3.3.1",
|
|
45
46
|
"@types/jsdom": "21.1.7",
|
|
46
47
|
"@types/node": "22.10.2",
|
|
47
48
|
"@types/react": "18.3.1",
|
|
49
|
+
"@types/react-dom": "18.3.1",
|
|
48
50
|
"@vitest/coverage-v8": "3.2.4",
|
|
49
51
|
"concurrently": "9.0.1",
|
|
50
52
|
"del-cli": "6.0.0",
|
|
@@ -59,7 +61,8 @@
|
|
|
59
61
|
},
|
|
60
62
|
"repository": {
|
|
61
63
|
"type": "git",
|
|
62
|
-
"url": "git+https://github.com/prosopo/captcha.git"
|
|
64
|
+
"url": "git+https://github.com/prosopo/captcha.git",
|
|
65
|
+
"directory": "packages/procaptcha-common"
|
|
63
66
|
},
|
|
64
67
|
"bugs": {
|
|
65
68
|
"url": "https://github.com/prosopo/captcha/issues"
|