@scrabble-solver/scrabble-solver 2.15.12 → 2.15.13

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 (69) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +14 -14
  3. package/.next/cache/.previewinfo +1 -0
  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/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/diagnostics/framework.json +1 -1
  16. package/.next/next-minimal-server.js.nft.json +1 -1
  17. package/.next/next-server.js.nft.json +1 -1
  18. package/.next/prerender-manifest.json +4 -4
  19. package/.next/required-server-files.json +17 -7
  20. package/.next/routes-manifest.json +7 -3
  21. package/.next/server/chunks/106.js +1 -0
  22. package/.next/server/chunks/30.js +4 -4
  23. package/.next/server/chunks/318.js +1 -1
  24. package/.next/server/chunks/50.js +19 -0
  25. package/.next/server/chunks/812.js +1 -1
  26. package/.next/server/chunks/929.js +1 -0
  27. package/.next/server/chunks/974.js +1 -1
  28. package/.next/server/middleware-build-manifest.js +1 -1
  29. package/.next/server/pages/404.html +1 -1
  30. package/.next/server/pages/404.js.nft.json +1 -1
  31. package/.next/server/pages/500.html +1 -1
  32. package/.next/server/pages/_app.js +1 -1
  33. package/.next/server/pages/_app.js.nft.json +1 -1
  34. package/.next/server/pages/_document.js +1 -1
  35. package/.next/server/pages/_document.js.nft.json +1 -1
  36. package/.next/server/pages/_error.js +1 -1
  37. package/.next/server/pages/_error.js.nft.json +1 -1
  38. package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
  39. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  40. package/.next/server/pages/api/dictionary/[locale].js +1 -1
  41. package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  42. package/.next/server/pages/api/solve.js +1 -1
  43. package/.next/server/pages/api/solve.js.nft.json +1 -1
  44. package/.next/server/pages/api/verify.js +1 -1
  45. package/.next/server/pages/api/verify.js.nft.json +1 -1
  46. package/.next/server/pages/api/visit.js +1 -1
  47. package/.next/server/pages/api/visit.js.nft.json +1 -1
  48. package/.next/server/pages/index.html +1 -1
  49. package/.next/server/pages/index.js +1 -1
  50. package/.next/server/pages/index.js.nft.json +1 -1
  51. package/.next/server/pages/index.json +1 -1
  52. package/.next/server/pages-manifest.json +1 -1
  53. package/.next/server/webpack-api-runtime.js +1 -1
  54. package/.next/server/webpack-runtime.js +1 -1
  55. package/.next/static/{X6ny8arpUxpRCZ4OMm7Vo → MhrqAqLI9_L8obb7tgjvi}/_buildManifest.js +1 -1
  56. package/.next/static/chunks/framework-aad31c68dd0bb0ea.js +1 -0
  57. package/.next/static/chunks/main-eab5847b41f0af4a.js +1 -0
  58. package/.next/static/chunks/pages/{404-18b9f6f5faa91442.js → 404-04457ede98c6b53e.js} +1 -1
  59. package/.next/static/chunks/pages/_app-bf81f201c021fdc1.js +1 -0
  60. package/.next/static/chunks/pages/{_error-7ea2d37f66343175.js → _error-a9800cedd835bcad.js} +1 -1
  61. package/.next/static/chunks/pages/index-79a390f3c2a2499f.js +1 -0
  62. package/.next/trace +24 -23
  63. package/package.json +15 -15
  64. package/.next/server/chunks/60.js +0 -1
  65. package/.next/static/chunks/framework-57125a0cc6749ff9.js +0 -1
  66. package/.next/static/chunks/main-03618e8bd3cd04dd.js +0 -1
  67. package/.next/static/chunks/pages/_app-2378fe90e1762e8c.js +0 -1
  68. package/.next/static/chunks/pages/index-bfc599d9351773ae.js +0 -1
  69. /package/.next/static/{X6ny8arpUxpRCZ4OMm7Vo → MhrqAqLI9_L8obb7tgjvi}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.15.12",
3
+ "version": "2.15.13",
4
4
  "description": "Scrabble Solver 2 - App",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,21 +25,21 @@
25
25
  "type-check": "tsc --noEmit"
26
26
  },
27
27
  "dependencies": {
28
- "@floating-ui/react": "^0.27.9",
28
+ "@floating-ui/react": "^0.27.13",
29
29
  "@kamilmielnik/trie": "^4.0.0",
30
30
  "@reduxjs/toolkit": "^2.8.2",
31
- "@scrabble-solver/configs": "^2.15.12",
32
- "@scrabble-solver/constants": "^2.15.12",
33
- "@scrabble-solver/dictionaries": "^2.15.12",
34
- "@scrabble-solver/logger": "^2.15.12",
35
- "@scrabble-solver/solver": "^2.15.12",
36
- "@scrabble-solver/types": "^2.15.12",
37
- "@scrabble-solver/word-definitions": "^2.15.12",
31
+ "@scrabble-solver/configs": "^2.15.13",
32
+ "@scrabble-solver/constants": "^2.15.13",
33
+ "@scrabble-solver/dictionaries": "^2.15.13",
34
+ "@scrabble-solver/logger": "^2.15.13",
35
+ "@scrabble-solver/solver": "^2.15.13",
36
+ "@scrabble-solver/types": "^2.15.13",
37
+ "@scrabble-solver/word-definitions": "^2.15.13",
38
38
  "classnames": "^2.5.1",
39
39
  "env-cmd": "^10.1.0",
40
40
  "include-media": "^2.0.0",
41
41
  "include-media-query-builder": "^1.1.0",
42
- "next": "^15.3.2",
42
+ "next": "^15.4.2",
43
43
  "normalize.css": "^8.0.1",
44
44
  "react": "^19.1.0",
45
45
  "react-cool-onclickoutside": "^1.7.0",
@@ -51,7 +51,7 @@
51
51
  "redux-saga": "^1.3.0",
52
52
  "store2": "^2.14.4",
53
53
  "transliteration": "^2.3.5",
54
- "use-debounce": "^10.0.4",
54
+ "use-debounce": "^10.0.5",
55
55
  "workbox-expiration": "^7.3.0",
56
56
  "workbox-precaching": "^7.3.0",
57
57
  "workbox-routing": "^7.3.0",
@@ -61,8 +61,8 @@
61
61
  "devDependencies": {
62
62
  "@svgr/webpack": "^8.1.0",
63
63
  "@types/classnames": "^2.3.4",
64
- "@types/react": "^19.1.5",
65
- "@types/react-dom": "^19.1.5",
64
+ "@types/react": "^19.1.8",
65
+ "@types/react-dom": "^19.1.6",
66
66
  "@types/react-highlight-words": "^0.20.0",
67
67
  "@types/react-modal": "^3.16.3",
68
68
  "@types/react-portal": "^4.0.7",
@@ -70,7 +70,7 @@
70
70
  "@types/react-window": "^1.8.8",
71
71
  "@types/redux": "^3.6.31",
72
72
  "@types/redux-saga": "^0.10.5",
73
- "sass": "^1.89.0"
73
+ "sass": "^1.89.2"
74
74
  },
75
- "gitHead": "1eeef2b2975e63b195885dd2636c53624d300c6b"
75
+ "gitHead": "fd3e02f7051acdb8cc6dd138a959679bc00f1ed6"
76
76
  }
@@ -1 +0,0 @@
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),o=r(8335);t.getWordListGb=async()=>(0,o.getTxtWordList)("https://www.wordgamedictionary.com/sowpods/download/sowpods.txt",i.Locale.EN_GB),t.getWordListUs=async()=>(0,o.getTxtWordList)("https://www.wordgamedictionary.com/twl06/download/twl06.txt",i.Locale.EN_US)},184:(e,t,r)=>{r.d(t,{T:()=>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.unique=void 0,t.unique=e=>Array.from(new Set(e))},294:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MemoryCache=void 0;let i=r(4960);class o{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.MemoryCache=o},305:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),o=r(8335);t.getWordList=async()=>{let e=await (0,o.getTxtWordList)("https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt",i.Locale.FR_FR);return(0,o.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 o=r(4217),n=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),n.default.unlinkSync(r);let i=n.default.readFileSync(e,"utf-8");return n.default.unlinkSync(e),(0,l.extractWords)(i.toLocaleString(),"pl-PL")};let a=async e=>{let t=u(await (0,l.downloadHtml)(e)),{href:r}=new s.URL(t,e);return r},u=e=>{let t=(0,o.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.createAsyncProxy=void 0,t.createAsyncProxy=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.createCacheTimestampComparator=void 0,t.createCacheTimestampComparator=e=>(t,r)=>{let i=t.getLastModifiedTimestamp(e),o=r.getLastModifiedTimestamp(e);return i===o?0:void 0===i?1:void 0===o?-1:o-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}),t.DiskCache=void 0;let o=r(9362),n=i(r(9021)),s=r(4960),l=r(1356);class a{async get(e){if(!this.has(e))return;let t=(0,l.getDictionaryFilepath)(e),r=await n.default.promises.readFile(t,"utf-8");return o.Trie.deserialize(r)}getLastModifiedTimestamp(e){let t=(0,l.getDictionaryFilepath)(e);if(n.default.existsSync(t))return n.default.statSync(t).mtimeMs}has(e){let t=(0,l.getDictionaryFilepath)(e);return n.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.getDictionaryFilepath)(e);await n.default.promises.writeFile(r,t.serialize())}}t.DiskCache=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}),t.Dictionaries=void 0;let o=r(7519),n=r(9562),s=i(r(9021)),l=r(4960),a=r(2655);class u{constructor(){this.cache=new a.LayeredCache,this.downloadDictionaryProxies=Object.fromEntries(Object.values(n.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 o.logger.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(n.Locale):this.getLocalesToUpdate();o.logger.info("Dictionaries - update",{force:e,locales:t}),await Promise.all(t.map(e=>this.updateDictionary(e)))}getLocalesToUpdate(){return Object.values(n.Locale).filter(e=>!1!==this.cache.isStale(e))}async updateDictionary(e){o.logger.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.Dictionaries=u},1135:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),o=r(8335);t.getWordList=async()=>(0,o.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}),t.getDictionaryFilepath=void 0;let o=i(r(9902)),n=r(4960);t.getDictionaryFilepath=e=>o.default.resolve(n.OUTPUT_DIRECTORY,`${e}.txt`)},1385:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WordDefinition=void 0;class r{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}}}t.WordDefinition=r,r.fromJson=e=>e?new r({definitions:e.definitions,exists:e.exists,isAllowed:e.isAllowed,word:e.word}):r.Null,r.Null=Object.freeze({definitions:[],exists:!1,isAllowed:!1,word:"",toJson:()=>null})},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}),t.logger=void 0;let o=i(r(9902)),n=r(5124),s=r(6220);t.logger=(0,n.createLogger)({level:"info",format:n.format.combine(n.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),n.format.errors({stack:!0}),n.format.splat(),n.format.json(),n.format.prettyPrint()),transports:[new n.transports.File({filename:o.default.resolve(s.OUTPUT_DIRECTORY,"error.log"),level:"error"}),new n.transports.File({filename:o.default.resolve(s.OUTPUT_DIRECTORY,"all.log")}),new n.transports.Console({format:n.format.combine(n.format.colorize(),n.format.simple()),level:"error"})]})},1652:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isTileJson=void 0;let i=r(2143);t.isTileJson=e=>(0,i.isObject)(e)&&"string"==typeof e.character&&"boolean"==typeof e.isBlank},2143:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=void 0,t.isObject=e=>"object"==typeof e&&null!==e},2248:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),o=r(8335);t.getWordList=async()=>{let e=await (0,o.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt",i.Locale.RO_RO);return(0,o.transliterateDiacritics)(e)}},2250:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.downloadHtml=void 0;let i=r(1097);t.downloadHtml=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}),t.getTempFilepath=void 0;let o=i(r(1820)),n=i(r(9902)),s=r(3839),l=n.default.resolve(o.default.homedir(),".scrabble-solver");t.getTempFilepath=()=>{let e=`${(0,s.getHash)()}.txt`;return n.default.join(l,e)}},2507:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),o=r(7511),n={[i.Locale.DE_DE]:o.german.getWordList,[i.Locale.EN_GB]:o.english.getWordListGb,[i.Locale.EN_US]:o.english.getWordListUs,[i.Locale.ES_ES]:o.spanish.getWordList,[i.Locale.FA_IR]:o.persian.getWordList,[i.Locale.FR_FR]:o.french.getWordList,[i.Locale.PL_PL]:o.polish.getWordList,[i.Locale.RO_RO]:o.romanian.getWordList,[i.Locale.TR_TR]:o.turkish.getWordList};t.getWordList=e=>n[e]()},2639:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),o=r(8335);t.getWordList=async()=>(0,o.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/turkish/kelimelik.txt",i.Locale.TR_TR)},2655:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MemoryCache=t.LayeredCache=t.getDictionaryFilepath=t.downloadDictionary=t.DiskCache=t.createCacheTimestampComparator=t.createAsyncProxy=void 0;var i=r(457);Object.defineProperty(t,"createAsyncProxy",{enumerable:!0,get:function(){return i.createAsyncProxy}});var o=r(743);Object.defineProperty(t,"createCacheTimestampComparator",{enumerable:!0,get:function(){return o.createCacheTimestampComparator}});var n=r(928);Object.defineProperty(t,"DiskCache",{enumerable:!0,get:function(){return n.DiskCache}});var s=r(9085);Object.defineProperty(t,"downloadDictionary",{enumerable:!0,get:function(){return s.downloadDictionary}});var l=r(1356);Object.defineProperty(t,"getDictionaryFilepath",{enumerable:!0,get:function(){return l.getDictionaryFilepath}});var a=r(6299);Object.defineProperty(t,"LayeredCache",{enumerable:!0,get:function(){return a.LayeredCache}});var u=r(294);Object.defineProperty(t,"MemoryCache",{enumerable:!0,get:function(){return u.MemoryCache}})},2680:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isLocale=t.Locale=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||(t.Locale=r={}));let i=Object.values(r);t.isLocale=e=>i.includes(e)},3471:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.extractWords=void 0;let i=r(5878);t.extractWords=(e,t)=>{let r=e.split(/\r?\n/g),o=(0,i.findFirstWordIndex)(r,t),n=[];for(let e=o;e<r.length;++e){let t=r[e].trim();t.length>0&&n.push(t.toLocaleLowerCase())}return n}},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:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Cell=void 0;let i=r(5722);class o{constructor({isEmpty:e=!0,tile:t=i.Tile.Null,x:r,y:o}){this.isEmpty=e,this.tile=t,this.x=r,this.y=o}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!==i.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()}}t.Cell=o,o.fromJson=e=>new o({isEmpty:e.isEmpty,tile:i.Tile.fromJson(e.tile),x:e.x,y:e.y})},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}),t.getHash=void 0;let o=i(r(5511));t.getHash=(e=8)=>o.default.randomBytes(e).toString("hex")},4182:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Board=void 0;let i=r(4474),o=r(3734),n=r(5722);class s{static fromStringArray(e){return new s({rows:e.map((e,t)=>e.split("").map((e,r)=>new o.Cell({isEmpty:!e||e===i.EMPTY_CELL,tile:e===i.EMPTY_CELL?n.Tile.Null:new n.Tile({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 s({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(){return[...a(this.rows),...a(l(this.rows))]}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.Board=s,s.create=(e,t)=>{let r=Array(t),i=Array(e).fill(" ").join(""),o=r.fill(i);return s.fromStringArray(o)},s.fromJson=e=>new s({rows:e.map(e=>e.map(o.Cell.fromJson))});let l=e=>{let t=e.length,r=e[0].length,i=Array(r).fill(null).map(()=>Array(t));for(let o=0;o<t;++o)for(let t=0;t<r;++t)i[t][o]=e[o][t];return i},a=e=>{let t=[];for(let r of e){let e=[];for(let i of r)i.isEmpty?e.length>0&&(e.length>1&&t.push(u(e)),e=[]):e.push(i);e.length>1&&t.push(u(e))}return t},u=e=>e.map(e=>e.tile.character).join("")},4392:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CharacterBonus=void 0;let i=r(4474),o=r(7103);class n extends o.Bonus{constructor(){super(...arguments),this.type=i.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.CharacterBonus=n},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:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isCellJson=void 0;let i=r(2143),o=r(1652);t.isCellJson=e=>(0,i.isObject)(e)&&"boolean"==typeof e.isEmpty&&((0,o.isTileJson)(e.tile)||null===e.tile)&&"number"==typeof e.x&&"number"==typeof e.y},4960: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 o=i(r(1820)),n=i(r(9902));t.DAY=864e5,t.CACHE_STALE_THRESHOLD=+t.DAY,t.OUTPUT_DIRECTORY=n.default.resolve(o.default.homedir(),".scrabble-solver","dictionaries")},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}),t.getTxtWordList=void 0;let o=i(r(9021)),n=r(7279),s=r(3471);t.getTxtWordList=async(e,t)=>{let r=await (0,n.downloadFile)(e),i=o.default.readFileSync(r,"utf-8"),l=(0,s.extractWords)(i.toLocaleString(),t);return o.default.unlinkSync(r),l}},5722:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Tile=void 0;let i=r(4474);class o{constructor({character:e,isBlank:t=!1}){this.character=e,this.isBlank=t}clone(){return new o({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}}t.Tile=o,o.fromJson=e=>e?new o({character:e.character,isBlank:e.isBlank}):o.Null,o.Null=Object.freeze({character:i.EMPTY_CELL,isBlank:!1,clone:()=>o.Null,equals:e=>e===o.Null,toJson:()=>null,toString:()=>i.EMPTY_CELL})},5776:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Config=void 0;let i=r(4474),o=r(4392),n=r(7699);class s{constructor(e){this.bonuses=l(e),this.config=e,this.pointsMap=u(this.config)}get alphabet(){return a(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(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||i.NO_BONUS}getCharacterPoints(e){if(null!==e)return e===i.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 supportsRemainingTiles(){return this.tiles.every(e=>"number"==typeof e.count)}get tiles(){return this.config.tiles}toJson(){return this.config}}t.Config=s,s.fromJson=e=>new s(e);let l=e=>e.bonuses.map(e=>{if(e.type===i.BONUS_CHARACTER)return new o.CharacterBonus(e);if(e.type===i.BONUS_WORD)return new n.WordBonus(e);throw Error(`Unsupported Bonus type: "${e.type}"`)}),a=e=>e.tiles.map(({character:e})=>e),u=e=>e.tiles.reduce((e,{character:t,score:r})=>({...e,[t]:r}),{})},5878:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.findFirstWordIndex=void 0,t.findFirstWordIndex=(e,t)=>{let r=e.findIndex((e,r)=>{let i=e[r+1]||"",o=e.localeCompare(i,t)>0,n=!!e.match(/\s/);return 0!==e.trim().length&&!n&&o});if(void 0===r)throw Error("Cannot find index of the first word in the file");return r}},6182:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VerticalPattern=void 0;let i=r(9660);class o extends i.Pattern{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),o=t.x-1;for(;o>=0&&r[o].hasTile();)--o;let n=r.slice(o+1,t.x);for(o=t.x+1;o<r.length&&r[o].hasTile();)++o;let s=r.slice(t.x+1,o),l=[...n,t,...s];if(l.length>1){let t=new i.Pattern(this.board,l);e.push(t)}}),e}}t.VerticalPattern=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 o=i(r(1820));t.OUTPUT_DIRECTORY=i(r(9902)).default.resolve(o.default.homedir(),".scrabble-solver","logs")},6289:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.transliterateDiacritics=void 0;let i=r(6605),o=r(224);t.transliterateDiacritics=(e,t)=>(0,o.unique)(e.map(e=>(0,i.transliterate)(e,t)))},6299:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LayeredCache=void 0;let i=r(743),o=r(928),n=r(294);class s{constructor(){this.layers=[new n.MemoryCache,new o.DiskCache]}async get(e){let t=this.getLastModifiedLayer(e);if(!t)return Promise.resolve(void 0);let[r,i]=this.layers,o=await t.get(e);return t===i&&void 0!==o&&await r.set(e,o),o}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,i.createCacheTimestampComparator)(e));return t}}t.LayeredCache=s},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}}})},7055:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isMultiplierBingo=t.isScoreBingo=t.isBingo=void 0;let i=r(2143);t.isBingo=e=>(0,t.isScoreBingo)(e)||(0,t.isMultiplierBingo)(e),t.isScoreBingo=e=>(0,i.isObject)(e)&&"score"in e&&"number"==typeof e.score,t.isMultiplierBingo=e=>(0,i.isObject)(e)&&"multiplier"in e&&"number"==typeof e.multiplier},7103:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Bonus=void 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.Bonus=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}),t.downloadFile=void 0;let o=r(1097),n=i(r(9021)),s=r(2498);t.downloadFile=e=>new Promise((t,r)=>{let i=(0,s.getTempFilepath)(),l=e.startsWith("https")?o.https:o.http,a=n.default.createWriteStream(i);l.get(e,o=>{if(void 0===o.statusCode||o.statusCode>=400)return void r(Error(`Cannot download file: ${e}`));o.on("error",e=>{a.close(),r(e)}),o.on("end",()=>{a.on("finish",()=>{a.close(),t(i)})}),o.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 o=Object.getOwnPropertyDescriptor(t,r);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),o=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 n=r(2507);Object.defineProperty(t,"getWordList",{enumerable:!0,get:function(){return n.getWordList}}),o(r(7511),t),o(r(8335),t)},7511:function(e,t,r){var i,o=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=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]&&o(t,e,r[s]);return n(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:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.logger=void 0;var i=r(1513);Object.defineProperty(t,"logger",{enumerable:!0,get:function(){return i.logger}})},7605:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Result=void 0;let i=r(4474),o=r(3734);class n{constructor({cells:e,id:t,collisions:r,points:i}){let o=c(e);this.blanksCount=s(o).length,this.cells=e,this.collisions=r,this.consonantsCount=l(o).length,this.id=t,this.length=e.length,this.points=i,this.pointsRatio=u(o,i),this.tiles=o,this.tilesCount=o.length,this.vowelsCount=a(o).length,this.word=d(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}}isHorizontal(){return this.cells[0].y===this.cells[1].y}isVertical(){return this.cells[0].x===this.cells[1].x}}t.Result=n,n.fromJson=e=>new n({id:e.id,cells:e.cells.map(o.Cell.fromJson),collisions:e.collisions.map(e=>e.map(o.Cell.fromJson)),points:e.points});let s=e=>e.filter(({isBlank:e})=>e),l=e=>e.filter(f),a=e=>e.filter(p),u=(e,t)=>t/e.length,c=e=>e.filter(({isEmpty:e})=>e).map(({tile:e})=>e),d=e=>e.reduce((e,t)=>e+t.toString(),""),h=(e,t)=>[e,...t].map(d),f=({character:e,isBlank:t})=>i.CONSONANTS.includes(e)&&!t,p=({character:e,isBlank:t})=>i.VOWELS.includes(e)&&!t},7699:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WordBonus=void 0;let i=r(4474),o=r(7103);class n extends o.Bonus{constructor(){super(...arguments),this.type=i.BONUS_WORD}get value(){return{characterMultiplier:1,wordMultiplier:this.multiplier}}}t.WordBonus=n},7715:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),o=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.dictionaries=void 0;let n=r(949);o(r(2655),t),t.dictionaries=new n.Dictionaries},7779:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),o=r(8335);t.getWordList=async()=>(0,o.getTxtWordList)("https://raw.githubusercontent.com/hippler/german-wordlist/master/words.txt",i.Locale.DE_DE)},8144:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HorizontalPattern=void 0;let i=r(9660);class o extends i.Pattern{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),o=t.y-1;for(;o>=0&&r[o].hasTile();)--o;let n=r.slice(o+1,t.y);for(o=t.y+1;o<r.length&&r[o].hasTile();)++o;let s=r.slice(t.y+1,o),l=[...n,t,...s];if(l.length>1){let t=new i.Pattern(this.board,l);e.push(t)}}),e}}t.HorizontalPattern=o},8335:(e,t,r)=>{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 i=r(7279);Object.defineProperty(t,"downloadFile",{enumerable:!0,get:function(){return i.downloadFile}});var o=r(2250);Object.defineProperty(t,"downloadHtml",{enumerable:!0,get:function(){return o.downloadHtml}});var n=r(3471);Object.defineProperty(t,"extractWords",{enumerable:!0,get:function(){return n.extractWords}});var s=r(5878);Object.defineProperty(t,"findFirstWordIndex",{enumerable:!0,get:function(){return s.findFirstWordIndex}});var l=r(3839);Object.defineProperty(t,"getHash",{enumerable:!0,get:function(){return l.getHash}});var a=r(2498);Object.defineProperty(t,"getTempFilepath",{enumerable:!0,get:function(){return a.getTempFilepath}});var u=r(5145);Object.defineProperty(t,"getTxtWordList",{enumerable:!0,get:function(){return u.getTxtWordList}});var c=r(6289);Object.defineProperty(t,"transliterateDiacritics",{enumerable:!0,get:function(){return c.transliterateDiacritics}});var d=r(224);Object.defineProperty(t,"unique",{enumerable:!0,get:function(){return d.unique}});var h=r(9321);Object.defineProperty(t,"unzip",{enumerable:!0,get:function(){return h.unzip}})},8368:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FinalPattern=void 0;let i=r(9660);class o extends i.Pattern{constructor(e){super(e.board,e.cells),this.collisions=e.getCollisions()}getCollisions(){return this.collisions}}t.FinalPattern=o},8612:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isError=void 0;let i=r(2143);t.isError=e=>!!(0,i.isObject)(e)&&"string"==typeof e.message},8852:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.isGame=t.Game=void 0,function(e){e.Kelimelik="kelimelik",e.LetterLeague="letter-league",e.Literaki="literaki",e.Scrabble="scrabble",e.ScrabbleDuel="scrabble-duel",e.SuperScrabble="super-scrabble"}(r||(t.Game=r={}));let i=Object.values(r);t.isGame=e=>i.includes(e)},9085:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.downloadDictionary=void 0;let i=r(9362),o=r(7519),n=r(7475);t.downloadDictionary=async e=>{o.logger.info("downloadDictionary",{locale:e});let t=await (0,n.getWordList)(e);return o.logger.info("downloadDictionary - success",{locale:e}),i.Trie.fromArray(t)}},9287:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getWordList=void 0;let i=r(9562),o=r(8335);t.getWordList=async()=>{let e=await (0,o.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/file-2017.txt",i.Locale.ES_ES);return(0,o.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}),t.unzip=void 0;let o=i(r(9021)),n=i(r(2029));t.unzip=(e,t,r)=>o.default.createReadStream(e).pipe(n.default.Parse()).on("entry",e=>{e.path===t?e.pipe(o.default.createWriteStream(r)):e.autodrain()}).promise()},9562:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WordDefinition=t.WordBonus=t.VerticalPattern=t.isTileJson=t.Tile=t.Result=t.Pattern=t.Locale=t.isLocale=t.isObject=t.isError=t.HorizontalPattern=t.isGame=t.Game=t.FinalPattern=t.Config=t.CharacterBonus=t.isCellJson=t.Cell=t.Bonus=t.isBoardJson=t.Board=t.isScoreBingo=t.isMultiplierBingo=t.isBingo=void 0;var i=r(7055);Object.defineProperty(t,"isBingo",{enumerable:!0,get:function(){return i.isBingo}}),Object.defineProperty(t,"isMultiplierBingo",{enumerable:!0,get:function(){return i.isMultiplierBingo}}),Object.defineProperty(t,"isScoreBingo",{enumerable:!0,get:function(){return i.isScoreBingo}});var o=r(4182);Object.defineProperty(t,"Board",{enumerable:!0,get:function(){return o.Board}});var n=r(3728);Object.defineProperty(t,"isBoardJson",{enumerable:!0,get:function(){return n.isBoardJson}});var s=r(7103);Object.defineProperty(t,"Bonus",{enumerable:!0,get:function(){return s.Bonus}});var l=r(3734);Object.defineProperty(t,"Cell",{enumerable:!0,get:function(){return l.Cell}});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 u.CharacterBonus}});var c=r(5776);Object.defineProperty(t,"Config",{enumerable:!0,get:function(){return c.Config}});var d=r(8368);Object.defineProperty(t,"FinalPattern",{enumerable:!0,get:function(){return d.FinalPattern}});var h=r(8852);Object.defineProperty(t,"Game",{enumerable:!0,get:function(){return h.Game}}),Object.defineProperty(t,"isGame",{enumerable:!0,get:function(){return h.isGame}});var f=r(8144);Object.defineProperty(t,"HorizontalPattern",{enumerable:!0,get:function(){return f.HorizontalPattern}});var p=r(8612);Object.defineProperty(t,"isError",{enumerable:!0,get:function(){return p.isError}});var g=r(2143);Object.defineProperty(t,"isObject",{enumerable:!0,get:function(){return g.isObject}});var m=r(2680);Object.defineProperty(t,"isLocale",{enumerable:!0,get:function(){return m.isLocale}}),Object.defineProperty(t,"Locale",{enumerable:!0,get:function(){return m.Locale}});var y=r(9660);Object.defineProperty(t,"Pattern",{enumerable:!0,get:function(){return y.Pattern}});var b=r(7605);Object.defineProperty(t,"Result",{enumerable:!0,get:function(){return b.Result}});var _=r(5722);Object.defineProperty(t,"Tile",{enumerable:!0,get:function(){return _.Tile}});var v=r(1652);Object.defineProperty(t,"isTileJson",{enumerable:!0,get:function(){return v.isTileJson}});var O=r(6182);Object.defineProperty(t,"VerticalPattern",{enumerable:!0,get:function(){return O.VerticalPattern}});var P=r(7699);Object.defineProperty(t,"WordBonus",{enumerable:!0,get:function(){return P.WordBonus}});var w=r(1385);Object.defineProperty(t,"WordDefinition",{enumerable:!0,get:function(){return w.WordDefinition}})},9660:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Pattern=void 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.Pattern=r}};