@zaptcha/widget 1.0.0 → 1.0.2
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/zaptcha-widget.js +745 -0
- package/package.json +10 -5
- package/src/zaptcha-widget.js +0 -485
- package/src/zaptcha.js +0 -249
- package/src/zaptcha_bg.wasm +0 -0
|
@@ -0,0 +1,745 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <zero-captcha> — CAPTCHA Web Component with WASM Proof-of-Work
|
|
3
|
+
*
|
|
4
|
+
* Single self-contained file — no external assets, no bundler config needed.
|
|
5
|
+
* The WASM glue and binary are inlined at build time by scripts/build.js.
|
|
6
|
+
*
|
|
7
|
+
* Attributes:
|
|
8
|
+
* base-url="https://api.example.com" required — backend base URL
|
|
9
|
+
* config-id="AAAA" required — base64url-encoded u32
|
|
10
|
+
* worker-url="./worker.js" optional — external worker file
|
|
11
|
+
*
|
|
12
|
+
* CSS custom properties (set on a parent element):
|
|
13
|
+
* --zaptcha-bg, --zaptcha-border, --zaptcha-border-hover,
|
|
14
|
+
* --zaptcha-border-focus, --zaptcha-text, --zaptcha-text-muted,
|
|
15
|
+
* --zaptcha-accent, --zaptcha-success, --zaptcha-shadow, --zaptcha-radius
|
|
16
|
+
*
|
|
17
|
+
* Events:
|
|
18
|
+
* zaptcha-success → detail: { token: string }
|
|
19
|
+
* zaptcha-fail → detail: { reason: string }
|
|
20
|
+
* zaptcha-reset → detail: {}
|
|
21
|
+
* zaptcha-progress → detail: { index, nonce, total, pct }
|
|
22
|
+
*
|
|
23
|
+
* Methods:
|
|
24
|
+
* el.reset()
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
// ── Inlined at build time by scripts/build.js ─────────────────────────────
|
|
28
|
+
// No import.meta.url, no new URL(), no external file references.
|
|
29
|
+
// Safe for Vite dep optimizer, Webpack, Rollup, plain <script type="module">.
|
|
30
|
+
|
|
31
|
+
/** @type {string} WASM JS glue — full source of zaptcha.js */
|
|
32
|
+
const _WASM_GLUE_SRC = `/* @ts-self-types="./zaptcha.d.ts" */
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @param {string} token
|
|
36
|
+
* @param {number} difficulty
|
|
37
|
+
* @param {number} challenge_count
|
|
38
|
+
* @param {number} salt_length
|
|
39
|
+
* @param {Function} progress_callback
|
|
40
|
+
* @returns {Uint32Array}
|
|
41
|
+
*/
|
|
42
|
+
export function solve_challenge(token, difficulty, challenge_count, salt_length, progress_callback) {
|
|
43
|
+
const ptr0 = passStringToWasm0(token, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
44
|
+
const len0 = WASM_VECTOR_LEN;
|
|
45
|
+
const ret = wasm.solve_challenge(ptr0, len0, difficulty, challenge_count, salt_length, progress_callback);
|
|
46
|
+
var v2 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
|
|
47
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
48
|
+
return v2;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function __wbg_get_imports() {
|
|
52
|
+
const import0 = {
|
|
53
|
+
__proto__: null,
|
|
54
|
+
__wbg___wbindgen_throw_6ddd609b62940d55: function(arg0, arg1) {
|
|
55
|
+
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
56
|
+
},
|
|
57
|
+
__wbg_call_dcc2662fa17a72cf: function() { return handleError(function (arg0, arg1, arg2, arg3) {
|
|
58
|
+
const ret = arg0.call(arg1, arg2, arg3);
|
|
59
|
+
return ret;
|
|
60
|
+
}, arguments); },
|
|
61
|
+
__wbindgen_cast_0000000000000001: function(arg0) {
|
|
62
|
+
// Cast intrinsic for \`F64 -> Externref\`.
|
|
63
|
+
const ret = arg0;
|
|
64
|
+
return ret;
|
|
65
|
+
},
|
|
66
|
+
__wbindgen_init_externref_table: function() {
|
|
67
|
+
const table = wasm.__wbindgen_externrefs;
|
|
68
|
+
const offset = table.grow(4);
|
|
69
|
+
table.set(0, undefined);
|
|
70
|
+
table.set(offset + 0, undefined);
|
|
71
|
+
table.set(offset + 1, null);
|
|
72
|
+
table.set(offset + 2, true);
|
|
73
|
+
table.set(offset + 3, false);
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
__proto__: null,
|
|
78
|
+
"./zaptcha_bg.js": import0,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function addToExternrefTable0(obj) {
|
|
83
|
+
const idx = wasm.__externref_table_alloc();
|
|
84
|
+
wasm.__wbindgen_externrefs.set(idx, obj);
|
|
85
|
+
return idx;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function getArrayU32FromWasm0(ptr, len) {
|
|
89
|
+
ptr = ptr >>> 0;
|
|
90
|
+
return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function getStringFromWasm0(ptr, len) {
|
|
94
|
+
ptr = ptr >>> 0;
|
|
95
|
+
return decodeText(ptr, len);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
let cachedUint32ArrayMemory0 = null;
|
|
99
|
+
function getUint32ArrayMemory0() {
|
|
100
|
+
if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {
|
|
101
|
+
cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);
|
|
102
|
+
}
|
|
103
|
+
return cachedUint32ArrayMemory0;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
let cachedUint8ArrayMemory0 = null;
|
|
107
|
+
function getUint8ArrayMemory0() {
|
|
108
|
+
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
|
|
109
|
+
cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
|
|
110
|
+
}
|
|
111
|
+
return cachedUint8ArrayMemory0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function handleError(f, args) {
|
|
115
|
+
try {
|
|
116
|
+
return f.apply(this, args);
|
|
117
|
+
} catch (e) {
|
|
118
|
+
const idx = addToExternrefTable0(e);
|
|
119
|
+
wasm.__wbindgen_exn_store(idx);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function passStringToWasm0(arg, malloc, realloc) {
|
|
124
|
+
if (realloc === undefined) {
|
|
125
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
126
|
+
const ptr = malloc(buf.length, 1) >>> 0;
|
|
127
|
+
getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
|
|
128
|
+
WASM_VECTOR_LEN = buf.length;
|
|
129
|
+
return ptr;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
let len = arg.length;
|
|
133
|
+
let ptr = malloc(len, 1) >>> 0;
|
|
134
|
+
|
|
135
|
+
const mem = getUint8ArrayMemory0();
|
|
136
|
+
|
|
137
|
+
let offset = 0;
|
|
138
|
+
|
|
139
|
+
for (; offset < len; offset++) {
|
|
140
|
+
const code = arg.charCodeAt(offset);
|
|
141
|
+
if (code > 0x7F) break;
|
|
142
|
+
mem[ptr + offset] = code;
|
|
143
|
+
}
|
|
144
|
+
if (offset !== len) {
|
|
145
|
+
if (offset !== 0) {
|
|
146
|
+
arg = arg.slice(offset);
|
|
147
|
+
}
|
|
148
|
+
ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
|
|
149
|
+
const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
|
|
150
|
+
const ret = cachedTextEncoder.encodeInto(arg, view);
|
|
151
|
+
|
|
152
|
+
offset += ret.written;
|
|
153
|
+
ptr = realloc(ptr, len, offset, 1) >>> 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
WASM_VECTOR_LEN = offset;
|
|
157
|
+
return ptr;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
|
161
|
+
cachedTextDecoder.decode();
|
|
162
|
+
const MAX_SAFARI_DECODE_BYTES = 2146435072;
|
|
163
|
+
let numBytesDecoded = 0;
|
|
164
|
+
function decodeText(ptr, len) {
|
|
165
|
+
numBytesDecoded += len;
|
|
166
|
+
if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
|
|
167
|
+
cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
|
|
168
|
+
cachedTextDecoder.decode();
|
|
169
|
+
numBytesDecoded = len;
|
|
170
|
+
}
|
|
171
|
+
return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const cachedTextEncoder = new TextEncoder();
|
|
175
|
+
|
|
176
|
+
if (!('encodeInto' in cachedTextEncoder)) {
|
|
177
|
+
cachedTextEncoder.encodeInto = function (arg, view) {
|
|
178
|
+
const buf = cachedTextEncoder.encode(arg);
|
|
179
|
+
view.set(buf);
|
|
180
|
+
return {
|
|
181
|
+
read: arg.length,
|
|
182
|
+
written: buf.length
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
let WASM_VECTOR_LEN = 0;
|
|
188
|
+
|
|
189
|
+
let wasmModule, wasm;
|
|
190
|
+
function __wbg_finalize_init(instance, module) {
|
|
191
|
+
wasm = instance.exports;
|
|
192
|
+
wasmModule = module;
|
|
193
|
+
cachedUint32ArrayMemory0 = null;
|
|
194
|
+
cachedUint8ArrayMemory0 = null;
|
|
195
|
+
wasm.__wbindgen_start();
|
|
196
|
+
return wasm;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
async function __wbg_load(module, imports) {
|
|
200
|
+
if (typeof Response === 'function' && module instanceof Response) {
|
|
201
|
+
if (typeof WebAssembly.instantiateStreaming === 'function') {
|
|
202
|
+
try {
|
|
203
|
+
return await WebAssembly.instantiateStreaming(module, imports);
|
|
204
|
+
} catch (e) {
|
|
205
|
+
const validResponse = module.ok && expectedResponseType(module.type);
|
|
206
|
+
|
|
207
|
+
if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {
|
|
208
|
+
console.warn("\`WebAssembly.instantiateStreaming\` failed because your server does not serve Wasm with \`application/wasm\` MIME type. Falling back to \`WebAssembly.instantiate\` which is slower. Original error:\\n", e);
|
|
209
|
+
|
|
210
|
+
} else { throw e; }
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const bytes = await module.arrayBuffer();
|
|
215
|
+
return await WebAssembly.instantiate(bytes, imports);
|
|
216
|
+
} else {
|
|
217
|
+
const instance = await WebAssembly.instantiate(module, imports);
|
|
218
|
+
|
|
219
|
+
if (instance instanceof WebAssembly.Instance) {
|
|
220
|
+
return { instance, module };
|
|
221
|
+
} else {
|
|
222
|
+
return instance;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function expectedResponseType(type) {
|
|
227
|
+
switch (type) {
|
|
228
|
+
case 'basic': case 'cors': case 'default': return true;
|
|
229
|
+
}
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function initSync(module) {
|
|
235
|
+
if (wasm !== undefined) return wasm;
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
if (module !== undefined) {
|
|
239
|
+
if (Object.getPrototypeOf(module) === Object.prototype) {
|
|
240
|
+
({module} = module)
|
|
241
|
+
} else {
|
|
242
|
+
console.warn('using deprecated parameters for \`initSync()\`; pass a single object instead')
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
const imports = __wbg_get_imports();
|
|
247
|
+
if (!(module instanceof WebAssembly.Module)) {
|
|
248
|
+
module = new WebAssembly.Module(module);
|
|
249
|
+
}
|
|
250
|
+
const instance = new WebAssembly.Instance(module, imports);
|
|
251
|
+
return __wbg_finalize_init(instance, module);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
async function __wbg_init(module_or_path) {
|
|
255
|
+
if (wasm !== undefined) return wasm;
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
if (module_or_path !== undefined) {
|
|
259
|
+
if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
|
|
260
|
+
({module_or_path} = module_or_path)
|
|
261
|
+
} else {
|
|
262
|
+
console.warn('using deprecated parameters for the initialization function; pass a single object instead')
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
if (module_or_path === undefined) {
|
|
267
|
+
module_or_path = new URL('zaptcha_bg.wasm', import.meta.url);
|
|
268
|
+
}
|
|
269
|
+
const imports = __wbg_get_imports();
|
|
270
|
+
|
|
271
|
+
if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {
|
|
272
|
+
module_or_path = fetch(module_or_path);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const { instance, module } = await __wbg_load(await module_or_path, imports);
|
|
276
|
+
|
|
277
|
+
return __wbg_finalize_init(instance, module);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export { initSync, __wbg_init as default };
|
|
281
|
+
`;
|
|
282
|
+
|
|
283
|
+
/** @type {string} WASM binary — base64-encoded zaptcha_bg.wasm */
|
|
284
|
+
const _WASM_BIN_B64 = "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QfCYwABB6JjAADYCAEGEmcAAQfiYwAA2AgBB+JjAAEHwmMAANgIAQYyZwABBgJnAADYCAEGAmcAAQfiYwAA2AgBBlJnAAEGImcAANgIAQYiZwABBgJnAADYCAEGcmcAAQZCZwAA2AgBBkJnAAEGImcAANgIAQaSZwABBmJnAADYCAEGYmcAAQZCZwAA2AgBBrJnAAEGgmcAANgIAQaCZwABBmJnAADYCAEHkmMAAQQA2AgBBtJnAAEGomcAANgIAQaiZwABBoJnAADYCAEGwmcAAQaiZwAA2AgBBvJnAAEGwmcAANgIAQbiZwABBsJnAADYCAEHEmcAAQbiZwAA2AgBBwJnAAEG4mcAANgIAQcyZwABBwJnAADYCAEHImcAAQcCZwAA2AgBB1JnAAEHImcAANgIAQdCZwABByJnAADYCAEHcmcAAQdCZwAA2AgBB2JnAAEHQmcAANgIAQeSZwABB2JnAADYCAEHgmcAAQdiZwAA2AgBB7JnAAEHgmcAANgIAQeiZwABB4JnAADYCAEH0mcAAQeiZwAA2AgBB/JnAAEHwmcAANgIAQfCZwABB6JnAADYCAEGEmsAAQfiZwAA2AgBB+JnAAEHwmcAANgIAQYyawABBgJrAADYCAEGAmsAAQfiZwAA2AgBBlJrAAEGImsAANgIAQYiawABBgJrAADYCAEGcmsAAQZCawAA2AgBBkJrAAEGImsAANgIAQaSawABBmJrAADYCAEGYmsAAQZCawAA2AgBBrJrAAEGgmsAANgIAQaCawABBmJrAADYCAEG0msAAQaiawAA2AgBBqJrAAEGgmsAANgIAQbyawABBsJrAADYCAEGwmsAAQaiawAA2AgBBxJrAAEG4msAANgIAQbiawABBsJrAADYCAEHMmsAAQcCawAA2AgBBwJrAAEG4msAANgIAQdSawABByJrAADYCAEHImsAAQcCawAA2AgBB3JrAAEHQmsAANgIAQdCawABByJrAADYCAEHkmsAAQdiawAA2AgBB2JrAAEHQmsAANgIAQeyawABB4JrAADYCAEHgmsAAQdiawAA2AgBBhJvAACACNgIAQeiawABB4JrAADYCAEH8msAAIAFBKGsiADYCACACIABBAXI2AgQgACACakEoNgIEQZCbwABBgICAATYCAAwICyACIARNIAMgBEtyDQAgACgCDEUNAwtB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aiEAIAEgA2siAUGAm8AAKAIARgRAIAIoAgRBA3FBA0cNAUH4msAAIAA2AgAgAiACKAIEQX5xNgIEIAEgAEEBcjYCBCACIAA2AgAPCyABIAMQGQsCQAJAAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkGEm8AAKAIARg0CIAJBgJvAACgCAEYNAyACIANBeHEiAhAZIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQYCbwAAoAgBHDQFB+JrAACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgALIABBgAJJDQJBHyECIAFCADcCECAAQf///wdNBEAgAEEmIABBCHZnIgJrdkEBcSACQQF0a0E+aiECCyABIAI2AhwgAkECdEHYl8AAaiEDQQEgAnQiBEH0msAAKAIAcQ0DIAMgATYCACABIAM2AhggASABNgIMIAEgATYCCEH0msAAQfSawAAoAgAgBHI2AgAMBAtBhJvAACABNgIAQfyawABB/JrAACgCACAAaiIANgIAIAEgAEEBcjYCBEGAm8AAKAIAIAFGBEBB+JrAAEEANgIAQYCbwABBADYCAAsgAEGQm8AAKAIAIgJNDQVBhJvAACgCACIARQ0FQfyawAAoAgAiA0EpSQ0EQdiYwAAhAQNAIAAgASgCACIFTwRAIAAgBSABKAIEakkNBgsgASgCCCEBDAALAAtBgJvAACABNgIAQfiawABB+JrAACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAPCwJAQfCawAAoAgAiAkEBIABBA3Z0IgNxRQRAQfCawAAgAiADcjYCACAAQfgBcUHomMAAaiIAIQIMAQsgAEH4AXEiAEHomMAAaiECIABB8JjAAGooAgAhAAsgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwsCQAJAIAAgAygCACIDKAIEQXhxRgRAIAMhAgwBCyAAQRkgAkEBdmtBACACQR9HG3QhBANAIAMgBEEddkEEcWoiBSgCECICRQ0CIARBAXQhBCACIQMgAigCBEF4cSAARw0ACwsgAigCCCIAIAE2AgwgAiABNgIIIAFBADYCGCABIAI2AgwgASAANgIIDAELIAVBEGogATYCACABIAM2AhggASABNgIMIAEgATYCCAtBACEBQZibwABBmJvAACgCAEEBayIANgIAIAANAUHgmMAAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQZibwABB/x8gASABQf8fTRs2AgAPC0HgmMAAKAIAIgEEQANAIARBAWohBCABKAIIIgENAAsLQZibwABB/x8gBCAEQf8fTRs2AgAgAiADTw0AQZCbwABBfzYCAAsL4QYBBX8CQAJAAkACQAJAAkACQCAAQQRrIgcoAgAiCEF4cSIEQQRBCCAIQQNxIgUbIAFqTwRAIAVBACABQSdqIgYgBEkbDQECQCACQQlPBEAgAiADEBciAg0BQQAPC0EAIQIgA0HM/3tLDQhBECADQQtqQXhxIANBC0kbIQEgAEEIayEGIAVFBEAgBkUgAUGAAklyIAQgAWtBgIAISyABIARPcnINByAADwsgBCAGaiEFAkAgASAESwRAIAVBhJvAACgCAEYNAUGAm8AAKAIAIAVHBEAgBSgCBCIIQQJxDQkgCEF4cSIIIARqIgQgAUkNCSAFIAgQGSAEIAFrIgVBEE8EQCAHIAEgBygCAEEBcXJBAnI2AgAgASAGaiIBIAVBA3I2AgQgBCAGaiIEIAQoAgRBAXI2AgQgASAFEA4MCQsgByAEIAcoAgBBAXFyQQJyNgIAIAQgBmoiASABKAIEQQFyNgIEDAgLQfiawAAoAgAgBGoiBCABSQ0IAkAgBCABayIFQQ9NBEAgByAIQQFxIARyQQJyNgIAIAQgBmoiASABKAIEQQFyNgIEQQAhBUEAIQEMAQsgByABIAhBAXFyQQJyNgIAIAEgBmoiASAFQQFyNgIEIAQgBmoiBCAFNgIAIAQgBCgCBEF+cTYCBAtBgJvAACABNgIAQfiawAAgBTYCAAwHCyAEIAFrIgRBD00NBiAHIAEgCEEBcXJBAnI2AgAgASAGaiIBIARBA3I2AgQgBSAFKAIEQQFyNgIEIAEgBBAODAYLQfyawAAoAgAgBGoiBCABSw0EDAYLIAMgASABIANLGyIDBEAgAiAAIAP8CgAACyAHKAIAIgNBeHEiByABQQRBCCADQQNxIgEbakkNAiABRSAGIAdPcg0GQfSWwABBLkGkl8AAEEwAC0G0lsAAQS5B5JbAABBMAAtB9JbAAEEuQaSXwAAQTAALQbSWwABBLkHklsAAEEwACyAHIAEgCEEBcXJBAnI2AgAgASAGaiIFIAQgAWsiAUEBcjYCBEH8msAAIAE2AgBBhJvAACAFNgIACyAGRQ0AIAAPCyADEAciAUUNASADQXxBeCAHKAIAIgJBA3EbIAJBeHFqIgIgAiADSxsiAgRAIAEgACAC/AoAAAsgASECCyAAEAwLIAILtwYBBH8gACABaiECAkACQAJAIAAoAgQiA0EBcQ0AIANBAnFFDQEgACgCACIDIAFqIQEgACADayIAQYCbwAAoAgBGBEAgAigCBEEDcUEDRw0BQfiawAAgATYCACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAIgATYCAAwCCyAAIAMQGQsCQAJAAkAgAigCBCIDQQJxRQRAIAJBhJvAACgCAEYNAiACQYCbwAAoAgBGDQMgAiADQXhxIgMQGSAAIAEgA2oiAUEBcjYCBCAAIAFqIAE2AgAgAEGAm8AAKAIARw0BQfiawAAgATYCAA8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQYACTwRAQR8hAiAAQgA3AhAgAUH///8HTQRAIAFBJiABQQh2ZyIDa3ZBAXEgA0EBdGtBPmohAgsgACACNgIcIAJBAnRB2JfAAGohBEEBIAJ0IgNB9JrAACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQfSawABB9JrAACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqIgQoAhAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhgMBQsgBEEQaiAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIDwsCQEHwmsAAKAIAIgJBASABQQN2dCIDcUUEQEHwmsAAIAIgA3I2AgAgAUH4AXFB6JjAAGoiASECDAELIAFB+AFxIgFB6JjAAGohAiABQfCYwABqKAIAIQELIAIgADYCCCABIAA2AgwMAwtBhJvAACAANgIAQfyawABB/JrAACgCACABaiIBNgIAIAAgAUEBcjYCBCAAQYCbwAAoAgBHDQFB+JrAAEEANgIAQYCbwABBADYCAA8LQYCbwAAgADYCAEH4msAAQfiawAAoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIACw8LIAAgAjYCDCAAIAE2AggLpAUCEn8CeyMAQbABayICJAACQAJAIAAoApgBIgQgASAAKQOQAX17pyIQSwRAIARBAWshBSAAQfAAaiEJIAAgBEEFdGohAyACQUBrIQsgAkGQAWohCiAEQTlJIREDQCAFRQ0CIAAgBUEBayIFNgKYASACQYABaiIGIANB7ABqIhL9AAAAIhT9CwMAIAIgA0HcAGoiE/0AAAAiFf0LA3AgCiADQfwAav0AAAD9CwAAIApBEGogA0GMAWr9AAAA/QsAACACQRBqIBT9CwMAIAsgCf0AAwD9CwMAIAtBEGogCUEQaiIH/QADAP0LAwAgAkEwaiACQaABav0AAwD9CwMAIAJBIGogCv0AAwD9CwMAIAIgFf0LAwAgAkHAADoAaCACQgA3A2AgAiAALQBrIgg6AGogAiAALQBqQQRyIgQ6AGkgBiAH/QACAP0LAwAgAiAJ/QACAP0LA3ACQCAIQQFGBEAgAkHwAGogAkHAAEIAIAQQCQwBCyACQfAAaiACQcAAQgAgBBAGCyACKAKMASEEIAIoAogBIQYgAigChAEhByACKAKAASEIIAIoAnwhDCACKAJ4IQ0gAigCdCEOIAIoAnAhDyARRQ0DIANB+ABqIAQ2AgAgA0H0AGogBjYCACADQfAAaiAHNgIAIBIgCDYCACADQegAaiAMNgIAIANB5ABqIA02AgAgA0HgAGogDjYCACATIA82AgAgACAFQQFqIgQ2ApgBIANBIGshAyAEIBBLDQALCyACQbABaiQADwtBxZPAAEErQYyPwAAQTAALIAIgBDYCjAEgAiAGNgKIASACIAc2AoQBIAIgCDYCgAEgAiAMNgJ8IAIgDTYCeCACIA42AnQgAiAPNgJwQfyPwABBKyACQfAAakHEkMAAQZyPwAAQLwALsgQBDH8gAUEBayENIAAoAgQhCSAAKAIAIQogACgCCCELAkADQCAGDQECfwJAIAIgBEkNAANAIAEgBGohBQJAAkACQAJAAkAgAiAEayIGQQdNBEAgAiAERw0BIAIhBAwHCyAFQQNqQXxxIgAgBUYNASAAIAVrIQNBACEAA0AgACAFai0AAEEKRg0FIAMgAEEBaiIARw0ACyADIAZBCGsiAEsNAwwCC0EAIQADQCAAIAVqLQAAQQpGDQQgBiAAQQFqIgBHDQALIAIhBAwFCyAGQQhrIQBBACEDCwNAQYCChAggAyAFaiIHKAIAIg5BipSo0ABzayAOckGAgoQIIAdBBGooAgAiB0GKlKjQAHNrIAdycUGAgYKEeHFBgIGChHhHDQEgA0EIaiIDIABNDQALCyADIAZGBEAgAiEEDAMLIAMgBWohBiACIANrIARrIQdBACEAAkADQCAAIAZqLQAAQQpGDQEgByAAQQFqIgBHDQALIAIhBAwDCyAAIANqIQALIAAgBGoiA0EBaiEEAkAgAiADTQ0AIAAgBWotAABBCkcNAEEAIQYgBCIFDAMLIAIgBE8NAAsLIAIgCEYNAkEBIQYgCCEFIAILIQACQCALLQAABEAgCkG2lMAAQQQgCSgCDBEAAA0BC0EAIQMgACAIRwRAIAAgDWotAABBCkYhAwsgACAIayEAIAEgCGohByALIAM6AAAgBSEIIAogByAAIAkoAgwRAABFDQELC0EBIQwLIAwL+wMBCH8jAEEQayIGJAACfwJAIANBAXFFBEAgAi0AACIFDQFBAAwCCyAAIAIgA0EBdiABKAIMEQAADAELIAEoAgwhCgNAIAJBAWohBAJAAkACQAJAIAXAQQBIBEAgBUH/AXEiCEGAAUYNASAIQcABRw0DIAYgATYCBCAGIAA2AgAgBkKggICABjcCCCADIAdBA3RqIgIoAgAgBiACKAIEEQEARQ0CQQEMBgsgACAEIAVB/wFxIgIgChEAAEUEQCACIARqIQIMBAtBAQwFCyAAIAJBA2oiBCACLwABIgIgChEAAEUEQCACIARqIQIMAwtBAQwECyAHQQFqIQcgBCECDAELQaCAgIAGIQsgBUEBcQRAIAIoAAEhCyACQQVqIQQLQQAhCAJ/IAVBAnFFBEBBACEJIAQMAQsgBC8AACEJIARBAmoLIQIgBUEEcQR/IAIvAAAhCCACQQJqBSACCyEEIAVBCHEEfyAELwAAIQcgBEECagUgBAshAiAFQRBxBEAgAyAJQQN0ai8BBCEJCyAGIAVBIHEEfyADIAhBA3RqLwEEBSAICzsBDiAGIAk7AQwgBiALNgIIIAYgATYCBCAGIAA2AgBBASADIAdBA3RqIgQoAgAgBiAEKAIEEQEADQIaIAdBAWohBwsgAi0AACIFDQALQQALIAZBEGokAAulBAIHfwF+IAAoAggiBUGAgIABcSIGQRV2IARqIQcCQCAFQYCAgARxRQRAQQAhAQwBCwJ/QQAgAkUNABogASwAAEG/f0oiCCACQQFGDQAaIAggASwAAUG/f0pqCyAHaiEHC0ErQYCAxAAgBhshCwJAIAAvAQwiCCAHSwRAAkACQCAFQYCAgAhxRQRAIAggB2shCEEAIQZBACEHAkACQAJAIAVBHXZBA3FBAWsOAwABAAILIAghBwwBCyAIQf7/A3FBAXYhBwsgBUH///8AcSEKIAAoAgQhCSAAKAIAIQADQCAGQf//A3EgB0H//wNxTw0CQQEhBSAGQQFqIQYgACAKIAkoAhARAQBFDQALDAQLIAAgACkCCCIMp0GAgID/eXFBsICAgAJyNgIIQQEhBSAAKAIAIgkgACgCBCIKIAsgASACED4NA0EAIQYgCCAHa0H//wNxIQEDQCAGQf//A3EgAU8NAiAGQQFqIQYgCUEwIAooAhARAQBFDQALDAMLQQEhBSAAIAkgCyABIAIQPg0CIAAgAyAEIAkoAgwRAAANAiAIIAdrQf//A3EhAUEAIQYDQCABIAZB//8DcU0EQEEADwsgBkEBaiEGIAAgCiAJKAIQEQEARQ0ACwwCCyAJIAMgBCAKKAIMEQAADQEgACAMNwIIQQAPC0EBIQUgACgCACIHIAAoAgQiACALIAEgAhA+DQAgByADIAQgACgCDBEAACEFCyAFC/oFAQh/IwBBQGoiByQAAkAgAUHAA3EiC0UNACAHQRBqIAA2AgAgC0HAAEYEQEEBIQgMAQsgByAAQUBrNgIUIAtBgAFGBEBBAiEIDAELIAcgAEGAAWo2AhggC0HAAUYEQEEDIQgMAQsgByAAQcABajYCHCALQYACRgRAQQQhCAwBCyAHIABBgAJqNgIgQfyPwABBKyAHQSBqQdSQwABB+I3AABAvAAsgAUE/cSEMIAdBEGohASAHIAg2AgwgA0EEciENAkAgBARAIAUhAyMAQSBrIgokACAIIgRBBEkgBiIJQf8ATXJFBEBBACEEIAFBASACQgBBASANQQBBACADEAQgA0GAAWohAyAGQYABayEJIAFBEGohAQsgCUEFdiIJIAQgBCAJSxsiBARAA0AgASgCACEJIApBEGoiDiACQRBq/QACAP0LAwAgCiAC/QACAP0LAwAgCiAJQcAAQgAgDRAJIANBEGogDv0AAwD9CwAAIAMgCv0AAwD9CwAAIAFBBGohASADQSBqIQMgBEEBayIEDQALCyAKQSBqJAAMAQsgBkEFdiIDIAggAyAISRsiA0UNACADQQV0IQNBACEEA0AgASgCACEJIAdBMGoiCiACQRBq/QACAP0LAwAgByAC/QACAP0LAyAgB0EgaiAJQcAAQgAgDRAGIAQgBWoiCUEQaiAK/QADAP0LAAAgCSAH/QADIP0LAAAgAUEEaiEBIAMgBEEgaiIERw0ACwsCQAJAAkAgDARAIAYgCEEFdCIBSQ0BIAYgAWsiAkEfTQ0CIAxBIEcNAyABIAVqIgEgACALaiIA/QAAAP0LAAAgAUEQaiAAQRBq/QAAAP0LAAAgCEEBaiEICyAHQUBrJAAgCA8LIAEgBiAGQeiNwAAQHQALQQBBICACQciNwAAQHQALIwBBIGsiACQAIAAgDDYCCCAAQSA2AgwgACAAQQxqrUKAgICAMIQ3AxggACAAQQhqrUKAgICAMIQ3AxBB6IbAACAAQRBqQdiNwAAQPQALgwQDAn8BewF+AkACQAJAIAAtAGgiA0UNACADQcEASQRAIAJBwAAgA2siBCACIARJGyIEBEAgACADaiABIAT8CgAACyAAIAAtAGggBGoiAzoAaCABIARqIQEgAiAEayICRQRAQQAhAgwDCyAAQUBrIQMgAC0AaiAALQBpRXIhBCAAKQNgIQYCQCAALQBrQQFGBEAgAyAAQcAAIAYgBBAJDAELIAMgAEHAACAGIAQQBgsgAEEAOgBoIAD9DAAAAAAAAAAAAAAAAAAAAAD9CwMAIABBEGogBf0LAwAgAEEgaiAF/QsDACAAQTBqIAX9CwMAIAAgAC0AaUEBajoAaQwBCwwCCwJAIAJBwQBJDQAgAEFAayEEIAAtAGkhAyAALQBrRQRAA0AgBCABQcAAIAApA2AgAC0AaiADQf8BcUVyEAYgACAALQBpQQFqIgM6AGkgAUFAayEBIAJBQGoiAkHAAEsNAAwCCwALA0AgBCABQcAAIAApA2AgAC0AaiADQf8BcUVyEAkgACAALQBpQQFqIgM6AGkgAUFAayEBIAJBQGoiAkHAAEsNAAsLIAAtAGghAwsgA0H/AXEiA0HBAEkEQCACQcAAIANrIgQgAiAESRsiAgRAIAAgA2ogASAC/AoAAAsgACAALQBoIAJqOgBoIAAPCwsgA0HAAEHAAEHojMAAEB0AC6IEAgJ/AX4CQAJAIABC5wdYBEBBFCECIAAhBAwBCyABIAAgAEKQzgCAIgRCkM4Afn2nIgJB//8DcUHkAG4iA0EBdC8BupRAOwAQIAEgAiADQeQAbGtB//8DcUEBdC8BupRAOwASIABC/6ziBFgEQEEQIQIMAQsgASAEQpDOAIKnIgJB5ABuIgNBAXQvAbqUQDsADCABIAIgA0HkAGxrQf//A3FBAXQvAbqUQDsADiAAQoDC1y+AIQQgAEKA0NvD9AJUBEBBDCECDAELIAEgBEKQzgCCpyICQeQAbiIDQQF0LwG6lEA7AAggASACIANB5ABsa0H//wNxQQF0LwG6lEA7AAogAEKAoJSljR2AIQQgAEKAgJqm6q/jAVQEQEEIIQIMAQsgASAEQpDOAIKnIgJB5ABuIgNBAXQvAbqUQDsABCABIAIgA0HkAGxrQf//A3FBAXQvAbqUQDsABiAAQoCAhP6m3uERgCEEIABCgICgz8jgyOOKf1QEQEEEIQIMAQsgASAEpyICQeQAbiIDQQF0LwG6lEA7AAAgASACIANB5ABsa0H//wNxQQF0LwG6lEA7AAJBACECQgAhBAwBCyAEQglYDQAgASACQQJrIgJqIASnIgMgA0H//wNxQeQAbiIDQeQAbGtB//8DcUEBdC8BupRAOwAAIAOtIQQLIABQRSAEUHFFBEAgASACQQFrIgJqIASnQQF0LQC7lEA6AAALIAIL3wMCBH8BfiMAQSBrIgIkACAAKAIIIQQgACgCBCEFIAEoAgBBw5HAAEEBIAEoAgQoAgwRAAAhAwJAIARFBEAgAyEADAELAn9BASADDQAaIAEtAApBgAFxBEBBASABKAIAIgNBmJHAAEEBIAEoAgQiACgCDBEAAA0BGiACQQE6AA8gAiAANgIEIAIgAzYCACACQaCRwAA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhBBASAFIAJBEGoQGA0BGiACKAIQQZmRwABBAiACKAIUKAIMEQAADAELIAUgARAYCyEAIARBAUYNACAFQQFqIQMgBEEBayEEA0AgAEEBcSEFAn9BASAFDQAaAkAgAS0ACkGAAXEEQCABKQIAIQYgAkEBOgAPIAIgBjcCACACQaCRwAA2AhQgAiABKQIINwIYIAIgAkEPajYCCCACIAI2AhAgAyACQRBqEBhFDQFBAQwCC0EBIAEoAgBBlpHAAEECIAEoAgQoAgwRAAANARogAyABEBgMAQsgAigCEEGZkcAAQQIgAigCFCgCDBEAAAshACADQQFqIQMgBEEBayIEDQALC0EBIQMgAEUEQCABKAIAQcSRwABBASABKAIEKAIMEQAAIQMLIAJBIGokACADC+cCAQV/AkAgAUHN/3tBECAAIABBEE0bIgBrTw0AIABBECABQQtqQXhxIAFBC0kbIgRqQQxqEAciAkUNACACQQhrIQECQCAAQQFrIgMgAnFFBEAgASEADAELIAJBBGsiBSgCACIGQXhxIAIgA2pBACAAa3FBCGsiAiAAQQAgAiABa0EQTRtqIgAgAWsiAmshAyAGQQNxBEAgACADIAAoAgRBAXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACABIAJqIgMgAygCBEEBcjYCBCABIAIQDgwBCyABKAIAIQEgACADNgIEIAAgASACajYCAAsCQCAAKAIEIgFBA3FFDQAgAUF4cSICIARBEGpNDQAgACAEIAFBAXFyQQJyNgIEIAAgBGoiASACIARrIgRBA3I2AgQgACACaiICIAIoAgRBAXI2AgQgASAEEA4LIABBCGohAwsgAwvgAgEDfyMAQRBrIgMkAAJ/AkAgASgCCCICQYCAgBBxRQRAIAJBgICAIHENAUEDIQIgAC0AACIAIQQgAEEKTwRAIAMgACAAQeQAbiIEQeQAbGtB/wFxQQF0LwG6lEA7AAxBASECC0EAIAAgBBtFBEAgAkEBayICIANBC2pqIARBAXQtALuUQDoAAAsgAUEBQQAgA0ELaiACakEDIAJrEBIMAgsgAC0AACECQQMhAANAIAAgA2pBB2ogAkEPcUH0kMAAai0AADoAACACQf8BcSIEQQR2IQIgAEEBayEAIARBD0sNAAsgAUGEkcAAQQIgACADakEIakEDIABrEBIMAQsgAC0AACECQQMhAANAIAAgA2pBDGogAkEPcUGGkcAAai0AADoAACACQf8BcSIEQQR2IQIgAEEBayEAIARBD0sNAAsgAUGEkcAAQQIgACADakENakEDIABrEBILIANBEGokAAuCAwEEfyAAKAIMIQICQAJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYE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IAAgAUEBdEEBciACED0ACxgAIAEoAgAgASgCBCAAKAIAIAAoAgQQEQsWAgFvAX8gABADIQEQHCICIAEmASACCxQAIAAoAgAgASAAKAIEKAIMEQEACxAAIAEgACgCACAAKAIEEAsLFgBBtJvAACAANgIAQbCbwABBAToAAAsRAEGji8AAQSNBtIvAABA9AAsPACAAQaCRwAAgASACEBELDQAgAUGelMAAQRgQCwsMACAAIAEpAgA3AwALCQAgAEEANgIACwwAQYKWwABBMhABAAsLphcFAEGAgMAAC90MVXRmOEVycm9ydmFsaWRfdXBfdG9lcnJvcl9sZW5Gcm9tVXRmOEVycm9yYnl0ZXNlcnJvck5vbmVTb21lFnNsaWNlIGluZGV4IHN0YXJ0cyBhdCDADSBidXQgZW5kcyBhdCDAACBpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCB0aGUgaW5kZXggaXMgwAAScmFuZ2Ugc3RhcnQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEGFzc2VydGlvbiBgbGVmdCDAECByaWdodGAgZmFpbGVkOiDACQogIGxlZnQ6IMAJCiByaWdodDogwAAPQ2FwYWNpdHlFcnJvcjogwADAAjogwAAvaG9tZS91bXppLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvd2FzbS1iaW5kZ2VuLTAuMi4xMTQvc3JjL2V4dGVybnJlZi5ycwAvaG9tZS91bXppLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYmFzZTY0LTAuMjIuMS9zcmMvZW5naW5lL2dlbmVyYWxfcHVycG9zZS9tb2QucnMAL2hvbWUvdW16aS8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Jhc2U2NC0wLjIyLjEvc3JjL2VuZ2luZS9tb2QucnMAL3J1c3RjLzRhNGVmNDkzZTNhMTQ4OGM2ZTMyMTU3MDIzODA4NGIzODk0OGY2ZGIvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTEvc3JjL2RsbWFsbG9jLnJzAC9ob21lL3VtemkvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9ibGFrZTMtMS44LjMvc3JjL2xpYi5ycwAmY29weV9mcm9tX3NsaWNlOiBzb3VyY2Ugc2xpY2UgbGVuZ3RoICjAKykgZG9lcyBub3QgbWF0Y2ggZGVzdGluYXRpb24gc2xpY2UgbGVuZ3RoICjAASkAGHRoZSBzdWJ0cmVlIHN0YXJ0aW5nIGF0IMASIGNvbnRhaW5zIGF0IG1vc3QgwA4gYnl0ZXMgKGZvdW5kIMABKQAAAAAqAAAAFAAAAAQAAAArAAAASW52YWxpZCBVVEY4NAIQAF8AAAB/AAAAJAAAAF0DEAAKAAAACwAAABUAAABn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gWwAAAkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV////////////////////////////////////////////////////////////8+//80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ/////z//GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Y2FwYWNpdHkgb3ZlcmZsb3eUAhAAUAAAABwAAAAFAAAAxAEQAG8AAACWAAAADQAAAMQBEABvAAAAlwAAAA0AAADEARAAbwAAAJoAAAANAAAAxAEQAG8AAACeAAAADQAAAMQBEABvAAAAnwAAAA0AAADEARAAbwAAAIgAAAArAAAAxAEQAG8A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";
|
|
285
|
+
|
|
286
|
+
// ── Decode base64 WASM binary to ArrayBuffer (done once at module load) ───
|
|
287
|
+
|
|
288
|
+
function _b64ToBuffer(b64) {
|
|
289
|
+
const bin = atob(b64);
|
|
290
|
+
const buf = new Uint8Array(bin.length);
|
|
291
|
+
for (let i = 0; i < bin.length; i++) buf[i] = bin.charCodeAt(i);
|
|
292
|
+
return buf.buffer;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// ── Inline worker source ──────────────────────────────────────────────────
|
|
296
|
+
//
|
|
297
|
+
// The worker receives:
|
|
298
|
+
// wasmGlueSrc — glue JS as a string (avoids any URL / MIME issue)
|
|
299
|
+
// wasmBin — WASM bytes as ArrayBuffer (transferred, no fetch needed)
|
|
300
|
+
|
|
301
|
+
const WORKER_SRC = `
|
|
302
|
+
let wasmModule = null;
|
|
303
|
+
let wasmReady = false;
|
|
304
|
+
let wasmGlueSrc = null;
|
|
305
|
+
let wasmBin = null; // ArrayBuffer
|
|
306
|
+
|
|
307
|
+
async function initWasm() {
|
|
308
|
+
if (wasmReady) return;
|
|
309
|
+
if (!wasmGlueSrc) throw new Error("WASM glue not provided");
|
|
310
|
+
|
|
311
|
+
// Re-wrap glue source as a blob: URL — always accepted by import()
|
|
312
|
+
const blob = new Blob([wasmGlueSrc], { type: "application/javascript" });
|
|
313
|
+
const glueUrl = URL.createObjectURL(blob);
|
|
314
|
+
|
|
315
|
+
try {
|
|
316
|
+
const mod = await import(glueUrl);
|
|
317
|
+
// Pass ArrayBuffer directly — glue skips URL resolution entirely
|
|
318
|
+
if (typeof mod.default === "function") await mod.default(wasmBin);
|
|
319
|
+
wasmModule = mod;
|
|
320
|
+
wasmReady = true;
|
|
321
|
+
} finally {
|
|
322
|
+
URL.revokeObjectURL(glueUrl);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
async function runSolve(baseUrl, configId) {
|
|
327
|
+
await initWasm();
|
|
328
|
+
|
|
329
|
+
const challengeRes = await fetch(baseUrl + "/" + configId + "/challenge");
|
|
330
|
+
if (!challengeRes.ok) throw new Error("Challenge request failed: HTTP " + challengeRes.status);
|
|
331
|
+
|
|
332
|
+
const { token, challenge_count, salt_length, difficulty } = await challengeRes.json();
|
|
333
|
+
|
|
334
|
+
self.__zaptchaProgressCb = (index, nonce) => {
|
|
335
|
+
self.postMessage({ type: "progress", index, nonce, total: challenge_count });
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
let solutions;
|
|
339
|
+
try {
|
|
340
|
+
solutions = wasmModule.solve_challenge(
|
|
341
|
+
token, difficulty, challenge_count, salt_length, self.__zaptchaProgressCb,
|
|
342
|
+
);
|
|
343
|
+
} finally {
|
|
344
|
+
delete self.__zaptchaProgressCb;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
const redeemRes = await fetch(baseUrl + "/" + configId + "/redeem", {
|
|
348
|
+
method: "POST",
|
|
349
|
+
headers: { "Content-Type": "application/json" },
|
|
350
|
+
body: JSON.stringify({ token, solutions: Array.from(solutions) }),
|
|
351
|
+
});
|
|
352
|
+
if (!redeemRes.ok) throw new Error("Redeem request failed: HTTP " + redeemRes.status);
|
|
353
|
+
|
|
354
|
+
const { message } = await redeemRes.json();
|
|
355
|
+
if (!message) throw new Error("Server did not return a token");
|
|
356
|
+
return message;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
self.onmessage = async function ({ data }) {
|
|
360
|
+
if (data.type === "init") {
|
|
361
|
+
wasmGlueSrc = data.wasmGlueSrc;
|
|
362
|
+
wasmBin = data.wasmBin; // transferred ArrayBuffer
|
|
363
|
+
try {
|
|
364
|
+
await initWasm();
|
|
365
|
+
self.postMessage({ type: "ready" });
|
|
366
|
+
} catch (err) {
|
|
367
|
+
self.postMessage({ type: "fail", reason: err.message });
|
|
368
|
+
}
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
if (data.type === "solve") {
|
|
373
|
+
try {
|
|
374
|
+
const token = await runSolve(data.baseUrl, data.configId);
|
|
375
|
+
self.postMessage({ type: "success", token });
|
|
376
|
+
} catch (err) {
|
|
377
|
+
self.postMessage({ type: "fail", reason: err.message });
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
`;
|
|
382
|
+
|
|
383
|
+
// ── Constructable stylesheet (one instance shared across all widgets) ─────
|
|
384
|
+
|
|
385
|
+
const _sheet = new CSSStyleSheet();
|
|
386
|
+
_sheet.replaceSync(`
|
|
387
|
+
:host {
|
|
388
|
+
display: block;
|
|
389
|
+
min-height: 48px;
|
|
390
|
+
width: fit-content;
|
|
391
|
+
|
|
392
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
393
|
+
-webkit-font-smoothing: antialiased;
|
|
394
|
+
-moz-osx-font-smoothing: grayscale;
|
|
395
|
+
|
|
396
|
+
--zap-bg: var(--zaptcha-bg, #ffffff);
|
|
397
|
+
--zap-border: var(--zaptcha-border, #e5e7eb);
|
|
398
|
+
--zap-border-hover: var(--zaptcha-border-hover, #d1d5db);
|
|
399
|
+
--zap-border-focus: var(--zaptcha-border-focus, #4f46e5);
|
|
400
|
+
--zap-text: var(--zaptcha-text, #374151);
|
|
401
|
+
--zap-text-muted: var(--zaptcha-text-muted, #9ca3af);
|
|
402
|
+
--zap-accent: var(--zaptcha-accent, #4f46e5);
|
|
403
|
+
--zap-success: var(--zaptcha-success, #10b981);
|
|
404
|
+
--zap-shadow: var(--zaptcha-shadow, 0 2px 6px rgba(0,0,0,0.04));
|
|
405
|
+
--zap-radius: var(--zaptcha-radius, 8px);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.widget {
|
|
409
|
+
background: var(--zap-bg);
|
|
410
|
+
border: 1px solid var(--zap-border);
|
|
411
|
+
border-radius: var(--zap-radius);
|
|
412
|
+
box-shadow: var(--zap-shadow);
|
|
413
|
+
width: 210px;
|
|
414
|
+
box-sizing: border-box;
|
|
415
|
+
transition: box-shadow 0.2s ease, border-color 0.2s ease;
|
|
416
|
+
}
|
|
417
|
+
.widget:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.06); }
|
|
418
|
+
|
|
419
|
+
.row {
|
|
420
|
+
display: flex;
|
|
421
|
+
align-items: center;
|
|
422
|
+
gap: 10px;
|
|
423
|
+
padding: 0 12px;
|
|
424
|
+
height: 48px;
|
|
425
|
+
cursor: pointer;
|
|
426
|
+
user-select: none;
|
|
427
|
+
box-sizing: border-box;
|
|
428
|
+
border-radius: var(--zap-radius);
|
|
429
|
+
outline: none;
|
|
430
|
+
}
|
|
431
|
+
.row:focus-visible {
|
|
432
|
+
box-shadow: 0 0 0 2px var(--zap-bg), 0 0 0 4px var(--zap-border-focus);
|
|
433
|
+
}
|
|
434
|
+
.row[aria-checked="true"] { cursor: default; }
|
|
435
|
+
|
|
436
|
+
.box {
|
|
437
|
+
width: 22px;
|
|
438
|
+
height: 22px;
|
|
439
|
+
flex-shrink: 0;
|
|
440
|
+
position: relative;
|
|
441
|
+
display: flex;
|
|
442
|
+
align-items: center;
|
|
443
|
+
justify-content: center;
|
|
444
|
+
}
|
|
445
|
+
.box-border {
|
|
446
|
+
position: absolute;
|
|
447
|
+
inset: 0;
|
|
448
|
+
border: 1.5px solid var(--zap-border);
|
|
449
|
+
border-radius: 4px;
|
|
450
|
+
background: var(--zap-bg);
|
|
451
|
+
transition: border-color 0.2s ease, background-color 0.2s ease;
|
|
452
|
+
}
|
|
453
|
+
.row:hover:not([aria-checked="true"]) .box-border {
|
|
454
|
+
border-color: var(--zap-border-hover);
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.box.done .box-border { background: var(--zap-success); border-color: var(--zap-success); }
|
|
458
|
+
.box-tick { display: none; position: relative; z-index: 1; }
|
|
459
|
+
.box.done .box-tick { display: block; animation: zap-pop 0.3s cubic-bezier(0.175,0.885,0.32,1.275); }
|
|
460
|
+
|
|
461
|
+
@keyframes zap-pop {
|
|
462
|
+
0% { transform: scale(0.5); opacity: 0; }
|
|
463
|
+
100% { transform: scale(1); opacity: 1; }
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.box-spinner { display: none; position: absolute; inset: 0; }
|
|
467
|
+
.box.spinning .box-border { border-color: transparent; background: transparent; }
|
|
468
|
+
.box.spinning .box-spinner {
|
|
469
|
+
display: flex; align-items: center; justify-content: center;
|
|
470
|
+
}
|
|
471
|
+
.box-spinner::after {
|
|
472
|
+
content: ''; display: block;
|
|
473
|
+
width: 18px; height: 18px;
|
|
474
|
+
border: 2px solid var(--zap-border);
|
|
475
|
+
border-top-color: var(--zap-accent);
|
|
476
|
+
border-radius: 50%;
|
|
477
|
+
animation: zap-spin 0.6s linear infinite;
|
|
478
|
+
}
|
|
479
|
+
@keyframes zap-spin { to { transform: rotate(360deg); } }
|
|
480
|
+
|
|
481
|
+
.label {
|
|
482
|
+
color: var(--zap-text); font-size: 13.5px; font-weight: 500;
|
|
483
|
+
flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
484
|
+
transition: color 0.2s ease;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
.branding {
|
|
488
|
+
display: flex; flex-direction: column;
|
|
489
|
+
align-items: flex-end; justify-content: center;
|
|
490
|
+
flex-shrink: 0; gap: 1px;
|
|
491
|
+
}
|
|
492
|
+
.branding strong {
|
|
493
|
+
font-size: 9px; font-weight: 700;
|
|
494
|
+
letter-spacing: 0.05em; text-transform: uppercase;
|
|
495
|
+
color: var(--zap-text-muted);
|
|
496
|
+
}
|
|
497
|
+
.branding a {
|
|
498
|
+
font-size: 9px; color: var(--zap-text-muted);
|
|
499
|
+
text-decoration: none; transition: color 0.2s;
|
|
500
|
+
}
|
|
501
|
+
.branding a:hover { color: var(--zap-text); }
|
|
502
|
+
`);
|
|
503
|
+
|
|
504
|
+
// ── DOM template (parsed once, cloned per instance) ───────────────────────
|
|
505
|
+
|
|
506
|
+
const _template = document.createElement("template");
|
|
507
|
+
_template.innerHTML = `
|
|
508
|
+
<div class="widget" part="widget">
|
|
509
|
+
<div class="row" id="row" tabindex="0" role="checkbox"
|
|
510
|
+
aria-checked="false" aria-label="I'm not a robot">
|
|
511
|
+
<div class="box" id="box" part="checkbox">
|
|
512
|
+
<div class="box-border"></div>
|
|
513
|
+
<div class="box-spinner"></div>
|
|
514
|
+
<svg class="box-tick" width="12" height="9" viewBox="0 0 12 9" fill="none" aria-hidden="true">
|
|
515
|
+
<polyline points="1.5,4.5 4.5,7.5 10.5,1.5"
|
|
516
|
+
stroke="white" stroke-width="2"
|
|
517
|
+
stroke-linecap="round" stroke-linejoin="round"/>
|
|
518
|
+
</svg>
|
|
519
|
+
</div>
|
|
520
|
+
<span class="label" id="label" part="label">I'm not a robot</span>
|
|
521
|
+
<div class="branding" part="branding">
|
|
522
|
+
<strong>Zaptcha</strong>
|
|
523
|
+
<a href="#" tabindex="-1">Privacy</a>
|
|
524
|
+
</div>
|
|
525
|
+
</div>
|
|
526
|
+
</div>
|
|
527
|
+
`;
|
|
528
|
+
|
|
529
|
+
const LABELS = {
|
|
530
|
+
idle: "I'm not a robot",
|
|
531
|
+
solving: "Verifying\u2026",
|
|
532
|
+
done: "Verified",
|
|
533
|
+
error: "I'm not a robot",
|
|
534
|
+
};
|
|
535
|
+
|
|
536
|
+
// ── Component ─────────────────────────────────────────────────────────────
|
|
537
|
+
|
|
538
|
+
class ZeroCaptcha extends HTMLElement {
|
|
539
|
+
|
|
540
|
+
static get observedAttributes() { return []; }
|
|
541
|
+
|
|
542
|
+
constructor() {
|
|
543
|
+
super();
|
|
544
|
+
|
|
545
|
+
this._shadow = this.attachShadow({ mode: "open" });
|
|
546
|
+
this._shadow.adoptedStyleSheets = [_sheet];
|
|
547
|
+
this._shadow.appendChild(_template.content.cloneNode(true));
|
|
548
|
+
|
|
549
|
+
this._rowEl = this._shadow.getElementById("row");
|
|
550
|
+
this._boxEl = this._shadow.getElementById("box");
|
|
551
|
+
this._labelEl = this._shadow.getElementById("label");
|
|
552
|
+
|
|
553
|
+
this._worker = null;
|
|
554
|
+
this._blobUrl = null;
|
|
555
|
+
|
|
556
|
+
/** @type {"idle"|"solving"|"done"|"error"} */
|
|
557
|
+
this._state = "idle";
|
|
558
|
+
this._progress = { done: 0, total: 1 };
|
|
559
|
+
|
|
560
|
+
this._bindEvents();
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
connectedCallback() { this._startWorker(); }
|
|
564
|
+
disconnectedCallback() { this._destroyWorker(); }
|
|
565
|
+
|
|
566
|
+
// ── Public API ───────────────────────────────────────────────────────────
|
|
567
|
+
|
|
568
|
+
reset() {
|
|
569
|
+
this._destroyWorker();
|
|
570
|
+
this._state = "idle";
|
|
571
|
+
this._progress = { done: 0, total: 1 };
|
|
572
|
+
this._applyState();
|
|
573
|
+
this._startWorker();
|
|
574
|
+
this.dispatchEvent(new CustomEvent("zaptcha-reset", { bubbles: true, detail: {} }));
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// ── State → DOM ──────────────────────────────────────────────────────────
|
|
578
|
+
|
|
579
|
+
_applyState() {
|
|
580
|
+
const s = this._state;
|
|
581
|
+
const isDone = s === "done";
|
|
582
|
+
const isSpin = s === "solving";
|
|
583
|
+
|
|
584
|
+
this._rowEl.setAttribute("aria-checked", String(isDone));
|
|
585
|
+
this._rowEl.setAttribute("aria-label", LABELS[s] ?? LABELS.idle);
|
|
586
|
+
this._rowEl.tabIndex = isDone ? -1 : 0;
|
|
587
|
+
|
|
588
|
+
this._boxEl.classList.toggle("spinning", isSpin);
|
|
589
|
+
this._boxEl.classList.toggle("done", isDone);
|
|
590
|
+
|
|
591
|
+
this._labelEl.textContent = LABELS[s] ?? LABELS.idle;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// ── Worker lifecycle ─────────────────────────────────────────────────────
|
|
595
|
+
|
|
596
|
+
_startWorker() {
|
|
597
|
+
console.debug("[zaptcha] _startWorker — glue length:", _WASM_GLUE_SRC.length, "| b64 length:", _WASM_BIN_B64.length);
|
|
598
|
+
try {
|
|
599
|
+
const externalUrl = this.getAttribute("worker-url");
|
|
600
|
+
if (externalUrl) {
|
|
601
|
+
this._worker = new Worker(externalUrl, { type: "module" });
|
|
602
|
+
} else {
|
|
603
|
+
const blob = new Blob([WORKER_SRC], { type: "text/javascript" });
|
|
604
|
+
this._blobUrl = URL.createObjectURL(blob);
|
|
605
|
+
this._worker = new Worker(this._blobUrl, { type: "module" });
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
this._worker.onmessage = (e) => this._onWorkerMsg(e.data);
|
|
609
|
+
this._worker.onerror = (e) => {
|
|
610
|
+
console.error("[zaptcha] worker onerror:", e.message, e);
|
|
611
|
+
this._onFail(`Worker error: ${e.message}`);
|
|
612
|
+
};
|
|
613
|
+
|
|
614
|
+
const wasmBin = _b64ToBuffer(_WASM_BIN_B64);
|
|
615
|
+
console.debug("[zaptcha] wasmBin byteLength:", wasmBin.byteLength);
|
|
616
|
+
|
|
617
|
+
this._worker.postMessage(
|
|
618
|
+
{ type: "init", wasmGlueSrc: _WASM_GLUE_SRC, wasmBin },
|
|
619
|
+
[wasmBin],
|
|
620
|
+
);
|
|
621
|
+
} catch (err) {
|
|
622
|
+
console.error("[zaptcha] _startWorker catch:", err);
|
|
623
|
+
this._worker = null;
|
|
624
|
+
this._onFail(`Worker init failed: ${err.message}`);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
_destroyWorker() {
|
|
629
|
+
this._worker?.terminate();
|
|
630
|
+
this._worker = null;
|
|
631
|
+
if (this._blobUrl) {
|
|
632
|
+
URL.revokeObjectURL(this._blobUrl);
|
|
633
|
+
this._blobUrl = null;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// ── Worker messages ──────────────────────────────────────────────────────
|
|
638
|
+
|
|
639
|
+
_onWorkerMsg(msg) {
|
|
640
|
+
console.debug("[zaptcha] worker msg:", msg.type, msg.type === "fail" ? msg.reason : "");
|
|
641
|
+
switch (msg.type) {
|
|
642
|
+
case "ready":
|
|
643
|
+
console.debug("[zaptcha] WASM ready ✓");
|
|
644
|
+
break;
|
|
645
|
+
|
|
646
|
+
case "progress":
|
|
647
|
+
this._progress.done = (msg.index ?? 0) + 1;
|
|
648
|
+
this._progress.total = msg.total ?? 1;
|
|
649
|
+
this.dispatchEvent(new CustomEvent("zaptcha-progress", {
|
|
650
|
+
bubbles: true, composed: true,
|
|
651
|
+
detail: {
|
|
652
|
+
index: msg.index, nonce: msg.nonce, total: msg.total,
|
|
653
|
+
pct: Math.round(((msg.index ?? 0) + 1) / (msg.total ?? 1) * 100),
|
|
654
|
+
},
|
|
655
|
+
}));
|
|
656
|
+
break;
|
|
657
|
+
|
|
658
|
+
case "success":
|
|
659
|
+
this._state = "done";
|
|
660
|
+
this._applyState();
|
|
661
|
+
this.dispatchEvent(new CustomEvent("zaptcha-success", {
|
|
662
|
+
bubbles: true, composed: true,
|
|
663
|
+
detail: { token: msg.token },
|
|
664
|
+
}));
|
|
665
|
+
break;
|
|
666
|
+
|
|
667
|
+
case "fail":
|
|
668
|
+
this._onFail(msg.reason || "Unknown error");
|
|
669
|
+
break;
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
// ── Events ───────────────────────────────────────────────────────────────
|
|
674
|
+
|
|
675
|
+
_bindEvents() {
|
|
676
|
+
this._rowEl.addEventListener("click", () => this._onRowClick());
|
|
677
|
+
this._rowEl.addEventListener("keydown", (e) => {
|
|
678
|
+
if (e.key === " " || e.key === "Enter") {
|
|
679
|
+
e.preventDefault();
|
|
680
|
+
this._onRowClick();
|
|
681
|
+
}
|
|
682
|
+
});
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
_onRowClick() {
|
|
686
|
+
if (this._state !== "idle") return;
|
|
687
|
+
this._startSolve();
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
_startSolve() {
|
|
691
|
+
this._state = "solving";
|
|
692
|
+
this._progress = { done: 0, total: 1 };
|
|
693
|
+
this._applyState();
|
|
694
|
+
|
|
695
|
+
if (!this._worker) { this._onFail("Worker unavailable"); return; }
|
|
696
|
+
|
|
697
|
+
const baseUrl = this.getAttribute("base-url") ?? "";
|
|
698
|
+
const configId = this.getAttribute("config-id") ?? "";
|
|
699
|
+
|
|
700
|
+
if (!baseUrl || !configId) {
|
|
701
|
+
this._onFail("Attributes base-url and config-id are required");
|
|
702
|
+
return;
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
this._worker.postMessage({ type: "solve", baseUrl, configId });
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
_onFail(reason) {
|
|
709
|
+
console.error("[zaptcha] fail:", reason);
|
|
710
|
+
this._state = "error";
|
|
711
|
+
this._applyState();
|
|
712
|
+
this.dispatchEvent(new CustomEvent("zaptcha-fail", {
|
|
713
|
+
bubbles: true, composed: true,
|
|
714
|
+
detail: { reason },
|
|
715
|
+
}));
|
|
716
|
+
setTimeout(() => this.reset(), 3000);
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
customElements.define("zero-captcha", ZeroCaptcha);
|
|
721
|
+
|
|
722
|
+
export default ZeroCaptcha;
|
|
723
|
+
export { ZeroCaptcha };
|
|
724
|
+
|
|
725
|
+
// ── Standalone worker factory ─────────────────────────────────────────────
|
|
726
|
+
|
|
727
|
+
export function createWorker() {
|
|
728
|
+
const blob = new Blob([WORKER_SRC], { type: "text/javascript" });
|
|
729
|
+
const blobUrl = URL.createObjectURL(blob);
|
|
730
|
+
const worker = new Worker(blobUrl, { type: "module" });
|
|
731
|
+
|
|
732
|
+
worker.addEventListener("message", function onReady(e) {
|
|
733
|
+
if (e.data?.type === "ready" || e.data?.type === "fail") {
|
|
734
|
+
URL.revokeObjectURL(blobUrl);
|
|
735
|
+
worker.removeEventListener("message", onReady);
|
|
736
|
+
}
|
|
737
|
+
});
|
|
738
|
+
|
|
739
|
+
const wasmBin = _b64ToBuffer(_WASM_BIN_B64);
|
|
740
|
+
worker.postMessage(
|
|
741
|
+
{ type: "init", wasmGlueSrc: _WASM_GLUE_SRC, wasmBin },
|
|
742
|
+
[wasmBin],
|
|
743
|
+
);
|
|
744
|
+
return worker;
|
|
745
|
+
}
|