@scrabble-solver/scrabble-solver 2.13.2 → 2.13.4
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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +16 -16
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.js +1 -0
- package/.next/prerender-manifest.json +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/InjectManifest.js.nft.json +1 -1
- package/.next/server/chunks/28.js +1 -0
- package/.next/server/chunks/331.js +6 -0
- package/.next/server/chunks/577.js +1 -0
- package/.next/server/chunks/911.js +1 -1083
- package/.next/server/chunks/977.js +1 -0
- package/.next/server/functions-config-manifest.json +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +1 -6
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +1 -380
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +1 -212
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -166
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -836
- package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale].js +1 -192
- package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
- package/.next/server/pages/api/solve.js +1 -1121
- package/.next/server/pages/api/solve.js.nft.json +1 -1
- package/.next/server/pages/api/verify.js +1 -213
- package/.next/server/pages/api/verify.js.nft.json +1 -1
- package/.next/server/pages/api/visit.js +1 -131
- package/.next/server/pages/api/visit.js.nft.json +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js +1 -2088
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/server/pages-manifest.json +1 -12
- package/.next/server/webpack-api-runtime.js +1 -172
- package/.next/server/webpack-runtime.js +1 -229
- package/.next/static/chunks/framework-1728d40275bc359a.js +49 -0
- package/.next/static/chunks/main-5fb7abbfc135de15.js +1 -0
- package/.next/static/chunks/pages/404-b6e238bb4117d451.js +1 -0
- package/.next/static/chunks/pages/_app-b95404c40a0092e6.js +17 -0
- package/.next/static/chunks/pages/_error-db043fa3544f8809.js +1 -0
- package/.next/static/chunks/pages/index-59d569ef79bc2580.js +1 -0
- package/.next/static/css/8fa2fb99b90e109e.css +1 -0
- package/.next/static/css/c80ebc6fd13311f1.css +2 -0
- package/.next/static/jyVoCYlAT5PMzOeavr5AX/_buildManifest.js +1 -0
- package/.next/trace +44 -51
- package/package.json +31 -32
- package/src/state/slices/boardSlice.ts +4 -4
- package/src/state/store.ts +1 -1
- package/.next/cache/next-server.js.nft.json +0 -1
- package/.next/server/chunks/210.js +0 -109
- package/.next/server/chunks/277.js +0 -11942
- package/.next/server/chunks/44.js +0 -1838
- package/.next/server/chunks/50.js +0 -12119
- package/.next/server/chunks/636.js +0 -286
- package/.next/server/chunks/675.js +0 -572
- package/.next/server/chunks/859.js +0 -835
- package/.next/server/chunks/865.js +0 -20424
- package/.next/server/chunks/907.js +0 -42530
- package/.next/server/chunks/987.js +0 -91
- package/.next/static/16S6EJJ0_LRmtRPwnUIw5/_buildManifest.js +0 -1
- package/.next/static/chunks/framework-2c29dc3cd933590b.js +0 -49
- package/.next/static/chunks/main-4dcb7f9b52833aba.js +0 -1
- package/.next/static/chunks/pages/404-b4b5ce15153d4825.js +0 -1
- package/.next/static/chunks/pages/_app-122dc8ecfa0220d5.js +0 -32
- package/.next/static/chunks/pages/_error-54de1933a164a1ff.js +0 -1
- package/.next/static/chunks/pages/index-f56eaa969a831c70.js +0 -1
- package/.next/static/css/4e8b47fe382a8a8f.css +0 -2
- package/.next/static/css/cfae5256f1689f57.css +0 -1
- /package/.next/static/{16S6EJJ0_LRmtRPwnUIw5 → jyVoCYlAT5PMzOeavr5AX}/_ssgManifest.js +0 -0
|
@@ -1,1121 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
(() => {
|
|
3
|
-
var exports = {};
|
|
4
|
-
exports.id = 87;
|
|
5
|
-
exports.ids = [87];
|
|
6
|
-
exports.modules = {
|
|
7
|
-
|
|
8
|
-
/***/ 60871:
|
|
9
|
-
/***/ ((module) => {
|
|
10
|
-
|
|
11
|
-
module.exports = require("buffer");
|
|
12
|
-
|
|
13
|
-
/***/ }),
|
|
14
|
-
|
|
15
|
-
/***/ 39491:
|
|
16
|
-
/***/ ((module) => {
|
|
17
|
-
|
|
18
|
-
module.exports = require("assert");
|
|
19
|
-
|
|
20
|
-
/***/ }),
|
|
21
|
-
|
|
22
|
-
/***/ 22057:
|
|
23
|
-
/***/ ((module) => {
|
|
24
|
-
|
|
25
|
-
module.exports = require("constants");
|
|
26
|
-
|
|
27
|
-
/***/ }),
|
|
28
|
-
|
|
29
|
-
/***/ 6113:
|
|
30
|
-
/***/ ((module) => {
|
|
31
|
-
|
|
32
|
-
module.exports = require("crypto");
|
|
33
|
-
|
|
34
|
-
/***/ }),
|
|
35
|
-
|
|
36
|
-
/***/ 82361:
|
|
37
|
-
/***/ ((module) => {
|
|
38
|
-
|
|
39
|
-
module.exports = require("events");
|
|
40
|
-
|
|
41
|
-
/***/ }),
|
|
42
|
-
|
|
43
|
-
/***/ 57147:
|
|
44
|
-
/***/ ((module) => {
|
|
45
|
-
|
|
46
|
-
module.exports = require("fs");
|
|
47
|
-
|
|
48
|
-
/***/ }),
|
|
49
|
-
|
|
50
|
-
/***/ 13685:
|
|
51
|
-
/***/ ((module) => {
|
|
52
|
-
|
|
53
|
-
module.exports = require("http");
|
|
54
|
-
|
|
55
|
-
/***/ }),
|
|
56
|
-
|
|
57
|
-
/***/ 95687:
|
|
58
|
-
/***/ ((module) => {
|
|
59
|
-
|
|
60
|
-
module.exports = require("https");
|
|
61
|
-
|
|
62
|
-
/***/ }),
|
|
63
|
-
|
|
64
|
-
/***/ 22037:
|
|
65
|
-
/***/ ((module) => {
|
|
66
|
-
|
|
67
|
-
module.exports = require("os");
|
|
68
|
-
|
|
69
|
-
/***/ }),
|
|
70
|
-
|
|
71
|
-
/***/ 71017:
|
|
72
|
-
/***/ ((module) => {
|
|
73
|
-
|
|
74
|
-
module.exports = require("path");
|
|
75
|
-
|
|
76
|
-
/***/ }),
|
|
77
|
-
|
|
78
|
-
/***/ 12781:
|
|
79
|
-
/***/ ((module) => {
|
|
80
|
-
|
|
81
|
-
module.exports = require("stream");
|
|
82
|
-
|
|
83
|
-
/***/ }),
|
|
84
|
-
|
|
85
|
-
/***/ 71576:
|
|
86
|
-
/***/ ((module) => {
|
|
87
|
-
|
|
88
|
-
module.exports = require("string_decoder");
|
|
89
|
-
|
|
90
|
-
/***/ }),
|
|
91
|
-
|
|
92
|
-
/***/ 76224:
|
|
93
|
-
/***/ ((module) => {
|
|
94
|
-
|
|
95
|
-
module.exports = require("tty");
|
|
96
|
-
|
|
97
|
-
/***/ }),
|
|
98
|
-
|
|
99
|
-
/***/ 57310:
|
|
100
|
-
/***/ ((module) => {
|
|
101
|
-
|
|
102
|
-
module.exports = require("url");
|
|
103
|
-
|
|
104
|
-
/***/ }),
|
|
105
|
-
|
|
106
|
-
/***/ 73837:
|
|
107
|
-
/***/ ((module) => {
|
|
108
|
-
|
|
109
|
-
module.exports = require("util");
|
|
110
|
-
|
|
111
|
-
/***/ }),
|
|
112
|
-
|
|
113
|
-
/***/ 59796:
|
|
114
|
-
/***/ ((module) => {
|
|
115
|
-
|
|
116
|
-
module.exports = require("zlib");
|
|
117
|
-
|
|
118
|
-
/***/ }),
|
|
119
|
-
|
|
120
|
-
/***/ 33478:
|
|
121
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
122
|
-
|
|
123
|
-
// ESM COMPAT FLAG
|
|
124
|
-
__webpack_require__.r(__webpack_exports__);
|
|
125
|
-
|
|
126
|
-
// EXPORTS
|
|
127
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
128
|
-
"config": () => (/* binding */ config),
|
|
129
|
-
"default": () => (/* binding */ api_solve)
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
// EXTERNAL MODULE: ../configs/build/index.js
|
|
133
|
-
var build = __webpack_require__(27911);
|
|
134
|
-
// EXTERNAL MODULE: ../constants/build/index.js
|
|
135
|
-
var constants_build = __webpack_require__(38436);
|
|
136
|
-
// EXTERNAL MODULE: ../dictionaries/build/index.js
|
|
137
|
-
var dictionaries_build = __webpack_require__(89044);
|
|
138
|
-
// EXTERNAL MODULE: ../logger/build/index.js
|
|
139
|
-
var logger_build = __webpack_require__(52954);
|
|
140
|
-
var logger_build_default = /*#__PURE__*/__webpack_require__.n(logger_build);
|
|
141
|
-
// EXTERNAL MODULE: ../solver/build/index.js
|
|
142
|
-
var solver_build = __webpack_require__(40368);
|
|
143
|
-
// EXTERNAL MODULE: ../types/build/index.js
|
|
144
|
-
var types_build = __webpack_require__(46452);
|
|
145
|
-
// EXTERNAL MODULE: ./src/api/getServerLoggingData.ts
|
|
146
|
-
var getServerLoggingData = __webpack_require__(84021);
|
|
147
|
-
// EXTERNAL MODULE: ./src/api/isCharacterValid.ts
|
|
148
|
-
var isCharacterValid = __webpack_require__(38246);
|
|
149
|
-
// EXTERNAL MODULE: ./src/api/isBoardValid.ts + 2 modules
|
|
150
|
-
var isBoardValid = __webpack_require__(31210);
|
|
151
|
-
;// CONCATENATED MODULE: ./src/lib/canUseDom.ts
|
|
152
|
-
const canUseDom = Boolean( false && 0);
|
|
153
|
-
/* harmony default export */ const lib_canUseDom = ((/* unused pure expression or super */ null && (canUseDom)));
|
|
154
|
-
|
|
155
|
-
;// CONCATENATED MODULE: ./src/lib/detectLocale.ts
|
|
156
|
-
|
|
157
|
-
const detectLocale = ()=>{
|
|
158
|
-
const languages = window.navigator.languages;
|
|
159
|
-
if (languages.includes("pl") || languages.includes("pl-PL")) {
|
|
160
|
-
return Locale.PL_PL;
|
|
161
|
-
}
|
|
162
|
-
if (languages.includes("en-GB")) {
|
|
163
|
-
return Locale.EN_GB;
|
|
164
|
-
}
|
|
165
|
-
if (languages.includes("fa") || languages.includes("fa-IR")) {
|
|
166
|
-
return Locale.FA_IR;
|
|
167
|
-
}
|
|
168
|
-
if (languages.includes("fr-FR")) {
|
|
169
|
-
return Locale.FR_FR;
|
|
170
|
-
}
|
|
171
|
-
if (languages.includes("ro") || languages.includes("ro-RO")) {
|
|
172
|
-
return Locale.RO_RO;
|
|
173
|
-
}
|
|
174
|
-
return Locale.EN_US;
|
|
175
|
-
};
|
|
176
|
-
/* harmony default export */ const lib_detectLocale = ((/* unused pure expression or super */ null && (detectLocale)));
|
|
177
|
-
|
|
178
|
-
;// CONCATENATED MODULE: ./src/lib/extractCharacters.ts
|
|
179
|
-
|
|
180
|
-
const extractCharacters = (config, value)=>{
|
|
181
|
-
let index = 0;
|
|
182
|
-
const characters = [];
|
|
183
|
-
const valueLowercase = value.toLocaleLowerCase(config.locale);
|
|
184
|
-
while(index < valueLowercase.length){
|
|
185
|
-
const character = valueLowercase[index];
|
|
186
|
-
const nextCharacter = valueLowercase[index + 1];
|
|
187
|
-
const digraph = `${character}${nextCharacter}`;
|
|
188
|
-
if (config.twoCharacterTiles.includes(digraph)) {
|
|
189
|
-
characters.push(digraph);
|
|
190
|
-
index += digraph.length;
|
|
191
|
-
} else if (config.hasCharacter(character) || character === BLANK) {
|
|
192
|
-
characters.push(character);
|
|
193
|
-
++index;
|
|
194
|
-
} else {
|
|
195
|
-
++index;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return characters;
|
|
199
|
-
};
|
|
200
|
-
/* harmony default export */ const lib_extractCharacters = ((/* unused pure expression or super */ null && (extractCharacters)));
|
|
201
|
-
|
|
202
|
-
;// CONCATENATED MODULE: ./src/lib/extractCharactersByCase.ts
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const extractCharactersByCase = (config, value)=>{
|
|
206
|
-
let index = 0;
|
|
207
|
-
const characters = [];
|
|
208
|
-
while(index < value.length){
|
|
209
|
-
const character = value[index];
|
|
210
|
-
const characterLowercase = value[index].toLocaleLowerCase(config.locale);
|
|
211
|
-
const nextCharacter = value[index + 1];
|
|
212
|
-
const digraph = `${character}${nextCharacter}`;
|
|
213
|
-
const digraphLowercase = digraph.toLocaleLowerCase(config.locale);
|
|
214
|
-
if (isUpperCase(config.locale, digraph) && config.twoCharacterTiles.includes(digraphLowercase)) {
|
|
215
|
-
characters.push(digraphLowercase);
|
|
216
|
-
index += digraphLowercase.length;
|
|
217
|
-
} else if (config.hasCharacter(characterLowercase) || characterLowercase === BLANK) {
|
|
218
|
-
characters.push(characterLowercase);
|
|
219
|
-
++index;
|
|
220
|
-
} else {
|
|
221
|
-
++index;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return characters;
|
|
225
|
-
};
|
|
226
|
-
/* harmony default export */ const lib_extractCharactersByCase = ((/* unused pure expression or super */ null && (extractCharactersByCase)));
|
|
227
|
-
|
|
228
|
-
;// CONCATENATED MODULE: ./src/parameters/index.ts
|
|
229
|
-
const BREAKPOINTS = {
|
|
230
|
-
xs: 480,
|
|
231
|
-
s: 768,
|
|
232
|
-
m: 992,
|
|
233
|
-
l: 1200,
|
|
234
|
-
xl: 1400
|
|
235
|
-
};
|
|
236
|
-
const EASE_OUT_CUBIC = "cubic-bezier(0.33, 1, 0.68, 1)"; // https://easings.net/#easeOutCubic
|
|
237
|
-
const TRANSITION = "var(--transition)";
|
|
238
|
-
const GITHUB_PROJECT_URL = "https://github.com/kamilmielnik/scrabble-solver";
|
|
239
|
-
const TRANSITION_DURATION = 100;
|
|
240
|
-
const TRANSITION_DURATION_LONG = 250;
|
|
241
|
-
const COLOR_BLUE = "#c7d8f9";
|
|
242
|
-
const COLOR_GREEN = "#bae3ba";
|
|
243
|
-
const COLOR_RED = "#f7c2aa";
|
|
244
|
-
const COLOR_YELLOW = "#efe3ae";
|
|
245
|
-
const COLOR_BONUS_CHARACTER_1 = "#f7f1d6";
|
|
246
|
-
const COLOR_BONUS_CHARACTER_2 = "#d6ebd6";
|
|
247
|
-
const COLOR_BONUS_CHARACTER_3 = "#dde4f6";
|
|
248
|
-
const COLOR_BONUS_CHARACTER_5 = "#fbe0d4";
|
|
249
|
-
const COLOR_BONUS_CHARACTER_MULTIPLIER_2 = "#b8d5ed";
|
|
250
|
-
const COLOR_BONUS_CHARACTER_MULTIPLIER_3 = "#86aed1";
|
|
251
|
-
const COLOR_BONUS_CHARACTER_MULTIPLIER_4 = "#3477b2";
|
|
252
|
-
const COLOR_BONUS_START = "#b284b8";
|
|
253
|
-
const COLOR_BONUS_WORD_MULTIPLIER_2 = "#fbc997";
|
|
254
|
-
const COLOR_BONUS_WORD_MULTIPLIER_3 = "#f19393";
|
|
255
|
-
const COLOR_BONUS_WORD_MULTIPLIER_4 = "#ed5e5e";
|
|
256
|
-
const COLOR_FILTERED = "#444";
|
|
257
|
-
const COLOR_BONUS_CHARACTER = {
|
|
258
|
-
1: COLOR_BONUS_CHARACTER_1,
|
|
259
|
-
2: COLOR_BONUS_CHARACTER_2,
|
|
260
|
-
3: COLOR_BONUS_CHARACTER_3,
|
|
261
|
-
5: COLOR_BONUS_CHARACTER_5
|
|
262
|
-
};
|
|
263
|
-
const COLOR_BONUS_CHARACTER_MULTIPLIER = {
|
|
264
|
-
2: COLOR_BONUS_CHARACTER_MULTIPLIER_2,
|
|
265
|
-
3: COLOR_BONUS_CHARACTER_MULTIPLIER_3,
|
|
266
|
-
4: COLOR_BONUS_CHARACTER_MULTIPLIER_4
|
|
267
|
-
};
|
|
268
|
-
const COLOR_BONUS_WORD = {
|
|
269
|
-
2: COLOR_BONUS_WORD_MULTIPLIER_2,
|
|
270
|
-
3: COLOR_BONUS_WORD_MULTIPLIER_3,
|
|
271
|
-
4: COLOR_BONUS_WORD_MULTIPLIER_4
|
|
272
|
-
};
|
|
273
|
-
const SPACING_XS = 2;
|
|
274
|
-
const SPACING_S = 5;
|
|
275
|
-
const SPACING_M = 10;
|
|
276
|
-
const SPACING_L = 20;
|
|
277
|
-
const SPACING_XL = 40;
|
|
278
|
-
const COMPONENTS_SPACING = (/* unused pure expression or super */ null && (SPACING_XL));
|
|
279
|
-
const COMPONENTS_SPACING_SMALL = (/* unused pure expression or super */ null && (SPACING_L));
|
|
280
|
-
const BOARD_CELL_ACTIONS_OFFSET = 3;
|
|
281
|
-
const parameters_BOARD_CELL_BORDER_WIDTH = 1;
|
|
282
|
-
const parameters_BOARD_TILE_FONT_SIZE_MIN = 14;
|
|
283
|
-
const parameters_BOARD_TILE_FONT_SIZE_POINTS_MIN = 10;
|
|
284
|
-
const parameters_BOARD_TILE_SIZE_MAX = 64;
|
|
285
|
-
const BORDER_COLOR = "#cdcdcd";
|
|
286
|
-
const BORDER_COLOR_LIGHT = "#d9d9d9";
|
|
287
|
-
const BORDER_RADIUS = 5;
|
|
288
|
-
const BORDER_WIDTH = 1;
|
|
289
|
-
const BUTTON_ICON_SIZE = 24;
|
|
290
|
-
const BUTTON_PADDING_VERTICAL = SPACING_M;
|
|
291
|
-
const BUTTON_HEIGHT = BUTTON_ICON_SIZE + 2 * BUTTON_PADDING_VERTICAL + 2 * BORDER_WIDTH;
|
|
292
|
-
const DICTIONARY_HEIGHT = 260;
|
|
293
|
-
const DICTIONARY_HEIGHT_MOBILE = 110;
|
|
294
|
-
const LOGO_ASPECT_RATIO = (/* unused pure expression or super */ null && (682 / 166));
|
|
295
|
-
const LOGO_HEIGHT = 60;
|
|
296
|
-
const LOGO_HEIGHT_SMALL = 48;
|
|
297
|
-
const LOGO_SRC = "/logo.svg";
|
|
298
|
-
const MODAL_WIDTH = 370;
|
|
299
|
-
const MODAL_HEADER_HEIGHT = 45;
|
|
300
|
-
const NAV_PADDING = (/* unused pure expression or super */ null && (SPACING_L));
|
|
301
|
-
const TILE_SIZE = 80;
|
|
302
|
-
const PLAIN_TILES_COLOR_DEFAULT = (/* unused pure expression or super */ null && (COLOR_GREEN));
|
|
303
|
-
const PLAIN_TILES_PADDING_HORIZONTAL = 0;
|
|
304
|
-
const PLAIN_TILES_PADDING_VERTICAL = 0;
|
|
305
|
-
const PLAIN_TILES_POINTS_COLORS = {
|
|
306
|
-
1: COLOR_YELLOW,
|
|
307
|
-
2: COLOR_GREEN,
|
|
308
|
-
3: COLOR_BLUE,
|
|
309
|
-
4: COLOR_RED,
|
|
310
|
-
5: COLOR_RED,
|
|
311
|
-
6: COLOR_RED,
|
|
312
|
-
7: COLOR_RED,
|
|
313
|
-
8: COLOR_RED,
|
|
314
|
-
9: COLOR_RED,
|
|
315
|
-
10: COLOR_RED
|
|
316
|
-
};
|
|
317
|
-
const PLAIN_TILES_TILE_MARGIN = 6;
|
|
318
|
-
const PLAIN_TILES_TILE_MAX_ROTATE = 0;
|
|
319
|
-
const PLAIN_TILES_TILE_MAX_SCATTER = 0;
|
|
320
|
-
const PLAIN_TILES_TILE_SIZE = 80;
|
|
321
|
-
const PLAIN_TILES_VERSION_TILE_COLOR = (/* unused pure expression or super */ null && (COLOR_GREEN));
|
|
322
|
-
const PLAIN_TILES_VERSION_TILE_SIZE = (/* unused pure expression or super */ null && (TILE_SIZE));
|
|
323
|
-
const PROGRESS_COLOR_VALUE = "var(--color--violet--light)";
|
|
324
|
-
const PROGRESS_COLOR_BACKGROUND = "var(--color--inactive)";
|
|
325
|
-
const RACK_TILE_SIZE_MAX = 80;
|
|
326
|
-
const REMAINING_TILES_TILE_SIZE = 50;
|
|
327
|
-
const RESULTS_ITEM_HEIGHT = 40;
|
|
328
|
-
const RESULTS_HEADER_HEIGHT = (/* unused pure expression or super */ null && (RESULTS_ITEM_HEIGHT));
|
|
329
|
-
const SOLVER_COLUMN_WIDTH = 580;
|
|
330
|
-
const TEXT_INPUT_HEIGHT = 40;
|
|
331
|
-
const TILE_APPEAR_DURATION = 200;
|
|
332
|
-
const TILE_APPEAR_KEYFRAMES = [
|
|
333
|
-
{
|
|
334
|
-
transform: "translateY(0)"
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
transform: "translateY(10%)",
|
|
338
|
-
offset: 0.5
|
|
339
|
-
},
|
|
340
|
-
{
|
|
341
|
-
transform: "translateY(0)"
|
|
342
|
-
}
|
|
343
|
-
];
|
|
344
|
-
|
|
345
|
-
;// CONCATENATED MODULE: ./src/lib/getCellSize.ts
|
|
346
|
-
|
|
347
|
-
const getCellSize = (config, width, height)=>{
|
|
348
|
-
const maxWidth = (width - BOARD_CELL_BORDER_WIDTH) / config.boardWidth - BOARD_CELL_BORDER_WIDTH;
|
|
349
|
-
const maxHeight = (height - BOARD_CELL_BORDER_WIDTH) / config.boardHeight - BOARD_CELL_BORDER_WIDTH;
|
|
350
|
-
const cellSize = Math.min(maxWidth, maxHeight);
|
|
351
|
-
return Math.floor(Math.min(cellSize, BOARD_TILE_SIZE_MAX));
|
|
352
|
-
};
|
|
353
|
-
/* harmony default export */ const lib_getCellSize = ((/* unused pure expression or super */ null && (getCellSize)));
|
|
354
|
-
|
|
355
|
-
;// CONCATENATED MODULE: ./src/lib/getRemainingTiles.ts
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
const getRemainingTiles = (config, board, characters, locale)=>{
|
|
359
|
-
const nonEmptyCells = board.rows.flat().filter((cell)=>!cell.isEmpty);
|
|
360
|
-
const letterCells = nonEmptyCells.filter((cell)=>!cell.tile.isBlank);
|
|
361
|
-
const remainingTiles = Object.fromEntries(config.tiles.map((tile)=>[
|
|
362
|
-
tile.character,
|
|
363
|
-
{
|
|
364
|
-
...tile,
|
|
365
|
-
usedCount: 0
|
|
366
|
-
}
|
|
367
|
-
]));
|
|
368
|
-
const blank = {
|
|
369
|
-
character: BLANK,
|
|
370
|
-
count: config.blanksCount,
|
|
371
|
-
score: config.blankScore,
|
|
372
|
-
usedCount: nonEmptyCells.filter((cell)=>cell.tile.isBlank).length + characters.filter((character)=>character === BLANK).length
|
|
373
|
-
};
|
|
374
|
-
const letters = [
|
|
375
|
-
...letterCells.map((cell)=>cell.tile.character),
|
|
376
|
-
...characters.filter((letter)=>letter !== BLANK)
|
|
377
|
-
];
|
|
378
|
-
const unknownLetters = letters.filter((letter)=>typeof remainingTiles[letter] === "undefined");
|
|
379
|
-
for (const letter of unknownLetters){
|
|
380
|
-
remainingTiles[letter] = {
|
|
381
|
-
character: letter,
|
|
382
|
-
count: 0,
|
|
383
|
-
score: 0,
|
|
384
|
-
usedCount: 0
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
for (const letter of letters){
|
|
388
|
-
++remainingTiles[letter].usedCount;
|
|
389
|
-
}
|
|
390
|
-
const comparator = createKeyComparator("character", locale);
|
|
391
|
-
return [
|
|
392
|
-
...Object.values(remainingTiles).sort(comparator),
|
|
393
|
-
blank
|
|
394
|
-
];
|
|
395
|
-
};
|
|
396
|
-
/* harmony default export */ const lib_getRemainingTiles = ((/* unused pure expression or super */ null && (getRemainingTiles)));
|
|
397
|
-
|
|
398
|
-
;// CONCATENATED MODULE: ./src/lib/getRemainingTilesGroups.ts
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
const getRemainingTilesGroups = (remainingTiles)=>{
|
|
403
|
-
const consonants = remainingTiles.filter(isConsonant);
|
|
404
|
-
const vowels = remainingTiles.filter(isVowel);
|
|
405
|
-
const other = remainingTiles.filter(isOther);
|
|
406
|
-
const groups = [];
|
|
407
|
-
groups.push({
|
|
408
|
-
remainingCount: getRemainingTilesCount(vowels),
|
|
409
|
-
tiles: vowels,
|
|
410
|
-
translationKey: "common.vowels",
|
|
411
|
-
totalCount: getTotalRemainingTilesCount(vowels)
|
|
412
|
-
});
|
|
413
|
-
groups.push({
|
|
414
|
-
remainingCount: getRemainingTilesCount(consonants),
|
|
415
|
-
tiles: consonants,
|
|
416
|
-
translationKey: "common.consonants",
|
|
417
|
-
totalCount: getTotalRemainingTilesCount(consonants)
|
|
418
|
-
});
|
|
419
|
-
groups.push({
|
|
420
|
-
remainingCount: getRemainingTilesCount(other),
|
|
421
|
-
tiles: other,
|
|
422
|
-
translationKey: "common.tiles",
|
|
423
|
-
totalCount: getTotalRemainingTilesCount(other)
|
|
424
|
-
});
|
|
425
|
-
const twoCharacterTiles = remainingTiles.filter(isTwoCharacter);
|
|
426
|
-
const blanks = remainingTiles.filter(isBlank);
|
|
427
|
-
groups.push({
|
|
428
|
-
remainingCount: getRemainingTilesCount(twoCharacterTiles),
|
|
429
|
-
tiles: twoCharacterTiles,
|
|
430
|
-
translationKey: "common.two-letter-tiles",
|
|
431
|
-
totalCount: getTotalRemainingTilesCount(twoCharacterTiles)
|
|
432
|
-
});
|
|
433
|
-
groups.push({
|
|
434
|
-
remainingCount: getRemainingTilesCount(blanks),
|
|
435
|
-
tiles: blanks,
|
|
436
|
-
translationKey: "common.blanks",
|
|
437
|
-
totalCount: getTotalRemainingTilesCount(blanks)
|
|
438
|
-
});
|
|
439
|
-
return groups.filter(({ totalCount })=>totalCount > 0);
|
|
440
|
-
};
|
|
441
|
-
const isConsonant = (tile)=>CONSONANTS.includes(tile.character);
|
|
442
|
-
const isVowel = (tile)=>VOWELS.includes(tile.character);
|
|
443
|
-
const isTwoCharacter = (tile)=>tile.character.length === 2;
|
|
444
|
-
const isBlank = (tile)=>tile.character === BLANK;
|
|
445
|
-
const isOther = (tile)=>!isConsonant(tile) && !isVowel(tile) && !isBlank(tile) && !isTwoCharacter(tile);
|
|
446
|
-
/* harmony default export */ const lib_getRemainingTilesGroups = ((/* unused pure expression or super */ null && (getRemainingTilesGroups)));
|
|
447
|
-
|
|
448
|
-
;// CONCATENATED MODULE: ./src/lib/getTileSizes.ts
|
|
449
|
-
|
|
450
|
-
const getTileSizes = (tileSize)=>({
|
|
451
|
-
pointsFontSize: Math.max(Math.round(tileSize * 0.25), BOARD_TILE_FONT_SIZE_POINTS_MIN),
|
|
452
|
-
tileFontSize: Math.max(Math.round(tileSize * 0.6), BOARD_TILE_FONT_SIZE_MIN),
|
|
453
|
-
tileSize
|
|
454
|
-
});
|
|
455
|
-
/* harmony default export */ const lib_getTileSizes = ((/* unused pure expression or super */ null && (getTileSizes)));
|
|
456
|
-
|
|
457
|
-
;// CONCATENATED MODULE: ./src/lib/guessLocale.ts
|
|
458
|
-
|
|
459
|
-
const guessLocale = ()=>{
|
|
460
|
-
if (!globalThis.navigator) {
|
|
461
|
-
return Locale.EN_US;
|
|
462
|
-
}
|
|
463
|
-
const locales = Object.values(Locale);
|
|
464
|
-
const exactMatch = locales.find((locale)=>globalThis.navigator.language === locale);
|
|
465
|
-
if (exactMatch) {
|
|
466
|
-
return exactMatch;
|
|
467
|
-
}
|
|
468
|
-
const partialMatch = locales.find((locale)=>{
|
|
469
|
-
return globalThis.navigator.language === locale.substring(0, 2);
|
|
470
|
-
});
|
|
471
|
-
return partialMatch || Locale.EN_US;
|
|
472
|
-
};
|
|
473
|
-
/* harmony default export */ const lib_guessLocale = ((/* unused pure expression or super */ null && (guessLocale)));
|
|
474
|
-
|
|
475
|
-
;// CONCATENATED MODULE: ./src/lib/isStringArray.ts
|
|
476
|
-
const isStringArray = (value)=>{
|
|
477
|
-
return Array.isArray(value) && value.every((item)=>typeof item === "string");
|
|
478
|
-
};
|
|
479
|
-
/* harmony default export */ const lib_isStringArray = (isStringArray);
|
|
480
|
-
|
|
481
|
-
;// CONCATENATED MODULE: ./src/types/index.ts
|
|
482
|
-
var types_SortDirection;
|
|
483
|
-
(function(SortDirection) {
|
|
484
|
-
SortDirection["Ascending"] = "ascending";
|
|
485
|
-
SortDirection["Descending"] = "descending";
|
|
486
|
-
})(types_SortDirection || (types_SortDirection = {}));
|
|
487
|
-
var ResultColumn;
|
|
488
|
-
(function(ResultColumn) {
|
|
489
|
-
ResultColumn["BlanksCount"] = "blanks-count";
|
|
490
|
-
ResultColumn["ConsonantsCount"] = "consonants-count";
|
|
491
|
-
ResultColumn["Points"] = "points";
|
|
492
|
-
ResultColumn["TilesCount"] = "tiles-count";
|
|
493
|
-
ResultColumn["VowelsCount"] = "vowels-count";
|
|
494
|
-
ResultColumn["Word"] = "word";
|
|
495
|
-
ResultColumn["WordsCount"] = "words-count";
|
|
496
|
-
})(ResultColumn || (ResultColumn = {}));
|
|
497
|
-
|
|
498
|
-
;// CONCATENATED MODULE: ./src/lib/createStringComparator.ts
|
|
499
|
-
const createStringComparator = (locale)=>(a, b)=>a.localeCompare(b, locale);
|
|
500
|
-
/* harmony default export */ const lib_createStringComparator = (createStringComparator);
|
|
501
|
-
|
|
502
|
-
;// CONCATENATED MODULE: ./src/lib/numberComparator.ts
|
|
503
|
-
const numberComparator = (a, b)=>a - b;
|
|
504
|
-
/* harmony default export */ const lib_numberComparator = (numberComparator);
|
|
505
|
-
|
|
506
|
-
;// CONCATENATED MODULE: ./src/lib/createKeyComparator.ts
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
const createKeyComparator_createKeyComparator = (key, locale)=>{
|
|
510
|
-
const stringComparator = lib_createStringComparator(locale);
|
|
511
|
-
return (a, b)=>{
|
|
512
|
-
const aValue = a[key];
|
|
513
|
-
const bValue = b[key];
|
|
514
|
-
if (typeof aValue === "string" && typeof bValue === "string") {
|
|
515
|
-
return stringComparator(aValue, bValue);
|
|
516
|
-
}
|
|
517
|
-
if (typeof aValue === "number" && typeof bValue === "number") {
|
|
518
|
-
return lib_numberComparator(aValue, bValue);
|
|
519
|
-
}
|
|
520
|
-
return 0;
|
|
521
|
-
};
|
|
522
|
-
};
|
|
523
|
-
/* harmony default export */ const lib_createKeyComparator = (createKeyComparator_createKeyComparator);
|
|
524
|
-
|
|
525
|
-
;// CONCATENATED MODULE: ./src/lib/sortResults.ts
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
const comparators = {
|
|
530
|
-
[ResultColumn.BlanksCount]: (locale)=>lib_createKeyComparator("blanksCount", locale),
|
|
531
|
-
[ResultColumn.ConsonantsCount]: (locale)=>lib_createKeyComparator("consonantsCount", locale),
|
|
532
|
-
[ResultColumn.Points]: (locale)=>lib_createKeyComparator("points", locale),
|
|
533
|
-
[ResultColumn.TilesCount]: (locale)=>lib_createKeyComparator("tilesCount", locale),
|
|
534
|
-
[ResultColumn.VowelsCount]: (locale)=>lib_createKeyComparator("vowelsCount", locale),
|
|
535
|
-
[ResultColumn.Word]: (locale)=>lib_createKeyComparator("word", locale),
|
|
536
|
-
[ResultColumn.WordsCount]: (locale)=>lib_createKeyComparator("wordsCount", locale)
|
|
537
|
-
};
|
|
538
|
-
const sortResults = (results, sort, locale)=>{
|
|
539
|
-
if (typeof results === "undefined") {
|
|
540
|
-
return results;
|
|
541
|
-
}
|
|
542
|
-
const createComparator = comparators[sort.column];
|
|
543
|
-
const comparator = createComparator(locale);
|
|
544
|
-
const finalComparator = sort.direction === SortDirection.Descending ? reverseComparator(comparator) : comparator;
|
|
545
|
-
const sortedResults = [
|
|
546
|
-
...results
|
|
547
|
-
].sort(finalComparator);
|
|
548
|
-
return sortedResults;
|
|
549
|
-
};
|
|
550
|
-
/* harmony default export */ const lib_sortResults = ((/* unused pure expression or super */ null && (sortResults)));
|
|
551
|
-
|
|
552
|
-
;// CONCATENATED MODULE: ./src/lib/zipCharactersAndTiles.ts
|
|
553
|
-
|
|
554
|
-
const zipCharactersAndTiles = (characters, tiles)=>{
|
|
555
|
-
let remainingTiles = [
|
|
556
|
-
...tiles
|
|
557
|
-
];
|
|
558
|
-
return characters.map((character)=>{
|
|
559
|
-
const index = remainingTiles.findIndex((tile)=>character === BLANK ? tile.isBlank : character === tile.character);
|
|
560
|
-
if (index >= 0) {
|
|
561
|
-
const tile = remainingTiles[index];
|
|
562
|
-
remainingTiles = [
|
|
563
|
-
...remainingTiles.slice(0, index),
|
|
564
|
-
...remainingTiles.slice(index + 1)
|
|
565
|
-
];
|
|
566
|
-
return {
|
|
567
|
-
character,
|
|
568
|
-
tile
|
|
569
|
-
};
|
|
570
|
-
}
|
|
571
|
-
return {
|
|
572
|
-
character,
|
|
573
|
-
tile: null
|
|
574
|
-
};
|
|
575
|
-
});
|
|
576
|
-
};
|
|
577
|
-
/* harmony default export */ const lib_zipCharactersAndTiles = ((/* unused pure expression or super */ null && (zipCharactersAndTiles)));
|
|
578
|
-
|
|
579
|
-
;// CONCATENATED MODULE: ./src/lib/index.ts
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
;// CONCATENATED MODULE: ./src/pages/api/solve.ts
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
const solve = async (request, response)=>{
|
|
628
|
-
const meta = (0,getServerLoggingData/* default */.Z)(request);
|
|
629
|
-
try {
|
|
630
|
-
const { board , characters , config , locale } = parseRequest(request);
|
|
631
|
-
logger_build_default().info("solve - request", {
|
|
632
|
-
meta,
|
|
633
|
-
payload: {
|
|
634
|
-
board: board.toString(),
|
|
635
|
-
boardBlanksCount: board.getBlanksCount(),
|
|
636
|
-
boardTilesCount: board.getTilesCount(),
|
|
637
|
-
characters: characters.join(""),
|
|
638
|
-
game: request.body.game,
|
|
639
|
-
locale
|
|
640
|
-
}
|
|
641
|
-
});
|
|
642
|
-
const trie = await dictionaries_build.dictionaries.get(locale);
|
|
643
|
-
const tiles = characters.map((character)=>new types_build.Tile({
|
|
644
|
-
character,
|
|
645
|
-
isBlank: character === constants_build.BLANK
|
|
646
|
-
}));
|
|
647
|
-
const results = (0,solver_build.solve)(trie, config, board, tiles);
|
|
648
|
-
response.status(200).send(results);
|
|
649
|
-
} catch (error) {
|
|
650
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
651
|
-
logger_build_default().error("solve - error", {
|
|
652
|
-
error,
|
|
653
|
-
meta
|
|
654
|
-
});
|
|
655
|
-
response.status(500).send({
|
|
656
|
-
error: "Server error",
|
|
657
|
-
message
|
|
658
|
-
});
|
|
659
|
-
}
|
|
660
|
-
};
|
|
661
|
-
const parseRequest = (request)=>{
|
|
662
|
-
const { board: boardJson , characters , game , locale } = request.body;
|
|
663
|
-
if (!(0,types_build.isLocale)(locale)) {
|
|
664
|
-
throw new Error('Invalid "locale" parameter');
|
|
665
|
-
}
|
|
666
|
-
if (!(0,types_build.isGame)(game)) {
|
|
667
|
-
throw new Error('Invalid "game" parameter');
|
|
668
|
-
}
|
|
669
|
-
if (!lib_isStringArray(characters) || characters.length === 0) {
|
|
670
|
-
throw new Error('Invalid "characters" parameter');
|
|
671
|
-
}
|
|
672
|
-
if (!(0,build.hasConfig)(game, locale)) {
|
|
673
|
-
throw new Error(`No game "${game}" in "${locale}"`);
|
|
674
|
-
}
|
|
675
|
-
const config = (0,build.getConfig)(game, locale);
|
|
676
|
-
for (const character of characters){
|
|
677
|
-
if (!(0,isCharacterValid/* default */.Z)(character)) {
|
|
678
|
-
throw new Error('Invalid "characters" parameter');
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
const blanksCount = characters.filter((character)=>character === constants_build.BLANK).length;
|
|
682
|
-
if (blanksCount > config.blanksCount) {
|
|
683
|
-
throw new Error("Too many blank tiles passed");
|
|
684
|
-
}
|
|
685
|
-
if (!(0,types_build.isBoardJson)(boardJson) || !(0,isBoardValid/* default */.Z)(boardJson, config)) {
|
|
686
|
-
throw new Error('Invalid "board" parameter');
|
|
687
|
-
}
|
|
688
|
-
const board = types_build.Board.fromJson(boardJson);
|
|
689
|
-
return {
|
|
690
|
-
board,
|
|
691
|
-
characters,
|
|
692
|
-
config,
|
|
693
|
-
locale
|
|
694
|
-
};
|
|
695
|
-
};
|
|
696
|
-
const config = {
|
|
697
|
-
api: {
|
|
698
|
-
responseLimit: "25mb"
|
|
699
|
-
}
|
|
700
|
-
};
|
|
701
|
-
/* harmony default export */ const api_solve = (solve);
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
/***/ }),
|
|
705
|
-
|
|
706
|
-
/***/ 53904:
|
|
707
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
711
|
-
const areDigraphsValid = (config, pattern) => {
|
|
712
|
-
const { twoCharacterTiles } = config;
|
|
713
|
-
const { cells } = pattern;
|
|
714
|
-
for (let index = 0; index < cells.length - 1; ++index) {
|
|
715
|
-
const current = cells[index];
|
|
716
|
-
const next = cells[index + 1];
|
|
717
|
-
const digraphCandidate = current.tile.character + next.tile.character;
|
|
718
|
-
if (twoCharacterTiles.includes(digraphCandidate)) {
|
|
719
|
-
return false;
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
return true;
|
|
723
|
-
};
|
|
724
|
-
exports["default"] = areDigraphsValid;
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
/***/ }),
|
|
728
|
-
|
|
729
|
-
/***/ 83594:
|
|
730
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
734
|
-
exports.fillPatternRecursive = void 0;
|
|
735
|
-
const constants_1 = __webpack_require__(38436);
|
|
736
|
-
const types_1 = __webpack_require__(46452);
|
|
737
|
-
const fillPattern = (trie, config, pattern, tiles) => {
|
|
738
|
-
if (pattern.getEmptyCellsCount() > tiles.length) {
|
|
739
|
-
return [];
|
|
740
|
-
}
|
|
741
|
-
const results = [];
|
|
742
|
-
(0, exports.fillPatternRecursive)(results, trie, config, pattern, pattern.toString(), tiles);
|
|
743
|
-
return results;
|
|
744
|
-
};
|
|
745
|
-
const fillPatternRecursive = (
|
|
746
|
-
/** gets mutated when this function is called */
|
|
747
|
-
results, trie, config, pattern, word, tiles) => {
|
|
748
|
-
const indexOfFirstCellWithoutTile = pattern.getIndexOfFirstCellWithoutTile();
|
|
749
|
-
if (indexOfFirstCellWithoutTile === -1) {
|
|
750
|
-
if (trie.has(word) && pattern.getCollisions().every((collision) => trie.has(collision.toString()))) {
|
|
751
|
-
results.push(new types_1.FinalPattern(pattern.clone()));
|
|
752
|
-
}
|
|
753
|
-
return;
|
|
754
|
-
}
|
|
755
|
-
for (let index = 0; index < tiles.length; ++index) {
|
|
756
|
-
const tile = tiles[index];
|
|
757
|
-
const previousTile = pattern.cells[indexOfFirstCellWithoutTile].tile;
|
|
758
|
-
pattern.cells[indexOfFirstCellWithoutTile].tile = tile;
|
|
759
|
-
const indexOfNextCellWithoutTile = pattern.getIndexOfFirstCellWithoutTile();
|
|
760
|
-
const indexOfFirstEmptyLetter = word.indexOf(constants_1.EMPTY_CELL);
|
|
761
|
-
const prefix = word.substring(0, indexOfFirstEmptyLetter);
|
|
762
|
-
const suffix = word.substring(indexOfFirstEmptyLetter + 1);
|
|
763
|
-
const characters = tile.isBlank ? config.alphabet : [tile.character];
|
|
764
|
-
for (const character of characters) {
|
|
765
|
-
const newWordPrefix = prefix + character;
|
|
766
|
-
const newWord = newWordPrefix + suffix;
|
|
767
|
-
tile.character = character;
|
|
768
|
-
if (indexOfNextCellWithoutTile === -1) {
|
|
769
|
-
if (trie.has(newWord) && pattern.getCollisions().every((collision) => trie.has(collision.toString()))) {
|
|
770
|
-
results.push(new types_1.FinalPattern(pattern.clone()));
|
|
771
|
-
}
|
|
772
|
-
}
|
|
773
|
-
else if (trie.hasPrefix(newWordPrefix)) {
|
|
774
|
-
tiles.splice(index, 1);
|
|
775
|
-
(0, exports.fillPatternRecursive)(results, trie, config, pattern, newWord, tiles);
|
|
776
|
-
tiles.splice(index, 0, tile);
|
|
777
|
-
}
|
|
778
|
-
}
|
|
779
|
-
pattern.cells[indexOfFirstCellWithoutTile].tile = previousTile;
|
|
780
|
-
}
|
|
781
|
-
};
|
|
782
|
-
exports.fillPatternRecursive = fillPatternRecursive;
|
|
783
|
-
exports["default"] = fillPattern;
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
/***/ }),
|
|
787
|
-
|
|
788
|
-
/***/ 50856:
|
|
789
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
793
|
-
const generateEndIndices = (cells, startIndex) => {
|
|
794
|
-
if (cells.length === 0) {
|
|
795
|
-
return [];
|
|
796
|
-
}
|
|
797
|
-
const endIndices = [];
|
|
798
|
-
for (let endIndex = startIndex + 1; endIndex < cells.length - 1; ++endIndex) {
|
|
799
|
-
if (!cells[endIndex + 1].hasTile()) {
|
|
800
|
-
endIndices.push(endIndex);
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
endIndices.push(cells.length - 1);
|
|
804
|
-
return endIndices;
|
|
805
|
-
};
|
|
806
|
-
exports["default"] = generateEndIndices;
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
/***/ }),
|
|
810
|
-
|
|
811
|
-
/***/ 99004:
|
|
812
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
816
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
817
|
-
};
|
|
818
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
819
|
-
const types_1 = __webpack_require__(46452);
|
|
820
|
-
const generatePattern_1 = __importDefault(__webpack_require__(87984));
|
|
821
|
-
const generateVectors_1 = __importDefault(__webpack_require__(18618));
|
|
822
|
-
const generateHorizontalPatterns = (config, board) => {
|
|
823
|
-
const getNthVector = (index) => board.getRow(index);
|
|
824
|
-
const vectorsCount = config.boardHeight;
|
|
825
|
-
const horizontalVectors = (0, generateVectors_1.default)({ getNthVector, vectorsCount });
|
|
826
|
-
const horizontalPatterns = horizontalVectors.flatMap((cells) => {
|
|
827
|
-
return (0, generatePattern_1.default)({ board, config, PatternModel: types_1.HorizontalPattern, cells });
|
|
828
|
-
});
|
|
829
|
-
return horizontalPatterns;
|
|
830
|
-
};
|
|
831
|
-
exports["default"] = generateHorizontalPatterns;
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
/***/ }),
|
|
835
|
-
|
|
836
|
-
/***/ 87984:
|
|
837
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
841
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
842
|
-
};
|
|
843
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
844
|
-
const generateEndIndices_1 = __importDefault(__webpack_require__(50856));
|
|
845
|
-
const generateStartIndices_1 = __importDefault(__webpack_require__(78182));
|
|
846
|
-
const generatePattern = ({ board, cells, config, PatternModel, }) => {
|
|
847
|
-
const startIndices = (0, generateStartIndices_1.default)(cells);
|
|
848
|
-
return startIndices.flatMap((startIndex) => {
|
|
849
|
-
const endIndices = (0, generateEndIndices_1.default)(cells, startIndex);
|
|
850
|
-
const patterns = [];
|
|
851
|
-
for (const endIndex of endIndices) {
|
|
852
|
-
const pattern = new PatternModel(board, cells.slice(startIndex, endIndex + 1));
|
|
853
|
-
if (pattern.canBePlaced(config)) {
|
|
854
|
-
patterns.push(pattern);
|
|
855
|
-
}
|
|
856
|
-
}
|
|
857
|
-
return patterns;
|
|
858
|
-
});
|
|
859
|
-
};
|
|
860
|
-
exports["default"] = generatePattern;
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
/***/ }),
|
|
864
|
-
|
|
865
|
-
/***/ 29480:
|
|
866
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
870
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
871
|
-
};
|
|
872
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
873
|
-
const generateHorizontalPatterns_1 = __importDefault(__webpack_require__(99004));
|
|
874
|
-
const generateVerticalPatterns_1 = __importDefault(__webpack_require__(75069));
|
|
875
|
-
const generatePatterns = (config, board) => {
|
|
876
|
-
const horizontalPatterns = (0, generateHorizontalPatterns_1.default)(config, board);
|
|
877
|
-
const verticalPatterns = (0, generateVerticalPatterns_1.default)(config, board);
|
|
878
|
-
return horizontalPatterns.concat(verticalPatterns);
|
|
879
|
-
};
|
|
880
|
-
exports["default"] = generatePatterns;
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
/***/ }),
|
|
884
|
-
|
|
885
|
-
/***/ 78182:
|
|
886
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
890
|
-
const generateStartIndices = (cells) => {
|
|
891
|
-
if (cells.length === 0) {
|
|
892
|
-
return [];
|
|
893
|
-
}
|
|
894
|
-
const startIndices = [0];
|
|
895
|
-
for (let startIndex = 1; startIndex < cells.length - 1; ++startIndex) {
|
|
896
|
-
if (!cells[startIndex - 1].hasTile()) {
|
|
897
|
-
startIndices.push(startIndex);
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
|
-
return startIndices;
|
|
901
|
-
};
|
|
902
|
-
exports["default"] = generateStartIndices;
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
/***/ }),
|
|
906
|
-
|
|
907
|
-
/***/ 18618:
|
|
908
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
912
|
-
const generateVectors = ({ getNthVector, vectorsCount }) => {
|
|
913
|
-
return Array.from({ length: vectorsCount }, (_, index) => getNthVector(index));
|
|
914
|
-
};
|
|
915
|
-
exports["default"] = generateVectors;
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
/***/ }),
|
|
919
|
-
|
|
920
|
-
/***/ 75069:
|
|
921
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
925
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
926
|
-
};
|
|
927
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
928
|
-
const types_1 = __webpack_require__(46452);
|
|
929
|
-
const generatePattern_1 = __importDefault(__webpack_require__(87984));
|
|
930
|
-
const generateVectors_1 = __importDefault(__webpack_require__(18618));
|
|
931
|
-
const generateVerticalPatterns = (config, board) => {
|
|
932
|
-
const getNthVector = (index) => board.getColumn(index);
|
|
933
|
-
const vectorsCount = config.boardWidth;
|
|
934
|
-
const verticalVectors = (0, generateVectors_1.default)({ getNthVector, vectorsCount });
|
|
935
|
-
const verticalPatterns = verticalVectors.flatMap((cells) => {
|
|
936
|
-
return (0, generatePattern_1.default)({ board, config, PatternModel: types_1.VerticalPattern, cells });
|
|
937
|
-
});
|
|
938
|
-
return verticalPatterns;
|
|
939
|
-
};
|
|
940
|
-
exports["default"] = generateVerticalPatterns;
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
/***/ }),
|
|
944
|
-
|
|
945
|
-
/***/ 56628:
|
|
946
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
950
|
-
const constants_1 = __webpack_require__(38436);
|
|
951
|
-
const getCellsScore = (config, cells) => {
|
|
952
|
-
const total = cells.reduce(({ multiplier, score }, cell) => {
|
|
953
|
-
const bonus = config.getCellBonus(cell);
|
|
954
|
-
const { characterMultiplier, wordMultiplier } = bonus && bonus.canApply(config, cell) ? bonus.value : constants_1.NO_BONUS;
|
|
955
|
-
const characterScore = config.pointsMap[cell.tile.character] || 0;
|
|
956
|
-
const tileScore = cell.tile.isBlank ? config.blankScore : characterScore;
|
|
957
|
-
return {
|
|
958
|
-
multiplier: multiplier * wordMultiplier,
|
|
959
|
-
score: score + tileScore * characterMultiplier,
|
|
960
|
-
};
|
|
961
|
-
}, { multiplier: 1, score: 0 });
|
|
962
|
-
return total.score * total.multiplier;
|
|
963
|
-
};
|
|
964
|
-
exports["default"] = getCellsScore;
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
/***/ }),
|
|
968
|
-
|
|
969
|
-
/***/ 22352:
|
|
970
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
974
|
-
const getPatternHash = (pattern) => {
|
|
975
|
-
return pattern.cells
|
|
976
|
-
.filter((cell) => cell.isEmpty)
|
|
977
|
-
.map((cell) => {
|
|
978
|
-
const blank = cell.tile.isBlank ? '!' : '';
|
|
979
|
-
const tile = cell.tile.character + blank;
|
|
980
|
-
return [cell.x, cell.y, tile].join(',');
|
|
981
|
-
})
|
|
982
|
-
.join('-');
|
|
983
|
-
};
|
|
984
|
-
exports["default"] = getPatternHash;
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
/***/ }),
|
|
988
|
-
|
|
989
|
-
/***/ 94808:
|
|
990
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
994
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
995
|
-
};
|
|
996
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
997
|
-
const getCellsScore_1 = __importDefault(__webpack_require__(56628));
|
|
998
|
-
const getPatternScore = (config, pattern) => {
|
|
999
|
-
const areAllTilesUsed = pattern.getEmptyCellsCount() === config.maximumCharactersCount;
|
|
1000
|
-
const bonusScore = areAllTilesUsed ? config.allTilesBonusScore : 0;
|
|
1001
|
-
const score = pattern
|
|
1002
|
-
.getCollisions()
|
|
1003
|
-
.reduce((sum, collision) => sum + (0, getCellsScore_1.default)(config, collision.cells), (0, getCellsScore_1.default)(config, pattern.cells));
|
|
1004
|
-
return score + bonusScore;
|
|
1005
|
-
};
|
|
1006
|
-
exports["default"] = getPatternScore;
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
/***/ }),
|
|
1010
|
-
|
|
1011
|
-
/***/ 55555:
|
|
1012
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
1016
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1017
|
-
};
|
|
1018
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1019
|
-
const getPatternHash_1 = __importDefault(__webpack_require__(22352));
|
|
1020
|
-
const getUniquePatterns = (patterns) => {
|
|
1021
|
-
const hashes = new Set();
|
|
1022
|
-
const uniquePatterns = [];
|
|
1023
|
-
for (const pattern of patterns) {
|
|
1024
|
-
const hash = (0, getPatternHash_1.default)(pattern);
|
|
1025
|
-
if (!hashes.has(hash)) {
|
|
1026
|
-
hashes.add(hash);
|
|
1027
|
-
uniquePatterns.push(pattern);
|
|
1028
|
-
}
|
|
1029
|
-
}
|
|
1030
|
-
return uniquePatterns;
|
|
1031
|
-
};
|
|
1032
|
-
exports["default"] = getUniquePatterns;
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
/***/ }),
|
|
1036
|
-
|
|
1037
|
-
/***/ 40368:
|
|
1038
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
1042
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1043
|
-
};
|
|
1044
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1045
|
-
exports.solve = exports.getUniquePatterns = exports.getPatternScore = exports.getPatternHash = exports.getCellsScore = exports.generateVerticalPatterns = exports.generateVectors = exports.generateStartIndices = exports.generatePatterns = exports.generatePattern = exports.generateHorizontalPatterns = exports.generateEndIndices = exports.fillPattern = exports.areDigraphsValid = void 0;
|
|
1046
|
-
var areDigraphsValid_1 = __webpack_require__(53904);
|
|
1047
|
-
Object.defineProperty(exports, "areDigraphsValid", ({ enumerable: true, get: function () { return __importDefault(areDigraphsValid_1).default; } }));
|
|
1048
|
-
var fillPattern_1 = __webpack_require__(83594);
|
|
1049
|
-
Object.defineProperty(exports, "fillPattern", ({ enumerable: true, get: function () { return __importDefault(fillPattern_1).default; } }));
|
|
1050
|
-
var generateEndIndices_1 = __webpack_require__(50856);
|
|
1051
|
-
Object.defineProperty(exports, "generateEndIndices", ({ enumerable: true, get: function () { return __importDefault(generateEndIndices_1).default; } }));
|
|
1052
|
-
var generateHorizontalPatterns_1 = __webpack_require__(99004);
|
|
1053
|
-
Object.defineProperty(exports, "generateHorizontalPatterns", ({ enumerable: true, get: function () { return __importDefault(generateHorizontalPatterns_1).default; } }));
|
|
1054
|
-
var generatePattern_1 = __webpack_require__(87984);
|
|
1055
|
-
Object.defineProperty(exports, "generatePattern", ({ enumerable: true, get: function () { return __importDefault(generatePattern_1).default; } }));
|
|
1056
|
-
var generatePatterns_1 = __webpack_require__(29480);
|
|
1057
|
-
Object.defineProperty(exports, "generatePatterns", ({ enumerable: true, get: function () { return __importDefault(generatePatterns_1).default; } }));
|
|
1058
|
-
var generateStartIndices_1 = __webpack_require__(78182);
|
|
1059
|
-
Object.defineProperty(exports, "generateStartIndices", ({ enumerable: true, get: function () { return __importDefault(generateStartIndices_1).default; } }));
|
|
1060
|
-
var generateVectors_1 = __webpack_require__(18618);
|
|
1061
|
-
Object.defineProperty(exports, "generateVectors", ({ enumerable: true, get: function () { return __importDefault(generateVectors_1).default; } }));
|
|
1062
|
-
var generateVerticalPatterns_1 = __webpack_require__(75069);
|
|
1063
|
-
Object.defineProperty(exports, "generateVerticalPatterns", ({ enumerable: true, get: function () { return __importDefault(generateVerticalPatterns_1).default; } }));
|
|
1064
|
-
var getCellsScore_1 = __webpack_require__(56628);
|
|
1065
|
-
Object.defineProperty(exports, "getCellsScore", ({ enumerable: true, get: function () { return __importDefault(getCellsScore_1).default; } }));
|
|
1066
|
-
var getPatternHash_1 = __webpack_require__(22352);
|
|
1067
|
-
Object.defineProperty(exports, "getPatternHash", ({ enumerable: true, get: function () { return __importDefault(getPatternHash_1).default; } }));
|
|
1068
|
-
var getPatternScore_1 = __webpack_require__(94808);
|
|
1069
|
-
Object.defineProperty(exports, "getPatternScore", ({ enumerable: true, get: function () { return __importDefault(getPatternScore_1).default; } }));
|
|
1070
|
-
var getUniquePatterns_1 = __webpack_require__(55555);
|
|
1071
|
-
Object.defineProperty(exports, "getUniquePatterns", ({ enumerable: true, get: function () { return __importDefault(getUniquePatterns_1).default; } }));
|
|
1072
|
-
var solve_1 = __webpack_require__(46243);
|
|
1073
|
-
Object.defineProperty(exports, "solve", ({ enumerable: true, get: function () { return __importDefault(solve_1).default; } }));
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
/***/ }),
|
|
1077
|
-
|
|
1078
|
-
/***/ 46243:
|
|
1079
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
1083
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1084
|
-
};
|
|
1085
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1086
|
-
const areDigraphsValid_1 = __importDefault(__webpack_require__(53904));
|
|
1087
|
-
const fillPattern_1 = __importDefault(__webpack_require__(83594));
|
|
1088
|
-
const generatePatterns_1 = __importDefault(__webpack_require__(29480));
|
|
1089
|
-
const getPatternScore_1 = __importDefault(__webpack_require__(94808));
|
|
1090
|
-
const getUniquePatterns_1 = __importDefault(__webpack_require__(55555));
|
|
1091
|
-
const solve = (trie, config, board, tiles) => {
|
|
1092
|
-
const patterns = (0, generatePatterns_1.default)(config, board);
|
|
1093
|
-
const filledPatterns = patterns.flatMap((pattern) => (0, fillPattern_1.default)(trie, config, pattern, tiles));
|
|
1094
|
-
const validPatterns = config.twoCharacterTiles.length > 0
|
|
1095
|
-
? filledPatterns.filter((pattern) => (0, areDigraphsValid_1.default)(config, pattern))
|
|
1096
|
-
: filledPatterns;
|
|
1097
|
-
const uniquePatterns = (0, getUniquePatterns_1.default)(validPatterns);
|
|
1098
|
-
const results = uniquePatterns.map((pattern, index) => ({
|
|
1099
|
-
cells: pattern.cells.map((cell) => cell.toJson()),
|
|
1100
|
-
collisions: pattern.getCollisions().map((collision) => collision.cells.map((cell) => cell.toJson())),
|
|
1101
|
-
id: index,
|
|
1102
|
-
points: (0, getPatternScore_1.default)(config, pattern),
|
|
1103
|
-
}));
|
|
1104
|
-
return results;
|
|
1105
|
-
};
|
|
1106
|
-
exports["default"] = solve;
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
/***/ })
|
|
1110
|
-
|
|
1111
|
-
};
|
|
1112
|
-
;
|
|
1113
|
-
|
|
1114
|
-
// load runtime
|
|
1115
|
-
var __webpack_require__ = require("../../webpack-api-runtime.js");
|
|
1116
|
-
__webpack_require__.C(exports);
|
|
1117
|
-
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
|
1118
|
-
var __webpack_exports__ = __webpack_require__.X(0, [50,907,987,44,911,210], () => (__webpack_exec__(33478)));
|
|
1119
|
-
module.exports = __webpack_exports__;
|
|
1120
|
-
|
|
1121
|
-
})();
|
|
1
|
+
"use strict";(()=>{var e={};e.id=87,e.ids=[87],e.modules={9119:e=>{e.exports=require("@kamilmielnik/trie")},8048:e=>{e.exports=require("cheerio")},6953:e=>{e.exports=require("follow-redirects")},1118:e=>{e.exports=require("latinize")},145:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},4616:e=>{e.exports=require("unzipper")},7773:e=>{e.exports=require("winston")},6113:e=>{e.exports=require("crypto")},7147:e=>{e.exports=require("fs")},2037:e=>{e.exports=require("os")},1017:e=>{e.exports=require("path")},7310:e=>{e.exports=require("url")},9790:(e,t,r)=>{r.r(t),r.d(t,{config:()=>x,default:()=>w,routeModule:()=>k});var n,l,a={};r.r(a),r.d(a,{config:()=>O,default:()=>M});var o=r(9150),i=r(1631),u=r(6835),s=r(7911),f=r(8436),d=r(9044),c=r(2954),p=r.n(c),g=r(368),h=r(6452),b=r(9927),v=r(9953),m=r(1525);let P=e=>Array.isArray(e)&&e.every(e=>"string"==typeof e);(function(e){e.Ascending="ascending",e.Descending="descending"})(n||(n={})),function(e){e.BlanksCount="blanks-count",e.ConsonantsCount="consonants-count",e.Points="points",e.TilesCount="tiles-count",e.VowelsCount="vowels-count",e.Word="word",e.WordsCount="words-count"}(l||(l={}));let _=e=>(t,r)=>t.localeCompare(r,e),y=(e,t)=>e-t,C=(e,t)=>{let r=_(t);return(t,n)=>{let l=t[e],a=n[e];return"string"==typeof l&&"string"==typeof a?r(l,a):"number"==typeof l&&"number"==typeof a?y(l,a):0}};l.BlanksCount,l.ConsonantsCount,l.Points,l.TilesCount,l.VowelsCount,l.Word,l.WordsCount,e=>C("wordsCount",e);let j=e=>{let{board:t,characters:r,game:n,locale:l}=e.body;if(!(0,h.isLocale)(l))throw Error('Invalid "locale" parameter');if(!(0,h.isGame)(n))throw Error('Invalid "game" parameter');if(!P(r)||0===r.length)throw Error('Invalid "characters" parameter');if(!(0,s.hasConfig)(n,l))throw Error(`No game "${n}" in "${l}"`);let a=(0,s.getConfig)(n,l);for(let e of r)if(!(0,v.Z)(e))throw Error('Invalid "characters" parameter');if(r.filter(e=>e===f.BLANK).length>a.blanksCount)throw Error("Too many blank tiles passed");if(!(0,h.isBoardJson)(t)||!(0,m.Z)(t,a))throw Error('Invalid "board" parameter');return{board:h.Board.fromJson(t),characters:r,config:a,locale:l}},O={api:{responseLimit:"25mb"}},M=async(e,t)=>{let r=(0,b.Z)(e);try{let{board:n,characters:l,config:a,locale:o}=j(e);p().info("solve - request",{meta:r,payload:{board:n.toString(),boardBlanksCount:n.getBlanksCount(),boardTilesCount:n.getTilesCount(),characters:l.join(""),game:e.body.game,locale:o}});let i=await d.dictionaries.get(o),u=l.map(e=>new h.Tile({character:e,isBlank:e===f.BLANK})),s=(0,g.solve)(i,a,n,u);t.status(200).send(s)}catch(n){let e=n instanceof Error?n.message:"Unknown error";p().error("solve - error",{error:n,meta:r}),t.status(500).send({error:"Server error",message:e})}},w=(0,u.l)(a,"default"),x=(0,u.l)(a,"config"),k=new o.PagesAPIRouteModule({definition:{kind:i.x.PAGES_API,page:"/api/solve",pathname:"/api/solve",bundlePath:"",filename:""},userland:a})},1525:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(9953);let l=(e,t)=>{let{isEmpty:r,tile:l,x:a,y:o}=e;return!(a<0)&&!(a>=t.boardWidth)&&!(o<0)&&!(o>=t.boardHeight)&&(!r||null===l)&&(null===l||!!(0,n.Z)(l.character))},a=(e,t)=>{if(e.length!==t.boardWidth)return!1;for(let r of e)if(!l(r,t))return!1;return!0},o=(e,t)=>{for(let r of e.flat().filter(e=>e&&e.tile&&t.isTwoCharacterTilePrefix(e.tile.character)))for(let n of t.twoCharacterTiles){let t=r.y+1<e.length,l=r.x+1<e[0].length,a=e[r.y+1][r.x],o=e[r.y][r.x+1],i=t&&a.tile&&a.tile.character===n[1],u=l&&o.tile&&o.tile.character===n[1],s=i||u;if(r.tile&&n.startsWith(r.tile.character)&&s)return!1}return!0},i=(e,t)=>{if(e.length!==t.boardHeight)return!1;for(let r of e)if(!a(r,t))return!1;return o(e,t)}},9953:(e,t,r)=>{r.d(t,{Z:()=>n});let n=e=>0!==e.length&&e.length<=2},3904:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{let{twoCharacterTiles:r}=e,{cells:n}=t;for(let e=0;e<n.length-1;++e){let t=n[e],l=n[e+1],a=t.tile.character+l.tile.character;if(r.includes(a))return!1}return!0}},3594:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fillPatternRecursive=void 0;let n=r(8436),l=r(6452);t.fillPatternRecursive=(e,r,a,o,i,u)=>{let s=o.getIndexOfFirstCellWithoutTile();if(-1===s){r.has(i)&&o.getCollisions().every(e=>r.has(e.toString()))&&e.push(new l.FinalPattern(o.clone()));return}for(let f=0;f<u.length;++f){let d=u[f],c=o.cells[s].tile;o.cells[s].tile=d;let p=o.getIndexOfFirstCellWithoutTile(),g=i.indexOf(n.EMPTY_CELL),h=i.substring(0,g),b=i.substring(g+1);for(let n of d.isBlank?a.alphabet:[d.character]){let i=h+n,s=i+b;d.character=n,-1===p?r.has(s)&&o.getCollisions().every(e=>r.has(e.toString()))&&e.push(new l.FinalPattern(o.clone())):r.hasPrefix(i)&&(u.splice(f,1),(0,t.fillPatternRecursive)(e,r,a,o,s,u),u.splice(f,0,d))}o.cells[s].tile=c}},t.default=(e,r,n,l)=>{if(n.getEmptyCellsCount()>l.length)return[];let a=[];return(0,t.fillPatternRecursive)(a,e,r,n,n.toString(),l),a}},856:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{if(0===e.length)return[];let r=[];for(let n=t+1;n<e.length-1;++n)e[n+1].hasTile()||r.push(n);return r.push(e.length-1),r}},9004:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let l=r(6452),a=n(r(7984)),o=n(r(8618));t.default=(e,t)=>{let r=e.boardHeight;return(0,o.default)({getNthVector:e=>t.getRow(e),vectorsCount:r}).flatMap(r=>(0,a.default)({board:t,config:e,PatternModel:l.HorizontalPattern,cells:r}))}},7984:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let l=n(r(856)),a=n(r(8182));t.default=({board:e,cells:t,config:r,PatternModel:n})=>(0,a.default)(t).flatMap(a=>{let o=(0,l.default)(t,a),i=[];for(let l of o){let o=new n(e,t.slice(a,l+1));o.canBePlaced(r)&&i.push(o)}return i})},9480:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let l=n(r(9004)),a=n(r(5069));t.default=(e,t)=>{let r=(0,l.default)(e,t),n=(0,a.default)(e,t);return r.concat(n)}},8182:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{if(0===e.length)return[];let t=[0];for(let r=1;r<e.length-1;++r)e[r-1].hasTile()||t.push(r);return t}},8618:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=({getNthVector:e,vectorsCount:t})=>Array.from({length:t},(t,r)=>e(r))},5069:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let l=r(6452),a=n(r(7984)),o=n(r(8618));t.default=(e,t)=>{let r=e.boardWidth;return(0,o.default)({getNthVector:e=>t.getColumn(e),vectorsCount:r}).flatMap(r=>(0,a.default)({board:t,config:e,PatternModel:l.VerticalPattern,cells:r}))}},6628:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});let n=r(8436);t.default=(e,t)=>{let r=t.reduce(({multiplier:t,score:r},l)=>{let a=e.getCellBonus(l),{characterMultiplier:o,wordMultiplier:i}=a&&a.canApply(e,l)?a.value:n.NO_BONUS,u=e.pointsMap[l.tile.character]||0;return{multiplier:t*i,score:r+(l.tile.isBlank?e.blankScore:u)*o}},{multiplier:1,score:0});return r.score*r.multiplier}},2352:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>e.cells.filter(e=>e.isEmpty).map(e=>{let t=e.tile.isBlank?"!":"",r=e.tile.character+t;return[e.x,e.y,r].join(",")}).join("-")},4808:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let l=n(r(6628));t.default=(e,t)=>{let r=t.getEmptyCellsCount()===e.maximumCharactersCount?e.allTilesBonusScore:0;return t.getCollisions().reduce((t,r)=>t+(0,l.default)(e,r.cells),(0,l.default)(e,t.cells))+r}},5555:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let l=n(r(2352));t.default=e=>{let t=new Set,r=[];for(let n of e){let e=(0,l.default)(n);t.has(e)||(t.add(e),r.push(n))}return r}},368:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.solve=t.getUniquePatterns=t.getPatternScore=t.getPatternHash=t.getCellsScore=t.generateVerticalPatterns=t.generateVectors=t.generateStartIndices=t.generatePatterns=t.generatePattern=t.generateHorizontalPatterns=t.generateEndIndices=t.fillPattern=t.areDigraphsValid=void 0;var l=r(3904);Object.defineProperty(t,"areDigraphsValid",{enumerable:!0,get:function(){return n(l).default}});var a=r(3594);Object.defineProperty(t,"fillPattern",{enumerable:!0,get:function(){return n(a).default}});var o=r(856);Object.defineProperty(t,"generateEndIndices",{enumerable:!0,get:function(){return n(o).default}});var i=r(9004);Object.defineProperty(t,"generateHorizontalPatterns",{enumerable:!0,get:function(){return n(i).default}});var u=r(7984);Object.defineProperty(t,"generatePattern",{enumerable:!0,get:function(){return n(u).default}});var s=r(9480);Object.defineProperty(t,"generatePatterns",{enumerable:!0,get:function(){return n(s).default}});var f=r(8182);Object.defineProperty(t,"generateStartIndices",{enumerable:!0,get:function(){return n(f).default}});var d=r(8618);Object.defineProperty(t,"generateVectors",{enumerable:!0,get:function(){return n(d).default}});var c=r(5069);Object.defineProperty(t,"generateVerticalPatterns",{enumerable:!0,get:function(){return n(c).default}});var p=r(6628);Object.defineProperty(t,"getCellsScore",{enumerable:!0,get:function(){return n(p).default}});var g=r(2352);Object.defineProperty(t,"getPatternHash",{enumerable:!0,get:function(){return n(g).default}});var h=r(4808);Object.defineProperty(t,"getPatternScore",{enumerable:!0,get:function(){return n(h).default}});var b=r(5555);Object.defineProperty(t,"getUniquePatterns",{enumerable:!0,get:function(){return n(b).default}});var v=r(6243);Object.defineProperty(t,"solve",{enumerable:!0,get:function(){return n(v).default}})},6243:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});let l=n(r(3904)),a=n(r(3594)),o=n(r(9480)),i=n(r(4808)),u=n(r(5555));t.default=(e,t,r,n)=>{let s=(0,o.default)(t,r).flatMap(r=>(0,a.default)(e,t,r,n)),f=t.twoCharacterTiles.length>0?s.filter(e=>(0,l.default)(t,e)):s;return(0,u.default)(f).map((e,r)=>({cells:e.cells.map(e=>e.toJson()),collisions:e.getCollisions().map(e=>e.cells.map(e=>e.toJson())),id:r,points:(0,i.default)(t,e)}))}}};var t=require("../../webpack-api-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[977,911],()=>r(9790));module.exports=n})();
|