'use strict'; importScripts('build-meta.js'); importScripts('puzzle-patterns.js'); importScripts(`puzzle-core.js?v=${BendBuildMeta.APP_VERSION}-${BendBuildMeta.GENERATOR_VERSION}`); const uniquenessCache = new Map(); self.onmessage = ({data}) => { const {id, action='generate', chunks, seed, level, originX, originY, generationOptions, generatorVersion} = data; try { if (generatorVersion !== BendPuzzle.GENERATOR_VERSION) throw new Error('Generator version mismatch'); if (action === 'verify') { const signature = BendPuzzle.puzzleSignature(data.puzzle); const cacheKey = JSON.stringify([signature, data.limits || null]); let result = uniquenessCache.get(cacheKey); if (!result) { result = BendPuzzle.verifyPuzzleUniqueness(data.puzzle, data.limits || null); uniquenessCache.set(cacheKey, result); if (uniquenessCache.size > 256) uniquenessCache.delete(uniquenessCache.keys().next().value); } self.postMessage({id, result, generatorVersion: BendPuzzle.GENERATOR_VERSION}); return; } const puzzle = BendPuzzle.generatePuzzle(chunks, seed, level, originX, originY, generationOptions || null); self.postMessage({id, puzzle, generatorVersion: BendPuzzle.GENERATOR_VERSION}); } catch (error) { self.postMessage({id, error: error?.message || String(error), generatorVersion: BendPuzzle.GENERATOR_VERSION}); } };