@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.
Files changed (60) hide show
  1. package/dist/cjs/index.cjs +70 -0
  2. package/dist/cjs/util/captchaType.cjs +12 -0
  3. package/dist/cjs/util/config.cjs +33 -0
  4. package/dist/cjs/util/defaultCallbacks.cjs +159 -0
  5. package/dist/cjs/util/form.cjs +4 -0
  6. package/dist/cjs/util/language.cjs +18 -0
  7. package/dist/cjs/util/renderLogic.cjs +45 -0
  8. package/dist/cjs/util/theme.cjs +9 -0
  9. package/dist/cjs/util/timeout.cjs +14 -0
  10. package/dist/index.d.ts +14 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +65 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/tests/util/captchaType.test.d.ts +2 -0
  15. package/dist/tests/util/captchaType.test.d.ts.map +1 -0
  16. package/dist/tests/util/captchaType.test.js +36 -0
  17. package/dist/tests/util/captchaType.test.js.map +1 -0
  18. package/dist/tests/util/config.test.d.ts +2 -0
  19. package/dist/tests/util/config.test.d.ts.map +1 -0
  20. package/dist/tests/util/config.test.js +69 -0
  21. package/dist/tests/util/config.test.js.map +1 -0
  22. package/dist/tests/util/renderLogic.test.d.ts +2 -0
  23. package/dist/tests/util/renderLogic.test.d.ts.map +1 -0
  24. package/dist/tests/util/renderLogic.test.js +131 -0
  25. package/dist/tests/util/renderLogic.test.js.map +1 -0
  26. package/dist/util/captchaType.d.ts +3 -0
  27. package/dist/util/captchaType.d.ts.map +1 -0
  28. package/dist/util/captchaType.js +8 -0
  29. package/dist/util/captchaType.js.map +1 -0
  30. package/dist/util/config.d.ts +8 -0
  31. package/dist/util/config.d.ts.map +1 -0
  32. package/dist/util/config.js +31 -0
  33. package/dist/util/config.js.map +1 -0
  34. package/dist/util/defaultCallbacks.d.ts +23 -0
  35. package/dist/util/defaultCallbacks.d.ts.map +1 -0
  36. package/dist/util/defaultCallbacks.js +178 -0
  37. package/dist/util/defaultCallbacks.js.map +1 -0
  38. package/dist/util/form.d.ts +2 -0
  39. package/dist/util/form.d.ts.map +1 -0
  40. package/dist/util/form.js +2 -0
  41. package/dist/util/form.js.map +1 -0
  42. package/dist/util/language.d.ts +3 -0
  43. package/dist/util/language.d.ts.map +1 -0
  44. package/dist/util/language.js +17 -0
  45. package/dist/util/language.js.map +1 -0
  46. package/dist/util/renderLogic.d.ts +4 -0
  47. package/dist/util/renderLogic.d.ts.map +1 -0
  48. package/dist/util/renderLogic.js +41 -0
  49. package/dist/util/renderLogic.js.map +1 -0
  50. package/dist/util/theme.d.ts +3 -0
  51. package/dist/util/theme.d.ts.map +1 -0
  52. package/dist/util/theme.js +9 -0
  53. package/dist/util/theme.js.map +1 -0
  54. package/dist/util/timeout.d.ts +3 -0
  55. package/dist/util/timeout.d.ts.map +1 -0
  56. package/dist/util/timeout.js +9 -0
  57. package/dist/util/timeout.js.map +1 -0
  58. package/package.json +10 -10
  59. package/webpack.config.cjs +13 -5
  60. package/stats.html +0 -4842
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ProcaptchaPow } from "@prosopo/procaptcha-pow";
3
+ import { ProcaptchaConfigSchema } from "@prosopo/types";
4
+ import { JSDOM } from "jsdom";
5
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { renderLogic } from "../../util/renderLogic.js";
7
+ vi.mock("@prosopo/detector", async () => {
8
+ return {
9
+ isBot: async () => {
10
+ return { isBot: true };
11
+ },
12
+ };
13
+ });
14
+ vi.mock("@polkadot/extension-dapp", async () => {
15
+ return {
16
+ web3Enable: async () => {
17
+ return [];
18
+ },
19
+ };
20
+ });
21
+ vi.mock("@prosopo/procaptcha-pow", async () => {
22
+ return {
23
+ ProcaptchaPow: vi.fn((props) => {
24
+ return (_jsx("div", { config: props.config, callbacks: props.callbacks, children: "ProcaptchaPow" }));
25
+ }),
26
+ };
27
+ });
28
+ vi.mock("@prosopo/procaptcha-frictionless", async () => {
29
+ return {
30
+ ProcaptchaFrictionless: vi.fn((props) => {
31
+ return (_jsx("div", { config: props.config, callbacks: props.callbacks, children: "ProcaptchaFrictionless" }));
32
+ }),
33
+ };
34
+ });
35
+ describe("Config utility functions", () => {
36
+ let dom;
37
+ let self;
38
+ beforeEach((context) => {
39
+ dom = new JSDOM("<!DOCTYPE html><html><body></body></html>", {
40
+ url: "https://example.com",
41
+ });
42
+ context.document = dom.window.document;
43
+ context.window = dom.window;
44
+ global.window = dom.window;
45
+ global.document = dom.window.document;
46
+ vi.clearAllMocks();
47
+ });
48
+ afterEach((context) => {
49
+ context.document = undefined;
50
+ context.window = undefined;
51
+ vi.clearAllMocks();
52
+ });
53
+ it("renders the correct captcha type", async (ctx) => {
54
+ const script = ctx.document.createElement("script");
55
+ script.src = "https://example.com/procaptcha.js";
56
+ document.body.appendChild(script);
57
+ expect(ctx.window).toBeDefined();
58
+ if (!ctx.window) {
59
+ expect(true).toBe(false);
60
+ return;
61
+ }
62
+ const config = ProcaptchaConfigSchema.parse({
63
+ account: { address: "1234" },
64
+ });
65
+ renderLogic([script], config, {
66
+ siteKey: "1234",
67
+ captchaType: "pow",
68
+ });
69
+ await vi.waitFor(() => {
70
+ expect(ProcaptchaPow).toHaveBeenCalledTimes(1);
71
+ });
72
+ });
73
+ it("user callbacks should be set when defined on the window and pulled in via data attributes", async (ctx) => {
74
+ const script = ctx.document.createElement("script");
75
+ script.src = "https://example.com/procaptcha.js";
76
+ script["data-callback"] = "onHuman";
77
+ script["data-chalexpired-callback"] = "onChallengeExpired";
78
+ script["data-expired-callback"] = "onExpired";
79
+ script["data-error-callback"] = "onError";
80
+ script["data-close-callback"] = "onClose";
81
+ script["data-open-callback"] = "onOpen";
82
+ script["data-failed-callback"] = "onFailed";
83
+ script["data-reset-callback"] = "onReset";
84
+ document.body.appendChild(script);
85
+ const onHuman = () => console.log("onHuman");
86
+ const onChallengeExpired = () => console.log("onChallengeExpired");
87
+ const onExpired = () => console.log("onExpired");
88
+ const onError = () => console.log("onError");
89
+ const onClose = () => console.log("onClose");
90
+ const onOpen = () => console.log("onOpen");
91
+ const onFailed = () => console.log("onFailed");
92
+ const onReset = () => console.log("onReset");
93
+ expect(ctx.window).toBeDefined();
94
+ if (!ctx.window) {
95
+ expect(true).toBe(false);
96
+ return;
97
+ }
98
+ ctx.window.onHuman = onHuman;
99
+ ctx.window.onChallengeExpired = onChallengeExpired;
100
+ ctx.window.onExpired = onExpired;
101
+ ctx.window.onError = onError;
102
+ ctx.window.onClose = onClose;
103
+ ctx.window.onOpen = onOpen;
104
+ ctx.window.onFailed = onFailed;
105
+ ctx.window.onReset = onReset;
106
+ const callbacks = {
107
+ onHuman,
108
+ onChallengeExpired,
109
+ onExpired,
110
+ onError,
111
+ onClose,
112
+ onOpen,
113
+ onFailed,
114
+ onReset,
115
+ };
116
+ const config = ProcaptchaConfigSchema.parse({
117
+ account: { address: "1234" },
118
+ });
119
+ renderLogic([script], config, {
120
+ siteKey: "1234",
121
+ captchaType: "pow",
122
+ });
123
+ await vi.waitFor(() => {
124
+ expect(ProcaptchaPow).toHaveBeenCalledTimes(1);
125
+ const call = ProcaptchaPow.mock.calls[0];
126
+ const props = { config, callbacks };
127
+ expect(JSON.stringify(call[0])).to.equal(JSON.stringify(props));
128
+ });
129
+ });
130
+ });
131
+ //# sourceMappingURL=renderLogic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderLogic.test.js","sourceRoot":"","sources":["../../../src/tests/util/renderLogic.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { FeaturesEnum } from "@prosopo/types";
2
+ export declare function getCaptchaType(elements: Element[]): FeaturesEnum;
3
+ //# sourceMappingURL=captchaType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captchaType.d.ts","sourceRoot":"","sources":["../../src/util/captchaType.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9C,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAQjD"}
@@ -0,0 +1,8 @@
1
+ import { FeaturesEnum } from "@prosopo/types";
2
+ import { at } from "@prosopo/util";
3
+ export function getCaptchaType(elements) {
4
+ const features = Object.values(FeaturesEnum);
5
+ const captchaType = features.find((feature) => feature === at(elements, 0).getAttribute("data-captcha-type")) || "frictionless";
6
+ return captchaType;
7
+ }
8
+ //# sourceMappingURL=captchaType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captchaType.js","sourceRoot":"","sources":["../../src/util/captchaType.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAQnC,MAAM,UAAU,cAAc,CAAC,QAAmB;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,WAAW,GAChB,QAAQ,CAAC,IAAI,CACZ,CAAC,OAAO,EAAE,EAAE,CACX,OAAO,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAC9D,IAAK,cAA+B,CAAC;IACvC,OAAO,WAAW,CAAC;AACpB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ProcaptchaClientConfigOutput } from "@prosopo/types";
2
+ export declare const getConfig: (siteKey?: string) => ProcaptchaClientConfigOutput;
3
+ export declare const getProcaptchaScript: (name: string) => HTMLScriptElement | null;
4
+ export declare const extractParams: (name: string) => {
5
+ onloadUrlCallback: string | undefined;
6
+ renderExplicit: string | undefined;
7
+ };
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/util/config.ts"],"names":[],"mappings":"AAaA,OAAO,EAEN,KAAK,4BAA4B,EAEjC,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,SAAS,aAAc,MAAM,KAAG,4BAiB5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,SAAU,MAAM,6BACoB,CAAC;AAErE,eAAO,MAAM,aAAa,SAAU,MAAM;;;CAWzC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { EnvironmentTypesSchema, ProcaptchaConfigSchema, } from "@prosopo/types";
2
+ export const getConfig = (siteKey) => {
3
+ if (!siteKey) {
4
+ siteKey = process.env.PROSOPO_SITE_KEY || "";
5
+ }
6
+ return ProcaptchaConfigSchema.parse({
7
+ defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT
8
+ ? EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT)
9
+ : 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
+ export const getProcaptchaScript = (name) => document.querySelector(`script[src*="${name}"]`);
20
+ export 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") || undefined,
26
+ renderExplicit: params.get("render") || undefined,
27
+ };
28
+ }
29
+ return { onloadUrlCallback: undefined, renderExplicit: undefined };
30
+ };
31
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/util/config.ts"],"names":[],"mappings":"AAaA,OAAO,EACN,sBAAsB,EAEtB,sBAAsB,GACtB,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAgC,EAAE;IAC3E,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,sBAAsB,CAAC,KAAK,CAAC;QACnC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;YAC1D,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;YACvE,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW;QAC1C,kBAAkB,EAAE,EAAE;QACtB,OAAO,EAAE;YACR,OAAO,EAAE,OAAO;SAChB;QACD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;QAC/C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;QACzD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM,IAAI,KAAK;KAC1E,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE,CACnD,QAAQ,CAAC,aAAa,CAAoB,gBAAgB,IAAI,IAAI,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;IAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO;YACN,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS;YACpD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS;SACjD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACpE,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ProcaptchaRenderOptions, type ProcaptchaToken } from "@prosopo/types";
2
+ export declare const getWindowCallback: (callbackName: string) => any;
3
+ export declare const getDefaultCallbacks: (element: Element) => {
4
+ onHuman: (token: ProcaptchaToken) => void;
5
+ onChallengeExpired: () => void;
6
+ onExpired: () => void;
7
+ onError: (error: Error) => void;
8
+ onClose: () => void;
9
+ onOpen: () => void;
10
+ onFailed: () => void;
11
+ onReset: () => void;
12
+ };
13
+ export declare function setUserCallbacks(renderOptions: ProcaptchaRenderOptions | undefined, callbacks: {
14
+ onHuman: (token: ProcaptchaToken) => void;
15
+ onChallengeExpired: () => void;
16
+ onExpired: () => void;
17
+ onError: (error: Error) => void;
18
+ onClose: () => void;
19
+ onOpen: () => void;
20
+ onFailed: () => void;
21
+ onReset: () => void;
22
+ }, element: Element): void;
23
+ //# sourceMappingURL=defaultCallbacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultCallbacks.d.ts","sourceRoot":"","sources":["../../src/util/defaultCallbacks.ts"],"names":[],"mappings":"AAaA,OAAO,EAEN,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,iBAAiB,iBAAkB,MAAM,QASrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAa,OAAO;qBAClC,eAAe;;;qBAQf,KAAK;;;;;CAkBrB,CAAC;AAEH,wBAAgB,gBAAgB,CAC/B,aAAa,EAAE,uBAAuB,GAAG,SAAS,EAClD,SAAS,EAAE;IACV,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB,EACD,OAAO,EAAE,OAAO,QAyIhB"}
@@ -0,0 +1,178 @@
1
+ import { ApiParams, } from "@prosopo/types";
2
+ import { getParentForm } from "./form.js";
3
+ export const getWindowCallback = (callbackName) => {
4
+ const fn = window[callbackName.replace("window.", "")];
5
+ if (typeof fn !== "function") {
6
+ throw new Error(`Callback ${callbackName} is not defined on the window object`);
7
+ }
8
+ return fn;
9
+ };
10
+ export const getDefaultCallbacks = (element) => ({
11
+ onHuman: (token) => handleOnHuman(element, token),
12
+ onChallengeExpired: () => {
13
+ removeProcaptchaResponse();
14
+ console.log("Challenge expired");
15
+ },
16
+ onExpired: () => {
17
+ removeProcaptchaResponse();
18
+ },
19
+ onError: (error) => {
20
+ removeProcaptchaResponse();
21
+ console.error(error);
22
+ },
23
+ onClose: () => {
24
+ console.log("Challenge closed");
25
+ },
26
+ onOpen: () => {
27
+ console.log("Challenge opened");
28
+ },
29
+ onFailed: () => {
30
+ alert("Captcha challenge failed. Please try again");
31
+ console.log("Challenge failed");
32
+ },
33
+ onReset: () => {
34
+ removeProcaptchaResponse();
35
+ console.log("Captcha widget reset");
36
+ },
37
+ });
38
+ export function setUserCallbacks(renderOptions, callbacks, element) {
39
+ if (typeof renderOptions?.callback === "function") {
40
+ const fn = renderOptions.callback;
41
+ callbacks.onHuman = (token) => {
42
+ handleOnHuman(element, token);
43
+ fn(token);
44
+ };
45
+ }
46
+ else {
47
+ const callbackName = typeof renderOptions?.callback === "string"
48
+ ? renderOptions?.callback
49
+ : element.getAttribute("data-callback");
50
+ if (callbackName)
51
+ callbacks.onHuman = (token) => {
52
+ handleOnHuman(element, token);
53
+ const fn = getWindowCallback(callbackName);
54
+ fn(token);
55
+ };
56
+ }
57
+ if (renderOptions?.["chalexpired-callback"] &&
58
+ typeof renderOptions["chalexpired-callback"] === "function") {
59
+ const fn = renderOptions["chalexpired-callback"];
60
+ callbacks.onChallengeExpired = () => {
61
+ removeProcaptchaResponse();
62
+ fn();
63
+ };
64
+ }
65
+ else {
66
+ const chalExpiredCallbackName = typeof renderOptions?.["chalexpired-callback"] === "string"
67
+ ? renderOptions?.["chalexpired-callback"]
68
+ : element.getAttribute("data-chalexpired-callback");
69
+ if (chalExpiredCallbackName)
70
+ callbacks.onChallengeExpired = () => {
71
+ const fn = getWindowCallback(chalExpiredCallbackName);
72
+ removeProcaptchaResponse();
73
+ fn();
74
+ };
75
+ }
76
+ if (renderOptions?.["expired-callback"] &&
77
+ typeof renderOptions["expired-callback"] === "function") {
78
+ const fn = renderOptions["expired-callback"];
79
+ callbacks.onExpired = () => {
80
+ removeProcaptchaResponse();
81
+ fn();
82
+ };
83
+ }
84
+ else {
85
+ const onExpiredCallbackName = typeof renderOptions?.["expired-callback"] === "string"
86
+ ? renderOptions?.["expired-callback"]
87
+ : element.getAttribute("data-expired-callback");
88
+ if (onExpiredCallbackName)
89
+ callbacks.onExpired = () => {
90
+ const fn = getWindowCallback(onExpiredCallbackName);
91
+ removeProcaptchaResponse();
92
+ fn();
93
+ };
94
+ }
95
+ if (renderOptions?.["error-callback"] &&
96
+ typeof renderOptions["error-callback"] === "function") {
97
+ const fn = renderOptions["error-callback"];
98
+ callbacks.onError = () => {
99
+ removeProcaptchaResponse();
100
+ fn();
101
+ };
102
+ }
103
+ else {
104
+ const errorCallbackName = typeof renderOptions?.["error-callback"] === "string"
105
+ ? renderOptions?.["error-callback"]
106
+ : element.getAttribute("data-error-callback");
107
+ if (errorCallbackName)
108
+ callbacks.onError = () => {
109
+ const fn = getWindowCallback(errorCallbackName);
110
+ removeProcaptchaResponse();
111
+ fn();
112
+ };
113
+ }
114
+ if (typeof renderOptions?.["close-callback"] === "function") {
115
+ callbacks.onClose = renderOptions["close-callback"];
116
+ }
117
+ else {
118
+ const onCloseCallbackName = typeof renderOptions?.["close-callback"] === "string"
119
+ ? renderOptions?.["close-callback"]
120
+ : element.getAttribute("data-close-callback");
121
+ if (onCloseCallbackName)
122
+ callbacks.onClose = getWindowCallback(onCloseCallbackName);
123
+ }
124
+ if (renderOptions?.["open-callback"]) {
125
+ if (typeof renderOptions["open-callback"] === "function") {
126
+ callbacks.onOpen = renderOptions["open-callback"];
127
+ }
128
+ else {
129
+ const onOpenCallbackName = typeof renderOptions?.["open-callback"] === "string"
130
+ ? renderOptions?.["open-callback"]
131
+ : element.getAttribute("data-open-callback");
132
+ if (onOpenCallbackName)
133
+ callbacks.onOpen = getWindowCallback(onOpenCallbackName);
134
+ }
135
+ }
136
+ if (renderOptions?.["failed-callback"]) {
137
+ if (typeof renderOptions["failed-callback"] === "function") {
138
+ callbacks.onFailed = renderOptions["failed-callback"];
139
+ }
140
+ else {
141
+ const onFailedCallbackName = typeof renderOptions?.["failed-callback"] === "string"
142
+ ? renderOptions?.["failed-callback"]
143
+ : element.getAttribute("data-failed-callback");
144
+ if (onFailedCallbackName)
145
+ callbacks.onFailed = getWindowCallback(onFailedCallbackName);
146
+ }
147
+ }
148
+ if (renderOptions?.["reset-callback"]) {
149
+ if (typeof renderOptions["reset-callback"] === "function") {
150
+ callbacks.onReset = renderOptions["reset-callback"];
151
+ }
152
+ else {
153
+ const onResetCallbackName = typeof renderOptions?.["reset-callback"] === "string"
154
+ ? renderOptions?.["reset-callback"]
155
+ : element.getAttribute("data-reset-callback");
156
+ if (onResetCallbackName)
157
+ callbacks.onReset = getWindowCallback(onResetCallbackName);
158
+ }
159
+ }
160
+ }
161
+ const handleOnHuman = (element, token) => {
162
+ removeProcaptchaResponse();
163
+ const form = getParentForm(element);
164
+ if (!form) {
165
+ console.error("Parent form not found for the element:", element);
166
+ return;
167
+ }
168
+ const input = document.createElement("input");
169
+ input.type = "hidden";
170
+ input.name = ApiParams.procaptchaResponse;
171
+ input.value = token;
172
+ form.appendChild(input);
173
+ };
174
+ const removeProcaptchaResponse = () => {
175
+ const element = Array.from(document.getElementsByName(ApiParams.procaptchaResponse));
176
+ element.map((el) => el.remove());
177
+ };
178
+ //# sourceMappingURL=defaultCallbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultCallbacks.js","sourceRoot":"","sources":["../../src/util/defaultCallbacks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const getParentForm: (element: Element) => HTMLFormElement | null;
2
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/util/form.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,eAAe,GAAG,IACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const getParentForm = (element) => element.closest("form");
2
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/util/form.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAgB,EAA0B,EAAE,CACzE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProcaptchaClientConfigInput, ProcaptchaRenderOptions } from "@prosopo/types";
2
+ export declare const setLanguage: (renderOptions: ProcaptchaRenderOptions | undefined, element: Element, config: ProcaptchaClientConfigInput) => void;
3
+ //# sourceMappingURL=language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/util/language.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACX,2BAA2B,EAC3B,uBAAuB,EACvB,MAAM,gBAAgB,CAAC;AAcxB,eAAO,MAAM,WAAW,kBACR,uBAAuB,GAAG,SAAS,WACzC,OAAO,UACR,2BAA2B,SAQnC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { LanguageSchema } from "@prosopo/locale";
2
+ export const setLanguage = (renderOptions, element, config) => {
3
+ const languageAttribute = renderOptions?.language || element.getAttribute("data-language");
4
+ if (languageAttribute) {
5
+ config.language = validateLanguage(languageAttribute);
6
+ }
7
+ };
8
+ const validateLanguage = (languageAttribute) => {
9
+ try {
10
+ return LanguageSchema.parse(languageAttribute);
11
+ }
12
+ catch (error) {
13
+ console.error(`Invalid language attribute: ${languageAttribute}`);
14
+ return LanguageSchema.parse("en");
15
+ }
16
+ };
17
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/util/language.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAkBjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,aAAkD,EAClD,OAAgB,EAChB,MAAmC,EAClC,EAAE;IACH,MAAM,iBAAiB,GACtB,aAAa,EAAE,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAElE,IAAI,iBAAiB,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACxB,iBAAiD,EAChD,EAAE;IACH,IAAI,CAAC;QACJ,OAAO,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,+BAA+B,iBAAiB,EAAE,CAAC,CAAC;QAClE,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;AACF,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ProcaptchaClientConfigOutput, ProcaptchaRenderOptions } from "@prosopo/types";
2
+ import { type Root } from "react-dom/client";
3
+ export declare const renderLogic: (elements: Element[], config: ProcaptchaClientConfigOutput, renderOptions?: ProcaptchaRenderOptions) => Root[];
4
+ //# sourceMappingURL=renderLogic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderLogic.d.ts","sourceRoot":"","sources":["../../src/util/renderLogic.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACX,4BAA4B,EAC5B,uBAAuB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,kBAAkB,CAAC;AAQzD,eAAO,MAAM,WAAW,aACb,OAAO,EAAE,UACX,4BAA4B,kBACpB,uBAAuB,WAkCvC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ProcaptchaFrictionless } from "@prosopo/procaptcha-frictionless";
3
+ import { ProcaptchaPow } from "@prosopo/procaptcha-pow";
4
+ import { Procaptcha } from "@prosopo/procaptcha-react";
5
+ import { createRoot } from "react-dom/client";
6
+ import { getDefaultCallbacks, setUserCallbacks } from "./defaultCallbacks.js";
7
+ import { setLanguage } from "./language.js";
8
+ import { setTheme } from "./theme.js";
9
+ import { setValidChallengeLength } from "./timeout.js";
10
+ const identifierPrefix = "procaptcha-";
11
+ export const renderLogic = (elements, config, renderOptions) => {
12
+ const roots = [];
13
+ for (const element of elements) {
14
+ const callbacks = getDefaultCallbacks(element);
15
+ setUserCallbacks(renderOptions, callbacks, element);
16
+ setTheme(renderOptions, element, config);
17
+ setValidChallengeLength(renderOptions, element, config);
18
+ setLanguage(renderOptions, element, config);
19
+ let root = null;
20
+ switch (renderOptions?.captchaType) {
21
+ case "pow":
22
+ console.log("rendering pow");
23
+ root = createRoot(element, { identifierPrefix });
24
+ root.render(_jsx(ProcaptchaPow, { config: config, callbacks: callbacks }));
25
+ break;
26
+ case "image":
27
+ console.log("rendering image");
28
+ root = createRoot(element, { identifierPrefix });
29
+ root.render(_jsx(Procaptcha, { config: config, callbacks: callbacks }));
30
+ break;
31
+ default:
32
+ console.log("rendering frictionless");
33
+ root = createRoot(element, { identifierPrefix });
34
+ root.render(_jsx(ProcaptchaFrictionless, { config: config, callbacks: callbacks }));
35
+ break;
36
+ }
37
+ roots.push(root);
38
+ }
39
+ return roots;
40
+ };
41
+ //# sourceMappingURL=renderLogic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderLogic.js","sourceRoot":"","sources":["../../src/util/renderLogic.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKvD,OAAO,EAAa,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,QAAmB,EACnB,MAAoC,EACpC,aAAuC,EACtC,EAAE;IACH,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE/C,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACpD,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,uBAAuB,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE5C,IAAI,IAAI,GAAgB,IAAI,CAAC;QAC7B,QAAQ,aAAa,EAAE,WAAW,EAAE,CAAC;YACpC,KAAK,KAAK;gBACT,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC,CAAC;gBACrE,MAAM;YACP,KAAK,OAAO;gBACX,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC,CAAC;gBAClE,MAAM;YACP;gBACC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM,CACV,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAI,CAChE,CAAC;gBACF,MAAM;QACR,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProcaptchaClientConfigInput, ProcaptchaRenderOptions } from "@prosopo/types";
2
+ export declare const setTheme: (renderOptions: ProcaptchaRenderOptions | undefined, element: Element, config: ProcaptchaClientConfigInput) => void;
3
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/util/theme.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACX,2BAA2B,EAC3B,uBAAuB,EACvB,MAAM,gBAAgB,CAAC;AAUxB,eAAO,MAAM,QAAQ,kBACL,uBAAuB,GAAG,SAAS,WACzC,OAAO,UACR,2BAA2B,SAKnC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const setTheme = (renderOptions, element, config) => {
2
+ const themeAttribute = renderOptions?.theme || element.getAttribute("data-theme") || "light";
3
+ config.theme = validateTheme(themeAttribute);
4
+ };
5
+ const customThemeSet = new Set(["light", "dark"]);
6
+ const validateTheme = (themeAttribute) => customThemeSet.has(themeAttribute)
7
+ ? themeAttribute
8
+ : "light";
9
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/util/theme.ts"],"names":[],"mappings":"AA0BA,MAAM,CAAC,MAAM,QAAQ,GAAG,CACvB,aAAkD,EAClD,OAAgB,EAChB,MAAmC,EAClC,EAAE;IACH,MAAM,cAAc,GACnB,aAAa,EAAE,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC;IACvE,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAElD,MAAM,aAAa,GAAG,CAAC,cAAsB,EAAoB,EAAE,CAClE,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC;IACjC,CAAC,CAAE,cAAmC;IACtC,CAAC,CAAC,OAAO,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProcaptchaClientConfigOutput, ProcaptchaRenderOptions } from "@prosopo/types";
2
+ export declare const setValidChallengeLength: (renderOptions: ProcaptchaRenderOptions | undefined, element: Element, config: ProcaptchaClientConfigOutput) => void;
3
+ //# sourceMappingURL=timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/util/timeout.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACX,4BAA4B,EAC5B,uBAAuB,EACvB,MAAM,gBAAgB,CAAC;AASxB,eAAO,MAAM,uBAAuB,kBACpB,uBAAuB,GAAG,SAAS,WACzC,OAAO,UACR,4BAA4B,KAClC,IAaF,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const setValidChallengeLength = (renderOptions, element, config) => {
2
+ const challengeValidLengthAttribute = renderOptions?.["challenge-valid-length"] ||
3
+ element.getAttribute("data-challenge-valid-length");
4
+ if (challengeValidLengthAttribute) {
5
+ config.captchas.image.solutionTimeout = Number.parseInt(challengeValidLengthAttribute);
6
+ config.captchas.pow.solutionTimeout = Number.parseInt(challengeValidLengthAttribute);
7
+ }
8
+ };
9
+ //# sourceMappingURL=timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/util/timeout.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,aAAkD,EAClD,OAAgB,EAChB,MAAoC,EAC7B,EAAE;IACT,MAAM,6BAA6B,GAClC,aAAa,EAAE,CAAC,wBAAwB,CAAC;QACzC,OAAO,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;IAErD,IAAI,6BAA6B,EAAE,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CACtD,6BAA6B,CAC7B,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CACpD,6BAA6B,CAC7B,CAAC;IACH,CAAC;AACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/procaptcha-bundle",
3
- "version": "2.1.4",
3
+ "version": "2.1.6",
4
4
  "author": "PROSOPO LIMITED <info@prosopo.io>",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./dist/index.js",
@@ -29,13 +29,13 @@
29
29
  },
30
30
  "browserslist": ["> 0.5%, last 2 versions, not dead"],
31
31
  "dependencies": {
32
- "@prosopo/dotenv": "2.1.4",
33
- "@prosopo/locale": "2.1.4",
34
- "@prosopo/procaptcha-frictionless": "2.1.4",
35
- "@prosopo/procaptcha-pow": "2.1.4",
36
- "@prosopo/procaptcha-react": "2.1.4",
37
- "@prosopo/types": "2.1.4",
38
- "@prosopo/util": "2.1.4",
32
+ "@prosopo/dotenv": "2.1.6",
33
+ "@prosopo/locale": "2.1.6",
34
+ "@prosopo/procaptcha-frictionless": "2.1.6",
35
+ "@prosopo/procaptcha-pow": "2.1.6",
36
+ "@prosopo/procaptcha-react": "2.1.6",
37
+ "@prosopo/types": "2.1.6",
38
+ "@prosopo/util": "2.1.6",
39
39
  "react": "18.3.1",
40
40
  "react-dom": "18.3.1"
41
41
  },
@@ -52,12 +52,12 @@
52
52
  "registry": "https://registry.npmjs.org"
53
53
  },
54
54
  "devDependencies": {
55
- "@prosopo/config": "2.1.4",
55
+ "@prosopo/config": "2.1.6",
56
56
  "@types/jsdom": "21.1.7",
57
57
  "@vitest/coverage-v8": "2.1.1",
58
58
  "concurrently": "9.0.1",
59
59
  "npm-run-all": "4.1.5",
60
- "rimraf": "6.0.1",
60
+ "del-cli": "6.0.0",
61
61
  "tslib": "2.7.0",
62
62
  "tsx": "4.19.1",
63
63
  "typescript": "5.6.2",