scrabble-solver
Version:
Scrabble Solver 2 - Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Letter League, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles.
1 lines • 10.6 kB
JavaScript
;(()=>{var a={};a.id=16,a.ids=[16],a.modules={3501:(a,b,c)=>{c.r(b),c.d(b,{config:()=>y,default:()=>x,handler:()=>A});var d={};c.r(d),c.d(d,{config:()=>t,default:()=>u});var e=c(61223),f=c(74600),g=c(4409),h=c(46440),i=c(16812),j=c(34474),k=c(77715),l=c(57519),m=c(77198),n=c(29562),o=c(10184),p=c(15713),q=c(46680),r=c(66605);n.Locale.DE_DE,n.Locale.EN_GB,n.Locale.EN_US,n.Locale.ES_ES,n.Locale.FA_IR,n.Locale.FR_FR,n.Locale.PL_PL,n.Locale.RO_RO,n.Locale.TR_TR,a=>a;var s=function(a){return a.BlanksCount="blanks-count",a.ConsonantsCount="consonants-count",a.Coordinates="coordinates",a.Points="points",a.TilesCount="tiles-count",a.VowelsCount="vowels-count",a.Word="word",a.WordsCount="words-count",a}({});s.BlanksCount,s.ConsonantsCount,s.Coordinates,s.Points,s.TilesCount,s.VowelsCount,s.Word,s.WordsCount;let t={api:{responseLimit:"25mb"}},u=async(a,b)=>{let c=(0,o.T)(a);try{let{board:d,characters:e,config:f,game:g,locale:h}=(a=>{let{board:b,characters:c,game:d,locale:e}=a.body;if(!(0,n.isLocale)(e))throw Error('Invalid "locale" parameter');if(!(0,n.isGame)(d))throw Error('Invalid "game" parameter');if(!(a=>Array.isArray(a)&&a.every(a=>"string"==typeof a))(c)||0===c.length)throw Error('Invalid "characters" parameter');if(!(0,i.hasConfig)(d,e))throw Error(`No game "${d}" in "${e}"`);let f=(0,i.getConfig)(d,e);for(let a of c)if(!(0,p.Q)(a))throw Error('Invalid "characters" parameter');if(c.filter(a=>a===j.BLANK).length>f.blanksCount)throw Error("Too many blank tiles passed");if(!(0,n.isBoardJson)(b)||!(0,q.J)(b,f))throw Error('Invalid "board" parameter');return{board:n.Board.fromJson(b),characters:c,config:f,game:d,locale:e}})(a);l.logger.info("solve - request",{meta:c,payload:{board:d.toString(),configId:f.game,boardBlanksCount:d.getBlanksCount(),boardTilesCount:d.getTilesCount(),characters:e.join(""),game:g,locale:h}});let o=await k.dictionaries.get(h),r=e.map(a=>new n.Tile({character:a,isBlank:a===j.BLANK})),s=(0,m.kH)(o,f,d,r);b.status(200).send(s)}catch(d){let a=d instanceof Error?d.message:"Unknown error";l.logger.error("solve - error",{error:d,meta:c}),b.status(500).send({error:"Server error",message:a})}};var v=c(49275),w=c(30879);let x=(0,h.M)(d,"default"),y=(0,h.M)(d,"config"),z=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/solve",pathname:"/api/solve",bundlePath:"",filename:""},userland:d,distDir:".next",projectDir:""});async function A(a,b,c){let d=await z.prepare(a,b,{srcPage:"/api/solve"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h}=d;try{let c=a.method||"GET",d=(0,v.getTracer)(),e=d.getActiveScopeSpan(),i=z.instrumentationOnRequestError.bind(z),j=async e=>z.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:void 0,multiZoneDraftMode:!0,trustHostHeader:void 0,previewProps:h.preview,propagateError:!1,dev:z.isDev,page:"/api/solve",projectDir:"",onError:(...b)=>i(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==w.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await j(e):await d.withPropagatedContext(a.headers,()=>d.trace(w.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:v.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},j))}catch(a){if(z.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},14217:a=>{a.exports=require("cheerio")},15713:(a,b,c)=>{c.d(b,{Q:()=>d});let d=a=>0!==a.length&&a.length<=2},19362:a=>{a.exports=require("@kamilmielnik/trie")},21820:a=>{a.exports=require("os")},28298:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getUniquePatterns=void 0;let d=c(58780);b.getUniquePatterns=a=>{let b=new Set,c=[];for(let e of a){let a=(0,d.getPatternHash)(e);b.has(a)||(b.add(a),c.push(e))}return c}},29021:a=>{a.exports=require("fs")},29139:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.solve=void 0;let d=c(64960),e=c(54477),f=c(56550),g=c(59105),h=c(28298);b.solve=(a,b,c,i)=>{let j=(0,f.generatePatterns)(b,c).flatMap(c=>(0,e.fillPattern)(a,b,c,i)),k=b.twoCharacterTiles.length>0?j.filter(a=>(0,d.areDigraphsValid)(b,a)):j;return(0,h.getUniquePatterns)(k).map((a,c)=>({cells:a.cells.map(a=>a.toJson()),collisions:a.getCollisions().map(a=>a.cells.map(a=>a.toJson())),id:c,points:(0,g.getPatternScore)(b,a)}))}},31097:a=>{a.exports=require("follow-redirects")},33873:a=>{a.exports=require("path")},42029:a=>{a.exports=require("unzipper")},46537:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getCellsScore=void 0;let d=c(34474);b.getCellsScore=(a,b)=>{let c=b.reduce(({multiplier:b,score:c},e)=>{let f=a.getCellBonus(e),{characterMultiplier:g,wordMultiplier:h}=f&&f.canApply(a,e)?f.value:d.NO_BONUS,i=a.pointsMap[e.tile.character]||0;return{multiplier:b*h,score:c+(e.tile.isBlank?a.blankScore:i)*g}},{multiplier:1,score:0});return c.score*c.multiplier}},46680:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(15713);let e=(a,b)=>{let{isEmpty:c,tile:e,x:f,y:g}=a;return!(f<0)&&!(f>=b.boardWidth)&&!(g<0)&&!(g>=b.boardHeight)&&(!c||null===e)&&(null===e||!!(0,d.Q)(e.character))},f=(a,b)=>{if(a.length!==b.boardWidth)return!1;for(let c of a)if(!e(c,b))return!1;return!0},g=(a,b)=>{if(a.length!==b.boardHeight)return!1;for(let c of a)if(!f(c,b))return!1;return h(a,b)},h=(a,b)=>{for(let c of a.flat().filter(a=>a&&a.tile&&b.isTwoCharacterTilePrefix(a.tile.character)))for(let d of b.twoCharacterTiles){let b=c.y+1<a.length,e=c.x+1<a[0].length,f=a[c.y+1][c.x],g=a[c.y][c.x+1],h=b&&f.tile&&f.tile.character===d[1],i=e&&g.tile&&g.tile.character===d[1],j=h||i;if(c.tile&&d.startsWith(c.tile.character)&&j)return!1}return!0}},54477:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.fillPatternRecursive=b.fillPattern=void 0;let d=c(34474),e=c(29562);b.fillPattern=(a,c,d,e)=>{if(d.getEmptyCellsCount()>e.length)return[];let f=[];return(0,b.fillPatternRecursive)(f,a,c,d,d.toString(),e),f},b.fillPatternRecursive=(a,c,f,g,h,i)=>{let j=g.getIndexOfFirstCellWithoutTile();if(-1===j){c.has(h)&&g.getCollisions().every(a=>c.has(a.toString()))&&a.push(new e.FinalPattern(g.clone()));return}for(let k=0;k<i.length;++k){let l=i[k],m=g.cells[j].tile;g.cells[j].tile=l;let n=g.getIndexOfFirstCellWithoutTile(),o=h.indexOf(d.EMPTY_CELL),p=h.substring(0,o),q=h.substring(o+1);for(let d of l.isBlank?f.alphabet:[l.character]){let h=p+d,j=h+q;l.character=d,-1===n?c.has(j)&&g.getCollisions().every(a=>c.has(a.toString()))&&a.push(new e.FinalPattern(g.clone())):c.hasPrefix(h)&&(i.splice(k,1),(0,b.fillPatternRecursive)(a,c,f,g,j,i),i.splice(k,0,l))}g.cells[j].tile=m}}},55124:a=>{a.exports=require("winston")},55511:a=>{a.exports=require("crypto")},56550:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.generatePatterns=void 0;let d=c(76050),e=c(91816);b.generatePatterns=(a,b)=>{let c=(0,d.generateHorizontalPatterns)(a,b),f=(0,e.generateVerticalPatterns)(a,b);return c.concat(f)}},58780:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getPatternHash=void 0,b.getPatternHash=a=>a.cells.filter(a=>a.isEmpty).map(a=>{let b=a.tile.isBlank?"!":"",c=a.tile.character+b;return[a.x,a.y,c].join(",")}).join("-")},59105:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getPatternScore=void 0;let d=c(29562),e=c(46537);b.getPatternScore=(a,b)=>{let c=b.getEmptyCellsCount()===a.rackSize,f=(0,e.getCellsScore)(a,b.cells),g=b.getCollisions().reduce((b,c)=>b+(0,e.getCellsScore)(a,c.cells),0);if(c){if((0,d.isScoreBingo)(a.bingo))return f+g+a.bingo.score;if((0,d.isMultiplierBingo)(a.bingo))return f*a.bingo.multiplier+g}return f+g}},64960:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.areDigraphsValid=void 0,b.areDigraphsValid=(a,b)=>{let{twoCharacterTiles:c}=a,{cells:d}=b;for(let a=0;a<d.length-1;++a){let b=d[a],e=d[a+1],f=b.tile.character+e.tile.character;if(c.includes(f))return!1}return!0}},66605:a=>{a.exports=require("transliteration")},67709:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.generateEndIndices=void 0,b.generateEndIndices=(a,b)=>{if(0===a.length)return[];let c=[];for(let d=b+1;d<a.length-1;++d)a[d+1].hasTile()||c.push(d);return c.push(a.length-1),c}},69804:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.generateStartIndices=void 0,b.generateStartIndices=a=>{if(0===a.length)return[];let b=[0];for(let c=1;c<a.length-1;++c)a[c-1].hasTile()||b.push(c);return b}},71161:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.generateVectors=void 0,b.generateVectors=({getNthVector:a,vectorsCount:b})=>Array.from({length:b},(b,c)=>a(c))},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76050:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.generateHorizontalPatterns=void 0;let d=c(29562),e=c(78927),f=c(71161);b.generateHorizontalPatterns=(a,b)=>{let c=a.boardHeight;return(0,f.generateVectors)({getNthVector:a=>b.getRow(a),vectorsCount:c}).flatMap(c=>(0,e.generatePattern)({board:b,config:a,PatternModel:d.HorizontalPattern,cells:c}))}},77198:(a,b,c)=>{b.kH=void 0,c(64960),c(54477),c(67709),c(76050),c(78927),c(56550),c(69804),c(71161),c(91816),c(46537),c(58780),c(59105),c(28298);var d=c(29139);Object.defineProperty(b,"kH",{enumerable:!0,get:function(){return d.solve}})},78927:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.generatePattern=void 0;let d=c(67709),e=c(69804);b.generatePattern=({board:a,cells:b,config:c,PatternModel:f})=>(0,e.generateStartIndices)(b).flatMap(e=>{let g=(0,d.generateEndIndices)(b,e),h=[];for(let d of g){let g=new f(a,b.slice(e,d+1));g.canBePlaced(c)&&h.push(g)}return h})},79551:a=>{a.exports=require("url")},91816:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.generateVerticalPatterns=void 0;let d=c(29562),e=c(78927),f=c(71161);b.generateVerticalPatterns=(a,b)=>{let c=a.boardWidth;return(0,f.generateVectors)({getNthVector:a=>b.getColumn(a),vectorsCount:c}).flatMap(c=>(0,e.generatePattern)({board:b,config:a,PatternModel:d.VerticalPattern,cells:c}))}}};var b=require("../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[929,106,812],()=>b(b.s=3501));module.exports=c})();