ribaunt 0.1.1 → 0.1.3
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/dist/cjs/index.cjs +32 -7
- package/dist/cjs/index.d.ts +59 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +340 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/solver.d.ts +2 -2
- package/dist/cjs/solver.d.ts.map +1 -1
- package/dist/cjs/solver.js +30 -24
- package/dist/cjs/solver.js.map +1 -1
- package/dist/cjs/widget-react.d.ts +2 -0
- package/dist/cjs/widget-react.d.ts.map +1 -1
- package/dist/cjs/widget-react.js +38 -12
- package/dist/cjs/widget-react.js.map +1 -1
- package/dist/cjs/widget.d.ts +6 -0
- package/dist/cjs/widget.d.ts.map +1 -1
- package/dist/cjs/widget.js +114 -22
- package/dist/cjs/widget.js.map +1 -1
- package/dist/index.d.ts +30 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +194 -31
- package/dist/index.js.map +1 -1
- package/dist/solver.d.ts +2 -2
- package/dist/solver.d.ts.map +1 -1
- package/dist/solver.js +30 -24
- package/dist/solver.js.map +1 -1
- package/dist/widget-react.d.ts +2 -0
- package/dist/widget-react.d.ts.map +1 -1
- package/dist/widget-react.js +38 -12
- package/dist/widget-react.js.map +1 -1
- package/dist/widget.d.ts +6 -0
- package/dist/widget.d.ts.map +1 -1
- package/dist/widget.js +114 -22
- package/dist/widget.js.map +1 -1
- package/package.json +10 -7
- package/scripts/prepare-cjs.mjs +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react.d.ts","sourceRoot":"","sources":["../../src/widget-react.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAC5F,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"widget-react.d.ts","sourceRoot":"","sources":["../../src/widget-react.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAC5F,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACjE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1F;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,WAAW,GAAG,EAAE,CAAC;IACjC,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAyCD;;;GAGG;AACH,eAAO,MAAM,aAAa,gGAyJzB,CAAC;AAIF,eAAe,aAAa,CAAC"}
|
package/dist/cjs/widget-react.js
CHANGED
|
@@ -37,11 +37,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
37
37
|
exports.RibauntWidget = void 0;
|
|
38
38
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
39
|
const react_1 = require("react");
|
|
40
|
+
function syncAttribute(element, name, value) {
|
|
41
|
+
if (value === undefined || value === false || value === 'false') {
|
|
42
|
+
element.removeAttribute(name);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
element.setAttribute(name, typeof value === 'boolean' ? 'true' : String(value));
|
|
46
|
+
}
|
|
47
|
+
function syncWidgetProps(element, { challengeEndpoint, verifyEndpoint, showWarning, warningMessage, solveTimeout, disabled, }) {
|
|
48
|
+
syncAttribute(element, 'challenge-endpoint', challengeEndpoint);
|
|
49
|
+
syncAttribute(element, 'verify-endpoint', verifyEndpoint);
|
|
50
|
+
syncAttribute(element, 'show-warning', showWarning);
|
|
51
|
+
syncAttribute(element, 'warning-message', warningMessage);
|
|
52
|
+
syncAttribute(element, 'solve-timeout', solveTimeout);
|
|
53
|
+
syncAttribute(element, 'disabled', disabled);
|
|
54
|
+
}
|
|
40
55
|
/**
|
|
41
56
|
* React wrapper for the Ribaunt Web Component.
|
|
42
57
|
* Safely loads the web component dynamically, avoiding Next.js SSR issues.
|
|
43
58
|
*/
|
|
44
|
-
exports.RibauntWidget = (0, react_1.forwardRef)(({ challengeEndpoint, verifyEndpoint, showWarning, warningMessage, disabled, onVerify, onError, onStateChange, onReady, onLoad, onEvent, ...props }, ref) => {
|
|
59
|
+
exports.RibauntWidget = (0, react_1.forwardRef)(({ challengeEndpoint, verifyEndpoint, showWarning, warningMessage, solveTimeout, disabled, onVerify, onError, onStateChange, onReady, onLoad, onEvent, ...props }, ref) => {
|
|
45
60
|
const widgetRef = (0, react_1.useRef)(null);
|
|
46
61
|
const containerRef = (0, react_1.useRef)(null);
|
|
47
62
|
const [isLoading, setIsLoading] = (0, react_1.useState)(true);
|
|
@@ -100,17 +115,6 @@ exports.RibauntWidget = (0, react_1.forwardRef)(({ challengeEndpoint, verifyEndp
|
|
|
100
115
|
widget.addEventListener('verify', handleVerify);
|
|
101
116
|
widget.addEventListener('error', handleError);
|
|
102
117
|
widget.addEventListener('state-change', handleStateChange);
|
|
103
|
-
// Map camelCase props to kebab-case attributes
|
|
104
|
-
if (challengeEndpoint)
|
|
105
|
-
widget.setAttribute('challenge-endpoint', challengeEndpoint);
|
|
106
|
-
if (verifyEndpoint)
|
|
107
|
-
widget.setAttribute('verify-endpoint', verifyEndpoint);
|
|
108
|
-
if (showWarning !== undefined)
|
|
109
|
-
widget.setAttribute('show-warning', String(showWarning));
|
|
110
|
-
if (warningMessage)
|
|
111
|
-
widget.setAttribute('warning-message', warningMessage);
|
|
112
|
-
if (disabled !== undefined)
|
|
113
|
-
widget.setAttribute('disabled', String(disabled));
|
|
114
118
|
// Apply any remaining standard HTML attributes to the element
|
|
115
119
|
Object.entries(props).forEach(([key, value]) => {
|
|
116
120
|
if (value !== undefined) {
|
|
@@ -123,6 +127,14 @@ exports.RibauntWidget = (0, react_1.forwardRef)(({ challengeEndpoint, verifyEndp
|
|
|
123
127
|
}
|
|
124
128
|
}
|
|
125
129
|
});
|
|
130
|
+
syncWidgetProps(widget, {
|
|
131
|
+
challengeEndpoint,
|
|
132
|
+
verifyEndpoint,
|
|
133
|
+
showWarning,
|
|
134
|
+
warningMessage,
|
|
135
|
+
solveTimeout,
|
|
136
|
+
disabled,
|
|
137
|
+
});
|
|
126
138
|
containerRef.current.appendChild(widget);
|
|
127
139
|
widgetRef.current = widget;
|
|
128
140
|
const currentState = widget.getState?.() ?? 'initial';
|
|
@@ -144,8 +156,22 @@ exports.RibauntWidget = (0, react_1.forwardRef)(({ challengeEndpoint, verifyEndp
|
|
|
144
156
|
widget.removeEventListener('verify', handleVerify);
|
|
145
157
|
widget.removeEventListener('error', handleError);
|
|
146
158
|
widget.removeEventListener('state-change', handleStateChange);
|
|
159
|
+
widget.remove();
|
|
160
|
+
widgetRef.current = null;
|
|
147
161
|
};
|
|
148
162
|
}, [isLoading]);
|
|
163
|
+
(0, react_1.useEffect)(() => {
|
|
164
|
+
if (!widgetRef.current)
|
|
165
|
+
return;
|
|
166
|
+
syncWidgetProps(widgetRef.current, {
|
|
167
|
+
challengeEndpoint,
|
|
168
|
+
verifyEndpoint,
|
|
169
|
+
showWarning,
|
|
170
|
+
warningMessage,
|
|
171
|
+
solveTimeout,
|
|
172
|
+
disabled,
|
|
173
|
+
});
|
|
174
|
+
}, [challengeEndpoint, verifyEndpoint, showWarning, warningMessage, solveTimeout, disabled]);
|
|
149
175
|
return isLoading ? null : (0, jsx_runtime_1.jsx)("div", { ref: containerRef });
|
|
150
176
|
});
|
|
151
177
|
exports.RibauntWidget.displayName = 'RibauntWidget';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-react.js","sourceRoot":"","sources":["../../src/widget-react.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,iCAA4F;
|
|
1
|
+
{"version":3,"file":"widget-react.js","sourceRoot":"","sources":["../../src/widget-react.tsx"],"names":[],"mappings":"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"}
|
package/dist/cjs/widget.d.ts
CHANGED
|
@@ -29,10 +29,12 @@ export declare class RibauntWidget extends HTMLElement {
|
|
|
29
29
|
private shadow;
|
|
30
30
|
private state;
|
|
31
31
|
private progress;
|
|
32
|
+
private timeoutError;
|
|
32
33
|
private captchaElement;
|
|
33
34
|
private checkboxElement;
|
|
34
35
|
private messageElement;
|
|
35
36
|
private warningElement;
|
|
37
|
+
private logoElement;
|
|
36
38
|
static get observedAttributes(): string[];
|
|
37
39
|
constructor();
|
|
38
40
|
connectedCallback(): void;
|
|
@@ -41,9 +43,12 @@ export declare class RibauntWidget extends HTMLElement {
|
|
|
41
43
|
private render;
|
|
42
44
|
private attachEventListeners;
|
|
43
45
|
private removeEventListeners;
|
|
46
|
+
private handleLogoClick;
|
|
44
47
|
private handleClick;
|
|
45
48
|
private handleKeyPress;
|
|
46
49
|
private getMessage;
|
|
50
|
+
private getSolveTimeoutMs;
|
|
51
|
+
private isDisabled;
|
|
47
52
|
private setState;
|
|
48
53
|
private dispatchStateChange;
|
|
49
54
|
private setProgress;
|
|
@@ -78,6 +83,7 @@ declare global {
|
|
|
78
83
|
'verify-endpoint'?: string;
|
|
79
84
|
'show-warning'?: string | boolean;
|
|
80
85
|
'warning-message'?: string;
|
|
86
|
+
'solve-timeout'?: string;
|
|
81
87
|
disabled?: string | boolean;
|
|
82
88
|
};
|
|
83
89
|
}
|
package/dist/cjs/widget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/widget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/widget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAmLH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAwCrE,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,WAAW,CAAkC;IAErD,MAAM,KAAK,kBAAkB,aAS5B;;IAUD,iBAAiB;IAKjB,oBAAoB;IAIpB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMvF,OAAO,CAAC,MAAM;IAyCd,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,WAAW;YAYL,MAAM;IAkFpB;;OAEG;IACH,KAAK;IAML;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,iBAAiB;CAKlB;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,WAAW,CAAC;IACxB,iBAAiB,IAAI,IAAI,CAAC;CAC3B;AAQD,eAAe,aAAa,CAAC;AAG7B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,oBAAoB,CAAC;KACxC;IAED,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,gBAAgB,EAAE,OAAO,OAAO,EAAE,iBAAiB,CAAC,OAAO,OAAO,EAAE,cAAc,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,GAAG;gBAChI,oBAAoB,CAAC,EAAE,MAAM,CAAC;gBAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;gBAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;gBACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;aAC7B,CAAC;SACH;KACF;CACF"}
|
package/dist/cjs/widget.js
CHANGED
|
@@ -54,6 +54,23 @@ const WIDGET_STYLES = `
|
|
|
54
54
|
color: var(--ribaunt-color, #212121);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
:host([disabled]) .captcha {
|
|
58
|
+
cursor: not-allowed;
|
|
59
|
+
opacity: 0.72;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
:host([disabled]) .captcha:hover {
|
|
63
|
+
filter: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:host([disabled]) .captcha[data-state=verifying] {
|
|
67
|
+
cursor: progress;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
:host([disabled]) .captcha[data-state=done] {
|
|
71
|
+
cursor: default;
|
|
72
|
+
}
|
|
73
|
+
|
|
57
74
|
.captcha:hover {
|
|
58
75
|
filter: brightness(98%);
|
|
59
76
|
}
|
|
@@ -128,19 +145,6 @@ const WIDGET_STYLES = `
|
|
|
128
145
|
background-size: cover;
|
|
129
146
|
}
|
|
130
147
|
|
|
131
|
-
/* Disabled State */
|
|
132
|
-
.captcha[disabled] {
|
|
133
|
-
cursor: not-allowed;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.captcha[disabled][data-state=verifying] {
|
|
137
|
-
cursor: progress;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.captcha[disabled][data-state=done] {
|
|
141
|
-
cursor: default;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
148
|
/* Logo */
|
|
145
149
|
.logo {
|
|
146
150
|
position: absolute;
|
|
@@ -197,6 +201,34 @@ const RIBAUNT_LOGO = `
|
|
|
197
201
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M236.619 122.188L341.575 383.702H209.913L170.796 286.199L131.663 383.702H0L104.957 122.188H236.619Z" fill="currentColor"/>
|
|
198
202
|
</svg>
|
|
199
203
|
`;
|
|
204
|
+
function parseTokenArray(value) {
|
|
205
|
+
if (!Array.isArray(value)) {
|
|
206
|
+
throw new Error('Challenge response must be an array of token strings');
|
|
207
|
+
}
|
|
208
|
+
if (value.length === 0) {
|
|
209
|
+
throw new Error('No challenge tokens available');
|
|
210
|
+
}
|
|
211
|
+
if (!value.every((entry) => typeof entry === 'string' && entry.length > 0)) {
|
|
212
|
+
throw new Error('Challenge response contains invalid token values');
|
|
213
|
+
}
|
|
214
|
+
return value;
|
|
215
|
+
}
|
|
216
|
+
function parseChallengeTokens(payload) {
|
|
217
|
+
if (Array.isArray(payload)) {
|
|
218
|
+
return parseTokenArray(payload);
|
|
219
|
+
}
|
|
220
|
+
if (!payload || typeof payload !== 'object') {
|
|
221
|
+
throw new Error('Challenge response must be an object or array of token strings');
|
|
222
|
+
}
|
|
223
|
+
const record = payload;
|
|
224
|
+
if ('challenges' in record) {
|
|
225
|
+
return parseTokenArray(record.challenges);
|
|
226
|
+
}
|
|
227
|
+
if ('tokens' in record) {
|
|
228
|
+
return parseTokenArray(record.tokens);
|
|
229
|
+
}
|
|
230
|
+
throw new Error('Challenge response must include "challenges" or "tokens"');
|
|
231
|
+
}
|
|
200
232
|
class RibauntWidget extends HTMLElement {
|
|
201
233
|
static get observedAttributes() {
|
|
202
234
|
return [
|
|
@@ -204,6 +236,7 @@ class RibauntWidget extends HTMLElement {
|
|
|
204
236
|
'verify-endpoint',
|
|
205
237
|
'show-warning',
|
|
206
238
|
'warning-message',
|
|
239
|
+
'solve-timeout',
|
|
207
240
|
'disabled',
|
|
208
241
|
];
|
|
209
242
|
}
|
|
@@ -211,17 +244,19 @@ class RibauntWidget extends HTMLElement {
|
|
|
211
244
|
super();
|
|
212
245
|
this.state = 'initial';
|
|
213
246
|
this.progress = 0;
|
|
247
|
+
this.timeoutError = false;
|
|
214
248
|
this.captchaElement = null;
|
|
215
249
|
this.checkboxElement = null;
|
|
216
250
|
this.messageElement = null;
|
|
217
251
|
this.warningElement = null;
|
|
252
|
+
this.logoElement = null;
|
|
218
253
|
this.shadow = this.attachShadow({ mode: 'open' });
|
|
219
254
|
this.handleClick = this.handleClick.bind(this);
|
|
220
255
|
this.handleKeyPress = this.handleKeyPress.bind(this);
|
|
256
|
+
this.handleLogoClick = this.handleLogoClick.bind(this);
|
|
221
257
|
}
|
|
222
258
|
connectedCallback() {
|
|
223
259
|
this.render();
|
|
224
|
-
this.attachEventListeners();
|
|
225
260
|
this.dispatchStateChange();
|
|
226
261
|
}
|
|
227
262
|
disconnectedCallback() {
|
|
@@ -233,13 +268,15 @@ class RibauntWidget extends HTMLElement {
|
|
|
233
268
|
}
|
|
234
269
|
}
|
|
235
270
|
render() {
|
|
271
|
+
this.removeEventListeners();
|
|
236
272
|
const showWarning = this.hasAttribute('show-warning') && this.getAttribute('show-warning') !== 'false';
|
|
237
273
|
const warningMessage = this.getAttribute('warning-message') || 'Enable WASM for significantly faster solving';
|
|
274
|
+
const disabled = this.isDisabled();
|
|
238
275
|
this.shadow.innerHTML = `
|
|
239
276
|
<style>${WIDGET_STYLES}</style>
|
|
240
277
|
<div>
|
|
241
|
-
${showWarning ? `<div class="warning
|
|
242
|
-
<div class="captcha" data-state="${this.state}" role="button" tabindex="0" aria-label="${this.getMessage()}">
|
|
278
|
+
${showWarning ? `<div class="warning">${warningMessage}</div>` : ''}
|
|
279
|
+
<div class="captcha" data-state="${this.state}" role="button" tabindex="${disabled ? '-1' : '0'}" aria-disabled="${disabled}" aria-label="${this.getMessage()}">
|
|
243
280
|
<div class="checkbox"></div>
|
|
244
281
|
<p>${this.getMessage()}</p>
|
|
245
282
|
<a class="logo" href="https://ribaunt.com" target="_blank" rel="noopener noreferrer" aria-label="Powered by Ribaunt">
|
|
@@ -252,6 +289,12 @@ class RibauntWidget extends HTMLElement {
|
|
|
252
289
|
this.checkboxElement = this.shadow.querySelector('.checkbox');
|
|
253
290
|
this.messageElement = this.shadow.querySelector('p');
|
|
254
291
|
this.warningElement = this.shadow.querySelector('.warning');
|
|
292
|
+
this.logoElement = this.shadow.querySelector('.logo');
|
|
293
|
+
if (showWarning && this.warningElement) {
|
|
294
|
+
setTimeout(() => {
|
|
295
|
+
this.warningElement?.classList.add('visible');
|
|
296
|
+
}, 0);
|
|
297
|
+
}
|
|
255
298
|
// Update progress CSS variable if verifying
|
|
256
299
|
if (this.state === 'verifying' && this.captchaElement) {
|
|
257
300
|
this.captchaElement.style.setProperty('--progress', `${this.progress}%`);
|
|
@@ -263,14 +306,25 @@ class RibauntWidget extends HTMLElement {
|
|
|
263
306
|
this.captchaElement.addEventListener('click', this.handleClick);
|
|
264
307
|
this.captchaElement.addEventListener('keypress', this.handleKeyPress);
|
|
265
308
|
}
|
|
309
|
+
if (this.logoElement) {
|
|
310
|
+
this.logoElement.addEventListener('click', this.handleLogoClick);
|
|
311
|
+
}
|
|
266
312
|
}
|
|
267
313
|
removeEventListeners() {
|
|
268
314
|
if (this.captchaElement) {
|
|
269
315
|
this.captchaElement.removeEventListener('click', this.handleClick);
|
|
270
316
|
this.captchaElement.removeEventListener('keypress', this.handleKeyPress);
|
|
271
317
|
}
|
|
318
|
+
if (this.logoElement) {
|
|
319
|
+
this.logoElement.removeEventListener('click', this.handleLogoClick);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
handleLogoClick(event) {
|
|
323
|
+
event.stopPropagation();
|
|
272
324
|
}
|
|
273
325
|
handleClick() {
|
|
326
|
+
if (this.isDisabled())
|
|
327
|
+
return;
|
|
274
328
|
if (this.state !== 'initial' && this.state !== 'error')
|
|
275
329
|
return;
|
|
276
330
|
this.verify();
|
|
@@ -290,14 +344,33 @@ class RibauntWidget extends HTMLElement {
|
|
|
290
344
|
case 'done':
|
|
291
345
|
return "You're a human";
|
|
292
346
|
case 'error':
|
|
293
|
-
return 'Error. Try again.';
|
|
347
|
+
return this.timeoutError ? 'Timed out. Try again.' : 'Error. Try again.';
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
getSolveTimeoutMs() {
|
|
351
|
+
const raw = this.getAttribute('solve-timeout');
|
|
352
|
+
if (!raw) {
|
|
353
|
+
return undefined;
|
|
294
354
|
}
|
|
355
|
+
const value = Number(raw);
|
|
356
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
357
|
+
return undefined;
|
|
358
|
+
}
|
|
359
|
+
return Math.floor(value);
|
|
360
|
+
}
|
|
361
|
+
isDisabled() {
|
|
362
|
+
return this.hasAttribute('disabled') && this.getAttribute('disabled') !== 'false';
|
|
295
363
|
}
|
|
296
364
|
setState(newState) {
|
|
365
|
+
if (newState !== 'error') {
|
|
366
|
+
this.timeoutError = false;
|
|
367
|
+
}
|
|
297
368
|
this.state = newState;
|
|
298
369
|
if (this.captchaElement) {
|
|
299
370
|
this.captchaElement.setAttribute('data-state', this.state);
|
|
300
371
|
this.captchaElement.setAttribute('aria-label', this.getMessage());
|
|
372
|
+
this.captchaElement.tabIndex = this.isDisabled() ? -1 : 0;
|
|
373
|
+
this.captchaElement.setAttribute('aria-disabled', String(this.isDisabled()));
|
|
301
374
|
}
|
|
302
375
|
if (this.messageElement) {
|
|
303
376
|
this.messageElement.textContent = this.getMessage();
|
|
@@ -326,6 +399,13 @@ class RibauntWidget extends HTMLElement {
|
|
|
326
399
|
async verify() {
|
|
327
400
|
this.setState('verifying');
|
|
328
401
|
this.setProgress(0);
|
|
402
|
+
const timeoutMs = this.getSolveTimeoutMs();
|
|
403
|
+
const controller = timeoutMs ? new AbortController() : undefined;
|
|
404
|
+
const timeoutHandle = timeoutMs
|
|
405
|
+
? setTimeout(() => {
|
|
406
|
+
controller?.abort();
|
|
407
|
+
}, timeoutMs)
|
|
408
|
+
: undefined;
|
|
329
409
|
try {
|
|
330
410
|
const challengeEndpoint = this.getAttribute('challenge-endpoint');
|
|
331
411
|
const verifyEndpoint = this.getAttribute('verify-endpoint');
|
|
@@ -336,15 +416,15 @@ class RibauntWidget extends HTMLElement {
|
|
|
336
416
|
if (!response.ok)
|
|
337
417
|
throw new Error('Failed to fetch challenge');
|
|
338
418
|
const data = await response.json();
|
|
339
|
-
tokens = data
|
|
419
|
+
tokens = parseChallengeTokens(data);
|
|
340
420
|
}
|
|
341
|
-
if (
|
|
421
|
+
if (tokens.length === 0) {
|
|
342
422
|
throw new Error('No challenge tokens available');
|
|
343
423
|
}
|
|
344
424
|
// Solve challenges using the browser-compatible solver
|
|
345
425
|
const solutions = await (0, solver_js_1.solveChallenge)(tokens, (progress) => {
|
|
346
426
|
this.setProgress(progress);
|
|
347
|
-
});
|
|
427
|
+
}, controller?.signal);
|
|
348
428
|
// Verify solution
|
|
349
429
|
if (verifyEndpoint) {
|
|
350
430
|
const response = await fetch(verifyEndpoint, {
|
|
@@ -365,19 +445,31 @@ class RibauntWidget extends HTMLElement {
|
|
|
365
445
|
}));
|
|
366
446
|
}
|
|
367
447
|
catch (error) {
|
|
448
|
+
this.timeoutError = error instanceof DOMException && error.name === 'AbortError';
|
|
368
449
|
this.setState('error');
|
|
369
450
|
// Dispatch error event
|
|
370
451
|
this.dispatchEvent(new CustomEvent('error', {
|
|
371
|
-
detail: {
|
|
452
|
+
detail: {
|
|
453
|
+
error: this.timeoutError
|
|
454
|
+
? 'Timed out. Try again.'
|
|
455
|
+
: (error instanceof Error ? error.message : String(error)),
|
|
456
|
+
timeout: this.timeoutError,
|
|
457
|
+
},
|
|
372
458
|
bubbles: true,
|
|
373
459
|
composed: true,
|
|
374
460
|
}));
|
|
375
461
|
}
|
|
462
|
+
finally {
|
|
463
|
+
if (timeoutHandle !== undefined) {
|
|
464
|
+
clearTimeout(timeoutHandle);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
376
467
|
}
|
|
377
468
|
/**
|
|
378
469
|
* Public API: Reset the widget to initial state
|
|
379
470
|
*/
|
|
380
471
|
reset() {
|
|
472
|
+
this.timeoutError = false;
|
|
381
473
|
this.setState('initial');
|
|
382
474
|
this.setProgress(0);
|
|
383
475
|
}
|
|
@@ -391,7 +483,7 @@ class RibauntWidget extends HTMLElement {
|
|
|
391
483
|
* Public API: Programmatically trigger verification
|
|
392
484
|
*/
|
|
393
485
|
startVerification() {
|
|
394
|
-
if (this.state === 'initial' || this.state === 'error') {
|
|
486
|
+
if (!this.isDisabled() && (this.state === 'initial' || this.state === 'error')) {
|
|
395
487
|
this.verify();
|
|
396
488
|
}
|
|
397
489
|
}
|
package/dist/cjs/widget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/widget.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAEH,2CAAqE;AAErE,MAAM,aAAa,GAAG
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/widget.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,35 @@ export interface ChallengeSolution {
|
|
|
3
3
|
nonce: string;
|
|
4
4
|
hash: string;
|
|
5
5
|
}
|
|
6
|
+
export interface ReplayStore {
|
|
7
|
+
consume(jti: string, expiresAt: number): Promise<boolean>;
|
|
8
|
+
}
|
|
9
|
+
export type ReplayPreventionMode = 'disabled' | 'local' | 'remote';
|
|
10
|
+
export interface VerifySolutionOptions {
|
|
11
|
+
replayPrevention?: ReplayPreventionMode;
|
|
12
|
+
replayStore?: ReplayStore;
|
|
13
|
+
debug?: boolean;
|
|
14
|
+
onWarning?: (warning: VerifyWarning) => void;
|
|
15
|
+
}
|
|
16
|
+
export type VerifyWarningReason = 'invalid-token' | 'expired-token' | 'invalid-solution' | 'replay-detected' | 'configuration-error';
|
|
17
|
+
export interface VerifyWarning {
|
|
18
|
+
reason: VerifyWarningReason;
|
|
19
|
+
message: string;
|
|
20
|
+
error?: unknown;
|
|
21
|
+
}
|
|
22
|
+
export interface SolveChallengeOptions {
|
|
23
|
+
maxIterations?: number;
|
|
24
|
+
maxDurationMs?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class LocalReplayStore implements ReplayStore {
|
|
27
|
+
private usedTokens;
|
|
28
|
+
consume(jti: string, expiresAt: number): Promise<boolean>;
|
|
29
|
+
private cleanup;
|
|
30
|
+
}
|
|
6
31
|
/**
|
|
7
32
|
* Creates one or more PoW challenges and returns them as signed JWT tokens.
|
|
8
33
|
*
|
|
9
|
-
* @param difficulty - Number of leading zeros required in the hash (default
|
|
34
|
+
* @param difficulty - Number of leading zeros required in the hash (default 5)
|
|
10
35
|
* @param amount - Number of challenges to create (default 4)
|
|
11
36
|
* @param ttlSeconds - Time to live for each challenge in seconds (default 30)
|
|
12
37
|
* @returns An array of JWT challenge tokens
|
|
@@ -16,10 +41,13 @@ export declare function createChallenge(difficulty?: number, amount?: number, tt
|
|
|
16
41
|
* Solves one or more PoW challenges encoded in JWT tokens.
|
|
17
42
|
*
|
|
18
43
|
* @param token - The JWT challenge token or an array of tokens
|
|
44
|
+
* @param options - Optional guardrails for test/debug usage (`maxIterations`, `maxDurationMs`)
|
|
19
45
|
* @returns The nonce/hash pair for single input or an array of them for multiple tokens
|
|
20
46
|
*/
|
|
21
47
|
export declare function solveChallenge(token: ChallengeToken): ChallengeSolution | undefined;
|
|
48
|
+
export declare function solveChallenge(token: ChallengeToken, options?: SolveChallengeOptions): ChallengeSolution | undefined;
|
|
22
49
|
export declare function solveChallenge(token: ChallengeToken[]): ChallengeSolution[] | undefined;
|
|
50
|
+
export declare function solveChallenge(token: ChallengeToken[], options?: SolveChallengeOptions): ChallengeSolution[] | undefined;
|
|
23
51
|
/**
|
|
24
52
|
* Verifies a PoW solution returned by the client.
|
|
25
53
|
*
|
|
@@ -27,5 +55,5 @@ export declare function solveChallenge(token: ChallengeToken[]): ChallengeSoluti
|
|
|
27
55
|
* @param nonce - The nonce/answer submitted by the client (single nonce, array of nonces, or array of solution objects)
|
|
28
56
|
* @returns true only if every provided solution is valid; otherwise false
|
|
29
57
|
*/
|
|
30
|
-
export declare function verifySolution(token: ChallengeToken | ChallengeToken[], nonce: number | string | Array<number | string> | ChallengeSolution | ChallengeSolution[]): boolean
|
|
58
|
+
export declare function verifySolution(token: ChallengeToken | ChallengeToken[], nonce: number | string | Array<number | string> | ChallengeSolution | ChallengeSolution[], options?: VerifySolutionOptions): Promise<boolean>;
|
|
31
59
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAClD,OAAO,CAAC,UAAU,CAA6B;IAEzC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW/D,OAAO,CAAC,OAAO;CAShB;AAsMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,UAAU,GAAE,MAAU,EACtB,MAAM,GAAE,MAAU,EAClB,UAAU,GAAE,MAAW,GACtB,cAAc,EAAE,CAUlB;AA0FD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,GAAG,SAAS,CAAC;AACrF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,iBAAiB,GAAG,SAAS,CAAC;AACjC,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAAC;AACzF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,iBAAiB,EAAE,GAAG,SAAS,CAAC;AAwBnC;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,GAAG,cAAc,EAAE,EACxC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,EACzF,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAuDlB"}
|