@scrabble-solver/scrabble-solver 2.18.2 → 2.18.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.
Files changed (46) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +8 -8
  3. package/.next/cache/.previewinfo +1 -1
  4. package/.next/cache/.rscinfo +1 -1
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  9. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  10. package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  11. package/.next/cache/webpack/server-production/0.pack +0 -0
  12. package/.next/cache/webpack/server-production/index.pack +0 -0
  13. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  14. package/.next/prerender-manifest.json +4 -4
  15. package/.next/routes-manifest.json +1 -1
  16. package/.next/server/chunks/392.js +1 -1
  17. package/.next/server/chunks/67.js +1 -1
  18. package/.next/server/chunks/812.js +1 -1
  19. package/.next/server/middleware-build-manifest.js +1 -1
  20. package/.next/server/pages/404.html +2 -2
  21. package/.next/server/pages/500.html +2 -2
  22. package/.next/server/pages/_app.js.nft.json +1 -1
  23. package/.next/server/pages/_document.js.nft.json +1 -1
  24. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  25. package/.next/server/pages/api/solve.js.nft.json +1 -1
  26. package/.next/server/pages/api/verify.js.nft.json +1 -1
  27. package/.next/server/pages/index.html +2 -2
  28. package/.next/server/pages/index.js +1 -1
  29. package/.next/server/pages/index.js.nft.json +1 -1
  30. package/.next/server/pages/index.json +1 -1
  31. package/.next/server/pages/not-found.html +2 -2
  32. package/.next/server/pages/not-found.js.nft.json +1 -1
  33. package/.next/static/{nvGZh1gPuX98L07YmxlYD → 8WnIUTe-yJvPD6stltvYI}/_buildManifest.js +1 -1
  34. package/.next/static/chunks/256.6a20b23a766cfebd.js +1 -0
  35. package/.next/static/chunks/pages/_app-e3fe880e24c024ab.js +1 -0
  36. package/.next/static/chunks/pages/{index-b5bf018100015277.js → index-b073a1686818dd26.js} +1 -1
  37. package/.next/static/chunks/{webpack-9f5c9d275348829b.js → webpack-d7138f1ef6b8c9d6.js} +1 -1
  38. package/.next/trace +22 -21
  39. package/.next/trace-build +1 -1
  40. package/package.json +9 -9
  41. package/public/llms.txt +1 -1
  42. package/src/pages/index.tsx +1 -1
  43. package/tsconfig.tsbuildinfo +1 -1
  44. package/.next/static/chunks/256.66ff9fb6d7db9ec7.js +0 -1
  45. package/.next/static/chunks/pages/_app-f9ec81278ffa7b1a.js +0 -1
  46. /package/.next/static/{nvGZh1gPuX98L07YmxlYD → 8WnIUTe-yJvPD6stltvYI}/_ssgManifest.js +0 -0
@@ -7,7 +7,7 @@
7
7
  "compute": "static",
8
8
  "initialRevalidateSeconds": false,
9
9
  "srcRoute": null,
10
- "dataRoute": "/_next/data/nvGZh1gPuX98L07YmxlYD/index.json",
10
+ "dataRoute": "/_next/data/8WnIUTe-yJvPD6stltvYI/index.json",
11
11
  "allowHeader": [
12
12
  "host",
13
13
  "x-matched-path",
@@ -21,8 +21,8 @@
21
21
  "dynamicRoutes": {},
22
22
  "notFoundRoutes": [],
23
23
  "preview": {
24
- "previewModeId": "a0d7e48d2f751f641ae8d4e15ae2a9dc",
25
- "previewModeSigningKey": "80604c8e4164b32e142703706235bffd675c80348fdfef7f93e5d13ef7760c2a",
26
- "previewModeEncryptionKey": "356a31690fd9d3054c9de7112f4dee3c0d25d77d322ea00b9f7e8c673ddd0a88"
24
+ "previewModeId": "d56d08e80e1c264fb9d5bd2f046d21e9",
25
+ "previewModeSigningKey": "710dfc296ee593a012938c12ca917fa8a7e3ee8c4ee055414ad75479b6de3c74",
26
+ "previewModeEncryptionKey": "b8cd042dcfa5ffc82dead343e6d398a5c6e43f0914c1fcf246c66c0a019c64ed"
27
27
  }
28
28
  }
@@ -106,7 +106,7 @@
106
106
  "dataRoutes": [
107
107
  {
108
108
  "page": "/",
109
- "dataRouteRegex": "^/_next/data/nvGZh1gPuX98L07YmxlYD/index\\.json$"
109
+ "dataRouteRegex": "^/_next/data/8WnIUTe\\-yJvPD6stltvYI/index\\.json$"
110
110
  }
111
111
  ],
112
112
  "rsc": {
@@ -1 +1 @@
1
- "use strict";exports.id=392,exports.ids=[392],exports.modules={678:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isLocale=void 0;let d=Object.values(c(52680).Locale);b.isLocale=a=>d.includes(a)},1356:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getLegacyDictionaryFilepath=b.getDictionaryFilepath=void 0;let e=d(c(33873)),f=c(62579);b.getDictionaryFilepath=(a,b=f.OUTPUT_DIRECTORY)=>e.default.resolve(b,`${a}.gaddag`),b.getLegacyDictionaryFilepath=(a,b=f.OUTPUT_DIRECTORY)=>e.default.resolve(b,`${a}.txt`)},2655:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.MemoryCache=b.LayeredCache=b.getDictionaryFilepath=b.downloadDictionary=b.DiskCache=b.createCacheTimestampComparator=b.createAsyncProxy=void 0;var d=c(80457);Object.defineProperty(b,"createAsyncProxy",{enumerable:!0,get:function(){return d.createAsyncProxy}});var e=c(10743);Object.defineProperty(b,"createCacheTimestampComparator",{enumerable:!0,get:function(){return e.createCacheTimestampComparator}});var f=c(70928);Object.defineProperty(b,"DiskCache",{enumerable:!0,get:function(){return f.DiskCache}});var g=c(49085);Object.defineProperty(b,"downloadDictionary",{enumerable:!0,get:function(){return g.downloadDictionary}});var h=c(1356);Object.defineProperty(b,"getDictionaryFilepath",{enumerable:!0,get:function(){return h.getDictionaryFilepath}});var i=c(16299);Object.defineProperty(b,"LayeredCache",{enumerable:!0,get:function(){return i.LayeredCache}});var j=c(70294);Object.defineProperty(b,"MemoryCache",{enumerable:!0,get:function(){return j.MemoryCache}})},4860:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isSameBoardWord=function(a,b){return a.direction===b.direction&&a.x===b.x&&a.y===b.y}},5145:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getTxtWordList=void 0;let e=d(c(29021)),f=c(77279),g=c(33471);b.getTxtWordList=async(a,b)=>{let c=await (0,f.downloadFile)(a),d=e.default.readFileSync(c,"utf-8"),h=(0,g.extractWords)(d.toLocaleString(),b);return e.default.unlinkSync(c),h}},5461:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getPlacedCell=function(a,b,c,f){let g=a.tiles[b],h=a.blankIndices.includes(b);return new d.Cell({isEmpty:!0,tile:new e.Tile({character:g,isBlank:h}),x:c,y:f})};let d=c(43734),e=c(35722)},5878:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.findFirstWordIndex=void 0,b.findFirstWordIndex=(a,b)=>{let c=a.findIndex((a,c)=>{let d=a[c+1]||"",e=a.localeCompare(d,b)>0,f=!!a.match(/\s/);return 0!==a.trim().length&&!f&&e});if(void 0===c)throw Error("Cannot find index of the first word in the file");return c}},9205:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getBoardWords=function(a){return[...(0,d.getWordsInRows)(a.rows,"horizontal"),...(0,d.getWordsInRows)((0,e.transpose)(a.rows),"vertical")]};let d=c(63903),e=c(61787)},10305:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/french/ods8.txt",d.Locale.FR_FR);return(0,e.transliterateDiacritics)(a)}},10743:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.createCacheTimestampComparator=void 0,b.createCacheTimestampComparator=a=>(b,c)=>{let d=b.getLastModifiedTimestamp(a),e=c.getLastModifiedTimestamp(a);return d===e?0:void 0===d?1:void 0===e?-1:e-d}},16185:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isObject=void 0,b.isObject=a=>"object"==typeof a&&null!==a},16299:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.LayeredCache=void 0;let d=c(10743),e=c(70928),f=c(70294);class g{constructor(){this.layers=[new f.MemoryCache,new e.DiskCache]}async get(a){let b=this.getLastModifiedLayer(a);if(!b)return Promise.resolve(void 0);let[c,d]=this.layers,e=await b.get(a);return b===d&&void 0!==e&&await c.set(a,e),e}getLastModifiedTimestamp(a){let b=this.getLastModifiedLayer(a);if(b)return b.getLastModifiedTimestamp(a)}has(a){return this.layers.some(b=>b.has(a))}isStale(a){return!!this.layers.some(b=>b.isStale(a))||!!this.layers.every(b=>void 0===b.isStale(a))&&void 0}async set(a,b){let[c,d]=this.layers;await d.set(a,b),await c.set(a,b)}getLastModifiedLayer(a){let[b]=[...this.layers.filter(b=>b.has(a))].sort((0,d.createCacheTimestampComparator)(a));return b}}b.LayeredCache=g},24392:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.CharacterBonus=void 0;let d=c(34474),e=c(57103);class f extends e.Bonus{constructor(){super(...arguments),this.type=d.BONUS_CHARACTER}canApply(a,b){return super.canApply(a,b)&&this.matchesCellTileScore(a,b)}matchesCellTileScore(a,b){return void 0===this.score||this.score===a.pointsMap[b.tile.character]}get value(){return{characterMultiplier:this.multiplier,wordMultiplier:1}}}b.CharacterBonus=f},24954:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isCellJson=void 0;let d=c(16185),e=c(89106);b.isCellJson=a=>(0,d.isObject)(a)&&"boolean"==typeof a.isEmpty&&((0,e.isTileJson)(a.tile)||null===a.tile)&&"number"==typeof a.x&&"number"==typeof a.y},26220:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.OUTPUT_DIRECTORY=void 0;let e=d(c(21820));b.OUTPUT_DIRECTORY=d(c(33873)).default.resolve(e.default.homedir(),".scrabble-solver","logs")},27475:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;var f=c(42507);Object.defineProperty(b,"getWordList",{enumerable:!0,get:function(){return f.getWordList}}),e(c(67511),b),e(c(98335),b)},27605:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Result=void 0;let d=c(34474),e=c(31090);class f{constructor({cells:a,id:b,collisions:c,points:d}){const e=k(a);this.blanksCount=g(e).length,this.cells=a,this.collisions=c,this.consonantsCount=h(e).length,this.id=b,this.length=a.length,this.points=d,this.pointsRatio=j(e,d),this.tiles=e,this.tilesCount=e.length,this.vowelsCount=i(e).length,this.word=l(a),this.words=m(a,c),this.wordsCount=1+this.collisions.length}toJson(){let a=this.cells.filter(a=>a.isEmpty);return{blankIndices:a.flatMap((a,b)=>a.tile.isBlank?[b]:[]),id:this.id,isHorizontal:this.isHorizontal(),points:this.points,tiles:a.map(a=>a.tile.character),x:this.cells[0].x,y:this.cells[0].y}}isHorizontal(){return this.cells[0].y===this.cells[1].y}isVertical(){return this.cells[0].x===this.cells[1].x}}b.Result=f,f.fromJson=(a,b)=>{let c=(0,e.getCells)(b,a);return new f({cells:c,collisions:(0,e.getCollisions)(b,c,a.isHorizontal),id:a.id,points:a.points})};let g=a=>a.filter(({isBlank:a})=>a),h=a=>a.filter(n),i=a=>a.filter(o),j=(a,b)=>b/a.length,k=a=>a.filter(({isEmpty:a})=>a).map(({tile:a})=>a),l=a=>a.reduce((a,b)=>a+b.toString(),""),m=(a,b)=>[a,...b].map(l),n=({character:a,isBlank:b})=>d.CONSONANTS.includes(a)&&!b,o=({character:a,isBlank:b})=>d.VOWELS.includes(a)&&!b},29562:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordDefinition=b.WordBonus=b.isTileJson=b.isScoreBingo=b.isObject=b.isMultiplierBingo=b.isLocale=b.isGame=b.isError=b.isCellJson=b.isBoardJson=b.isBingo=b.Tile=b.Result=b.Locale=b.isSameBoardWord=b.Game=b.Config=b.CharacterBonus=b.Cell=b.Bonus=b.Board=void 0;var d=c(54182);Object.defineProperty(b,"Board",{enumerable:!0,get:function(){return d.Board}});var e=c(57103);Object.defineProperty(b,"Bonus",{enumerable:!0,get:function(){return e.Bonus}});var f=c(43734);Object.defineProperty(b,"Cell",{enumerable:!0,get:function(){return f.Cell}});var g=c(24392);Object.defineProperty(b,"CharacterBonus",{enumerable:!0,get:function(){return g.CharacterBonus}});var h=c(95776);Object.defineProperty(b,"Config",{enumerable:!0,get:function(){return h.Config}});var i=c(48852);Object.defineProperty(b,"Game",{enumerable:!0,get:function(){return i.Game}});var j=c(31090);Object.defineProperty(b,"isSameBoardWord",{enumerable:!0,get:function(){return j.isSameBoardWord}});var k=c(52680);Object.defineProperty(b,"Locale",{enumerable:!0,get:function(){return k.Locale}});var l=c(27605);Object.defineProperty(b,"Result",{enumerable:!0,get:function(){return l.Result}});var m=c(35722);Object.defineProperty(b,"Tile",{enumerable:!0,get:function(){return m.Tile}});var n=c(79728);Object.defineProperty(b,"isBingo",{enumerable:!0,get:function(){return n.isBingo}}),Object.defineProperty(b,"isBoardJson",{enumerable:!0,get:function(){return n.isBoardJson}}),Object.defineProperty(b,"isCellJson",{enumerable:!0,get:function(){return n.isCellJson}}),Object.defineProperty(b,"isError",{enumerable:!0,get:function(){return n.isError}}),Object.defineProperty(b,"isGame",{enumerable:!0,get:function(){return n.isGame}}),Object.defineProperty(b,"isLocale",{enumerable:!0,get:function(){return n.isLocale}}),Object.defineProperty(b,"isMultiplierBingo",{enumerable:!0,get:function(){return n.isMultiplierBingo}}),Object.defineProperty(b,"isObject",{enumerable:!0,get:function(){return n.isObject}}),Object.defineProperty(b,"isScoreBingo",{enumerable:!0,get:function(){return n.isScoreBingo}}),Object.defineProperty(b,"isTileJson",{enumerable:!0,get:function(){return n.isTileJson}});var o=c(67699);Object.defineProperty(b,"WordBonus",{enumerable:!0,get:function(){return o.WordBonus}});var p=c(51385);Object.defineProperty(b,"WordDefinition",{enumerable:!0,get:function(){return p.WordDefinition}})},31090:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),e(c(9205),b),e(c(92289),b),e(c(84960),b),e(c(38649),b),e(c(4860),b)},33471:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.extractWords=void 0;let d=c(5878);b.extractWords=(a,b)=>{let c=a.split(/\r?\n/g),e=(0,d.findFirstWordIndex)(c,b),f=[];for(let a=e;a<c.length;++a){let b=c[a].trim();b.length>0&&f.push(b.toLocaleLowerCase())}return f}},33985:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isBingo=void 0;let d=c(62174),e=c(85207);b.isBingo=a=>(0,e.isScoreBingo)(a)||(0,d.isMultiplierBingo)(a)},34474:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.VOWELS=b.CONSONANTS=b.NO_BONUS=b.EMPTY_CELL=b.BONUS_WORD=b.BONUS_CHARACTER=b.BLANK=b.COMMA_LATIN=b.COMMA_ARABIC=void 0,b.COMMA_ARABIC="،",b.COMMA_LATIN=",",b.BLANK=" ",b.BONUS_CHARACTER="BONUS_CHARACTER",b.BONUS_WORD="BONUS_WORD",b.EMPTY_CELL=" ",b.NO_BONUS={characterMultiplier:1,wordMultiplier:1},b.CONSONANTS="bc\xe7ćdfgğhjklłmnń\xf1pqrsşśtvwxzźż".split(""),b.VOWELS="aą\xe4eęio\xf3\xf6u\xfcyı".split("")},35722:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Tile=void 0;let d=c(34474);class e{constructor({character:a,isBlank:b=!1}){this.character=a,this.isBlank=b}clone(){return new e({character:this.character,isBlank:this.isBlank})}equals(a){return this.character===a.character&&this.isBlank===a.isBlank}toJson(){return{character:this.character,isBlank:this.isBlank}}toString(){return this.character}}b.Tile=e,e.fromJson=a=>a?new e({character:a.character,isBlank:a.isBlank}):e.Null,e.Null=Object.freeze({character:d.EMPTY_CELL,isBlank:!1,clone:()=>e.Null,equals:a=>a===e.Null,toJson:()=>null,toString:()=>d.EMPTY_CELL})},37779:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/german/german.txt",d.Locale.DE_DE)},38649:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCollisions=function(a,b,c){let e=[];for(let f of b){if(f.isFilled())continue;let b=(0,d.getCollision)(f,a,c);b.length>1&&e.push(b)}return e};let d=c(43018)},38670:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.transliterateDiacritics=void 0;let d=c(66605),e=c(40224);b.transliterateDiacritics=(a,b)=>(0,e.unique)(a.map(a=>(0,d.transliterate)(a,b)))},39287:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/file-2017.txt",d.Locale.ES_ES);return(0,e.transliterateDiacritics)(a,{ignore:["\xf1"]})}},40224:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.unique=void 0,b.unique=a=>Array.from(new Set(a))},42507:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(67511),f={[d.Locale.DE_DE]:e.german.getWordList,[d.Locale.EN_GB]:e.english.getWordListGb,[d.Locale.EN_US]:e.english.getWordListUs,[d.Locale.ES_ES]:e.spanish.getWordList,[d.Locale.FA_IR]:e.persian.getWordList,[d.Locale.FR_FR]:e.french.getWordList,[d.Locale.PL_PL]:e.polish.getWordList,[d.Locale.RO_RO]:e.romanian.getWordList,[d.Locale.TR_TR]:e.turkish.getWordList};b.getWordList=a=>f[a]()},43018:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCollision=function(a,b,c){let d=+!c,e=+!!c,f=a.x-d,g=a.y-e;for(;f>=0&&g>=0&&b.rows[g][f].isFilled();)f-=d,g-=e;f+=d,g+=e;let h=[];for(;g<b.rowsCount&&f<b.columnsCount;){if(f===a.x&&g===a.y)h.push(a);else{let a=b.rows[g][f];if(!a.isFilled())break;h.push(a.clone())}f+=d,g+=e}return h}},43734:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Cell=void 0;let d=c(35722);class e{constructor({isEmpty:a=!0,tile:b=d.Tile.Null,x:c,y:e}){this.isEmpty=a,this.tile=b,this.x=c,this.y=e}clone(){return new e({isEmpty:this.isEmpty,tile:this.tile.clone(),x:this.x,y:this.y})}equals(a){return this.x===a.x&&this.y===a.y&&this.isEmpty===a.isEmpty&&this.tile.equals(a.tile)}hasTile(){return this.tile!==d.Tile.Null}isCandidate(){return this.isEmpty&&this.hasTile()}isFilled(){return!this.isEmpty&&this.hasTile()}toJson(){return{isEmpty:this.isEmpty,tile:this.tile.toJson(),x:this.x,y:this.y}}toString(){return this.tile.toString()}}b.Cell=e,e.fromJson=a=>new e({isEmpty:a.isEmpty,tile:d.Tile.fromJson(a.tile),x:a.x,y:a.y})},45582:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isGame=void 0;let d=Object.values(c(48852).Game);b.isGame=a=>d.includes(a)},48852:(a,b)=>{var c,d;Object.defineProperty(b,"__esModule",{value:!0}),b.Game=void 0,(d=c||(b.Game=c={})).Crossplay="crossplay",d.Kelimelik="kelimelik",d.LetterLeague="letter-league",d.Literaki="literaki",d.Scrabble="scrabble",d.ScrabbleDuel="scrabble-duel",d.SuperScrabble="super-scrabble"},49085:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadDictionary=void 0;let d=c(11366),e=c(57519),f=c(27475);b.downloadDictionary=async a=>{e.logger.info("downloadDictionary",{locale:a});let b=await (0,f.getWordList)(a);e.logger.info("downloadDictionary - success",{locale:a});let c=d.Gaddag.fromArray(b);return e.logger.info("downloadDictionary - gaddag built",{locale:a}),c}},51385:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordDefinition=void 0;class c{constructor({definitions:a,exists:b,isAllowed:c,word:d}){this.definitions=a,this.exists=b,this.isAllowed=c,this.word=d}toJson(){return{definitions:this.definitions,exists:this.exists,isAllowed:this.isAllowed,word:this.word}}}b.WordDefinition=c,c.fromJson=a=>a?new c({definitions:a.definitions,exists:a.exists,isAllowed:a.isAllowed,word:a.word}):c.Null,c.Null=Object.freeze({definitions:[],exists:!1,isAllowed:!1,word:"",toJson:()=>null})},51513:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.logger=void 0;let e=d(c(33873)),f=c(55124),g=c(26220);b.logger=(0,f.createLogger)({level:"info",format:f.format.combine(f.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),f.format.errors({stack:!0}),f.format.splat(),f.format.json(),f.format.prettyPrint()),transports:[new f.transports.File({filename:e.default.resolve(g.OUTPUT_DIRECTORY,"error.log"),level:"error"}),new f.transports.File({filename:e.default.resolve(g.OUTPUT_DIRECTORY,"all.log")}),new f.transports.Console({format:f.format.combine(f.format.colorize(),f.format.simple()),level:"error"})]})},52250:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadHtml=void 0;let d=c(31097);b.downloadHtml=a=>new Promise((b,c)=>{(a.startsWith("https")?d.https:d.http).get(a,a=>{let d="";a.setEncoding("utf8"),a.on("data",a=>{d+=a}),a.on("end",()=>{b(d)}),a.on("error",c)})})},52498:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getTempFilepath=void 0;let e=d(c(21820)),f=d(c(33873)),g=c(93839),h=f.default.resolve(e.default.homedir(),".scrabble-solver");b.getTempFilepath=()=>{let a=`${(0,g.getHash)()}.txt`;return f.default.join(h,a)}},52680:(a,b)=>{var c,d;Object.defineProperty(b,"__esModule",{value:!0}),b.Locale=void 0,(d=c||(b.Locale=c={})).DE_DE="de-DE",d.EN_GB="en-GB",d.EN_US="en-US",d.ES_ES="es-ES",d.FA_IR="fa-IR",d.FR_FR="fr-FR",d.PL_PL="pl-PL",d.RO_RO="ro-RO",d.TR_TR="tr-TR"},54182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Board=void 0;let d=c(34474),e=c(43734),f=c(31090),g=c(35722);class h{static fromStringArray(a){return new h({rows:a.map((a,b)=>a.split("").map((a,c)=>new e.Cell({isEmpty:!a||a===d.EMPTY_CELL,tile:a===d.EMPTY_CELL?g.Tile.Null:new g.Tile({character:a}),x:c,y:b})))})}constructor({rows:a}){this.rows=a,this.columnsCount=a[0].length,this.rowsCount=a.length}get center(){let a=Math.floor(this.columnsCount/2),b=Math.floor(this.rowsCount/2);return this.rows[b][a]}clone(){return new h({rows:this.rows.map(a=>a.map(a=>a.clone()))})}collides(a){return this.collidesUp(a)||this.collidesDown(a)||this.collidesLeft(a)||this.collidesRight(a)}collidesDown({x:a,y:b}){return b<this.rowsCount-1&&!this.rows[b+1][a].isEmpty}collidesLeft({x:a,y:b}){return a>0&&!this.rows[b][a-1].isEmpty}collidesRight({x:a,y:b}){return a<this.columnsCount-1&&!this.rows[b][a+1].isEmpty}collidesUp({x:a,y:b}){return b>0&&!this.rows[b-1][a].isEmpty}equals(a){return this.columnsCount===a.columnsCount&&this.rowsCount===a.rowsCount&&this.rows.every((b,c)=>b.every((b,d)=>b.equals(a.rows[c][d])))}getBlanksCount(){return this.rows.reduce((a,b)=>a+b.reduce((a,b)=>a+ +!!b.tile.isBlank,0),0)}getCollidingWords(a){return(0,f.getCollidingWords)(this,a)}getColumn(a){return this.rows.map(b=>b[a])}getRow(a){return this.rows[a]}getTilesCount(){return this.rows.reduce((a,b)=>a+b.reduce((a,b)=>a+ +!!b.hasTile(),0),0)}getWords(){return(0,f.getBoardWords)(this)}isEmpty(){return this.rows.every(a=>a.every(({isEmpty:a})=>a))}toJson(){return this.rows.map(a=>a.map(a=>a.toJson()))}toString(){return this.rows.map(a=>a.map(String).join("")).join("\n")}updateCell(a,b,c){this.rows[b][a]=c(this.rows[b][a])}updateRow(a,b){this.rows[a]=b(this.rows[a])}}b.Board=h,h.create=(a,b)=>{let c=Array(b),d=Array(a).fill(" ").join(""),e=c.fill(d);return h.fromStringArray(e)},h.fromJson=a=>new h({rows:a.map(a=>a.map(e.Cell.fromJson))})},57103:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Bonus=void 0;class c{constructor({multiplier:a,score:b,x:c,y:d}){this.multiplier=a,this.score=b,this.x=c,this.y=d}canApply(a,b){return b.isEmpty&&this.matchesCellCoordinates(b)}matchesCellCoordinates(a){return this.x===a.x&&this.y===a.y}toJson(){return{multiplier:this.multiplier,score:this.score,type:this.type,x:this.x,y:this.y}}get value(){return{characterMultiplier:1,wordMultiplier:1}}}b.Bonus=c},57519:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.logger=void 0;var d=c(51513);Object.defineProperty(b,"logger",{enumerable:!0,get:function(){return d.logger}})},59321:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.unzip=void 0;let e=d(c(29021)),f=d(c(42029));b.unzip=(a,b,c)=>e.default.createReadStream(a).pipe(f.default.Parse()).on("entry",a=>{a.path===b?a.pipe(e.default.createWriteStream(c)):a.autodrain()}).promise()},61787:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.transpose=function(a){let b=a.length,c=a[0].length,d=Array(c).fill(null).map(()=>Array(b));for(let e=0;e<b;++e)for(let b=0;b<c;++b)d[b][e]=a[e][b];return d}},62174:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isMultiplierBingo=void 0;let d=c(16185);b.isMultiplierBingo=a=>(0,d.isObject)(a)&&"multiplier"in a&&"number"==typeof a.multiplier},62579:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.OUTPUT_DIRECTORY=b.CACHE_STALE_THRESHOLD=b.DAY=void 0;let e=d(c(21820)),f=d(c(33873));b.DAY=864e5,b.CACHE_STALE_THRESHOLD=+b.DAY,b.OUTPUT_DIRECTORY=f.default.resolve(e.default.homedir(),".scrabble-solver","dictionaries")},63903:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordsInRows=function(a,b){let c=[];for(let e of a){let a=[];for(let f of e)f.isEmpty?a.length>0&&(a.length>1&&c.push((0,d.toBoardWord)(a,b)),a=[]):a.push(f);a.length>1&&c.push((0,d.toBoardWord)(a,b))}return c};let d=c(94335)},65118:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isBoardJson=void 0;let d=c(24954);b.isBoardJson=a=>{if(!Array.isArray(a))return!1;for(let b of a){if(!Array.isArray(b))return!1;for(let a of b)if(!(0,d.isCellJson)(a))return!1}return!0}},67511:function(a,b,c){var d,e=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),f=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),g=this&&this.__importStar||(d=function(a){return(d=Object.getOwnPropertyNames||function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[b.length]=c);return b})(a)},function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c=d(a),g=0;g<c.length;g++)"default"!==c[g]&&e(b,a,c[g]);return f(b,a),b});Object.defineProperty(b,"__esModule",{value:!0}),b.turkish=b.spanish=b.romanian=b.polish=b.persian=b.french=b.german=b.english=void 0,b.english=g(c(80119)),b.german=g(c(37779)),b.french=g(c(10305)),b.persian=g(c(91135)),b.polish=g(c(72794)),b.romanian=g(c(82248)),b.spanish=g(c(39287)),b.turkish=g(c(92639))},67699:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordBonus=void 0;let d=c(34474),e=c(57103);class f extends e.Bonus{constructor(){super(...arguments),this.type=d.BONUS_WORD}get value(){return{characterMultiplier:1,wordMultiplier:this.multiplier}}}b.WordBonus=f},70294:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.MemoryCache=void 0;let d=c(62579);class e{constructor(){this.cache={},this.cacheTimestamps={}}get(a){return Promise.resolve(this.cache[a])}getLastModifiedTimestamp(a){return this.cacheTimestamps[a]}has(a){return void 0!==this.cache[a]}isStale(a){let b=this.getLastModifiedTimestamp(a);if(this.has(a)&&void 0!==b)return Math.abs(b-Date.now())>d.CACHE_STALE_THRESHOLD}set(a,b){return this.cacheTimestamps[a]=Date.now(),this.cache[a]=b,Promise.resolve()}}b.MemoryCache=e},70928:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.DiskCache=void 0;let e=c(11366),f=c(57519),g=d(c(29021)),h=c(62579),i=c(1356);class j{constructor(a=h.OUTPUT_DIRECTORY){this.directory=a}async get(a){if(!this.has(a))return;let b=(0,i.getDictionaryFilepath)(a,this.directory);try{let a=await g.default.promises.readFile(b);return e.Gaddag.deserialize(new Uint8Array(a.buffer,a.byteOffset,a.byteLength))}catch(c){f.logger.warn("DiskCache - incompatible or corrupted dictionary file, it will be rebuilt",{error:c,locale:a}),await g.default.promises.rm(b,{force:!0});return}}getLastModifiedTimestamp(a){let b=(0,i.getDictionaryFilepath)(a,this.directory);if(g.default.existsSync(b))return g.default.statSync(b).mtimeMs}has(a){let b=(0,i.getDictionaryFilepath)(a,this.directory);return g.default.existsSync(b)}isStale(a){if(!this.has(a))return;let b=this.getLastModifiedTimestamp(a);if(void 0!==b)return Math.abs(b-Date.now())>h.CACHE_STALE_THRESHOLD}async set(a,b){let c=(0,i.getDictionaryFilepath)(a,this.directory);await g.default.promises.writeFile(c,b.serialize()),await g.default.promises.rm((0,i.getLegacyDictionaryFilepath)(a,this.directory),{force:!0})}}b.DiskCache=j},72794:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let e=c(29562),f=c(14217),g=d(c(29021)),h=c(79551),i=c(98335);b.getWordList=async()=>{try{let a=(0,i.getTempFilepath)(),b=await j("https://sjp.pl/sl/growy/"),c=await (0,i.downloadFile)(b);await (0,i.unzip)(c,"slowa.txt",a),g.default.unlinkSync(c);let d=g.default.readFileSync(a,"utf-8");g.default.unlinkSync(a);let e=(0,i.extractWords)(d.toLocaleString(),"pl-PL");if(e.length<2e6)return l();return e}catch{return l()}};let j=async a=>{let b=k(await (0,i.downloadHtml)(a)),{href:c}=new h.URL(b,a);return c},k=a=>{let b=(0,f.load)(a),c=Array.from(b("a")).map(a=>b(a).attr("href")).filter(Boolean).find(a=>a.endsWith(".zip"));if(void 0===c)throw Error("Cannot find link to zip file on the page");return c},l=()=>(0,i.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/polish/sjp.txt",e.Locale.PL_PL)},75494:(a,b,c)=>{c.d(b,{T:()=>d});let d=a=>({origin:a.headers.origin,referer:a.headers.referer,userAgent:a.headers["user-agent"],xForwardedFor:a.headers["x-forwarded-for"],xRealIp:a.headers["x-real-ip"]})},77279:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.downloadFile=void 0;let e=c(31097),f=d(c(29021)),g=c(52498);b.downloadFile=a=>new Promise((b,c)=>{let d=(0,g.getTempFilepath)(),h=a.startsWith("https")?e.https:e.http,i=f.default.createWriteStream(d);h.get(a,e=>{void 0===e.statusCode||e.statusCode>=400?c(Error(`Cannot download file: ${a}`)):(e.on("error",a=>{i.close(),c(a)}),e.on("end",()=>{i.on("finish",()=>{i.close(),b(d)})}),e.pipe(i))}).on("error",a=>{i.close(),c(a)})})},77715:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.dictionaries=void 0;let f=c(90949);e(c(2655),b),b.dictionaries=new f.Dictionaries},79728:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isTileJson=b.isScoreBingo=b.isObject=b.isMultiplierBingo=b.isLocale=b.isGame=b.isError=b.isCellJson=b.isBoardJson=b.isBingo=void 0;var d=c(33985);Object.defineProperty(b,"isBingo",{enumerable:!0,get:function(){return d.isBingo}});var e=c(65118);Object.defineProperty(b,"isBoardJson",{enumerable:!0,get:function(){return e.isBoardJson}});var f=c(24954);Object.defineProperty(b,"isCellJson",{enumerable:!0,get:function(){return f.isCellJson}});var g=c(93810);Object.defineProperty(b,"isError",{enumerable:!0,get:function(){return g.isError}});var h=c(45582);Object.defineProperty(b,"isGame",{enumerable:!0,get:function(){return h.isGame}});var i=c(678);Object.defineProperty(b,"isLocale",{enumerable:!0,get:function(){return i.isLocale}});var j=c(62174);Object.defineProperty(b,"isMultiplierBingo",{enumerable:!0,get:function(){return j.isMultiplierBingo}});var k=c(16185);Object.defineProperty(b,"isObject",{enumerable:!0,get:function(){return k.isObject}});var l=c(85207);Object.defineProperty(b,"isScoreBingo",{enumerable:!0,get:function(){return l.isScoreBingo}});var m=c(89106);Object.defineProperty(b,"isTileJson",{enumerable:!0,get:function(){return m.isTileJson}})},80119:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordListUs=b.getWordListGb=void 0;let d=c(29562),e=c(98335);b.getWordListGb=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/sowpods.txt",d.Locale.EN_GB),b.getWordListUs=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/twl06.txt",d.Locale.EN_US)},80457:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.createAsyncProxy=void 0,b.createAsyncProxy=a=>{let b=null;return async()=>{if(b)return b;try{return b=a(),await b}finally{b=null}}}},81029:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordThrough=function(a,b,c,e){let f=+("horizontal"===e),g=+("horizontal"!==e),h=b,i=c;for(;h-f>=0&&i-g>=0&&!a.rows[i-g][h-f].isEmpty;)h-=f,i-=g;let j=[],k=h,l=i;for(;k<a.columnsCount&&l<a.rowsCount&&!a.rows[l][k].isEmpty;)j.push(a.rows[l][k]),k+=f,l+=g;return j.length>1?(0,d.toBoardWord)(j,e):void 0};let d=c(94335)},82248:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt",d.Locale.RO_RO);return(0,e.transliterateDiacritics)(a)}},84960:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCollidingWords=function(a,b){let c="horizontal"===b.direction,e=c?"vertical":"horizontal",f=[],{x:g,y:h}=b;for(;g<a.columnsCount&&h<a.rowsCount&&!a.rows[h][g].isEmpty;){let b=(0,d.getWordThrough)(a,g,h,e);b&&f.push(b),g+=+!!c,h+=+!c}return f};let d=c(81029)},85207:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isScoreBingo=void 0;let d=c(16185);b.isScoreBingo=a=>(0,d.isObject)(a)&&"score"in a&&"number"==typeof a.score},89106:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isTileJson=void 0;let d=c(16185);b.isTileJson=a=>(0,d.isObject)(a)&&"string"==typeof a.character&&"boolean"==typeof a.isBlank},90949:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.Dictionaries=void 0;let e=c(57519),f=c(29562),g=d(c(29021)),h=c(62579),i=c(2655);class j{constructor(){this.cache=new i.LayeredCache,this.downloadDictionaryProxies=Object.fromEntries(Object.values(f.Locale).map(a=>[a,(0,i.createAsyncProxy)(()=>(0,i.downloadDictionary)(a))]))}async get(a){if(this.cache.has(a)){let b=await this.cache.get(a);if(b)return b}return e.logger.info("Dictionaries - cache miss",{locale:a}),this.updateDictionary(a)}remove(){g.default.rmdirSync(h.OUTPUT_DIRECTORY,{recursive:!0})}async update(a){let b=a?Object.values(f.Locale):this.getLocalesToUpdate();e.logger.info("Dictionaries - update",{force:a,locales:b}),await Promise.all(b.map(a=>this.updateDictionary(a)))}getLocalesToUpdate(){return Object.values(f.Locale).filter(a=>!1!==this.cache.isStale(a))}async updateDictionary(a){e.logger.info("Dictionaries - updateDictionary",{locale:a}),g.default.mkdirSync(h.OUTPUT_DIRECTORY,{recursive:!0});let b=this.downloadDictionaryProxies[a],c=await b();return await this.cache.set(a,c),c}}b.Dictionaries=j},91135:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/persian/persian.txt",d.Locale.FA_IR)},92289:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCells=function(a,b){let c=+!!b.isHorizontal,e=+!b.isHorizontal,f=[],g=0,{x:h,y:i}=b;for(;i<a.rowsCount&&h<a.columnsCount;){let j=a.rows[i][h];if(j.isFilled())f.push(j.clone());else if(g<b.tiles.length)f.push((0,d.getPlacedCell)(b,g,h,i)),g+=1;else break;h+=c,i+=e}return f};let d=c(5461)},92639:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/turkish/kelimelik.txt",d.Locale.TR_TR)},93810:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isError=void 0;let d=c(16185);b.isError=a=>!!(0,d.isObject)(a)&&"string"==typeof a.message},93839:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getHash=void 0;let e=d(c(55511));b.getHash=(a=8)=>e.default.randomBytes(a).toString("hex")},94335:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.toBoardWord=function(a,b){return{direction:b,word:a.map(a=>a.tile.character).join(""),x:a[0].x,y:a[0].y}}},95776:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Config=void 0;let d=c(34474),e=c(24392),f=c(67699);class g{constructor(a){this.bonuses=h(a),this.config=a,this.pointsMap=j(this.config)}get alphabet(){return i(this.config)}get bingo(){return this.config.bingo}get blankScore(){return this.config.blankScore}get blanksCount(){return this.config.blanksCount}get boardHeight(){return this.config.boardHeight}get boardWidth(){return this.config.boardWidth}get game(){return this.config.game}get locale(){return this.config.locale}get twoCharacterTiles(){return this.config.tiles.filter(a=>2===a.character.length).map(a=>a.character)}getCellBonus(a){return this.bonuses.find(b=>b.matchesCellCoordinates(a))}getCellBonusValue(a){return this.getCellBonus(a)?.value||d.NO_BONUS}getCharacterPoints(a){if(null!==a)return a===d.BLANK?this.blankScore:this.pointsMap[a]}getTwoCharacterTileByPrefix(a){if(1===a.length)return this.twoCharacterTiles.find(b=>b.startsWith(a.toLocaleLowerCase()))}getTilePoints(a){if(null!==a)return a.isBlank?this.blankScore:this.getCharacterPoints(a.character)}hasCharacter(a){return a in this.pointsMap}isTwoCharacterTilePrefix(a){return void 0!==this.getTwoCharacterTileByPrefix(a)}get rackSize(){return this.config.rackSize}get supportsRemainingTiles(){return this.tiles.every(a=>"number"==typeof a.count)}get tiles(){return this.config.tiles}toJson(){return this.config}}b.Config=g,g.fromJson=a=>new g(a);let h=a=>a.bonuses.map(a=>{if(a.type===d.BONUS_CHARACTER)return new e.CharacterBonus(a);if(a.type===d.BONUS_WORD)return new f.WordBonus(a);throw Error(`Unsupported Bonus type: "${a.type}"`)}),i=a=>a.tiles.map(({character:a})=>a),j=a=>a.tiles.reduce((a,{character:b,score:c})=>({...a,[b]:c}),{})},98335:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.unzip=b.unique=b.transliterateDiacritics=b.getTxtWordList=b.getTempFilepath=b.getHash=b.findFirstWordIndex=b.extractWords=b.downloadHtml=b.downloadFile=void 0;var d=c(77279);Object.defineProperty(b,"downloadFile",{enumerable:!0,get:function(){return d.downloadFile}});var e=c(52250);Object.defineProperty(b,"downloadHtml",{enumerable:!0,get:function(){return e.downloadHtml}});var f=c(33471);Object.defineProperty(b,"extractWords",{enumerable:!0,get:function(){return f.extractWords}});var g=c(5878);Object.defineProperty(b,"findFirstWordIndex",{enumerable:!0,get:function(){return g.findFirstWordIndex}});var h=c(93839);Object.defineProperty(b,"getHash",{enumerable:!0,get:function(){return h.getHash}});var i=c(52498);Object.defineProperty(b,"getTempFilepath",{enumerable:!0,get:function(){return i.getTempFilepath}});var j=c(5145);Object.defineProperty(b,"getTxtWordList",{enumerable:!0,get:function(){return j.getTxtWordList}});var k=c(38670);Object.defineProperty(b,"transliterateDiacritics",{enumerable:!0,get:function(){return k.transliterateDiacritics}});var l=c(40224);Object.defineProperty(b,"unique",{enumerable:!0,get:function(){return l.unique}});var m=c(59321);Object.defineProperty(b,"unzip",{enumerable:!0,get:function(){return m.unzip}})}};
1
+ "use strict";exports.id=392,exports.ids=[392],exports.modules={678:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isLocale=void 0;let d=Object.values(c(52680).Locale);b.isLocale=a=>d.includes(a)},1356:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getLegacyDictionaryFilepath=b.getDictionaryFilepath=void 0;let e=d(c(33873)),f=c(62579);b.getDictionaryFilepath=(a,b=f.OUTPUT_DIRECTORY)=>e.default.resolve(b,`${a}.gaddag`),b.getLegacyDictionaryFilepath=(a,b=f.OUTPUT_DIRECTORY)=>e.default.resolve(b,`${a}.txt`)},2655:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.MemoryCache=b.LayeredCache=b.getDictionaryFilepath=b.downloadDictionary=b.DiskCache=b.createCacheTimestampComparator=b.createAsyncProxy=void 0;var d=c(80457);Object.defineProperty(b,"createAsyncProxy",{enumerable:!0,get:function(){return d.createAsyncProxy}});var e=c(10743);Object.defineProperty(b,"createCacheTimestampComparator",{enumerable:!0,get:function(){return e.createCacheTimestampComparator}});var f=c(70928);Object.defineProperty(b,"DiskCache",{enumerable:!0,get:function(){return f.DiskCache}});var g=c(49085);Object.defineProperty(b,"downloadDictionary",{enumerable:!0,get:function(){return g.downloadDictionary}});var h=c(1356);Object.defineProperty(b,"getDictionaryFilepath",{enumerable:!0,get:function(){return h.getDictionaryFilepath}});var i=c(16299);Object.defineProperty(b,"LayeredCache",{enumerable:!0,get:function(){return i.LayeredCache}});var j=c(70294);Object.defineProperty(b,"MemoryCache",{enumerable:!0,get:function(){return j.MemoryCache}})},4860:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isSameBoardWord=function(a,b){return a.direction===b.direction&&a.x===b.x&&a.y===b.y}},5145:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getTxtWordList=void 0;let e=d(c(29021)),f=c(77279),g=c(33471);b.getTxtWordList=async(a,b)=>{let c=await (0,f.downloadFile)(a),d=e.default.readFileSync(c,"utf-8"),h=(0,g.extractWords)(d.toLocaleString(),b);return e.default.unlinkSync(c),h}},5461:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getPlacedCell=function(a,b,c,f){let g=a.tiles[b],h=a.blankIndices.includes(b);return new d.Cell({isEmpty:!0,tile:new e.Tile({character:g,isBlank:h}),x:c,y:f})};let d=c(43734),e=c(35722)},5878:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.findFirstWordIndex=void 0,b.findFirstWordIndex=(a,b)=>{let c=a.findIndex((a,c)=>{let d=a[c+1]||"",e=a.localeCompare(d,b)>0,f=!!a.match(/\s/);return 0!==a.trim().length&&!f&&e});if(void 0===c)throw Error("Cannot find index of the first word in the file");return c}},9205:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getBoardWords=function(a){return[...(0,d.getWordsInRows)(a.rows,"horizontal"),...(0,d.getWordsInRows)((0,e.transpose)(a.rows),"vertical")]};let d=c(63903),e=c(61787)},10305:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/french/ods8.txt",d.Locale.FR_FR);return(0,e.transliterateDiacritics)(a)}},10743:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.createCacheTimestampComparator=void 0,b.createCacheTimestampComparator=a=>(b,c)=>{let d=b.getLastModifiedTimestamp(a),e=c.getLastModifiedTimestamp(a);return d===e?0:void 0===d?1:void 0===e?-1:e-d}},16185:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isObject=void 0,b.isObject=a=>"object"==typeof a&&null!==a},16299:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.LayeredCache=void 0;let d=c(10743),e=c(70928),f=c(70294);class g{constructor(){this.layers=[new f.MemoryCache,new e.DiskCache]}async get(a){let b=this.getLastModifiedLayer(a);if(!b)return Promise.resolve(void 0);let[c,d]=this.layers,e=await b.get(a);return b===d&&void 0!==e&&await c.set(a,e),e}getLastModifiedTimestamp(a){let b=this.getLastModifiedLayer(a);if(b)return b.getLastModifiedTimestamp(a)}has(a){return this.layers.some(b=>b.has(a))}isStale(a){return!!this.layers.some(b=>b.isStale(a))||!!this.layers.every(b=>void 0===b.isStale(a))&&void 0}async set(a,b){let[c,d]=this.layers;await d.set(a,b),await c.set(a,b)}getLastModifiedLayer(a){let[b]=[...this.layers.filter(b=>b.has(a))].sort((0,d.createCacheTimestampComparator)(a));return b}}b.LayeredCache=g},24392:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.CharacterBonus=void 0;let d=c(34474),e=c(57103);class f extends e.Bonus{constructor(){super(...arguments),this.type=d.BONUS_CHARACTER}canApply(a,b){return super.canApply(a,b)&&this.matchesCellTileScore(a,b)}matchesCellTileScore(a,b){return void 0===this.score||this.score===a.pointsMap[b.tile.character]}get value(){return{characterMultiplier:this.multiplier,wordMultiplier:1}}}b.CharacterBonus=f},24954:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isCellJson=void 0;let d=c(16185),e=c(89106);b.isCellJson=a=>(0,d.isObject)(a)&&"boolean"==typeof a.isEmpty&&((0,e.isTileJson)(a.tile)||null===a.tile)&&"number"==typeof a.x&&"number"==typeof a.y},26220:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.OUTPUT_DIRECTORY=void 0;let e=d(c(21820));b.OUTPUT_DIRECTORY=d(c(33873)).default.resolve(e.default.homedir(),".scrabble-solver","logs")},27475:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;var f=c(42507);Object.defineProperty(b,"getWordList",{enumerable:!0,get:function(){return f.getWordList}}),e(c(67511),b),e(c(98335),b)},27605:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Result=void 0;let d=c(34474),e=c(31090);class f{constructor({cells:a,id:b,collisions:c,points:d}){const e=k(a);this.blanksCount=g(e).length,this.cells=a,this.collisions=c,this.consonantsCount=h(e).length,this.id=b,this.length=a.length,this.points=d,this.pointsRatio=j(e,d),this.tiles=e,this.tilesCount=e.length,this.vowelsCount=i(e).length,this.word=l(a),this.words=m(a,c),this.wordsCount=1+this.collisions.length}toJson(){let a=this.cells.filter(a=>a.isEmpty);return{blankIndices:a.flatMap((a,b)=>a.tile.isBlank?[b]:[]),id:this.id,isHorizontal:this.isHorizontal(),points:this.points,tiles:a.map(a=>a.tile.character),x:this.cells[0].x,y:this.cells[0].y}}isHorizontal(){return this.cells[0].y===this.cells[1].y}isVertical(){return this.cells[0].x===this.cells[1].x}}b.Result=f,f.fromJson=(a,b)=>{let c=(0,e.getCells)(b,a);return new f({cells:c,collisions:(0,e.getCollisions)(b,c,a.isHorizontal),id:a.id,points:a.points})};let g=a=>a.filter(({isBlank:a})=>a),h=a=>a.filter(n),i=a=>a.filter(o),j=(a,b)=>b/a.length,k=a=>a.filter(({isEmpty:a})=>a).map(({tile:a})=>a),l=a=>a.reduce((a,b)=>a+b.toString(),""),m=(a,b)=>[a,...b].map(l),n=({character:a,isBlank:b})=>d.CONSONANTS.includes(a)&&!b,o=({character:a,isBlank:b})=>d.VOWELS.includes(a)&&!b},29562:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordDefinition=b.WordBonus=b.isTileJson=b.isScoreBingo=b.isObject=b.isMultiplierBingo=b.isLocale=b.isGame=b.isError=b.isCellJson=b.isBoardJson=b.isBingo=b.Tile=b.Result=b.Locale=b.isSameBoardWord=b.Game=b.Config=b.CharacterBonus=b.Cell=b.Bonus=b.Board=void 0;var d=c(54182);Object.defineProperty(b,"Board",{enumerable:!0,get:function(){return d.Board}});var e=c(57103);Object.defineProperty(b,"Bonus",{enumerable:!0,get:function(){return e.Bonus}});var f=c(43734);Object.defineProperty(b,"Cell",{enumerable:!0,get:function(){return f.Cell}});var g=c(24392);Object.defineProperty(b,"CharacterBonus",{enumerable:!0,get:function(){return g.CharacterBonus}});var h=c(95776);Object.defineProperty(b,"Config",{enumerable:!0,get:function(){return h.Config}});var i=c(48852);Object.defineProperty(b,"Game",{enumerable:!0,get:function(){return i.Game}});var j=c(31090);Object.defineProperty(b,"isSameBoardWord",{enumerable:!0,get:function(){return j.isSameBoardWord}});var k=c(52680);Object.defineProperty(b,"Locale",{enumerable:!0,get:function(){return k.Locale}});var l=c(27605);Object.defineProperty(b,"Result",{enumerable:!0,get:function(){return l.Result}});var m=c(35722);Object.defineProperty(b,"Tile",{enumerable:!0,get:function(){return m.Tile}});var n=c(79728);Object.defineProperty(b,"isBingo",{enumerable:!0,get:function(){return n.isBingo}}),Object.defineProperty(b,"isBoardJson",{enumerable:!0,get:function(){return n.isBoardJson}}),Object.defineProperty(b,"isCellJson",{enumerable:!0,get:function(){return n.isCellJson}}),Object.defineProperty(b,"isError",{enumerable:!0,get:function(){return n.isError}}),Object.defineProperty(b,"isGame",{enumerable:!0,get:function(){return n.isGame}}),Object.defineProperty(b,"isLocale",{enumerable:!0,get:function(){return n.isLocale}}),Object.defineProperty(b,"isMultiplierBingo",{enumerable:!0,get:function(){return n.isMultiplierBingo}}),Object.defineProperty(b,"isObject",{enumerable:!0,get:function(){return n.isObject}}),Object.defineProperty(b,"isScoreBingo",{enumerable:!0,get:function(){return n.isScoreBingo}}),Object.defineProperty(b,"isTileJson",{enumerable:!0,get:function(){return n.isTileJson}});var o=c(67699);Object.defineProperty(b,"WordBonus",{enumerable:!0,get:function(){return o.WordBonus}});var p=c(51385);Object.defineProperty(b,"WordDefinition",{enumerable:!0,get:function(){return p.WordDefinition}})},31090:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),e(c(9205),b),e(c(92289),b),e(c(84960),b),e(c(38649),b),e(c(4860),b)},33471:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.extractWords=void 0;let d=c(5878);b.extractWords=(a,b)=>{let c=a.split(/\r?\n/g),e=(0,d.findFirstWordIndex)(c,b),f=[];for(let a=e;a<c.length;++a){let b=c[a].trim();b.length>0&&f.push(b.toLocaleLowerCase())}return f}},33985:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isBingo=void 0;let d=c(62174),e=c(85207);b.isBingo=a=>(0,e.isScoreBingo)(a)||(0,d.isMultiplierBingo)(a)},34474:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.VOWELS=b.CONSONANTS=b.NO_BONUS=b.EMPTY_CELL=b.BONUS_WORD=b.BONUS_CHARACTER=b.BLANK=b.COMMA_LATIN=b.COMMA_ARABIC=void 0,b.COMMA_ARABIC="،",b.COMMA_LATIN=",",b.BLANK=" ",b.BONUS_CHARACTER="BONUS_CHARACTER",b.BONUS_WORD="BONUS_WORD",b.EMPTY_CELL=" ",b.NO_BONUS={characterMultiplier:1,wordMultiplier:1},b.CONSONANTS="bc\xe7ćdfgğhjklłmnń\xf1pqrsşśtvwxzźż".split(""),b.VOWELS="aą\xe4eęio\xf3\xf6u\xfcyı".split("")},35722:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Tile=void 0;let d=c(34474);class e{constructor({character:a,isBlank:b=!1}){this.character=a,this.isBlank=b}clone(){return new e({character:this.character,isBlank:this.isBlank})}equals(a){return this.character===a.character&&this.isBlank===a.isBlank}toJson(){return{character:this.character,isBlank:this.isBlank}}toString(){return this.character}}b.Tile=e,e.fromJson=a=>a?new e({character:a.character,isBlank:a.isBlank}):e.Null,e.Null=Object.freeze({character:d.EMPTY_CELL,isBlank:!1,clone:()=>e.Null,equals:a=>a===e.Null,toJson:()=>null,toString:()=>d.EMPTY_CELL})},37779:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/german/german.txt",d.Locale.DE_DE)},38649:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCollisions=function(a,b,c){let e=[];for(let f of b){if(f.isFilled())continue;let b=(0,d.getCollision)(f,a,c);b.length>1&&e.push(b)}return e};let d=c(43018)},38670:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.transliterateDiacritics=void 0;let d=c(66605),e=c(40224);b.transliterateDiacritics=(a,b)=>(0,e.unique)(a.map(a=>(0,d.transliterate)(a,b)))},39287:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/file-2017.txt",d.Locale.ES_ES);return(0,e.transliterateDiacritics)(a,{ignore:["\xf1"]})}},40224:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.unique=void 0,b.unique=a=>Array.from(new Set(a))},42507:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(67511),f={[d.Locale.DE_DE]:e.german.getWordList,[d.Locale.EN_GB]:e.english.getWordListGb,[d.Locale.EN_US]:e.english.getWordListUs,[d.Locale.ES_ES]:e.spanish.getWordList,[d.Locale.FA_IR]:e.persian.getWordList,[d.Locale.FR_FR]:e.french.getWordList,[d.Locale.PL_PL]:e.polish.getWordList,[d.Locale.RO_RO]:e.romanian.getWordList,[d.Locale.TR_TR]:e.turkish.getWordList};b.getWordList=a=>f[a]()},43018:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCollision=function(a,b,c){let d=+!c,e=+!!c,f=a.x-d,g=a.y-e;for(;f>=0&&g>=0&&b.rows[g][f].isFilled();)f-=d,g-=e;f+=d,g+=e;let h=[];for(;g<b.rowsCount&&f<b.columnsCount;){if(f===a.x&&g===a.y)h.push(a);else{let a=b.rows[g][f];if(!a.isFilled())break;h.push(a.clone())}f+=d,g+=e}return h}},43734:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Cell=void 0;let d=c(35722);class e{constructor({isEmpty:a=!0,tile:b=d.Tile.Null,x:c,y:e}){this.isEmpty=a,this.tile=b,this.x=c,this.y=e}clone(){return new e({isEmpty:this.isEmpty,tile:this.tile.clone(),x:this.x,y:this.y})}equals(a){return this.x===a.x&&this.y===a.y&&this.isEmpty===a.isEmpty&&this.tile.equals(a.tile)}hasTile(){return this.tile!==d.Tile.Null}isCandidate(){return this.isEmpty&&this.hasTile()}isFilled(){return!this.isEmpty&&this.hasTile()}toJson(){return{isEmpty:this.isEmpty,tile:this.tile.toJson(),x:this.x,y:this.y}}toString(){return this.tile.toString()}}b.Cell=e,e.fromJson=a=>new e({isEmpty:a.isEmpty,tile:d.Tile.fromJson(a.tile),x:a.x,y:a.y})},45582:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isGame=void 0;let d=Object.values(c(48852).Game);b.isGame=a=>d.includes(a)},48852:(a,b)=>{var c,d;Object.defineProperty(b,"__esModule",{value:!0}),b.Game=void 0,(d=c||(b.Game=c={})).Crossplay="crossplay",d.Kelimelik="kelimelik",d.LetterLeague="letter-league",d.Literaki="literaki",d.Scrabble="scrabble",d.ScrabbleDuel="scrabble-duel",d.SuperScrabble="super-scrabble",d.Wyrazy="wyrazy"},49085:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadDictionary=void 0;let d=c(11366),e=c(57519),f=c(27475);b.downloadDictionary=async a=>{e.logger.info("downloadDictionary",{locale:a});let b=await (0,f.getWordList)(a);e.logger.info("downloadDictionary - success",{locale:a});let c=d.Gaddag.fromArray(b);return e.logger.info("downloadDictionary - gaddag built",{locale:a}),c}},51385:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordDefinition=void 0;class c{constructor({definitions:a,exists:b,isAllowed:c,word:d}){this.definitions=a,this.exists=b,this.isAllowed=c,this.word=d}toJson(){return{definitions:this.definitions,exists:this.exists,isAllowed:this.isAllowed,word:this.word}}}b.WordDefinition=c,c.fromJson=a=>a?new c({definitions:a.definitions,exists:a.exists,isAllowed:a.isAllowed,word:a.word}):c.Null,c.Null=Object.freeze({definitions:[],exists:!1,isAllowed:!1,word:"",toJson:()=>null})},51513:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.logger=void 0;let e=d(c(33873)),f=c(55124),g=c(26220);b.logger=(0,f.createLogger)({level:"info",format:f.format.combine(f.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),f.format.errors({stack:!0}),f.format.splat(),f.format.json(),f.format.prettyPrint()),transports:[new f.transports.File({filename:e.default.resolve(g.OUTPUT_DIRECTORY,"error.log"),level:"error"}),new f.transports.File({filename:e.default.resolve(g.OUTPUT_DIRECTORY,"all.log")}),new f.transports.Console({format:f.format.combine(f.format.colorize(),f.format.simple()),level:"error"})]})},52250:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadHtml=void 0;let d=c(31097);b.downloadHtml=a=>new Promise((b,c)=>{(a.startsWith("https")?d.https:d.http).get(a,a=>{let d="";a.setEncoding("utf8"),a.on("data",a=>{d+=a}),a.on("end",()=>{b(d)}),a.on("error",c)})})},52498:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getTempFilepath=void 0;let e=d(c(21820)),f=d(c(33873)),g=c(93839),h=f.default.resolve(e.default.homedir(),".scrabble-solver");b.getTempFilepath=()=>{let a=`${(0,g.getHash)()}.txt`;return f.default.join(h,a)}},52680:(a,b)=>{var c,d;Object.defineProperty(b,"__esModule",{value:!0}),b.Locale=void 0,(d=c||(b.Locale=c={})).DE_DE="de-DE",d.EN_GB="en-GB",d.EN_US="en-US",d.ES_ES="es-ES",d.FA_IR="fa-IR",d.FR_FR="fr-FR",d.PL_PL="pl-PL",d.RO_RO="ro-RO",d.TR_TR="tr-TR"},54182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Board=void 0;let d=c(34474),e=c(43734),f=c(31090),g=c(35722);class h{static fromStringArray(a){return new h({rows:a.map((a,b)=>a.split("").map((a,c)=>new e.Cell({isEmpty:!a||a===d.EMPTY_CELL,tile:a===d.EMPTY_CELL?g.Tile.Null:new g.Tile({character:a}),x:c,y:b})))})}constructor({rows:a}){this.rows=a,this.columnsCount=a[0].length,this.rowsCount=a.length}get center(){let a=Math.floor(this.columnsCount/2),b=Math.floor(this.rowsCount/2);return this.rows[b][a]}clone(){return new h({rows:this.rows.map(a=>a.map(a=>a.clone()))})}collides(a){return this.collidesUp(a)||this.collidesDown(a)||this.collidesLeft(a)||this.collidesRight(a)}collidesDown({x:a,y:b}){return b<this.rowsCount-1&&!this.rows[b+1][a].isEmpty}collidesLeft({x:a,y:b}){return a>0&&!this.rows[b][a-1].isEmpty}collidesRight({x:a,y:b}){return a<this.columnsCount-1&&!this.rows[b][a+1].isEmpty}collidesUp({x:a,y:b}){return b>0&&!this.rows[b-1][a].isEmpty}equals(a){return this.columnsCount===a.columnsCount&&this.rowsCount===a.rowsCount&&this.rows.every((b,c)=>b.every((b,d)=>b.equals(a.rows[c][d])))}getBlanksCount(){return this.rows.reduce((a,b)=>a+b.reduce((a,b)=>a+ +!!b.tile.isBlank,0),0)}getCollidingWords(a){return(0,f.getCollidingWords)(this,a)}getColumn(a){return this.rows.map(b=>b[a])}getRow(a){return this.rows[a]}getTilesCount(){return this.rows.reduce((a,b)=>a+b.reduce((a,b)=>a+ +!!b.hasTile(),0),0)}getWords(){return(0,f.getBoardWords)(this)}isEmpty(){return this.rows.every(a=>a.every(({isEmpty:a})=>a))}toJson(){return this.rows.map(a=>a.map(a=>a.toJson()))}toString(){return this.rows.map(a=>a.map(String).join("")).join("\n")}updateCell(a,b,c){this.rows[b][a]=c(this.rows[b][a])}updateRow(a,b){this.rows[a]=b(this.rows[a])}}b.Board=h,h.create=(a,b)=>{let c=Array(b),d=Array(a).fill(" ").join(""),e=c.fill(d);return h.fromStringArray(e)},h.fromJson=a=>new h({rows:a.map(a=>a.map(e.Cell.fromJson))})},57103:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Bonus=void 0;class c{constructor({multiplier:a,score:b,x:c,y:d}){this.multiplier=a,this.score=b,this.x=c,this.y=d}canApply(a,b){return b.isEmpty&&this.matchesCellCoordinates(b)}matchesCellCoordinates(a){return this.x===a.x&&this.y===a.y}toJson(){return{multiplier:this.multiplier,score:this.score,type:this.type,x:this.x,y:this.y}}get value(){return{characterMultiplier:1,wordMultiplier:1}}}b.Bonus=c},57519:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.logger=void 0;var d=c(51513);Object.defineProperty(b,"logger",{enumerable:!0,get:function(){return d.logger}})},59321:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.unzip=void 0;let e=d(c(29021)),f=d(c(42029));b.unzip=(a,b,c)=>e.default.createReadStream(a).pipe(f.default.Parse()).on("entry",a=>{a.path===b?a.pipe(e.default.createWriteStream(c)):a.autodrain()}).promise()},61787:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.transpose=function(a){let b=a.length,c=a[0].length,d=Array(c).fill(null).map(()=>Array(b));for(let e=0;e<b;++e)for(let b=0;b<c;++b)d[b][e]=a[e][b];return d}},62174:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isMultiplierBingo=void 0;let d=c(16185);b.isMultiplierBingo=a=>(0,d.isObject)(a)&&"multiplier"in a&&"number"==typeof a.multiplier},62579:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.OUTPUT_DIRECTORY=b.CACHE_STALE_THRESHOLD=b.DAY=void 0;let e=d(c(21820)),f=d(c(33873));b.DAY=864e5,b.CACHE_STALE_THRESHOLD=+b.DAY,b.OUTPUT_DIRECTORY=f.default.resolve(e.default.homedir(),".scrabble-solver","dictionaries")},63903:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordsInRows=function(a,b){let c=[];for(let e of a){let a=[];for(let f of e)f.isEmpty?a.length>0&&(a.length>1&&c.push((0,d.toBoardWord)(a,b)),a=[]):a.push(f);a.length>1&&c.push((0,d.toBoardWord)(a,b))}return c};let d=c(94335)},65118:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isBoardJson=void 0;let d=c(24954);b.isBoardJson=a=>{if(!Array.isArray(a))return!1;for(let b of a){if(!Array.isArray(b))return!1;for(let a of b)if(!(0,d.isCellJson)(a))return!1}return!0}},67511:function(a,b,c){var d,e=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),f=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),g=this&&this.__importStar||(d=function(a){return(d=Object.getOwnPropertyNames||function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[b.length]=c);return b})(a)},function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c=d(a),g=0;g<c.length;g++)"default"!==c[g]&&e(b,a,c[g]);return f(b,a),b});Object.defineProperty(b,"__esModule",{value:!0}),b.turkish=b.spanish=b.romanian=b.polish=b.persian=b.french=b.german=b.english=void 0,b.english=g(c(80119)),b.german=g(c(37779)),b.french=g(c(10305)),b.persian=g(c(91135)),b.polish=g(c(72794)),b.romanian=g(c(82248)),b.spanish=g(c(39287)),b.turkish=g(c(92639))},67699:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordBonus=void 0;let d=c(34474),e=c(57103);class f extends e.Bonus{constructor(){super(...arguments),this.type=d.BONUS_WORD}get value(){return{characterMultiplier:1,wordMultiplier:this.multiplier}}}b.WordBonus=f},70294:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.MemoryCache=void 0;let d=c(62579);class e{constructor(){this.cache={},this.cacheTimestamps={}}get(a){return Promise.resolve(this.cache[a])}getLastModifiedTimestamp(a){return this.cacheTimestamps[a]}has(a){return void 0!==this.cache[a]}isStale(a){let b=this.getLastModifiedTimestamp(a);if(this.has(a)&&void 0!==b)return Math.abs(b-Date.now())>d.CACHE_STALE_THRESHOLD}set(a,b){return this.cacheTimestamps[a]=Date.now(),this.cache[a]=b,Promise.resolve()}}b.MemoryCache=e},70928:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.DiskCache=void 0;let e=c(11366),f=c(57519),g=d(c(29021)),h=c(62579),i=c(1356);class j{constructor(a=h.OUTPUT_DIRECTORY){this.directory=a}async get(a){if(!this.has(a))return;let b=(0,i.getDictionaryFilepath)(a,this.directory);try{let a=await g.default.promises.readFile(b);return e.Gaddag.deserialize(new Uint8Array(a.buffer,a.byteOffset,a.byteLength))}catch(c){f.logger.warn("DiskCache - incompatible or corrupted dictionary file, it will be rebuilt",{error:c,locale:a}),await g.default.promises.rm(b,{force:!0});return}}getLastModifiedTimestamp(a){let b=(0,i.getDictionaryFilepath)(a,this.directory);if(g.default.existsSync(b))return g.default.statSync(b).mtimeMs}has(a){let b=(0,i.getDictionaryFilepath)(a,this.directory);return g.default.existsSync(b)}isStale(a){if(!this.has(a))return;let b=this.getLastModifiedTimestamp(a);if(void 0!==b)return Math.abs(b-Date.now())>h.CACHE_STALE_THRESHOLD}async set(a,b){let c=(0,i.getDictionaryFilepath)(a,this.directory);await g.default.promises.writeFile(c,b.serialize()),await g.default.promises.rm((0,i.getLegacyDictionaryFilepath)(a,this.directory),{force:!0})}}b.DiskCache=j},72794:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let e=c(29562),f=c(14217),g=d(c(29021)),h=c(79551),i=c(98335);b.getWordList=async()=>{try{let a=(0,i.getTempFilepath)(),b=await j("https://sjp.pl/sl/growy/"),c=await (0,i.downloadFile)(b);await (0,i.unzip)(c,"slowa.txt",a),g.default.unlinkSync(c);let d=g.default.readFileSync(a,"utf-8");g.default.unlinkSync(a);let e=(0,i.extractWords)(d.toLocaleString(),"pl-PL");if(e.length<2e6)return l();return e}catch{return l()}};let j=async a=>{let b=k(await (0,i.downloadHtml)(a)),{href:c}=new h.URL(b,a);return c},k=a=>{let b=(0,f.load)(a),c=Array.from(b("a")).map(a=>b(a).attr("href")).filter(Boolean).find(a=>a.endsWith(".zip"));if(void 0===c)throw Error("Cannot find link to zip file on the page");return c},l=()=>(0,i.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/polish/sjp.txt",e.Locale.PL_PL)},75494:(a,b,c)=>{c.d(b,{T:()=>d});let d=a=>({origin:a.headers.origin,referer:a.headers.referer,userAgent:a.headers["user-agent"],xForwardedFor:a.headers["x-forwarded-for"],xRealIp:a.headers["x-real-ip"]})},77279:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.downloadFile=void 0;let e=c(31097),f=d(c(29021)),g=c(52498);b.downloadFile=a=>new Promise((b,c)=>{let d=(0,g.getTempFilepath)(),h=a.startsWith("https")?e.https:e.http,i=f.default.createWriteStream(d);h.get(a,e=>{void 0===e.statusCode||e.statusCode>=400?c(Error(`Cannot download file: ${a}`)):(e.on("error",a=>{i.close(),c(a)}),e.on("end",()=>{i.on("finish",()=>{i.close(),b(d)})}),e.pipe(i))}).on("error",a=>{i.close(),c(a)})})},77715:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.dictionaries=void 0;let f=c(90949);e(c(2655),b),b.dictionaries=new f.Dictionaries},79728:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isTileJson=b.isScoreBingo=b.isObject=b.isMultiplierBingo=b.isLocale=b.isGame=b.isError=b.isCellJson=b.isBoardJson=b.isBingo=void 0;var d=c(33985);Object.defineProperty(b,"isBingo",{enumerable:!0,get:function(){return d.isBingo}});var e=c(65118);Object.defineProperty(b,"isBoardJson",{enumerable:!0,get:function(){return e.isBoardJson}});var f=c(24954);Object.defineProperty(b,"isCellJson",{enumerable:!0,get:function(){return f.isCellJson}});var g=c(93810);Object.defineProperty(b,"isError",{enumerable:!0,get:function(){return g.isError}});var h=c(45582);Object.defineProperty(b,"isGame",{enumerable:!0,get:function(){return h.isGame}});var i=c(678);Object.defineProperty(b,"isLocale",{enumerable:!0,get:function(){return i.isLocale}});var j=c(62174);Object.defineProperty(b,"isMultiplierBingo",{enumerable:!0,get:function(){return j.isMultiplierBingo}});var k=c(16185);Object.defineProperty(b,"isObject",{enumerable:!0,get:function(){return k.isObject}});var l=c(85207);Object.defineProperty(b,"isScoreBingo",{enumerable:!0,get:function(){return l.isScoreBingo}});var m=c(89106);Object.defineProperty(b,"isTileJson",{enumerable:!0,get:function(){return m.isTileJson}})},80119:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordListUs=b.getWordListGb=void 0;let d=c(29562),e=c(98335);b.getWordListGb=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/sowpods.txt",d.Locale.EN_GB),b.getWordListUs=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/twl06.txt",d.Locale.EN_US)},80457:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.createAsyncProxy=void 0,b.createAsyncProxy=a=>{let b=null;return async()=>{if(b)return b;try{return b=a(),await b}finally{b=null}}}},81029:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordThrough=function(a,b,c,e){let f=+("horizontal"===e),g=+("horizontal"!==e),h=b,i=c;for(;h-f>=0&&i-g>=0&&!a.rows[i-g][h-f].isEmpty;)h-=f,i-=g;let j=[],k=h,l=i;for(;k<a.columnsCount&&l<a.rowsCount&&!a.rows[l][k].isEmpty;)j.push(a.rows[l][k]),k+=f,l+=g;return j.length>1?(0,d.toBoardWord)(j,e):void 0};let d=c(94335)},82248:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt",d.Locale.RO_RO);return(0,e.transliterateDiacritics)(a)}},84960:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCollidingWords=function(a,b){let c="horizontal"===b.direction,e=c?"vertical":"horizontal",f=[],{x:g,y:h}=b;for(;g<a.columnsCount&&h<a.rowsCount&&!a.rows[h][g].isEmpty;){let b=(0,d.getWordThrough)(a,g,h,e);b&&f.push(b),g+=+!!c,h+=+!c}return f};let d=c(81029)},85207:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isScoreBingo=void 0;let d=c(16185);b.isScoreBingo=a=>(0,d.isObject)(a)&&"score"in a&&"number"==typeof a.score},89106:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isTileJson=void 0;let d=c(16185);b.isTileJson=a=>(0,d.isObject)(a)&&"string"==typeof a.character&&"boolean"==typeof a.isBlank},90949:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.Dictionaries=void 0;let e=c(57519),f=c(29562),g=d(c(29021)),h=c(62579),i=c(2655);class j{constructor(){this.cache=new i.LayeredCache,this.downloadDictionaryProxies=Object.fromEntries(Object.values(f.Locale).map(a=>[a,(0,i.createAsyncProxy)(()=>(0,i.downloadDictionary)(a))]))}async get(a){if(this.cache.has(a)){let b=await this.cache.get(a);if(b)return b}return e.logger.info("Dictionaries - cache miss",{locale:a}),this.updateDictionary(a)}remove(){g.default.rmdirSync(h.OUTPUT_DIRECTORY,{recursive:!0})}async update(a){let b=a?Object.values(f.Locale):this.getLocalesToUpdate();e.logger.info("Dictionaries - update",{force:a,locales:b}),await Promise.all(b.map(a=>this.updateDictionary(a)))}getLocalesToUpdate(){return Object.values(f.Locale).filter(a=>!1!==this.cache.isStale(a))}async updateDictionary(a){e.logger.info("Dictionaries - updateDictionary",{locale:a}),g.default.mkdirSync(h.OUTPUT_DIRECTORY,{recursive:!0});let b=this.downloadDictionaryProxies[a],c=await b();return await this.cache.set(a,c),c}}b.Dictionaries=j},91135:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/persian/persian.txt",d.Locale.FA_IR)},92289:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCells=function(a,b){let c=+!!b.isHorizontal,e=+!b.isHorizontal,f=[],g=0,{x:h,y:i}=b;for(;i<a.rowsCount&&h<a.columnsCount;){let j=a.rows[i][h];if(j.isFilled())f.push(j.clone());else if(g<b.tiles.length)f.push((0,d.getPlacedCell)(b,g,h,i)),g+=1;else break;h+=c,i+=e}return f};let d=c(5461)},92639:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/turkish/kelimelik.txt",d.Locale.TR_TR)},93810:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isError=void 0;let d=c(16185);b.isError=a=>!!(0,d.isObject)(a)&&"string"==typeof a.message},93839:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getHash=void 0;let e=d(c(55511));b.getHash=(a=8)=>e.default.randomBytes(a).toString("hex")},94335:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.toBoardWord=function(a,b){return{direction:b,word:a.map(a=>a.tile.character).join(""),x:a[0].x,y:a[0].y}}},95776:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Config=void 0;let d=c(34474),e=c(24392),f=c(67699);class g{constructor(a){this.bonuses=h(a),this.config=a,this.pointsMap=j(this.config)}get alphabet(){return i(this.config)}get bingo(){return this.config.bingo}get blankScore(){return this.config.blankScore}get blanksCount(){return this.config.blanksCount}get boardHeight(){return this.config.boardHeight}get boardWidth(){return this.config.boardWidth}get game(){return this.config.game}get locale(){return this.config.locale}get twoCharacterTiles(){return this.config.tiles.filter(a=>2===a.character.length).map(a=>a.character)}getCellBonus(a){return this.bonuses.find(b=>b.matchesCellCoordinates(a))}getCellBonusValue(a){return this.getCellBonus(a)?.value||d.NO_BONUS}getCharacterPoints(a){if(null!==a)return a===d.BLANK?this.blankScore:this.pointsMap[a]}getTwoCharacterTileByPrefix(a){if(1===a.length)return this.twoCharacterTiles.find(b=>b.startsWith(a.toLocaleLowerCase()))}getTilePoints(a){if(null!==a)return a.isBlank?this.blankScore:this.getCharacterPoints(a.character)}hasCharacter(a){return a in this.pointsMap}isTwoCharacterTilePrefix(a){return void 0!==this.getTwoCharacterTileByPrefix(a)}get rackSize(){return this.config.rackSize}get supportsRemainingTiles(){return this.tiles.every(a=>"number"==typeof a.count)}get tiles(){return this.config.tiles}toJson(){return this.config}}b.Config=g,g.fromJson=a=>new g(a);let h=a=>a.bonuses.map(a=>{if(a.type===d.BONUS_CHARACTER)return new e.CharacterBonus(a);if(a.type===d.BONUS_WORD)return new f.WordBonus(a);throw Error(`Unsupported Bonus type: "${a.type}"`)}),i=a=>a.tiles.map(({character:a})=>a),j=a=>a.tiles.reduce((a,{character:b,score:c})=>({...a,[b]:c}),{})},98335:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.unzip=b.unique=b.transliterateDiacritics=b.getTxtWordList=b.getTempFilepath=b.getHash=b.findFirstWordIndex=b.extractWords=b.downloadHtml=b.downloadFile=void 0;var d=c(77279);Object.defineProperty(b,"downloadFile",{enumerable:!0,get:function(){return d.downloadFile}});var e=c(52250);Object.defineProperty(b,"downloadHtml",{enumerable:!0,get:function(){return e.downloadHtml}});var f=c(33471);Object.defineProperty(b,"extractWords",{enumerable:!0,get:function(){return f.extractWords}});var g=c(5878);Object.defineProperty(b,"findFirstWordIndex",{enumerable:!0,get:function(){return g.findFirstWordIndex}});var h=c(93839);Object.defineProperty(b,"getHash",{enumerable:!0,get:function(){return h.getHash}});var i=c(52498);Object.defineProperty(b,"getTempFilepath",{enumerable:!0,get:function(){return i.getTempFilepath}});var j=c(5145);Object.defineProperty(b,"getTxtWordList",{enumerable:!0,get:function(){return j.getTxtWordList}});var k=c(38670);Object.defineProperty(b,"transliterateDiacritics",{enumerable:!0,get:function(){return k.transliterateDiacritics}});var l=c(40224);Object.defineProperty(b,"unique",{enumerable:!0,get:function(){return l.unique}});var m=c(59321);Object.defineProperty(b,"unzip",{enumerable:!0,get:function(){return m.unzip}})}};