@prosopo/procaptcha-bundle 0.2.17 → 0.2.20

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.
@@ -0,0 +1,15 @@
1
+ interface ProcaptchaRenderOptions {
2
+ siteKey: string;
3
+ theme?: 'light' | 'dark';
4
+ callback?: string;
5
+ 'challenge-valid-length'?: string;
6
+ 'chalexpired-callback'?: string;
7
+ 'expired-callback'?: string;
8
+ 'open-callback'?: string;
9
+ 'close-callback'?: string;
10
+ 'error-callback'?: string;
11
+ }
12
+ export declare const render: (elementId: string, renderOptions: ProcaptchaRenderOptions) => void;
13
+ export default function ready(fn: () => void): void;
14
+ export {};
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAwBA,UAAU,uBAAuB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAmJD,eAAO,MAAM,MAAM,cAAe,MAAM,iBAAiB,uBAAuB,SAW/E,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,QAQ3C"}
@@ -0,0 +1,147 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ApiParams, EnvironmentTypesSchema, NetworkNamesSchema, ProcaptchaConfigSchema, } from '@prosopo/types';
3
+ import { Procaptcha } from '@prosopo/procaptcha-react';
4
+ import { at } from '@prosopo/util';
5
+ import { createRoot } from 'react-dom/client';
6
+ const BUNDLE_NAME = 'procaptcha.bundle.js';
7
+ const getCurrentScript = () => document && document.currentScript && 'src' in document.currentScript && document.currentScript.src !== undefined
8
+ ? document.currentScript
9
+ : undefined;
10
+ const extractParams = (name) => {
11
+ const script = getCurrentScript();
12
+ if (script && script.src.indexOf(`${name}`) !== -1) {
13
+ const params = new URLSearchParams(script.src.split('?')[1]);
14
+ return {
15
+ onloadUrlCallback: params.get('onload') || undefined,
16
+ renderExplicit: params.get('render') || undefined,
17
+ };
18
+ }
19
+ return { onloadUrlCallback: undefined, renderExplicit: undefined };
20
+ };
21
+ const getConfig = (siteKey) => {
22
+ if (!siteKey) {
23
+ siteKey = process.env.PROSOPO_SITE_KEY || '';
24
+ }
25
+ return ProcaptchaConfigSchema.parse({
26
+ defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT
27
+ ? EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT)
28
+ : EnvironmentTypesSchema.enum.development,
29
+ defaultNetwork: process.env.PROSOPO_DEFAULT_NETWORK
30
+ ? NetworkNamesSchema.parse(process.env.PROSOPO_DEFAULT_NETWORK)
31
+ : NetworkNamesSchema.enum.development,
32
+ userAccountAddress: '',
33
+ account: {
34
+ address: siteKey,
35
+ },
36
+ serverUrl: process.env.PROSOPO_SERVER_URL || '',
37
+ mongoAtlasUri: process.env._DEV_ONLY_WATCH_EVENTS === 'true' || false,
38
+ });
39
+ };
40
+ const getParentForm = (element) => element.closest('form');
41
+ const getWindowCallback = (callbackName) => {
42
+ const fn = window[callbackName.replace('window.', '')];
43
+ if (typeof fn !== 'function') {
44
+ throw new Error(`Callback ${callbackName} is not defined on the window object`);
45
+ }
46
+ return fn;
47
+ };
48
+ const handleOnHuman = (element, payload) => {
49
+ const form = getParentForm(element);
50
+ if (!form) {
51
+ console.error('Parent form not found for the element:', element);
52
+ return;
53
+ }
54
+ const input = document.createElement('input');
55
+ input.type = 'hidden';
56
+ input.name = ApiParams.procaptchaResponse;
57
+ input.value = JSON.stringify(payload);
58
+ form.appendChild(input);
59
+ };
60
+ const customThemeSet = new Set(['light', 'dark']);
61
+ const validateTheme = (themeAttribute) => customThemeSet.has(themeAttribute) ? themeAttribute : 'light';
62
+ const renderLogic = (elements, config, renderOptions) => {
63
+ elements.forEach((element) => {
64
+ const callbackName = renderOptions?.callback || element.getAttribute('data-callback');
65
+ const chalExpiredCallbackName = renderOptions?.['chalexpired-callback'] || element.getAttribute('data-chalexpired-callback');
66
+ const errorCallback = renderOptions?.['error-callback'] || element.getAttribute('data-error-callback');
67
+ const onCloseCallbackName = renderOptions?.['close-callback'] || element.getAttribute('data-close-callback');
68
+ const onOpenCallbackName = renderOptions?.['open-callback'] || element.getAttribute('data-open-callback');
69
+ const onExpiredCallbackName = renderOptions?.['expired-callback'] || element.getAttribute('data-expired-callback');
70
+ const callbacks = {
71
+ onHuman: (payload) => handleOnHuman(element, payload),
72
+ onChallengeExpired: () => {
73
+ console.log('Challenge expired');
74
+ },
75
+ onExpired: () => {
76
+ alert('Completed challenge has expired, please try again');
77
+ },
78
+ onError: (error) => {
79
+ console.error(error);
80
+ },
81
+ onClose: () => {
82
+ console.log('Challenge closed');
83
+ },
84
+ onOpen: () => {
85
+ console.log('Challenge opened');
86
+ },
87
+ };
88
+ if (callbackName)
89
+ callbacks.onHuman = getWindowCallback(callbackName);
90
+ if (chalExpiredCallbackName)
91
+ callbacks.onChallengeExpired = getWindowCallback(chalExpiredCallbackName);
92
+ if (onExpiredCallbackName)
93
+ callbacks.onExpired = getWindowCallback(onExpiredCallbackName);
94
+ if (errorCallback)
95
+ callbacks.onError = getWindowCallback(errorCallback);
96
+ if (onCloseCallbackName)
97
+ callbacks.onClose = getWindowCallback(onCloseCallbackName);
98
+ if (onOpenCallbackName)
99
+ callbacks.onOpen = getWindowCallback(onOpenCallbackName);
100
+ const themeAttribute = renderOptions?.theme || element.getAttribute('data-theme') || 'light';
101
+ config.theme = validateTheme(themeAttribute);
102
+ const challengeValidLengthAttribute = renderOptions?.['challenge-valid-length'] || element.getAttribute('data-challenge-valid-length');
103
+ if (challengeValidLengthAttribute) {
104
+ config.challengeValidLength = parseInt(challengeValidLengthAttribute);
105
+ }
106
+ createRoot(element).render(_jsx(Procaptcha, { config: config, callbacks: callbacks }));
107
+ });
108
+ };
109
+ const implicitRender = () => {
110
+ const elements = Array.from(document.getElementsByClassName('procaptcha'));
111
+ if (elements.length) {
112
+ const siteKey = at(elements, 0).getAttribute('data-sitekey') || undefined;
113
+ const config = getConfig(siteKey);
114
+ renderLogic(elements, config);
115
+ }
116
+ };
117
+ export const render = (elementId, renderOptions) => {
118
+ const siteKey = renderOptions.siteKey;
119
+ const config = getConfig(siteKey);
120
+ const element = document.getElementById(elementId);
121
+ if (!element) {
122
+ console.error('Element not found:', elementId);
123
+ return;
124
+ }
125
+ renderLogic([element], config, renderOptions);
126
+ };
127
+ export default function ready(fn) {
128
+ if (document && document.readyState !== 'loading') {
129
+ console.log('document.readyState ready!');
130
+ fn();
131
+ }
132
+ else {
133
+ console.log('DOMContentLoaded listener!');
134
+ document.addEventListener('DOMContentLoaded', fn);
135
+ }
136
+ }
137
+ const { onloadUrlCallback, renderExplicit } = extractParams(BUNDLE_NAME);
138
+ if (renderExplicit !== 'explicit') {
139
+ ready(implicitRender);
140
+ }
141
+ if (onloadUrlCallback) {
142
+ const onloadCallback = getWindowCallback(onloadUrlCallback);
143
+ getCurrentScript()?.addEventListener('load', () => {
144
+ ready(onloadCallback);
145
+ });
146
+ }
147
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ interface ProcaptchaRenderOptions {
2
+ siteKey: string;
3
+ theme?: 'light' | 'dark';
4
+ callback?: string;
5
+ 'challenge-valid-length'?: string;
6
+ 'chalexpired-callback'?: string;
7
+ 'expired-callback'?: string;
8
+ 'open-callback'?: string;
9
+ 'close-callback'?: string;
10
+ 'error-callback'?: string;
11
+ }
12
+ export declare const render: (elementId: string, renderOptions: ProcaptchaRenderOptions) => void;
13
+ export default function ready(fn: () => void): void;
14
+ export {};
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAwBA,UAAU,uBAAuB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAmJD,eAAO,MAAM,MAAM,cAAe,MAAM,iBAAiB,uBAAuB,SAW/E,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,QAQ3C"}