@scrabble-solver/scrabble-solver 2.15.18 → 2.15.19

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 (61) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  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/required-server-files.json +3 -3
  16. package/.next/routes-manifest.json +1 -1
  17. package/.next/server/chunks/392.js +1 -1
  18. package/.next/server/chunks/712.js +1 -1
  19. package/.next/server/chunks/812.js +1 -1
  20. package/.next/server/middleware-build-manifest.js +1 -1
  21. package/.next/server/pages/404.html +1 -1
  22. package/.next/server/pages/500.html +1 -1
  23. package/.next/server/pages/_app.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 +1 -1
  28. package/.next/server/pages/index.js.nft.json +1 -1
  29. package/.next/server/pages/index.json +1 -1
  30. package/.next/server/pages/not-found.html +1 -1
  31. package/.next/server/pages/not-found.js.nft.json +1 -1
  32. package/.next/server/pages-manifest.json +1 -1
  33. package/.next/static/chunks/pages/_app-e333add311d76325.js +3 -0
  34. package/.next/trace +21 -21
  35. package/.next/trace-build +1 -1
  36. package/package.json +9 -9
  37. package/src/components/SeoMessage/SeoMessage.tsx +3 -3
  38. package/src/pages/_app.tsx +3 -1
  39. package/.next/dev/build-manifest.json +0 -31
  40. package/.next/dev/cache/webpack/server-development/0.pack.gz +0 -0
  41. package/.next/dev/cache/webpack/server-development/1.pack.gz +0 -0
  42. package/.next/dev/cache/webpack/server-development/index.pack.gz +0 -0
  43. package/.next/dev/cache/webpack/server-development/index.pack.gz.old +0 -0
  44. package/.next/dev/logs/next-development.log +0 -18246
  45. package/.next/dev/react-loadable-manifest.json +0 -1
  46. package/.next/dev/server/middleware-build-manifest.js +0 -32
  47. package/.next/dev/server/middleware-react-loadable-manifest.js +0 -1
  48. package/.next/dev/server/next-font-manifest.js +0 -1
  49. package/.next/dev/server/next-font-manifest.json +0 -1
  50. package/.next/dev/server/pages/_app.js +0 -3984
  51. package/.next/dev/server/pages/_error.js +0 -4028
  52. package/.next/dev/server/pages/index.js +0 -4663
  53. package/.next/dev/server/pages-manifest.json +0 -6
  54. package/.next/dev/server/webpack-runtime.js +0 -231
  55. package/.next/dev/static/chunks/pages/_app.js +0 -5022
  56. package/.next/dev/static/chunks/webpack.js +0 -1246
  57. package/.next/dev/static/development/_buildManifest.js +0 -1
  58. package/.next/dev/static/development/_ssgManifest.js +0 -1
  59. package/.next/static/chunks/pages/_app-053ab31bfda72a9a.js +0 -3
  60. /package/.next/static/{ahy2Ds3MbuK7EyMMxPJE0 → Q1QbM4B3kGvZD0KCKFv6H}/_buildManifest.js +0 -0
  61. /package/.next/static/{ahy2Ds3MbuK7EyMMxPJE0 → Q1QbM4B3kGvZD0KCKFv6H}/_ssgManifest.js +0 -0
@@ -4,7 +4,7 @@
4
4
  "/": {
5
5
  "initialRevalidateSeconds": false,
6
6
  "srcRoute": null,
7
- "dataRoute": "/_next/data/ahy2Ds3MbuK7EyMMxPJE0/index.json",
7
+ "dataRoute": "/_next/data/Q1QbM4B3kGvZD0KCKFv6H/index.json",
8
8
  "allowHeader": [
9
9
  "host",
10
10
  "x-matched-path",
@@ -18,8 +18,8 @@
18
18
  "dynamicRoutes": {},
19
19
  "notFoundRoutes": [],
20
20
  "preview": {
21
- "previewModeId": "94e96567b3e10a2b615f8893cdb558af",
22
- "previewModeSigningKey": "bb3193869bb0ed3a1e3ec6e44b69e992426702931a6f12f459e51d48b5689adc",
23
- "previewModeEncryptionKey": "28793b79d2191b942758fe63c65e3b4bd8e0ec40b468631188b56fa20e0112df"
21
+ "previewModeId": "1968b5f29e505838a7fbed6d382478b3",
22
+ "previewModeSigningKey": "3b657139a445c18c5d7f2ec2e52174c631f852e0bab957c3a0b107fe36e4da8a",
23
+ "previewModeEncryptionKey": "62200161c9b43d9625989bc4f3377f17c5781c02410adb5f26bd5c235aae8533"
24
24
  }
25
25
  }
@@ -103,7 +103,7 @@
103
103
  "transform": "lodash/{{member}}"
104
104
  }
105
105
  },
106
- "outputFileTracingRoot": "/home/kamil/projects",
106
+ "outputFileTracingRoot": "/home/kamil/projects/scrabble-solver",
107
107
  "cacheComponents": false,
108
108
  "cacheLife": {
109
109
  "default": {
@@ -293,12 +293,12 @@
293
293
  "bundlePagesRouterDependencies": false,
294
294
  "configFileName": "next.config.js",
295
295
  "turbopack": {
296
- "root": "/home/kamil/projects"
296
+ "root": "/home/kamil/projects/scrabble-solver"
297
297
  },
298
298
  "distDirRoot": ".next"
299
299
  },
300
300
  "appDir": "/home/kamil/projects/scrabble-solver/packages/scrabble-solver",
301
- "relativeAppDir": "scrabble-solver/packages/scrabble-solver",
301
+ "relativeAppDir": "packages/scrabble-solver",
302
302
  "files": [
303
303
  ".next/routes-manifest.json",
304
304
  ".next/server/pages-manifest.json",
@@ -73,7 +73,7 @@
73
73
  "dataRoutes": [
74
74
  {
75
75
  "page": "/",
76
- "dataRouteRegex": "^/_next/data/ahy2Ds3MbuK7EyMMxPJE0/index\\.json$"
76
+ "dataRouteRegex": "^/_next/data/Q1QbM4B3kGvZD0KCKFv6H/index\\.json$"
77
77
  }
78
78
  ],
79
79
  "rsc": {
@@ -1 +1 @@
1
- "use strict";exports.id=392,exports.ids=[392],exports.modules={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.getDictionaryFilepath=void 0;let e=d(c(33873)),f=c(84960);b.getDictionaryFilepath=a=>e.default.resolve(f.OUTPUT_DIRECTORY,`${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}})},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}},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}},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}},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},26182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.VerticalPattern=void 0;let d=c(29660);class e extends d.Pattern{clone(){return new e(this.board,this.cells.map(a=>a.clone()))}getCollisions(){let a=[];return this.cells.filter(a=>a.isEmpty&&(this.board.collidesLeft(a)||this.board.collidesRight(a))).forEach(b=>{let c=this.board.getRow(b.y),e=b.x-1;for(;e>=0&&c[e].hasTile();)--e;let f=c.slice(e+1,b.x);for(e=b.x+1;e<c.length&&c[e].hasTile();)++e;let g=c.slice(b.x+1,e),h=[...f,b,...g];if(h.length>1){let b=new d.Pattern(this.board,h);a.push(b)}}),a}}b.VerticalPattern=e},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(43734);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(){return{cells:this.cells.map(a=>a.toJson()),id:this.id,collisions:this.collisions.map(a=>a.map(a=>a.toJson())),points:this.points}}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=>new f({id:a.id,cells:a.cells.map(e.Cell.fromJson),collisions:a.collisions.map(a=>a.map(e.Cell.fromJson)),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.VerticalPattern=b.isTileJson=b.Tile=b.Result=b.Pattern=b.Locale=b.isLocale=b.isObject=b.isError=b.HorizontalPattern=b.isGame=b.Game=b.FinalPattern=b.Config=b.CharacterBonus=b.isCellJson=b.Cell=b.Bonus=b.isBoardJson=b.Board=b.isScoreBingo=b.isMultiplierBingo=b.isBingo=void 0;var d=c(97055);Object.defineProperty(b,"isBingo",{enumerable:!0,get:function(){return d.isBingo}}),Object.defineProperty(b,"isMultiplierBingo",{enumerable:!0,get:function(){return d.isMultiplierBingo}}),Object.defineProperty(b,"isScoreBingo",{enumerable:!0,get:function(){return d.isScoreBingo}});var e=c(54182);Object.defineProperty(b,"Board",{enumerable:!0,get:function(){return e.Board}});var f=c(43728);Object.defineProperty(b,"isBoardJson",{enumerable:!0,get:function(){return f.isBoardJson}});var g=c(57103);Object.defineProperty(b,"Bonus",{enumerable:!0,get:function(){return g.Bonus}});var h=c(43734);Object.defineProperty(b,"Cell",{enumerable:!0,get:function(){return h.Cell}});var i=c(74784);Object.defineProperty(b,"isCellJson",{enumerable:!0,get:function(){return i.isCellJson}});var j=c(24392);Object.defineProperty(b,"CharacterBonus",{enumerable:!0,get:function(){return j.CharacterBonus}});var k=c(95776);Object.defineProperty(b,"Config",{enumerable:!0,get:function(){return k.Config}});var l=c(88368);Object.defineProperty(b,"FinalPattern",{enumerable:!0,get:function(){return l.FinalPattern}});var m=c(48852);Object.defineProperty(b,"Game",{enumerable:!0,get:function(){return m.Game}}),Object.defineProperty(b,"isGame",{enumerable:!0,get:function(){return m.isGame}});var n=c(88144);Object.defineProperty(b,"HorizontalPattern",{enumerable:!0,get:function(){return n.HorizontalPattern}});var o=c(58612);Object.defineProperty(b,"isError",{enumerable:!0,get:function(){return o.isError}});var p=c(52143);Object.defineProperty(b,"isObject",{enumerable:!0,get:function(){return p.isObject}});var q=c(52680);Object.defineProperty(b,"isLocale",{enumerable:!0,get:function(){return q.isLocale}}),Object.defineProperty(b,"Locale",{enumerable:!0,get:function(){return q.Locale}});var r=c(29660);Object.defineProperty(b,"Pattern",{enumerable:!0,get:function(){return r.Pattern}});var s=c(27605);Object.defineProperty(b,"Result",{enumerable:!0,get:function(){return s.Result}});var t=c(35722);Object.defineProperty(b,"Tile",{enumerable:!0,get:function(){return t.Tile}});var u=c(91652);Object.defineProperty(b,"isTileJson",{enumerable:!0,get:function(){return u.isTileJson}});var v=c(26182);Object.defineProperty(b,"VerticalPattern",{enumerable:!0,get:function(){return v.VerticalPattern}});var w=c(67699);Object.defineProperty(b,"WordBonus",{enumerable:!0,get:function(){return w.WordBonus}});var x=c(51385);Object.defineProperty(b,"WordDefinition",{enumerable:!0,get:function(){return x.WordDefinition}})},29660:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Pattern=void 0;class c{constructor(a,b){this.board=a,this.cells=b}canBePlaced(a){let b=this.getEmptyCellsCount();return b>=1&&b<=a.rackSize&&(this.hasAtLeast1NonEmptyCell()||this.collides()||this.goesThroughBoardCenter()&&this.board.isEmpty())}clone(){return new c(this.board,this.cells.map(a=>a.clone()))}collides(){return this.cells.some(a=>a.isEmpty&&this.board.collides(a))}getIndexOfFirstCellWithoutTile(){return this.cells.findIndex(a=>!a.hasTile())}getEmptyCellsCount(){return this.cells.filter(a=>a.isEmpty).length}goesThroughBoardCenter(){return this.cells.some(a=>a.x===this.board.center.x&&a.y===this.board.center.y&&a.isEmpty)}hasAtLeast1EmptyCell(){return this.cells.some(a=>a.isEmpty)}hasAtLeast1NonEmptyCell(){return this.cells.some(a=>!a.isEmpty)}getCollisions(){return[]}toJson(){return{cells:this.cells.map(a=>a.toJson()),collisions:this.getCollisions().map(a=>a.toJson()),word:this.toString()}}toString(){return this.cells.reduce((a,b)=>a+b.toString(),"")}}b.Pattern=c},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}},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)},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]()},43728:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isBoardJson=void 0;let d=c(74784);b.isBoardJson=a=>{if(!Array.isArray(a))return!1;for(let b of a){if(!Array.isArray(a))return!1;for(let a of b)if(!(0,d.isCellJson)(a))return!1}return!0}},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()}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})},48852:(a,b)=>{var c,d;Object.defineProperty(b,"__esModule",{value:!0}),b.isGame=b.Game=void 0,(d=c||(b.Game=c={})).Kelimelik="kelimelik",d.LetterLeague="letter-league",d.Literaki="literaki",d.Scrabble="scrabble",d.ScrabbleDuel="scrabble-duel",d.SuperScrabble="super-scrabble";let e=Object.values(c);b.isGame=a=>e.includes(a)},49085:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadDictionary=void 0;let d=c(19362),e=c(57519),f=c(27475);b.downloadDictionary=async a=>{e.logger.info("downloadDictionary",{locale:a});let b=await (0,f.getWordList)(a);return e.logger.info("downloadDictionary - success",{locale:a}),d.Trie.fromArray(b)}},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"})]})},52143:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isObject=void 0,b.isObject=a=>"object"==typeof a&&null!==a},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.isLocale=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";let e=Object.values(c);b.isLocale=a=>e.includes(a)},54182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Board=void 0;let d=c(34474),e=c(43734),f=c(35722);class g{static fromStringArray(a){return new g({rows:a.map((a,b)=>a.split("").map((a,c)=>new e.Cell({isEmpty:!a||a===d.EMPTY_CELL,tile:a===d.EMPTY_CELL?f.Tile.Null:new f.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 g({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)}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[...i(this.rows),...i(h(this.rows))]}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=g,g.create=(a,b)=>{let c=Array(b),d=Array(a).fill(" ").join(""),e=c.fill(d);return g.fromStringArray(e)},g.fromJson=a=>new g({rows:a.map(a=>a.map(e.Cell.fromJson))});let h=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},i=a=>{let b=[];for(let c of a){let a=[];for(let d of c)d.isEmpty?a.length>0&&(a.length>1&&b.push(j(a)),a=[]):a.push(d);a.length>1&&b.push(j(a))}return b},j=a=>a.map(a=>a.tile.character).join("")},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}})},58612:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isError=void 0;let d=c(52143);b.isError=a=>!!(0,d.isObject)(a)&&"string"==typeof a.message},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()},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(84960);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(19362),f=d(c(29021)),g=c(84960),h=c(1356);class i{async get(a){if(!this.has(a))return;let b=(0,h.getDictionaryFilepath)(a),c=await f.default.promises.readFile(b,"utf-8");return e.Trie.deserialize(c)}getLastModifiedTimestamp(a){let b=(0,h.getDictionaryFilepath)(a);if(f.default.existsSync(b))return f.default.statSync(b).mtimeMs}has(a){let b=(0,h.getDictionaryFilepath)(a);return f.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())>g.CACHE_STALE_THRESHOLD}async set(a,b){let c=(0,h.getDictionaryFilepath)(a);await f.default.promises.writeFile(c,b.serialize())}}b.DiskCache=i},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)},74784:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isCellJson=void 0;let d=c(52143),e=c(91652);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},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},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}}}},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: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")},88144:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.HorizontalPattern=void 0;let d=c(29660);class e extends d.Pattern{clone(){return new e(this.board,this.cells.map(a=>a.clone()))}getCollisions(){let a=[];return this.cells.filter(a=>a.isEmpty&&(this.board.collidesUp(a)||this.board.collidesDown(a))).forEach(b=>{let c=this.board.getColumn(b.x),e=b.y-1;for(;e>=0&&c[e].hasTile();)--e;let f=c.slice(e+1,b.y);for(e=b.y+1;e<c.length&&c[e].hasTile();)++e;let g=c.slice(b.y+1,e),h=[...f,b,...g];if(h.length>1){let b=new d.Pattern(this.board,h);a.push(b)}}),a}}b.HorizontalPattern=e},88368:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.FinalPattern=void 0;let d=c(29660);class e extends d.Pattern{constructor(a){super(a.board,a.cells),this.collisions=a.getCollisions()}getCollisions(){return this.collisions}}b.FinalPattern=e},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(84960),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)},91652:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isTileJson=void 0;let d=c(52143);b.isTileJson=a=>(0,d.isObject)(a)&&"string"==typeof a.character&&"boolean"==typeof a.isBlank},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)},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")},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}),{})},97055:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isMultiplierBingo=b.isScoreBingo=b.isBingo=void 0;let d=c(52143);b.isBingo=a=>(0,b.isScoreBingo)(a)||(0,b.isMultiplierBingo)(a),b.isScoreBingo=a=>(0,d.isObject)(a)&&"score"in a&&"number"==typeof a.score,b.isMultiplierBingo=a=>(0,d.isObject)(a)&&"multiplier"in a&&"number"==typeof a.multiplier},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={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.getDictionaryFilepath=void 0;let e=d(c(33873)),f=c(84960);b.getDictionaryFilepath=a=>e.default.resolve(f.OUTPUT_DIRECTORY,`${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}})},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}},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}},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}},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},26182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.VerticalPattern=void 0;let d=c(29660);class e extends d.Pattern{clone(){return new e(this.board,this.cells.map(a=>a.clone()))}getCollisions(){let a=[];return this.cells.filter(a=>a.isEmpty&&(this.board.collidesLeft(a)||this.board.collidesRight(a))).forEach(b=>{let c=this.board.getRow(b.y),e=b.x-1;for(;e>=0&&c[e].hasTile();)--e;let f=c.slice(e+1,b.x);for(e=b.x+1;e<c.length&&c[e].hasTile();)++e;let g=c.slice(b.x+1,e),h=[...f,b,...g];if(h.length>1){let b=new d.Pattern(this.board,h);a.push(b)}}),a}}b.VerticalPattern=e},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(43734);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(){return{cells:this.cells.map(a=>a.toJson()),id:this.id,collisions:this.collisions.map(a=>a.map(a=>a.toJson())),points:this.points}}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=>new f({id:a.id,cells:a.cells.map(e.Cell.fromJson),collisions:a.collisions.map(a=>a.map(e.Cell.fromJson)),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.VerticalPattern=b.isTileJson=b.Tile=b.Result=b.Pattern=b.Locale=b.isLocale=b.isObject=b.isError=b.HorizontalPattern=b.isGame=b.Game=b.FinalPattern=b.Config=b.CharacterBonus=b.isCellJson=b.Cell=b.Bonus=b.isBoardJson=b.Board=b.isScoreBingo=b.isMultiplierBingo=b.isBingo=void 0;var d=c(97055);Object.defineProperty(b,"isBingo",{enumerable:!0,get:function(){return d.isBingo}}),Object.defineProperty(b,"isMultiplierBingo",{enumerable:!0,get:function(){return d.isMultiplierBingo}}),Object.defineProperty(b,"isScoreBingo",{enumerable:!0,get:function(){return d.isScoreBingo}});var e=c(54182);Object.defineProperty(b,"Board",{enumerable:!0,get:function(){return e.Board}});var f=c(43728);Object.defineProperty(b,"isBoardJson",{enumerable:!0,get:function(){return f.isBoardJson}});var g=c(57103);Object.defineProperty(b,"Bonus",{enumerable:!0,get:function(){return g.Bonus}});var h=c(43734);Object.defineProperty(b,"Cell",{enumerable:!0,get:function(){return h.Cell}});var i=c(74784);Object.defineProperty(b,"isCellJson",{enumerable:!0,get:function(){return i.isCellJson}});var j=c(24392);Object.defineProperty(b,"CharacterBonus",{enumerable:!0,get:function(){return j.CharacterBonus}});var k=c(95776);Object.defineProperty(b,"Config",{enumerable:!0,get:function(){return k.Config}});var l=c(88368);Object.defineProperty(b,"FinalPattern",{enumerable:!0,get:function(){return l.FinalPattern}});var m=c(48852);Object.defineProperty(b,"Game",{enumerable:!0,get:function(){return m.Game}}),Object.defineProperty(b,"isGame",{enumerable:!0,get:function(){return m.isGame}});var n=c(88144);Object.defineProperty(b,"HorizontalPattern",{enumerable:!0,get:function(){return n.HorizontalPattern}});var o=c(58612);Object.defineProperty(b,"isError",{enumerable:!0,get:function(){return o.isError}});var p=c(52143);Object.defineProperty(b,"isObject",{enumerable:!0,get:function(){return p.isObject}});var q=c(52680);Object.defineProperty(b,"isLocale",{enumerable:!0,get:function(){return q.isLocale}}),Object.defineProperty(b,"Locale",{enumerable:!0,get:function(){return q.Locale}});var r=c(29660);Object.defineProperty(b,"Pattern",{enumerable:!0,get:function(){return r.Pattern}});var s=c(27605);Object.defineProperty(b,"Result",{enumerable:!0,get:function(){return s.Result}});var t=c(35722);Object.defineProperty(b,"Tile",{enumerable:!0,get:function(){return t.Tile}});var u=c(91652);Object.defineProperty(b,"isTileJson",{enumerable:!0,get:function(){return u.isTileJson}});var v=c(26182);Object.defineProperty(b,"VerticalPattern",{enumerable:!0,get:function(){return v.VerticalPattern}});var w=c(67699);Object.defineProperty(b,"WordBonus",{enumerable:!0,get:function(){return w.WordBonus}});var x=c(51385);Object.defineProperty(b,"WordDefinition",{enumerable:!0,get:function(){return x.WordDefinition}})},29660:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Pattern=void 0;class c{constructor(a,b){this.board=a,this.cells=b}canBePlaced(a){let b=this.getEmptyCellsCount();return b>=1&&b<=a.rackSize&&(this.hasAtLeast1NonEmptyCell()||this.collides()||this.goesThroughBoardCenter()&&this.board.isEmpty())}clone(){return new c(this.board,this.cells.map(a=>a.clone()))}collides(){return this.cells.some(a=>a.isEmpty&&this.board.collides(a))}getIndexOfFirstCellWithoutTile(){return this.cells.findIndex(a=>!a.hasTile())}getEmptyCellsCount(){return this.cells.filter(a=>a.isEmpty).length}goesThroughBoardCenter(){return this.cells.some(a=>a.x===this.board.center.x&&a.y===this.board.center.y&&a.isEmpty)}hasAtLeast1EmptyCell(){return this.cells.some(a=>a.isEmpty)}hasAtLeast1NonEmptyCell(){return this.cells.some(a=>!a.isEmpty)}getCollisions(){return[]}toJson(){return{cells:this.cells.map(a=>a.toJson()),collisions:this.getCollisions().map(a=>a.toJson()),word:this.toString()}}toString(){return this.cells.reduce((a,b)=>a+b.toString(),"")}}b.Pattern=c},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}},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)},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]()},43728:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isBoardJson=void 0;let d=c(74784);b.isBoardJson=a=>{if(!Array.isArray(a))return!1;for(let b of a){if(!Array.isArray(a))return!1;for(let a of b)if(!(0,d.isCellJson)(a))return!1}return!0}},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()}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})},48852:(a,b)=>{var c,d;Object.defineProperty(b,"__esModule",{value:!0}),b.isGame=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";let e=Object.values(c);b.isGame=a=>e.includes(a)},49085:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadDictionary=void 0;let d=c(19362),e=c(57519),f=c(27475);b.downloadDictionary=async a=>{e.logger.info("downloadDictionary",{locale:a});let b=await (0,f.getWordList)(a);return e.logger.info("downloadDictionary - success",{locale:a}),d.Trie.fromArray(b)}},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"})]})},52143:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isObject=void 0,b.isObject=a=>"object"==typeof a&&null!==a},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.isLocale=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";let e=Object.values(c);b.isLocale=a=>e.includes(a)},54182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Board=void 0;let d=c(34474),e=c(43734),f=c(35722);class g{static fromStringArray(a){return new g({rows:a.map((a,b)=>a.split("").map((a,c)=>new e.Cell({isEmpty:!a||a===d.EMPTY_CELL,tile:a===d.EMPTY_CELL?f.Tile.Null:new f.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 g({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)}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[...i(this.rows),...i(h(this.rows))]}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=g,g.create=(a,b)=>{let c=Array(b),d=Array(a).fill(" ").join(""),e=c.fill(d);return g.fromStringArray(e)},g.fromJson=a=>new g({rows:a.map(a=>a.map(e.Cell.fromJson))});let h=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},i=a=>{let b=[];for(let c of a){let a=[];for(let d of c)d.isEmpty?a.length>0&&(a.length>1&&b.push(j(a)),a=[]):a.push(d);a.length>1&&b.push(j(a))}return b},j=a=>a.map(a=>a.tile.character).join("")},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}})},58612:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isError=void 0;let d=c(52143);b.isError=a=>!!(0,d.isObject)(a)&&"string"==typeof a.message},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()},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(84960);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(19362),f=d(c(29021)),g=c(84960),h=c(1356);class i{async get(a){if(!this.has(a))return;let b=(0,h.getDictionaryFilepath)(a),c=await f.default.promises.readFile(b,"utf-8");return e.Trie.deserialize(c)}getLastModifiedTimestamp(a){let b=(0,h.getDictionaryFilepath)(a);if(f.default.existsSync(b))return f.default.statSync(b).mtimeMs}has(a){let b=(0,h.getDictionaryFilepath)(a);return f.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())>g.CACHE_STALE_THRESHOLD}async set(a,b){let c=(0,h.getDictionaryFilepath)(a);await f.default.promises.writeFile(c,b.serialize())}}b.DiskCache=i},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)},74784:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isCellJson=void 0;let d=c(52143),e=c(91652);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},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},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}}}},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: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")},88144:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.HorizontalPattern=void 0;let d=c(29660);class e extends d.Pattern{clone(){return new e(this.board,this.cells.map(a=>a.clone()))}getCollisions(){let a=[];return this.cells.filter(a=>a.isEmpty&&(this.board.collidesUp(a)||this.board.collidesDown(a))).forEach(b=>{let c=this.board.getColumn(b.x),e=b.y-1;for(;e>=0&&c[e].hasTile();)--e;let f=c.slice(e+1,b.y);for(e=b.y+1;e<c.length&&c[e].hasTile();)++e;let g=c.slice(b.y+1,e),h=[...f,b,...g];if(h.length>1){let b=new d.Pattern(this.board,h);a.push(b)}}),a}}b.HorizontalPattern=e},88368:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.FinalPattern=void 0;let d=c(29660);class e extends d.Pattern{constructor(a){super(a.board,a.cells),this.collisions=a.getCollisions()}getCollisions(){return this.collisions}}b.FinalPattern=e},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(84960),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)},91652:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isTileJson=void 0;let d=c(52143);b.isTileJson=a=>(0,d.isObject)(a)&&"string"==typeof a.character&&"boolean"==typeof a.isBlank},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)},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")},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}),{})},97055:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isMultiplierBingo=b.isScoreBingo=b.isBingo=void 0;let d=c(52143);b.isBingo=a=>(0,b.isScoreBingo)(a)||(0,b.isMultiplierBingo)(a),b.isScoreBingo=a=>(0,d.isObject)(a)&&"score"in a&&"number"==typeof a.score,b.isMultiplierBingo=a=>(0,d.isObject)(a)&&"multiplier"in a&&"number"==typeof a.multiplier},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}})}};