@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.
Files changed (54) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +22 -15
  2. package/.turbo/turbo-build$colon$tsc.log +22 -16
  3. package/.turbo/turbo-build.log +22 -16
  4. package/CHANGELOG.md +347 -0
  5. package/dist/cjs/elements/window.cjs +7 -0
  6. package/dist/cjs/index.cjs +5 -0
  7. package/dist/cjs/reactComponents/Checkbox.cjs +11 -7
  8. package/dist/cjs/reactComponents/Honeypot.cjs +67 -0
  9. package/dist/cjs/reactComponents/TestModeBanner.cjs +47 -0
  10. package/dist/elements/window.d.ts +1 -0
  11. package/dist/elements/window.d.ts.map +1 -1
  12. package/dist/elements/window.js +8 -1
  13. package/dist/elements/window.js.map +1 -1
  14. package/dist/index.d.ts +2 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +6 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/reactComponents/Checkbox.d.ts.map +1 -1
  19. package/dist/reactComponents/Checkbox.js +11 -7
  20. package/dist/reactComponents/Checkbox.js.map +1 -1
  21. package/dist/reactComponents/Honeypot.d.ts +6 -0
  22. package/dist/reactComponents/Honeypot.d.ts.map +1 -0
  23. package/dist/reactComponents/Honeypot.js +67 -0
  24. package/dist/reactComponents/Honeypot.js.map +1 -0
  25. package/dist/reactComponents/TestModeBanner.d.ts +7 -0
  26. package/dist/reactComponents/TestModeBanner.d.ts.map +1 -0
  27. package/dist/reactComponents/TestModeBanner.js +47 -0
  28. package/dist/reactComponents/TestModeBanner.js.map +1 -0
  29. package/dist/tests/window.test.js +22 -1
  30. package/dist/tests/window.test.js.map +1 -1
  31. package/package.json +11 -8
  32. package/src/callbacks/defaultCallbacks.ts +197 -0
  33. package/src/callbacks/defaultEvents.ts +21 -0
  34. package/src/elements/form.ts +41 -0
  35. package/src/elements/window.ts +39 -0
  36. package/src/extensionLoader.ts +17 -0
  37. package/src/index.ts +24 -0
  38. package/src/providers.ts +49 -0
  39. package/src/reactComponents/Checkbox.tsx +203 -0
  40. package/src/reactComponents/Honeypot.tsx +133 -0
  41. package/src/reactComponents/Reload.tsx +99 -0
  42. package/src/reactComponents/TestModeBanner.tsx +75 -0
  43. package/src/state/builder.ts +137 -0
  44. package/src/tests/defaultCallbacks.test.ts +372 -0
  45. package/src/tests/defaultEvents.test.ts +80 -0
  46. package/src/tests/extensionLoader.test.ts +41 -0
  47. package/src/tests/form.test.ts +154 -0
  48. package/src/tests/providers.test.ts +175 -0
  49. package/src/tests/state-builder.test.ts +264 -0
  50. package/src/tests/window.test.ts +137 -0
  51. package/tsconfig.cjs.json +32 -0
  52. package/tsconfig.json +33 -0
  53. package/tsconfig.tsbuildinfo +1 -0
  54. 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,2 +1,3 @@
1
1
  export declare const getWindowCallback: (callbackName: string) => any;
2
+ export declare const isSecureBrowserContext: () => boolean;
2
3
  //# sourceMappingURL=window.d.ts.map
@@ -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"}
@@ -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
@@ -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,CAqHtC,CAAC;AACF,eAAe,QAAQ,CAAC"}
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
- @container widget (max-width: 219px) {
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: 220px) {
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":"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"}
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface HoneypotProps {
2
+ encodedQuestion: string;
3
+ }
4
+ export declare const Honeypot: import("react").ForwardRefExoticComponent<HoneypotProps & import("react").RefAttributes<HTMLInputElement>>;
5
+ export {};
6
+ //# sourceMappingURL=Honeypot.d.ts.map
@@ -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,7 @@
1
+ import { type FC } from "react";
2
+ interface TestModeBannerProps {
3
+ siteKey: string;
4
+ }
5
+ export declare const TestModeBanner: FC<TestModeBannerProps>;
6
+ export default TestModeBanner;
7
+ //# sourceMappingURL=TestModeBanner.d.ts.map
@@ -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":"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"}
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.9.23",
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.0",
38
- "@prosopo/load-balancer": "2.8.17",
39
- "@prosopo/types": "3.8.0",
40
- "@prosopo/widget-skeleton": "2.7.13",
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.0",
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"