@scrabble-solver/scrabble-solver 2.15.8 → 2.15.9

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 (60) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +7 -7
  3. package/.next/cache/.rscinfo +1 -1
  4. package/.next/cache/.tsbuildinfo +1 -1
  5. package/.next/cache/eslint/.cache_8dgz12 +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/0.pack +0 -0
  10. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  11. package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  12. package/.next/cache/webpack/server-production/0.pack +0 -0
  13. package/.next/cache/webpack/server-production/index.pack +0 -0
  14. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  15. package/.next/next-minimal-server.js.nft.json +1 -1
  16. package/.next/next-server.js.nft.json +1 -1
  17. package/.next/prerender-manifest.json +4 -4
  18. package/.next/routes-manifest.json +1 -1
  19. package/.next/server/chunks/60.js +1 -1
  20. package/.next/server/chunks/974.js +1 -1
  21. package/.next/server/middleware-build-manifest.js +1 -1
  22. package/.next/server/pages/404.html +1 -1
  23. package/.next/server/pages/500.html +1 -1
  24. package/.next/server/pages/_app.js +1 -1
  25. package/.next/server/pages/_app.js.nft.json +1 -1
  26. package/.next/server/pages/_error.js +1 -1
  27. package/.next/server/pages/_error.js.nft.json +1 -1
  28. package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
  29. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  30. package/.next/server/pages/api/dictionary/[locale].js +1 -1
  31. package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  32. package/.next/server/pages/api/solve.js +1 -1
  33. package/.next/server/pages/api/solve.js.nft.json +1 -1
  34. package/.next/server/pages/api/verify.js +1 -1
  35. package/.next/server/pages/api/verify.js.nft.json +1 -1
  36. package/.next/server/pages/index.html +1 -1
  37. package/.next/server/pages/index.js +1 -1
  38. package/.next/server/pages/index.js.nft.json +1 -1
  39. package/.next/server/pages/index.json +1 -1
  40. package/.next/server/pages-manifest.json +1 -1
  41. package/.next/static/chunks/pages/_app-735105409cfdb48f.js +1 -0
  42. package/.next/static/chunks/webpack-6224d37324e372cb.js +1 -0
  43. package/.next/trace +23 -23
  44. package/LICENSE +1 -1
  45. package/package.json +10 -9
  46. package/src/components/Board/Board.tsx +1 -1
  47. package/src/components/Board/hooks/useBoardStyle.ts +1 -1
  48. package/src/components/Board/hooks/useGrid.ts +5 -5
  49. package/src/components/EmptyState/EmptyState.tsx +2 -2
  50. package/src/components/Rack/Rack.tsx +7 -7
  51. package/src/components/Rack/components/InputPrompt/InputPrompt.tsx +1 -3
  52. package/src/components/Rack/components/RackTile/RackTile.tsx +6 -4
  53. package/src/hooks/useEffectOnce.ts +9 -1
  54. package/src/lib/extractCharacters.test.ts +2 -1
  55. package/src/lib/extractCharacters.ts +16 -2
  56. package/src/state/sagas.ts +1 -1
  57. package/.next/static/chunks/pages/_app-34618eeeff128581.js +0 -1
  58. package/.next/static/chunks/webpack-4224e970a97a4a86.js +0 -1
  59. /package/.next/static/{IJuVKnkd8P2us9rVuan82 → 3MlxnccTCLyz9bgD30zY2}/_buildManifest.js +0 -0
  60. /package/.next/static/{IJuVKnkd8P2us9rVuan82 → 3MlxnccTCLyz9bgD30zY2}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=60,exports.ids=[60],exports.modules={119:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordListUs=t.getWordListGb=void 0;let i=r(9562),n=r(8335);t.getWordListGb=async()=>(0,n.getTxtWordList)("https://www.wordgamedictionary.com/sowpods/download/sowpods.txt",i.Locale.EN_GB),t.getWordListUs=async()=>(0,n.getTxtWordList)("https://www.wordgamedictionary.com/twl06/download/twl06.txt",i.Locale.EN_US)},184:(e,t,r)=>{r.d(t,{A:()=>i});let i=e=>({origin:e.headers.origin,referer:e.headers.referer,userAgent:e.headers["user-agent"],xForwardedFor:e.headers["x-forwarded-for"],xRealIp:e.headers["x-real-ip"]})},224:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>Array.from(new Set(e))},294:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(6665);class n{constructor(){this.cache={},this.cacheTimestamps={}}get(e){return Promise.resolve(this.cache[e])}getLastModifiedTimestamp(e){return this.cacheTimestamps[e]}has(e){return void 0!==this.cache[e]}isStale(e){let t=this.getLastModifiedTimestamp(e);if(this.has(e)&&void 0!==t)return Math.abs(t-Date.now())>i.CACHE_STALE_THRESHOLD}set(e,t){return this.cacheTimestamps[e]=Date.now(),this.cache[e]=t,Promise.resolve()}}t.default=n},305:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>{let e=await (0,n.getTxtWordList)("https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt",i.Locale.FR_FR);return(0,n.latinizeDiacritics)(e)}},413:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let n=r(4217),o=i(r(9021)),s=r(9551),l=r(8335);t.getWordList=async()=>{let e=(0,l.getTempFilepath)(),t=await a("https://sjp.pl/sl/growy/"),r=await (0,l.downloadFile)(t);await (0,l.unzip)(r,"slowa.txt",e),o.default.unlinkSync(r);let i=o.default.readFileSync(e,"utf-8");return o.default.unlinkSync(e),(0,l.extractWords)(i.toLocaleString(),"pl-PL")};let a=async e=>{let t=await (0,l.downloadHtml)(e),r=await u(t),{href:i}=new s.URL(r,e);return i},u=e=>{let t=(0,n.load)(e),r=Array.from(t("a")).map(e=>t(e).attr("href")).filter(Boolean).find(e=>e.endsWith(".zip"));if(void 0===r)throw Error("Cannot find link to zip file on the page");return r}},457:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{let t=null;return async()=>{if(t)return t;try{return t=e(),await t}finally{t=null}}}},743:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>(t,r)=>{let i=t.getLastModifiedTimestamp(e),n=r.getLastModifiedTimestamp(e);return i===n?0:void 0===i?1:void 0===n?-1:n-i}},928:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(9362),o=i(r(9021)),s=r(6665),l=i(r(1356));class a{async get(e){if(!this.has(e))return;let t=(0,l.default)(e),r=await o.default.promises.readFile(t,"utf-8");return n.Trie.deserialize(r)}getLastModifiedTimestamp(e){let t=(0,l.default)(e);if(o.default.existsSync(t))return o.default.statSync(t).mtimeMs}has(e){let t=(0,l.default)(e);return o.default.existsSync(t)}isStale(e){if(!this.has(e))return;let t=this.getLastModifiedTimestamp(e);if(void 0!==t)return Math.abs(t-Date.now())>s.CACHE_STALE_THRESHOLD}async set(e,t){let r=(0,l.default)(e);await o.default.promises.writeFile(r,t.serialize())}}t.default=a},949:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(7519)),o=r(9562),s=i(r(9021)),l=r(6665),a=r(2655);class u{constructor(){this.cache=new a.LayeredCache,this.downloadDictionaryProxies=Object.fromEntries(Object.values(o.Locale).map(e=>[e,(0,a.createAsyncProxy)(()=>(0,a.downloadDictionary)(e))]))}async get(e){if(this.cache.has(e)){let t=await this.cache.get(e);if(t)return t}return n.default.info("Dictionaries - cache miss",{locale:e}),this.updateDictionary(e)}remove(){s.default.rmdirSync(l.OUTPUT_DIRECTORY,{recursive:!0})}async update(e){let t=e?Object.values(o.Locale):this.getLocalesToUpdate();n.default.info("Dictionaries - update",{force:e,locales:t}),await Promise.all(t.map(e=>this.updateDictionary(e)))}getLocalesToUpdate(){return Object.values(o.Locale).filter(e=>!1!==this.cache.isStale(e))}async updateDictionary(e){n.default.info("Dictionaries - updateDictionary",{locale:e}),s.default.mkdirSync(l.OUTPUT_DIRECTORY,{recursive:!0});let t=this.downloadDictionaryProxies[e],r=await t();return await this.cache.set(e,r),r}}t.default=u},1135:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/MansourM/persian-to-persian-dictionary/main/moein/words.txt",i.Locale.FA_IR)},1356:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9902)),o=r(6665);t.default=e=>n.default.resolve(o.OUTPUT_DIRECTORY,`${e}.txt`)},1385:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{static fromJson(e){return e?new r({definitions:e.definitions,exists:e.exists,isAllowed:e.isAllowed,word:e.word}):r.Null}constructor({definitions:e,exists:t,isAllowed:r,word:i}){this.definitions=e,this.exists=t,this.isAllowed=r,this.word=i}toJson(){return{definitions:this.definitions,exists:this.exists,isAllowed:this.isAllowed,word:this.word}}}r.Null=Object.freeze({definitions:[],exists:!1,isAllowed:!1,word:"",toJson:()=>null}),t.default=r},1513:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9902)),o=r(5124),s=r(6220);t.default=(0,o.createLogger)({level:"info",format:o.format.combine(o.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),o.format.errors({stack:!0}),o.format.splat(),o.format.json(),o.format.prettyPrint()),transports:[new o.transports.File({filename:n.default.resolve(s.OUTPUT_DIRECTORY,"error.log"),level:"error"}),new o.transports.File({filename:n.default.resolve(s.OUTPUT_DIRECTORY,"all.log")}),new o.transports.Console({format:o.format.combine(o.format.colorize(),o.format.simple()),level:"error"})]})},1652:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isTileJson=void 0;let n=i(r(2143));t.isTileJson=e=>(0,n.default)(e)&&"string"==typeof e.character&&"boolean"==typeof e.isBlank},2143:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>"object"==typeof e&&null!==e},2248:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>{let e=await (0,n.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt",i.Locale.RO_RO);return(0,n.latinizeDiacritics)(e)}},2250:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(1097);t.default=e=>new Promise((t,r)=>{(e.startsWith("https")?i.https:i.http).get(e,e=>{let i="";e.setEncoding("utf8"),e.on("data",e=>{i+=e}),e.on("end",()=>{t(i)}),e.on("error",r)})})},2498:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(1820)),o=i(r(9902)),s=i(r(3839)),l=o.default.resolve(n.default.homedir(),".scrabble-solver");t.default=()=>{let e=`${(0,s.default)()}.txt`;return o.default.join(l,e)}},2507:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(7511),o={[i.Locale.DE_DE]:n.german.getWordList,[i.Locale.EN_GB]:n.english.getWordListGb,[i.Locale.EN_US]:n.english.getWordListUs,[i.Locale.ES_ES]:n.spanish.getWordList,[i.Locale.FA_IR]:n.persian.getWordList,[i.Locale.FR_FR]:n.french.getWordList,[i.Locale.PL_PL]:n.polish.getWordList,[i.Locale.RO_RO]:n.romanian.getWordList,[i.Locale.TR_TR]:n.turkish.getWordList};t.getWordList=e=>o[e]()},2639:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/turkish/kelimelik.txt",i.Locale.TR_TR)},2655:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MemoryCache=t.LayeredCache=t.getDictionaryFilepath=t.downloadDictionary=t.DiskCache=t.createCacheTimestampComparator=t.createAsyncProxy=void 0;var n=r(457);Object.defineProperty(t,"createAsyncProxy",{enumerable:!0,get:function(){return i(n).default}});var o=r(743);Object.defineProperty(t,"createCacheTimestampComparator",{enumerable:!0,get:function(){return i(o).default}});var s=r(928);Object.defineProperty(t,"DiskCache",{enumerable:!0,get:function(){return i(s).default}});var l=r(9085);Object.defineProperty(t,"downloadDictionary",{enumerable:!0,get:function(){return i(l).default}});var a=r(1356);Object.defineProperty(t,"getDictionaryFilepath",{enumerable:!0,get:function(){return i(a).default}});var u=r(6299);Object.defineProperty(t,"LayeredCache",{enumerable:!0,get:function(){return i(u).default}});var d=r(294);Object.defineProperty(t,"MemoryCache",{enumerable:!0,get:function(){return i(d).default}})},2680:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isLocale=void 0,function(e){e.DE_DE="de-DE",e.EN_GB="en-GB",e.EN_US="en-US",e.ES_ES="es-ES",e.FA_IR="fa-IR",e.FR_FR="fr-FR",e.PL_PL="pl-PL",e.RO_RO="ro-RO",e.TR_TR="tr-TR"}(r||(r={}));let i=Object.values(r);t.isLocale=e=>i.includes(e),t.default=r},3471:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(5878));t.default=(e,t)=>{let r=e.split(/\r?\n/g),i=(0,n.default)(r,t),o=[];for(let e=i;e<r.length;++e){let t=r[e].trim();t.length>0&&o.push(t.toLocaleLowerCase())}return o}},3728:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBoardJson=void 0;let i=r(4784);t.isBoardJson=e=>{if(!Array.isArray(e))return!1;for(let t of e){if(!Array.isArray(e))return!1;for(let e of t)if(!(0,i.isCellJson)(e))return!1}return!0}},3734:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(5722));class o{static fromJson(e){return new o({isEmpty:e.isEmpty,tile:n.default.fromJson(e.tile),x:e.x,y:e.y})}constructor({isEmpty:e=!0,tile:t=n.default.Null,x:r,y:i}){this.isEmpty=e,this.tile=t,this.x=r,this.y=i}clone(){return new o({isEmpty:this.isEmpty,tile:this.tile.clone(),x:this.x,y:this.y})}equals(e){return this.x===e.x&&this.y===e.y&&this.isEmpty===e.isEmpty&&this.tile.equals(e.tile)}hasTile(){return this.tile!==n.default.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()}}t.default=o},3839:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(5511));t.default=(e=8)=>n.default.randomBytes(e).toString("hex")},4182:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(3734)),s=i(r(5722));class l{static create(e){return l.fromStringArray(Array(e).fill(Array(e).fill(" ").join("")))}static fromJson(e){return new l({rows:e.map(e=>e.map(o.default.fromJson))})}static fromStringArray(e){return new l({rows:e.map((e,t)=>e.split("").map((e,r)=>new o.default({isEmpty:!e||e===n.EMPTY_CELL,tile:e===n.EMPTY_CELL?s.default.Null:new s.default({character:e}),x:r,y:t})))})}constructor({rows:e}){this.rows=e,this.columnsCount=e[0].length,this.rowsCount=e.length}get center(){let e=Math.floor(this.columnsCount/2),t=Math.floor(this.rowsCount/2);return this.rows[t][e]}clone(){return new l({rows:this.rows.map(e=>e.map(e=>e.clone()))})}collides(e){return this.collidesUp(e)||this.collidesDown(e)||this.collidesLeft(e)||this.collidesRight(e)}collidesDown({x:e,y:t}){return t<this.rowsCount-1&&!this.rows[t+1][e].isEmpty}collidesLeft({x:e,y:t}){return e>0&&!this.rows[t][e-1].isEmpty}collidesRight({x:e,y:t}){return e<this.columnsCount-1&&!this.rows[t][e+1].isEmpty}collidesUp({x:e,y:t}){return t>0&&!this.rows[t-1][e].isEmpty}equals(e){return this.columnsCount===e.columnsCount&&this.rowsCount===e.rowsCount&&this.rows.every((t,r)=>t.every((t,i)=>t.equals(e.rows[r][i])))}getBlanksCount(){return this.rows.reduce((e,t)=>e+t.reduce((e,t)=>e+ +!!t.tile.isBlank,0),0)}getColumn(e){return this.rows.map(t=>t[e])}getRow(e){return this.rows[e]}getTilesCount(){return this.rows.reduce((e,t)=>e+t.reduce((e,t)=>e+ +!!t.hasTile(),0),0)}getWords(){let e=[];for(let t=0;t<this.columnsCount;++t){let r=[];for(let e=0;e<this.rowsCount;++e)r.push(this.rows[e][t]);e.push(r)}let t=new l({rows:e});return this.toString().split("\n").concat(t.toString().split("\n")).flatMap(e=>e.replaceAll(/\s+/g,n.EMPTY_CELL).split(" ")).filter(e=>e.length>1)}isEmpty(){return this.rows.every(e=>e.every(({isEmpty:e})=>e))}toJson(){return this.rows.map(e=>e.map(e=>e.toJson()))}toString(){return this.rows.map(e=>e.map(String).join("")).join("\n")}updateCell(e,t,r){this.rows[t][e]=r(this.rows[t][e])}updateRow(e,t){this.rows[e]=t(this.rows[e])}}t.default=l},4392:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(7103));class s extends o.default{constructor(){super(...arguments),this.type=n.BONUS_CHARACTER}canApply(e,t){return super.canApply(e,t)&&this.matchesCellTileScore(e,t)}matchesCellTileScore(e,t){return void 0===this.score||this.score===e.pointsMap[t.tile.character]}get value(){return{characterMultiplier:this.multiplier,wordMultiplier:1}}}t.default=s},4409:(e,t,r)=>{e.exports=r(838)},4474:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VOWELS=t.CONSONANTS=t.NO_BONUS=t.EMPTY_CELL=t.BONUS_WORD=t.BONUS_CHARACTER=t.BLANK=t.COMMA_LATIN=t.COMMA_ARABIC=void 0,t.COMMA_ARABIC="،",t.COMMA_LATIN=",",t.BLANK=" ",t.BONUS_CHARACTER="BONUS_CHARACTER",t.BONUS_WORD="BONUS_WORD",t.EMPTY_CELL=" ",t.NO_BONUS={characterMultiplier:1,wordMultiplier:1},t.CONSONANTS="bc\xe7ćdfgğhjklłmnń\xf1pqrsşśtvwxzźż".split(""),t.VOWELS="aą\xe4eęio\xf3\xf6u\xfcyı".split("")},4600:(e,t)=>{Object.defineProperty(t,"A",{enumerable:!0,get:function(){return r}});var r=function(e){return e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE",e}({})},4784:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isCellJson=void 0;let n=i(r(2143)),o=r(1652);t.isCellJson=e=>(0,n.default)(e)&&"boolean"==typeof e.isEmpty&&((0,o.isTileJson)(e.tile)||null===e.tile)&&"number"==typeof e.x&&"number"==typeof e.y},5145:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9021)),o=i(r(7279)),s=i(r(3471));t.default=async(e,t)=>{let r=await (0,o.default)(e),i=n.default.readFileSync(r,"utf-8"),l=(0,s.default)(i.toLocaleString(),t);return n.default.unlinkSync(r),l}},5722:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(4474);class n{static fromJson(e){return e?new n({character:e.character,isBlank:e.isBlank}):n.Null}constructor({character:e,isBlank:t=!1}){this.character=e,this.isBlank=t}clone(){return new n({character:this.character,isBlank:this.isBlank})}equals(e){return this.character===e.character&&this.isBlank===e.isBlank}toJson(){return{character:this.character,isBlank:this.isBlank}}toString(){return this.character}}n.Null=Object.freeze({character:i.EMPTY_CELL,isBlank:!1,clone:()=>n.Null,equals:e=>e===n.Null,toJson:()=>null,toString:()=>i.EMPTY_CELL}),t.default=n},5732:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(4188)),o=i(r(224));t.default=e=>(0,o.default)(e.map(e=>(0,n.default)(e)))},5776:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(4392)),s=i(r(7699));class l{static fromJson(e){return new l(e)}constructor(e){this.bonuses=a(e),this.config=e,this.pointsMap=d(this.config)}get alphabet(){return u(this.config)}get bingoScore(){return this.config.bingoScore}get blankScore(){return this.config.blankScore}get blanksCount(){return this.config.blanksCount}get boardSize(){return this.config.boardSize}get game(){return this.config.game}get locale(){return this.config.locale}get twoCharacterTiles(){return this.config.tiles.filter(e=>2===e.character.length).map(e=>e.character)}getCellBonus(e){return this.bonuses.find(t=>t.matchesCellCoordinates(e))}getCellBonusValue(e){return this.getCellBonus(e)?.value||n.NO_BONUS}getCharacterPoints(e){return null===e?void 0:e===n.BLANK?this.blankScore:this.pointsMap[e]}getTwoCharacterTileByPrefix(e){if(1===e.length)return this.twoCharacterTiles.find(t=>t.startsWith(e))}getTilePoints(e){if(null!==e)return e.isBlank?this.blankScore:this.getCharacterPoints(e.character)}hasCharacter(e){return e in this.pointsMap}isTwoCharacterTilePrefix(e){return void 0!==this.getTwoCharacterTileByPrefix(e)}get rackSize(){return this.config.rackSize}get tiles(){return this.config.tiles}toJson(){return this.config}}let a=e=>e.bonuses.map(e=>{if(e.type===n.BONUS_CHARACTER)return new o.default(e);if(e.type===n.BONUS_WORD)return new s.default(e);throw Error(`Unsupported Bonus type: "${e.type}"`)}),u=e=>e.tiles.map(({character:e})=>e),d=e=>e.tiles.reduce((e,{character:t,score:r})=>({...e,[t]:r}),{});t.default=l},5878:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{let r=e.findIndex((e,r)=>{let i=e[r+1]||"",n=e.localeCompare(i,t)>0,o=!!e.match(/\s/);return 0!==e.trim().length&&!o&&n});if(void 0===r)throw Error("Cannot find index of the first word in the file");return r}},6182:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9660));class o extends n.default{clone(){return new o(this.board,this.cells.map(e=>e.clone()))}getCollisions(){let e=[];return this.cells.filter(e=>e.isEmpty&&(this.board.collidesLeft(e)||this.board.collidesRight(e))).forEach(t=>{let r=this.board.getRow(t.y),i=t.x-1;for(;i>=0&&r[i].hasTile();)--i;let o=r.slice(i+1,t.x);for(i=t.x+1;i<r.length&&r[i].hasTile();)++i;let s=r.slice(t.x+1,i),l=[...o,t,...s];if(l.length>1){let t=new n.default(this.board,l);e.push(t)}}),e}}t.default=o},6220:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OUTPUT_DIRECTORY=void 0;let n=i(r(1820));t.OUTPUT_DIRECTORY=i(r(9902)).default.resolve(n.default.homedir(),".scrabble-solver","logs")},6299:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(743)),o=i(r(928)),s=i(r(294));class l{constructor(){this.layers=[new s.default,new o.default]}async get(e){let t=this.getLastModifiedLayer(e);if(!t)return Promise.resolve(void 0);let[r,i]=this.layers,n=await t.get(e);return t===i&&void 0!==n&&await r.set(e,n),n}getLastModifiedTimestamp(e){let t=this.getLastModifiedLayer(e);if(t)return t.getLastModifiedTimestamp(e)}has(e){return this.layers.some(t=>t.has(e))}isStale(e){return!!this.layers.some(t=>t.isStale(e))||!!this.layers.every(t=>void 0===t.isStale(e))&&void 0}async set(e,t){let[r,i]=this.layers;await i.set(e,t),await r.set(e,t)}getLastModifiedLayer(e){let[t]=[...this.layers.filter(t=>t.has(e))].sort((0,n.default)(e));return t}}t.default=l},6440:(e,t)=>{Object.defineProperty(t,"M",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},6665:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OUTPUT_DIRECTORY=t.CACHE_STALE_THRESHOLD=t.DAY=void 0;let n=i(r(1820)),o=i(r(9902));t.DAY=864e5,t.CACHE_STALE_THRESHOLD=+t.DAY,t.OUTPUT_DIRECTORY=o.default.resolve(n.default.homedir(),".scrabble-solver","dictionaries")},7103:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{constructor({multiplier:e,score:t,x:r,y:i}){this.multiplier=e,this.score=t,this.x=r,this.y=i}canApply(e,t){return t.isEmpty&&this.matchesCellCoordinates(t)}matchesCellCoordinates(e){return this.x===e.x&&this.y===e.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}}}t.default=r},7279:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(1097),o=i(r(9021)),s=i(r(2498));t.default=e=>new Promise((t,r)=>{let i=(0,s.default)(),l=e.startsWith("https")?n.https:n.http,a=o.default.createWriteStream(i);l.get(e,n=>{if(void 0===n.statusCode||n.statusCode>=400){r(Error(`Cannot download file: ${e}`));return}n.on("error",e=>{a.close(),r(e)}),n.on("end",()=>{a.on("finish",()=>{a.close(),t(i)})}),n.pipe(a)}).on("error",e=>{a.close(),r(e)})})},7475:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;var o=r(2507);Object.defineProperty(t,"getWordList",{enumerable:!0,get:function(){return o.getWordList}}),n(r(7511),t),n(r(8335),t)},7511:function(e,t,r){var i,n=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),s=0;s<r.length;s++)"default"!==r[s]&&n(t,e,r[s]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.turkish=t.spanish=t.romanian=t.polish=t.persian=t.french=t.german=t.english=void 0,t.english=s(r(119)),t.german=s(r(7779)),t.french=s(r(305)),t.persian=s(r(1135)),t.polish=s(r(413)),t.romanian=s(r(2248)),t.spanish=s(r(9287)),t.turkish=s(r(2639))},7519:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(1513);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i(n).default}})},7605:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(3734));class s{static fromJson(e){return new s({id:e.id,cells:e.cells.map(o.default.fromJson),collisions:e.collisions.map(e=>e.map(o.default.fromJson)),points:e.points})}constructor({cells:e,id:t,collisions:r,points:i}){let n=c(e);this.blanksCount=l(n).length,this.cells=e,this.collisions=r,this.consonantsCount=a(n).length,this.id=t,this.length=e.length,this.points=i,this.pointsRatio=d(n,i),this.tiles=n,this.tilesCount=n.length,this.vowelsCount=u(n).length,this.word=f(e),this.words=h(e,r),this.wordsCount=1+this.collisions.length}toJson(){return{cells:this.cells.map(e=>e.toJson()),id:this.id,collisions:this.collisions.map(e=>e.map(e=>e.toJson())),points:this.points}}}let l=e=>e.filter(({isBlank:e})=>e),a=e=>e.filter(p),u=e=>e.filter(_),d=(e,t)=>t/e.length,c=e=>e.filter(({isEmpty:e})=>e).map(({tile:e})=>e),f=e=>e.reduce((e,t)=>e+t.toString(),""),h=(e,t)=>[e,...t].map(f),p=({character:e,isBlank:t})=>n.CONSONANTS.includes(e)&&!t,_=({character:e,isBlank:t})=>n.VOWELS.includes(e)&&!t;t.default=s},7699:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(7103));class s extends o.default{constructor(){super(...arguments),this.type=n.BONUS_WORD}get value(){return{characterMultiplier:1,wordMultiplier:this.multiplier}}}t.default=s},7715:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.dictionaries=void 0;let s=o(r(949));n(r(2655),t),t.dictionaries=new s.default},7779:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/hippler/german-wordlist/master/words.txt",i.Locale.DE_DE)},8144:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9660));class o extends n.default{clone(){return new o(this.board,this.cells.map(e=>e.clone()))}getCollisions(){let e=[];return this.cells.filter(e=>e.isEmpty&&(this.board.collidesUp(e)||this.board.collidesDown(e))).forEach(t=>{let r=this.board.getColumn(t.x),i=t.y-1;for(;i>=0&&r[i].hasTile();)--i;let o=r.slice(i+1,t.y);for(i=t.y+1;i<r.length&&r[i].hasTile();)++i;let s=r.slice(t.y+1,i),l=[...o,t,...s];if(l.length>1){let t=new n.default(this.board,l);e.push(t)}}),e}}t.default=o},8335:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.unzip=t.unique=t.latinizeDiacritics=t.getTxtWordList=t.getTempFilepath=t.getHash=t.findFirstWordIndex=t.extractWords=t.downloadHtml=t.downloadFile=void 0;var n=r(7279);Object.defineProperty(t,"downloadFile",{enumerable:!0,get:function(){return i(n).default}});var o=r(2250);Object.defineProperty(t,"downloadHtml",{enumerable:!0,get:function(){return i(o).default}});var s=r(3471);Object.defineProperty(t,"extractWords",{enumerable:!0,get:function(){return i(s).default}});var l=r(5878);Object.defineProperty(t,"findFirstWordIndex",{enumerable:!0,get:function(){return i(l).default}});var a=r(3839);Object.defineProperty(t,"getHash",{enumerable:!0,get:function(){return i(a).default}});var u=r(2498);Object.defineProperty(t,"getTempFilepath",{enumerable:!0,get:function(){return i(u).default}});var d=r(5145);Object.defineProperty(t,"getTxtWordList",{enumerable:!0,get:function(){return i(d).default}});var c=r(5732);Object.defineProperty(t,"latinizeDiacritics",{enumerable:!0,get:function(){return i(c).default}});var f=r(224);Object.defineProperty(t,"unique",{enumerable:!0,get:function(){return i(f).default}});var h=r(9321);Object.defineProperty(t,"unzip",{enumerable:!0,get:function(){return i(h).default}})},8368:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9660));class o extends n.default{constructor(e){super(e.board,e.cells),this.collisions=e.getCollisions()}getCollisions(){return this.collisions}}t.default=o},8612:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(2143));t.default=e=>!!(0,n.default)(e)&&"string"==typeof e.message},8852:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isGame=void 0,function(e){e.Kelimelik="kelimelik",e.Literaki="literaki",e.Scrabble="scrabble",e.SuperScrabble="super-scrabble"}(r||(r={}));let i=Object.values(r);t.isGame=e=>i.includes(e),t.default=r},9085:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(9362),o=i(r(7519)),s=r(7475);t.default=async e=>{o.default.info("downloadDictionary",{locale:e});let t=await (0,s.getWordList)(e);return o.default.info("downloadDictionary - success",{locale:e}),n.Trie.fromArray(t)}},9287:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let n=r(9562),o=i(r(4188)),s=r(8335),l="---n---";t.getWordList=async()=>(await (0,s.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/file-2017.txt",n.Locale.ES_ES)).map(e=>e.replaceAll("\xf1",l)).map(o.default).map(e=>e.replaceAll(l,"\xf1"))},9321:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9021)),o=i(r(2029));t.default=(e,t,r)=>n.default.createReadStream(e).pipe(o.default.Parse()).on("entry",e=>{e.path===t?e.pipe(n.default.createWriteStream(r)):e.autodrain()}).promise()},9562:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=t.isError=t.WordDefinition=t.WordBonus=t.VerticalPattern=t.isTileJson=t.Tile=t.Result=t.Pattern=t.isLocale=t.Locale=t.HorizontalPattern=t.isGame=t.Game=t.FinalPattern=t.Config=t.CharacterBonus=t.isCellJson=t.Cell=t.Bonus=t.isBoardJson=t.Board=void 0;var n=r(4182);Object.defineProperty(t,"Board",{enumerable:!0,get:function(){return i(n).default}});var o=r(3728);Object.defineProperty(t,"isBoardJson",{enumerable:!0,get:function(){return o.isBoardJson}});var s=r(7103);Object.defineProperty(t,"Bonus",{enumerable:!0,get:function(){return i(s).default}});var l=r(3734);Object.defineProperty(t,"Cell",{enumerable:!0,get:function(){return i(l).default}});var a=r(4784);Object.defineProperty(t,"isCellJson",{enumerable:!0,get:function(){return a.isCellJson}});var u=r(4392);Object.defineProperty(t,"CharacterBonus",{enumerable:!0,get:function(){return i(u).default}});var d=r(5776);Object.defineProperty(t,"Config",{enumerable:!0,get:function(){return i(d).default}});var c=r(8368);Object.defineProperty(t,"FinalPattern",{enumerable:!0,get:function(){return i(c).default}});var f=r(8852);Object.defineProperty(t,"Game",{enumerable:!0,get:function(){return i(f).default}}),Object.defineProperty(t,"isGame",{enumerable:!0,get:function(){return f.isGame}});var h=r(8144);Object.defineProperty(t,"HorizontalPattern",{enumerable:!0,get:function(){return i(h).default}});var p=r(2680);Object.defineProperty(t,"Locale",{enumerable:!0,get:function(){return i(p).default}}),Object.defineProperty(t,"isLocale",{enumerable:!0,get:function(){return p.isLocale}});var _=r(9660);Object.defineProperty(t,"Pattern",{enumerable:!0,get:function(){return i(_).default}});var m=r(7605);Object.defineProperty(t,"Result",{enumerable:!0,get:function(){return i(m).default}});var y=r(5722);Object.defineProperty(t,"Tile",{enumerable:!0,get:function(){return i(y).default}});var g=r(1652);Object.defineProperty(t,"isTileJson",{enumerable:!0,get:function(){return g.isTileJson}});var b=r(6182);Object.defineProperty(t,"VerticalPattern",{enumerable:!0,get:function(){return i(b).default}});var v=r(7699);Object.defineProperty(t,"WordBonus",{enumerable:!0,get:function(){return i(v).default}});var O=r(1385);Object.defineProperty(t,"WordDefinition",{enumerable:!0,get:function(){return i(O).default}});var P=r(8612);Object.defineProperty(t,"isError",{enumerable:!0,get:function(){return i(P).default}});var w=r(2143);Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return i(w).default}})},9660:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.board=e,this.cells=t}canBePlaced(e){let t=this.getEmptyCellsCount();return t>=1&&t<=e.rackSize&&(this.hasAtLeast1NonEmptyCell()||this.collides()||this.goesThroughBoardCenter()&&this.board.isEmpty())}clone(){return new r(this.board,this.cells.map(e=>e.clone()))}collides(){return this.cells.some(e=>e.isEmpty&&this.board.collides(e))}getIndexOfFirstCellWithoutTile(){return this.cells.findIndex(e=>!e.hasTile())}getEmptyCellsCount(){return this.cells.filter(e=>e.isEmpty).length}goesThroughBoardCenter(){return this.cells.some(e=>e.x===this.board.center.x&&e.y===this.board.center.y&&e.isEmpty)}hasAtLeast1EmptyCell(){return this.cells.some(e=>e.isEmpty)}hasAtLeast1NonEmptyCell(){return this.cells.some(e=>!e.isEmpty)}getCollisions(){return[]}toJson(){return{cells:this.cells.map(e=>e.toJson()),collisions:this.getCollisions().map(e=>e.toJson()),word:this.toString()}}toString(){return this.cells.reduce((e,t)=>e+t.toString(),"")}}t.default=r}};
1
+ "use strict";exports.id=60,exports.ids=[60],exports.modules={119:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordListUs=t.getWordListGb=void 0;let i=r(9562),n=r(8335);t.getWordListGb=async()=>(0,n.getTxtWordList)("https://www.wordgamedictionary.com/sowpods/download/sowpods.txt",i.Locale.EN_GB),t.getWordListUs=async()=>(0,n.getTxtWordList)("https://www.wordgamedictionary.com/twl06/download/twl06.txt",i.Locale.EN_US)},184:(e,t,r)=>{r.d(t,{A:()=>i});let i=e=>({origin:e.headers.origin,referer:e.headers.referer,userAgent:e.headers["user-agent"],xForwardedFor:e.headers["x-forwarded-for"],xRealIp:e.headers["x-real-ip"]})},224:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>Array.from(new Set(e))},294:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(6665);class n{constructor(){this.cache={},this.cacheTimestamps={}}get(e){return Promise.resolve(this.cache[e])}getLastModifiedTimestamp(e){return this.cacheTimestamps[e]}has(e){return void 0!==this.cache[e]}isStale(e){let t=this.getLastModifiedTimestamp(e);if(this.has(e)&&void 0!==t)return Math.abs(t-Date.now())>i.CACHE_STALE_THRESHOLD}set(e,t){return this.cacheTimestamps[e]=Date.now(),this.cache[e]=t,Promise.resolve()}}t.default=n},305:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>{let e=await (0,n.getTxtWordList)("https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt",i.Locale.FR_FR);return(0,n.transliterateDiacritics)(e)}},413:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let n=r(4217),o=i(r(9021)),s=r(9551),l=r(8335);t.getWordList=async()=>{let e=(0,l.getTempFilepath)(),t=await a("https://sjp.pl/sl/growy/"),r=await (0,l.downloadFile)(t);await (0,l.unzip)(r,"slowa.txt",e),o.default.unlinkSync(r);let i=o.default.readFileSync(e,"utf-8");return o.default.unlinkSync(e),(0,l.extractWords)(i.toLocaleString(),"pl-PL")};let a=async e=>{let t=await (0,l.downloadHtml)(e),r=await u(t),{href:i}=new s.URL(r,e);return i},u=e=>{let t=(0,n.load)(e),r=Array.from(t("a")).map(e=>t(e).attr("href")).filter(Boolean).find(e=>e.endsWith(".zip"));if(void 0===r)throw Error("Cannot find link to zip file on the page");return r}},457:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{let t=null;return async()=>{if(t)return t;try{return t=e(),await t}finally{t=null}}}},743:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>(t,r)=>{let i=t.getLastModifiedTimestamp(e),n=r.getLastModifiedTimestamp(e);return i===n?0:void 0===i?1:void 0===n?-1:n-i}},928:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(9362),o=i(r(9021)),s=r(6665),l=i(r(1356));class a{async get(e){if(!this.has(e))return;let t=(0,l.default)(e),r=await o.default.promises.readFile(t,"utf-8");return n.Trie.deserialize(r)}getLastModifiedTimestamp(e){let t=(0,l.default)(e);if(o.default.existsSync(t))return o.default.statSync(t).mtimeMs}has(e){let t=(0,l.default)(e);return o.default.existsSync(t)}isStale(e){if(!this.has(e))return;let t=this.getLastModifiedTimestamp(e);if(void 0!==t)return Math.abs(t-Date.now())>s.CACHE_STALE_THRESHOLD}async set(e,t){let r=(0,l.default)(e);await o.default.promises.writeFile(r,t.serialize())}}t.default=a},949:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(7519)),o=r(9562),s=i(r(9021)),l=r(6665),a=r(2655);class u{constructor(){this.cache=new a.LayeredCache,this.downloadDictionaryProxies=Object.fromEntries(Object.values(o.Locale).map(e=>[e,(0,a.createAsyncProxy)(()=>(0,a.downloadDictionary)(e))]))}async get(e){if(this.cache.has(e)){let t=await this.cache.get(e);if(t)return t}return n.default.info("Dictionaries - cache miss",{locale:e}),this.updateDictionary(e)}remove(){s.default.rmdirSync(l.OUTPUT_DIRECTORY,{recursive:!0})}async update(e){let t=e?Object.values(o.Locale):this.getLocalesToUpdate();n.default.info("Dictionaries - update",{force:e,locales:t}),await Promise.all(t.map(e=>this.updateDictionary(e)))}getLocalesToUpdate(){return Object.values(o.Locale).filter(e=>!1!==this.cache.isStale(e))}async updateDictionary(e){n.default.info("Dictionaries - updateDictionary",{locale:e}),s.default.mkdirSync(l.OUTPUT_DIRECTORY,{recursive:!0});let t=this.downloadDictionaryProxies[e],r=await t();return await this.cache.set(e,r),r}}t.default=u},1135:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/MansourM/persian-to-persian-dictionary/main/moein/words.txt",i.Locale.FA_IR)},1356:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9902)),o=r(6665);t.default=e=>n.default.resolve(o.OUTPUT_DIRECTORY,`${e}.txt`)},1385:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{static fromJson(e){return e?new r({definitions:e.definitions,exists:e.exists,isAllowed:e.isAllowed,word:e.word}):r.Null}constructor({definitions:e,exists:t,isAllowed:r,word:i}){this.definitions=e,this.exists=t,this.isAllowed=r,this.word=i}toJson(){return{definitions:this.definitions,exists:this.exists,isAllowed:this.isAllowed,word:this.word}}}r.Null=Object.freeze({definitions:[],exists:!1,isAllowed:!1,word:"",toJson:()=>null}),t.default=r},1513:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9902)),o=r(5124),s=r(6220);t.default=(0,o.createLogger)({level:"info",format:o.format.combine(o.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),o.format.errors({stack:!0}),o.format.splat(),o.format.json(),o.format.prettyPrint()),transports:[new o.transports.File({filename:n.default.resolve(s.OUTPUT_DIRECTORY,"error.log"),level:"error"}),new o.transports.File({filename:n.default.resolve(s.OUTPUT_DIRECTORY,"all.log")}),new o.transports.Console({format:o.format.combine(o.format.colorize(),o.format.simple()),level:"error"})]})},1652:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isTileJson=void 0;let n=i(r(2143));t.isTileJson=e=>(0,n.default)(e)&&"string"==typeof e.character&&"boolean"==typeof e.isBlank},2143:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>"object"==typeof e&&null!==e},2248:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>{let e=await (0,n.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt",i.Locale.RO_RO);return(0,n.transliterateDiacritics)(e)}},2250:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(1097);t.default=e=>new Promise((t,r)=>{(e.startsWith("https")?i.https:i.http).get(e,e=>{let i="";e.setEncoding("utf8"),e.on("data",e=>{i+=e}),e.on("end",()=>{t(i)}),e.on("error",r)})})},2498:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(1820)),o=i(r(9902)),s=i(r(3839)),l=o.default.resolve(n.default.homedir(),".scrabble-solver");t.default=()=>{let e=`${(0,s.default)()}.txt`;return o.default.join(l,e)}},2507:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(7511),o={[i.Locale.DE_DE]:n.german.getWordList,[i.Locale.EN_GB]:n.english.getWordListGb,[i.Locale.EN_US]:n.english.getWordListUs,[i.Locale.ES_ES]:n.spanish.getWordList,[i.Locale.FA_IR]:n.persian.getWordList,[i.Locale.FR_FR]:n.french.getWordList,[i.Locale.PL_PL]:n.polish.getWordList,[i.Locale.RO_RO]:n.romanian.getWordList,[i.Locale.TR_TR]:n.turkish.getWordList};t.getWordList=e=>o[e]()},2639:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/turkish/kelimelik.txt",i.Locale.TR_TR)},2655:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MemoryCache=t.LayeredCache=t.getDictionaryFilepath=t.downloadDictionary=t.DiskCache=t.createCacheTimestampComparator=t.createAsyncProxy=void 0;var n=r(457);Object.defineProperty(t,"createAsyncProxy",{enumerable:!0,get:function(){return i(n).default}});var o=r(743);Object.defineProperty(t,"createCacheTimestampComparator",{enumerable:!0,get:function(){return i(o).default}});var s=r(928);Object.defineProperty(t,"DiskCache",{enumerable:!0,get:function(){return i(s).default}});var l=r(9085);Object.defineProperty(t,"downloadDictionary",{enumerable:!0,get:function(){return i(l).default}});var a=r(1356);Object.defineProperty(t,"getDictionaryFilepath",{enumerable:!0,get:function(){return i(a).default}});var u=r(6299);Object.defineProperty(t,"LayeredCache",{enumerable:!0,get:function(){return i(u).default}});var d=r(294);Object.defineProperty(t,"MemoryCache",{enumerable:!0,get:function(){return i(d).default}})},2680:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isLocale=void 0,function(e){e.DE_DE="de-DE",e.EN_GB="en-GB",e.EN_US="en-US",e.ES_ES="es-ES",e.FA_IR="fa-IR",e.FR_FR="fr-FR",e.PL_PL="pl-PL",e.RO_RO="ro-RO",e.TR_TR="tr-TR"}(r||(r={}));let i=Object.values(r);t.isLocale=e=>i.includes(e),t.default=r},3471:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(5878));t.default=(e,t)=>{let r=e.split(/\r?\n/g),i=(0,n.default)(r,t),o=[];for(let e=i;e<r.length;++e){let t=r[e].trim();t.length>0&&o.push(t.toLocaleLowerCase())}return o}},3728:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBoardJson=void 0;let i=r(4784);t.isBoardJson=e=>{if(!Array.isArray(e))return!1;for(let t of e){if(!Array.isArray(e))return!1;for(let e of t)if(!(0,i.isCellJson)(e))return!1}return!0}},3734:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(5722));class o{static fromJson(e){return new o({isEmpty:e.isEmpty,tile:n.default.fromJson(e.tile),x:e.x,y:e.y})}constructor({isEmpty:e=!0,tile:t=n.default.Null,x:r,y:i}){this.isEmpty=e,this.tile=t,this.x=r,this.y=i}clone(){return new o({isEmpty:this.isEmpty,tile:this.tile.clone(),x:this.x,y:this.y})}equals(e){return this.x===e.x&&this.y===e.y&&this.isEmpty===e.isEmpty&&this.tile.equals(e.tile)}hasTile(){return this.tile!==n.default.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()}}t.default=o},3839:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(5511));t.default=(e=8)=>n.default.randomBytes(e).toString("hex")},4182:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(3734)),s=i(r(5722));class l{static create(e){return l.fromStringArray(Array(e).fill(Array(e).fill(" ").join("")))}static fromJson(e){return new l({rows:e.map(e=>e.map(o.default.fromJson))})}static fromStringArray(e){return new l({rows:e.map((e,t)=>e.split("").map((e,r)=>new o.default({isEmpty:!e||e===n.EMPTY_CELL,tile:e===n.EMPTY_CELL?s.default.Null:new s.default({character:e}),x:r,y:t})))})}constructor({rows:e}){this.rows=e,this.columnsCount=e[0].length,this.rowsCount=e.length}get center(){let e=Math.floor(this.columnsCount/2),t=Math.floor(this.rowsCount/2);return this.rows[t][e]}clone(){return new l({rows:this.rows.map(e=>e.map(e=>e.clone()))})}collides(e){return this.collidesUp(e)||this.collidesDown(e)||this.collidesLeft(e)||this.collidesRight(e)}collidesDown({x:e,y:t}){return t<this.rowsCount-1&&!this.rows[t+1][e].isEmpty}collidesLeft({x:e,y:t}){return e>0&&!this.rows[t][e-1].isEmpty}collidesRight({x:e,y:t}){return e<this.columnsCount-1&&!this.rows[t][e+1].isEmpty}collidesUp({x:e,y:t}){return t>0&&!this.rows[t-1][e].isEmpty}equals(e){return this.columnsCount===e.columnsCount&&this.rowsCount===e.rowsCount&&this.rows.every((t,r)=>t.every((t,i)=>t.equals(e.rows[r][i])))}getBlanksCount(){return this.rows.reduce((e,t)=>e+t.reduce((e,t)=>e+ +!!t.tile.isBlank,0),0)}getColumn(e){return this.rows.map(t=>t[e])}getRow(e){return this.rows[e]}getTilesCount(){return this.rows.reduce((e,t)=>e+t.reduce((e,t)=>e+ +!!t.hasTile(),0),0)}getWords(){let e=[];for(let t=0;t<this.columnsCount;++t){let r=[];for(let e=0;e<this.rowsCount;++e)r.push(this.rows[e][t]);e.push(r)}let t=new l({rows:e});return this.toString().split("\n").concat(t.toString().split("\n")).flatMap(e=>e.replaceAll(/\s+/g,n.EMPTY_CELL).split(" ")).filter(e=>e.length>1)}isEmpty(){return this.rows.every(e=>e.every(({isEmpty:e})=>e))}toJson(){return this.rows.map(e=>e.map(e=>e.toJson()))}toString(){return this.rows.map(e=>e.map(String).join("")).join("\n")}updateCell(e,t,r){this.rows[t][e]=r(this.rows[t][e])}updateRow(e,t){this.rows[e]=t(this.rows[e])}}t.default=l},4392:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(7103));class s extends o.default{constructor(){super(...arguments),this.type=n.BONUS_CHARACTER}canApply(e,t){return super.canApply(e,t)&&this.matchesCellTileScore(e,t)}matchesCellTileScore(e,t){return void 0===this.score||this.score===e.pointsMap[t.tile.character]}get value(){return{characterMultiplier:this.multiplier,wordMultiplier:1}}}t.default=s},4409:(e,t,r)=>{e.exports=r(838)},4474:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VOWELS=t.CONSONANTS=t.NO_BONUS=t.EMPTY_CELL=t.BONUS_WORD=t.BONUS_CHARACTER=t.BLANK=t.COMMA_LATIN=t.COMMA_ARABIC=void 0,t.COMMA_ARABIC="،",t.COMMA_LATIN=",",t.BLANK=" ",t.BONUS_CHARACTER="BONUS_CHARACTER",t.BONUS_WORD="BONUS_WORD",t.EMPTY_CELL=" ",t.NO_BONUS={characterMultiplier:1,wordMultiplier:1},t.CONSONANTS="bc\xe7ćdfgğhjklłmnń\xf1pqrsşśtvwxzźż".split(""),t.VOWELS="aą\xe4eęio\xf3\xf6u\xfcyı".split("")},4600:(e,t)=>{Object.defineProperty(t,"A",{enumerable:!0,get:function(){return r}});var r=function(e){return e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE",e}({})},4784:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isCellJson=void 0;let n=i(r(2143)),o=r(1652);t.isCellJson=e=>(0,n.default)(e)&&"boolean"==typeof e.isEmpty&&((0,o.isTileJson)(e.tile)||null===e.tile)&&"number"==typeof e.x&&"number"==typeof e.y},5145:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9021)),o=i(r(7279)),s=i(r(3471));t.default=async(e,t)=>{let r=await (0,o.default)(e),i=n.default.readFileSync(r,"utf-8"),l=(0,s.default)(i.toLocaleString(),t);return n.default.unlinkSync(r),l}},5722:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let i=r(4474);class n{static fromJson(e){return e?new n({character:e.character,isBlank:e.isBlank}):n.Null}constructor({character:e,isBlank:t=!1}){this.character=e,this.isBlank=t}clone(){return new n({character:this.character,isBlank:this.isBlank})}equals(e){return this.character===e.character&&this.isBlank===e.isBlank}toJson(){return{character:this.character,isBlank:this.isBlank}}toString(){return this.character}}n.Null=Object.freeze({character:i.EMPTY_CELL,isBlank:!1,clone:()=>n.Null,equals:e=>e===n.Null,toJson:()=>null,toString:()=>i.EMPTY_CELL}),t.default=n},5776:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(4392)),s=i(r(7699));class l{static fromJson(e){return new l(e)}constructor(e){this.bonuses=a(e),this.config=e,this.pointsMap=d(this.config)}get alphabet(){return u(this.config)}get bingoScore(){return this.config.bingoScore}get blankScore(){return this.config.blankScore}get blanksCount(){return this.config.blanksCount}get boardSize(){return this.config.boardSize}get game(){return this.config.game}get locale(){return this.config.locale}get twoCharacterTiles(){return this.config.tiles.filter(e=>2===e.character.length).map(e=>e.character)}getCellBonus(e){return this.bonuses.find(t=>t.matchesCellCoordinates(e))}getCellBonusValue(e){return this.getCellBonus(e)?.value||n.NO_BONUS}getCharacterPoints(e){return null===e?void 0:e===n.BLANK?this.blankScore:this.pointsMap[e]}getTwoCharacterTileByPrefix(e){if(1===e.length)return this.twoCharacterTiles.find(t=>t.startsWith(e))}getTilePoints(e){if(null!==e)return e.isBlank?this.blankScore:this.getCharacterPoints(e.character)}hasCharacter(e){return e in this.pointsMap}isTwoCharacterTilePrefix(e){return void 0!==this.getTwoCharacterTileByPrefix(e)}get rackSize(){return this.config.rackSize}get tiles(){return this.config.tiles}toJson(){return this.config}}let a=e=>e.bonuses.map(e=>{if(e.type===n.BONUS_CHARACTER)return new o.default(e);if(e.type===n.BONUS_WORD)return new s.default(e);throw Error(`Unsupported Bonus type: "${e.type}"`)}),u=e=>e.tiles.map(({character:e})=>e),d=e=>e.tiles.reduce((e,{character:t,score:r})=>({...e,[t]:r}),{});t.default=l},5878:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{let r=e.findIndex((e,r)=>{let i=e[r+1]||"",n=e.localeCompare(i,t)>0,o=!!e.match(/\s/);return 0!==e.trim().length&&!o&&n});if(void 0===r)throw Error("Cannot find index of the first word in the file");return r}},6182:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9660));class o extends n.default{clone(){return new o(this.board,this.cells.map(e=>e.clone()))}getCollisions(){let e=[];return this.cells.filter(e=>e.isEmpty&&(this.board.collidesLeft(e)||this.board.collidesRight(e))).forEach(t=>{let r=this.board.getRow(t.y),i=t.x-1;for(;i>=0&&r[i].hasTile();)--i;let o=r.slice(i+1,t.x);for(i=t.x+1;i<r.length&&r[i].hasTile();)++i;let s=r.slice(t.x+1,i),l=[...o,t,...s];if(l.length>1){let t=new n.default(this.board,l);e.push(t)}}),e}}t.default=o},6220:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OUTPUT_DIRECTORY=void 0;let n=i(r(1820));t.OUTPUT_DIRECTORY=i(r(9902)).default.resolve(n.default.homedir(),".scrabble-solver","logs")},6299:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(743)),o=i(r(928)),s=i(r(294));class l{constructor(){this.layers=[new s.default,new o.default]}async get(e){let t=this.getLastModifiedLayer(e);if(!t)return Promise.resolve(void 0);let[r,i]=this.layers,n=await t.get(e);return t===i&&void 0!==n&&await r.set(e,n),n}getLastModifiedTimestamp(e){let t=this.getLastModifiedLayer(e);if(t)return t.getLastModifiedTimestamp(e)}has(e){return this.layers.some(t=>t.has(e))}isStale(e){return!!this.layers.some(t=>t.isStale(e))||!!this.layers.every(t=>void 0===t.isStale(e))&&void 0}async set(e,t){let[r,i]=this.layers;await i.set(e,t),await r.set(e,t)}getLastModifiedLayer(e){let[t]=[...this.layers.filter(t=>t.has(e))].sort((0,n.default)(e));return t}}t.default=l},6440:(e,t)=>{Object.defineProperty(t,"M",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},6665:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OUTPUT_DIRECTORY=t.CACHE_STALE_THRESHOLD=t.DAY=void 0;let n=i(r(1820)),o=i(r(9902));t.DAY=864e5,t.CACHE_STALE_THRESHOLD=+t.DAY,t.OUTPUT_DIRECTORY=o.default.resolve(n.default.homedir(),".scrabble-solver","dictionaries")},7103:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{constructor({multiplier:e,score:t,x:r,y:i}){this.multiplier=e,this.score=t,this.x=r,this.y=i}canApply(e,t){return t.isEmpty&&this.matchesCellCoordinates(t)}matchesCellCoordinates(e){return this.x===e.x&&this.y===e.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}}}t.default=r},7279:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(1097),o=i(r(9021)),s=i(r(2498));t.default=e=>new Promise((t,r)=>{let i=(0,s.default)(),l=e.startsWith("https")?n.https:n.http,a=o.default.createWriteStream(i);l.get(e,n=>{if(void 0===n.statusCode||n.statusCode>=400){r(Error(`Cannot download file: ${e}`));return}n.on("error",e=>{a.close(),r(e)}),n.on("end",()=>{a.on("finish",()=>{a.close(),t(i)})}),n.pipe(a)}).on("error",e=>{a.close(),r(e)})})},7475:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;var o=r(2507);Object.defineProperty(t,"getWordList",{enumerable:!0,get:function(){return o.getWordList}}),n(r(7511),t),n(r(8335),t)},7511:function(e,t,r){var i,n=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||(i=function(e){return(i=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),s=0;s<r.length;s++)"default"!==r[s]&&n(t,e,r[s]);return o(t,e),t});Object.defineProperty(t,"__esModule",{value:!0}),t.turkish=t.spanish=t.romanian=t.polish=t.persian=t.french=t.german=t.english=void 0,t.english=s(r(119)),t.german=s(r(7779)),t.french=s(r(305)),t.persian=s(r(1135)),t.polish=s(r(413)),t.romanian=s(r(2248)),t.spanish=s(r(9287)),t.turkish=s(r(2639))},7519:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(1513);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i(n).default}})},7605:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(3734));class s{static fromJson(e){return new s({id:e.id,cells:e.cells.map(o.default.fromJson),collisions:e.collisions.map(e=>e.map(o.default.fromJson)),points:e.points})}constructor({cells:e,id:t,collisions:r,points:i}){let n=c(e);this.blanksCount=l(n).length,this.cells=e,this.collisions=r,this.consonantsCount=a(n).length,this.id=t,this.length=e.length,this.points=i,this.pointsRatio=d(n,i),this.tiles=n,this.tilesCount=n.length,this.vowelsCount=u(n).length,this.word=f(e),this.words=h(e,r),this.wordsCount=1+this.collisions.length}toJson(){return{cells:this.cells.map(e=>e.toJson()),id:this.id,collisions:this.collisions.map(e=>e.map(e=>e.toJson())),points:this.points}}}let l=e=>e.filter(({isBlank:e})=>e),a=e=>e.filter(p),u=e=>e.filter(_),d=(e,t)=>t/e.length,c=e=>e.filter(({isEmpty:e})=>e).map(({tile:e})=>e),f=e=>e.reduce((e,t)=>e+t.toString(),""),h=(e,t)=>[e,...t].map(f),p=({character:e,isBlank:t})=>n.CONSONANTS.includes(e)&&!t,_=({character:e,isBlank:t})=>n.VOWELS.includes(e)&&!t;t.default=s},7699:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(4474),o=i(r(7103));class s extends o.default{constructor(){super(...arguments),this.type=n.BONUS_WORD}get value(){return{characterMultiplier:1,wordMultiplier:this.multiplier}}}t.default=s},7715:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.dictionaries=void 0;let s=o(r(949));n(r(2655),t),t.dictionaries=new s.default},7779:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>(0,n.getTxtWordList)("https://raw.githubusercontent.com/hippler/german-wordlist/master/words.txt",i.Locale.DE_DE)},8144:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9660));class o extends n.default{clone(){return new o(this.board,this.cells.map(e=>e.clone()))}getCollisions(){let e=[];return this.cells.filter(e=>e.isEmpty&&(this.board.collidesUp(e)||this.board.collidesDown(e))).forEach(t=>{let r=this.board.getColumn(t.x),i=t.y-1;for(;i>=0&&r[i].hasTile();)--i;let o=r.slice(i+1,t.y);for(i=t.y+1;i<r.length&&r[i].hasTile();)++i;let s=r.slice(t.y+1,i),l=[...o,t,...s];if(l.length>1){let t=new n.default(this.board,l);e.push(t)}}),e}}t.default=o},8335:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.unzip=t.unique=t.transliterateDiacritics=t.getTxtWordList=t.getTempFilepath=t.getHash=t.findFirstWordIndex=t.extractWords=t.downloadHtml=t.downloadFile=void 0;var n=r(7279);Object.defineProperty(t,"downloadFile",{enumerable:!0,get:function(){return i(n).default}});var o=r(2250);Object.defineProperty(t,"downloadHtml",{enumerable:!0,get:function(){return i(o).default}});var s=r(3471);Object.defineProperty(t,"extractWords",{enumerable:!0,get:function(){return i(s).default}});var l=r(5878);Object.defineProperty(t,"findFirstWordIndex",{enumerable:!0,get:function(){return i(l).default}});var a=r(3839);Object.defineProperty(t,"getHash",{enumerable:!0,get:function(){return i(a).default}});var u=r(2498);Object.defineProperty(t,"getTempFilepath",{enumerable:!0,get:function(){return i(u).default}});var d=r(5145);Object.defineProperty(t,"getTxtWordList",{enumerable:!0,get:function(){return i(d).default}});var c=r(8670);Object.defineProperty(t,"transliterateDiacritics",{enumerable:!0,get:function(){return i(c).default}});var f=r(224);Object.defineProperty(t,"unique",{enumerable:!0,get:function(){return i(f).default}});var h=r(9321);Object.defineProperty(t,"unzip",{enumerable:!0,get:function(){return i(h).default}})},8368:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9660));class o extends n.default{constructor(e){super(e.board,e.cells),this.collisions=e.getCollisions()}getCollisions(){return this.collisions}}t.default=o},8612:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(2143));t.default=e=>!!(0,n.default)(e)&&"string"==typeof e.message},8670:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(6605),o=i(r(224));t.default=(e,t)=>(0,o.default)(e.map(e=>(0,n.transliterate)(e,t)))},8852:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isGame=void 0,function(e){e.Kelimelik="kelimelik",e.Literaki="literaki",e.Scrabble="scrabble",e.SuperScrabble="super-scrabble"}(r||(r={}));let i=Object.values(r);t.isGame=e=>i.includes(e),t.default=r},9085:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=r(9362),o=i(r(7519)),s=r(7475);t.default=async e=>{o.default.info("downloadDictionary",{locale:e});let t=await (0,s.getWordList)(e);return o.default.info("downloadDictionary - success",{locale:e}),n.Trie.fromArray(t)}},9287:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),n=r(8335);t.getWordList=async()=>{let e=await (0,n.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/file-2017.txt",i.Locale.ES_ES);return(0,n.transliterateDiacritics)(e,{ignore:["\xf1"]})}},9321:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let n=i(r(9021)),o=i(r(2029));t.default=(e,t,r)=>n.default.createReadStream(e).pipe(o.default.Parse()).on("entry",e=>{e.path===t?e.pipe(n.default.createWriteStream(r)):e.autodrain()}).promise()},9562:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=t.isError=t.WordDefinition=t.WordBonus=t.VerticalPattern=t.isTileJson=t.Tile=t.Result=t.Pattern=t.isLocale=t.Locale=t.HorizontalPattern=t.isGame=t.Game=t.FinalPattern=t.Config=t.CharacterBonus=t.isCellJson=t.Cell=t.Bonus=t.isBoardJson=t.Board=void 0;var n=r(4182);Object.defineProperty(t,"Board",{enumerable:!0,get:function(){return i(n).default}});var o=r(3728);Object.defineProperty(t,"isBoardJson",{enumerable:!0,get:function(){return o.isBoardJson}});var s=r(7103);Object.defineProperty(t,"Bonus",{enumerable:!0,get:function(){return i(s).default}});var l=r(3734);Object.defineProperty(t,"Cell",{enumerable:!0,get:function(){return i(l).default}});var a=r(4784);Object.defineProperty(t,"isCellJson",{enumerable:!0,get:function(){return a.isCellJson}});var u=r(4392);Object.defineProperty(t,"CharacterBonus",{enumerable:!0,get:function(){return i(u).default}});var d=r(5776);Object.defineProperty(t,"Config",{enumerable:!0,get:function(){return i(d).default}});var c=r(8368);Object.defineProperty(t,"FinalPattern",{enumerable:!0,get:function(){return i(c).default}});var f=r(8852);Object.defineProperty(t,"Game",{enumerable:!0,get:function(){return i(f).default}}),Object.defineProperty(t,"isGame",{enumerable:!0,get:function(){return f.isGame}});var h=r(8144);Object.defineProperty(t,"HorizontalPattern",{enumerable:!0,get:function(){return i(h).default}});var p=r(2680);Object.defineProperty(t,"Locale",{enumerable:!0,get:function(){return i(p).default}}),Object.defineProperty(t,"isLocale",{enumerable:!0,get:function(){return p.isLocale}});var _=r(9660);Object.defineProperty(t,"Pattern",{enumerable:!0,get:function(){return i(_).default}});var m=r(7605);Object.defineProperty(t,"Result",{enumerable:!0,get:function(){return i(m).default}});var y=r(5722);Object.defineProperty(t,"Tile",{enumerable:!0,get:function(){return i(y).default}});var g=r(1652);Object.defineProperty(t,"isTileJson",{enumerable:!0,get:function(){return g.isTileJson}});var b=r(6182);Object.defineProperty(t,"VerticalPattern",{enumerable:!0,get:function(){return i(b).default}});var v=r(7699);Object.defineProperty(t,"WordBonus",{enumerable:!0,get:function(){return i(v).default}});var O=r(1385);Object.defineProperty(t,"WordDefinition",{enumerable:!0,get:function(){return i(O).default}});var P=r(8612);Object.defineProperty(t,"isError",{enumerable:!0,get:function(){return i(P).default}});var w=r(2143);Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return i(w).default}})},9660:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.board=e,this.cells=t}canBePlaced(e){let t=this.getEmptyCellsCount();return t>=1&&t<=e.rackSize&&(this.hasAtLeast1NonEmptyCell()||this.collides()||this.goesThroughBoardCenter()&&this.board.isEmpty())}clone(){return new r(this.board,this.cells.map(e=>e.clone()))}collides(){return this.cells.some(e=>e.isEmpty&&this.board.collides(e))}getIndexOfFirstCellWithoutTile(){return this.cells.findIndex(e=>!e.hasTile())}getEmptyCellsCount(){return this.cells.filter(e=>e.isEmpty).length}goesThroughBoardCenter(){return this.cells.some(e=>e.x===this.board.center.x&&e.y===this.board.center.y&&e.isEmpty)}hasAtLeast1EmptyCell(){return this.cells.some(e=>e.isEmpty)}hasAtLeast1NonEmptyCell(){return this.cells.some(e=>!e.isEmpty)}getCollisions(){return[]}toJson(){return{cells:this.cells.map(e=>e.toJson()),collisions:this.getCollisions().map(e=>e.toJson()),word:this.toString()}}toString(){return this.cells.reduce((e,t)=>e+t.toString(),"")}}t.default=r}};