self.onmessage = async (event) => { if (event.data.type === "api") { const { method, endpoint, greenLetters, greenWithIndex } = event.data let response = await fetch(`${endpoint}`, { method: `${method}`, body: JSON.stringify({ greenLetters: greenLetters, greenWithIndex: greenWithIndex, }), }) let data = await response.json(); data = data.slice(0, 1500) let ok = true let newWordsLength = 0 for (let i = 0; i <= 15; i++) { let newdata = data.filter((item) => item.length === i) newWordsLength += newdata.length let result = newdata.map((item) => { if (item.length === 1) { ok = false newWordsLength = newWordsLength - 1 } else { let ScrabbleLetterScore = ScrabbleScore() sum = 0 item = item.toLowerCase() for (let i = 0; i < item.length; i++) { sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters } return ` ${item} ${sum} `; } }) self.postMessage({ data: newdata, i: i, newWordsLength: newWordsLength, result, ok: ok }); } } }; const ScrabbleScore = (dictonary) => { let twl06_sowpods = { a: 1, e: 1, i: 1, o: 1, u: 1, l: 1, n: 1, r: 1, s: 1, t: 1, d: 2, g: 2, b: 3, c: 3, m: 3, p: 3, f: 4, h: 4, v: 4, w: 4, y: 4, k: 5, j: 8, x: 8, q: 10, z: 10, }; let wwfScore = { a: 1, b: 4, c: 4, d: 2, e: 1, f: 4, g: 3, h: 3, i: 1, j: 10, k: 5, l: 2, m: 4, n: 2, o: 1, p: 4, q: 10, r: 1, s: 1, t: 1, u: 2, v: 5, w: 4, x: 8, y: 3, z: 10, }; if (dictonary === "wwf") { return wwfScore; } else { return twl06_sowpods; } };