@scrabble-solver/scrabble-solver 2.8.1 → 2.8.3
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 +5 -5
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/.next/cache/next-server.js.nft.json +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/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/413.js +391 -673
- package/.next/server/chunks/515.js +414 -500
- package/.next/server/chunks/907.js +397 -679
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/pages/_app.js +7 -10
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +0 -3
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js +114 -171
- package/.next/server/pages/api/solve.js +428 -1164
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js +2 -2
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/static/OhUvTNKwyrrzmNwKBnpUU/_buildManifest.js +1 -0
- package/.next/static/{CQTUJjnUaobzo-T6zRWj1 → OhUvTNKwyrrzmNwKBnpUU}/_ssgManifest.js +0 -0
- package/.next/static/chunks/{195-fcadef5c6eed8338.js → 195-4b75c9c697b7b455.js} +1 -1
- package/.next/static/chunks/pages/_app-72522bfb306a8aef.js +1 -0
- package/.next/trace +42 -42
- package/package.json +9 -9
- package/src/components/Board/Board.tsx +1 -1
- package/src/components/Board/BoardPure.tsx +1 -1
- package/src/components/Board/components/Cell/Button.tsx +1 -1
- package/src/components/Board/components/Cell/Cell.tsx +1 -1
- package/src/components/Board/components/Cell/CellPure.tsx +1 -1
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Checkbox/Checkbox.tsx +1 -1
- package/src/components/Dictionary/Dictionary.tsx +1 -1
- package/src/components/DictionaryInput/DictionaryInput.tsx +1 -1
- package/src/components/EmptyState/EmptyState.tsx +1 -1
- package/src/components/Key/Key.tsx +1 -1
- package/src/components/KeyMap/KeyMap.tsx +1 -1
- package/src/components/KeyMap/components/Mapping/Mapping.tsx +1 -1
- package/src/components/Loading/Loading.tsx +1 -1
- package/src/components/Logo/Logo.tsx +1 -1
- package/src/components/NavButtons/NavButtons.tsx +1 -1
- package/src/components/NotFound/NotFound.tsx +1 -1
- package/src/components/PlainTiles/PlainTiles.tsx +1 -1
- package/src/components/PlainTiles/Tile.tsx +1 -1
- package/src/components/Rack/Rack.tsx +1 -1
- package/src/components/Rack/RackTile.tsx +1 -1
- package/src/components/Radio/Radio.tsx +1 -1
- package/src/components/RemainingTiles/Character.tsx +1 -1
- package/src/components/RemainingTiles/RemainingTiles.tsx +1 -1
- package/src/components/Results/Cell.tsx +1 -1
- package/src/components/Results/HeaderButton.tsx +1 -1
- package/src/components/Results/Result.tsx +1 -1
- package/src/components/Results/Results.tsx +1 -1
- package/src/components/Results/SolveButton.tsx +1 -1
- package/src/components/ResultsInput/ResultsInput.tsx +1 -1
- package/src/components/Screen/Screen.tsx +1 -1
- package/src/components/Settings/Settings.tsx +1 -1
- package/src/components/Settings/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +1 -1
- package/src/components/Settings/components/ConfigSetting/ConfigSetting.tsx +1 -1
- package/src/components/Settings/components/LocaleSetting/LocaleSetting.tsx +1 -1
- package/src/components/Sidebar/Sidebar.tsx +1 -1
- package/src/components/Sidebar/components/Section/Section.tsx +1 -1
- package/src/components/Splash/Splash.tsx +1 -1
- package/src/components/SquareButton/Link.tsx +1 -1
- package/src/components/SquareButton/SquareButton.tsx +1 -1
- package/src/components/Tile/Tile.tsx +1 -1
- package/src/components/Tile/TilePure.tsx +1 -1
- package/src/components/Tooltip/useTooltip.tsx +1 -1
- package/src/components/Well/Well.tsx +1 -1
- package/src/hooks/usePortal.tsx +19 -9
- package/src/lib/memoize.ts +1 -1
- package/src/pages/_app.tsx +1 -1
- package/src/pages/_document.tsx +1 -1
- package/src/pages/index.tsx +1 -1
- package/.next/static/CQTUJjnUaobzo-T6zRWj1/_buildManifest.js +0 -1
- package/.next/static/chunks/pages/_app-f4030148d742bcd2.js +0 -1
|
@@ -128,123 +128,50 @@ module.exports = require("zlib");
|
|
|
128
128
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
129
129
|
|
|
130
130
|
|
|
131
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
132
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
133
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
134
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
135
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
136
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
137
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
138
|
-
});
|
|
139
|
-
};
|
|
140
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
141
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
142
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
143
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
144
|
-
function step(op) {
|
|
145
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
146
|
-
while (_) try {
|
|
147
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
148
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
149
|
-
switch (op[0]) {
|
|
150
|
-
case 0: case 1: t = op; break;
|
|
151
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
152
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
153
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
154
|
-
default:
|
|
155
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
156
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
157
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
158
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
159
|
-
if (t[2]) _.ops.pop();
|
|
160
|
-
_.trys.pop(); continue;
|
|
161
|
-
}
|
|
162
|
-
op = body.call(thisArg, _);
|
|
163
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
164
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
131
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
168
132
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
169
133
|
};
|
|
170
134
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
135
|
+
const logger_1 = __importDefault(__webpack_require__(52954));
|
|
136
|
+
const types_1 = __webpack_require__(46452);
|
|
137
|
+
const fs_1 = __importDefault(__webpack_require__(57147));
|
|
138
|
+
const constants_1 = __webpack_require__(75823);
|
|
139
|
+
const lib_1 = __webpack_require__(26137);
|
|
140
|
+
class Dictionaries {
|
|
141
|
+
constructor() {
|
|
178
142
|
this.cache = new lib_1.LayeredCache();
|
|
179
|
-
this.downloadDictionaryProxies = Object.fromEntries(Object.values(types_1.Locale).map(
|
|
143
|
+
this.downloadDictionaryProxies = Object.fromEntries(Object.values(types_1.Locale).map((locale) => [locale, (0, lib_1.createAsyncProxy)(() => (0, lib_1.downloadDictionary)(locale))]));
|
|
180
144
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
return [2 /*return*/, trie];
|
|
193
|
-
}
|
|
194
|
-
_a.label = 2;
|
|
195
|
-
case 2:
|
|
196
|
-
logger_1.default.info('Dictionaries - cache miss', { locale: locale });
|
|
197
|
-
return [2 /*return*/, this.updateDictionary(locale)];
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
};
|
|
202
|
-
Dictionaries.prototype.remove = function () {
|
|
145
|
+
async get(locale) {
|
|
146
|
+
if (this.cache.has(locale)) {
|
|
147
|
+
const trie = await this.cache.get(locale);
|
|
148
|
+
if (trie) {
|
|
149
|
+
return trie;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
logger_1.default.info('Dictionaries - cache miss', { locale });
|
|
153
|
+
return this.updateDictionary(locale);
|
|
154
|
+
}
|
|
155
|
+
remove() {
|
|
203
156
|
fs_1.default.rmdirSync(constants_1.OUTPUT_DIRECTORY, { recursive: true });
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
Dictionaries.prototype.getLocalesToUpdate = function () {
|
|
223
|
-
var _this = this;
|
|
224
|
-
return Object.values(types_1.Locale).filter(function (locale) { return _this.cache.isStale(locale) !== false; });
|
|
225
|
-
};
|
|
226
|
-
Dictionaries.prototype.updateDictionary = function (locale) {
|
|
227
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
228
|
-
var downloadDictionaryProxy, trie;
|
|
229
|
-
return __generator(this, function (_a) {
|
|
230
|
-
switch (_a.label) {
|
|
231
|
-
case 0:
|
|
232
|
-
logger_1.default.info('Dictionaries - updateDictionary', { locale: locale });
|
|
233
|
-
fs_1.default.mkdirSync(constants_1.OUTPUT_DIRECTORY, { recursive: true });
|
|
234
|
-
downloadDictionaryProxy = this.downloadDictionaryProxies[locale];
|
|
235
|
-
return [4 /*yield*/, downloadDictionaryProxy()];
|
|
236
|
-
case 1:
|
|
237
|
-
trie = _a.sent();
|
|
238
|
-
return [4 /*yield*/, this.cache.set(locale, trie)];
|
|
239
|
-
case 2:
|
|
240
|
-
_a.sent();
|
|
241
|
-
return [2 /*return*/, trie];
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
};
|
|
246
|
-
return Dictionaries;
|
|
247
|
-
}());
|
|
157
|
+
}
|
|
158
|
+
async update(force) {
|
|
159
|
+
const locales = force ? Object.values(types_1.Locale) : this.getLocalesToUpdate();
|
|
160
|
+
logger_1.default.info('Dictionaries - update', { force, locales });
|
|
161
|
+
await Promise.all(locales.map((locale) => this.updateDictionary(locale)));
|
|
162
|
+
}
|
|
163
|
+
getLocalesToUpdate() {
|
|
164
|
+
return Object.values(types_1.Locale).filter((locale) => this.cache.isStale(locale) !== false);
|
|
165
|
+
}
|
|
166
|
+
async updateDictionary(locale) {
|
|
167
|
+
logger_1.default.info('Dictionaries - updateDictionary', { locale });
|
|
168
|
+
fs_1.default.mkdirSync(constants_1.OUTPUT_DIRECTORY, { recursive: true });
|
|
169
|
+
const downloadDictionaryProxy = this.downloadDictionaryProxies[locale];
|
|
170
|
+
const trie = await downloadDictionaryProxy();
|
|
171
|
+
await this.cache.set(locale, trie);
|
|
172
|
+
return trie;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
248
175
|
exports["default"] = Dictionaries;
|
|
249
176
|
|
|
250
177
|
|
|
@@ -259,8 +186,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
259
186
|
};
|
|
260
187
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
261
188
|
exports.OUTPUT_DIRECTORY = exports.CACHE_STALE_THRESHOLD = exports.DAY = void 0;
|
|
262
|
-
|
|
263
|
-
|
|
189
|
+
const os_1 = __importDefault(__webpack_require__(22037));
|
|
190
|
+
const path_1 = __importDefault(__webpack_require__(71017));
|
|
264
191
|
exports.DAY = 24 * 60 * 60 * 1000;
|
|
265
192
|
exports.CACHE_STALE_THRESHOLD = 30 * exports.DAY;
|
|
266
193
|
exports.OUTPUT_DIRECTORY = path_1.default.resolve(os_1.default.homedir(), '.scrabble-solver', 'dictionaries');
|
|
@@ -291,7 +218,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
291
218
|
};
|
|
292
219
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
293
220
|
exports.dictionaries = void 0;
|
|
294
|
-
|
|
221
|
+
const Dictionaries_1 = __importDefault(__webpack_require__(21285));
|
|
295
222
|
__exportStar(__webpack_require__(26137), exports);
|
|
296
223
|
exports.dictionaries = new Dictionaries_1.default();
|
|
297
224
|
|
|
@@ -302,114 +229,54 @@ exports.dictionaries = new Dictionaries_1.default();
|
|
|
302
229
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
303
230
|
|
|
304
231
|
|
|
305
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
306
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
307
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
308
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
309
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
310
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
311
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
312
|
-
});
|
|
313
|
-
};
|
|
314
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
315
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
316
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
317
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
318
|
-
function step(op) {
|
|
319
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
320
|
-
while (_) try {
|
|
321
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
322
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
323
|
-
switch (op[0]) {
|
|
324
|
-
case 0: case 1: t = op; break;
|
|
325
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
326
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
327
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
328
|
-
default:
|
|
329
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
330
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
331
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
332
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
333
|
-
if (t[2]) _.ops.pop();
|
|
334
|
-
_.trys.pop(); continue;
|
|
335
|
-
}
|
|
336
|
-
op = body.call(thisArg, _);
|
|
337
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
338
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
339
|
-
}
|
|
340
|
-
};
|
|
341
232
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
342
233
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
343
234
|
};
|
|
344
235
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
236
|
+
const trie_1 = __webpack_require__(83140);
|
|
237
|
+
const fs_1 = __importDefault(__webpack_require__(57147));
|
|
238
|
+
const constants_1 = __webpack_require__(75823);
|
|
239
|
+
const getDictionaryFilepath_1 = __importDefault(__webpack_require__(68638));
|
|
240
|
+
const readFile_1 = __importDefault(__webpack_require__(61908));
|
|
241
|
+
const writeFile_1 = __importDefault(__webpack_require__(42213));
|
|
242
|
+
class DiskCache {
|
|
243
|
+
async get(locale) {
|
|
244
|
+
if (!this.has(locale)) {
|
|
245
|
+
return undefined;
|
|
246
|
+
}
|
|
247
|
+
const filepath = (0, getDictionaryFilepath_1.default)(locale);
|
|
248
|
+
const serialized = await (0, readFile_1.default)(filepath);
|
|
249
|
+
const trie = trie_1.Trie.deserialize(serialized);
|
|
250
|
+
return trie;
|
|
353
251
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
var filepath, serialized, trie;
|
|
357
|
-
return __generator(this, function (_a) {
|
|
358
|
-
switch (_a.label) {
|
|
359
|
-
case 0:
|
|
360
|
-
if (!this.has(locale)) {
|
|
361
|
-
return [2 /*return*/, undefined];
|
|
362
|
-
}
|
|
363
|
-
filepath = (0, getDictionaryFilepath_1.default)(locale);
|
|
364
|
-
return [4 /*yield*/, (0, readFile_1.default)(filepath)];
|
|
365
|
-
case 1:
|
|
366
|
-
serialized = _a.sent();
|
|
367
|
-
trie = trie_1.Trie.deserialize(serialized);
|
|
368
|
-
return [2 /*return*/, trie];
|
|
369
|
-
}
|
|
370
|
-
});
|
|
371
|
-
});
|
|
372
|
-
};
|
|
373
|
-
DiskCache.prototype.getLastModifiedTimestamp = function (locale) {
|
|
374
|
-
var filepath = (0, getDictionaryFilepath_1.default)(locale);
|
|
252
|
+
getLastModifiedTimestamp(locale) {
|
|
253
|
+
const filepath = (0, getDictionaryFilepath_1.default)(locale);
|
|
375
254
|
if (!fs_1.default.existsSync(filepath)) {
|
|
376
255
|
return undefined;
|
|
377
256
|
}
|
|
378
|
-
|
|
257
|
+
const stats = fs_1.default.statSync(filepath);
|
|
379
258
|
return stats.mtimeMs;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
|
|
259
|
+
}
|
|
260
|
+
has(locale) {
|
|
261
|
+
const filepath = (0, getDictionaryFilepath_1.default)(locale);
|
|
383
262
|
return fs_1.default.existsSync(filepath);
|
|
384
|
-
}
|
|
385
|
-
|
|
263
|
+
}
|
|
264
|
+
isStale(locale) {
|
|
386
265
|
if (!this.has(locale)) {
|
|
387
266
|
return undefined;
|
|
388
267
|
}
|
|
389
|
-
|
|
268
|
+
const lastModifiedTimestamp = this.getLastModifiedTimestamp(locale);
|
|
390
269
|
if (typeof lastModifiedTimestamp === 'undefined') {
|
|
391
270
|
return undefined;
|
|
392
271
|
}
|
|
393
|
-
|
|
272
|
+
const timeSinceModification = Math.abs(lastModifiedTimestamp - Date.now());
|
|
394
273
|
return timeSinceModification > constants_1.CACHE_STALE_THRESHOLD;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
case 0:
|
|
402
|
-
filepath = (0, getDictionaryFilepath_1.default)(locale);
|
|
403
|
-
return [4 /*yield*/, (0, writeFile_1.default)(filepath, trie.serialize())];
|
|
404
|
-
case 1:
|
|
405
|
-
_a.sent();
|
|
406
|
-
return [2 /*return*/];
|
|
407
|
-
}
|
|
408
|
-
});
|
|
409
|
-
});
|
|
410
|
-
};
|
|
411
|
-
return DiskCache;
|
|
412
|
-
}());
|
|
274
|
+
}
|
|
275
|
+
async set(locale, trie) {
|
|
276
|
+
const filepath = (0, getDictionaryFilepath_1.default)(locale);
|
|
277
|
+
await (0, writeFile_1.default)(filepath, trie.serialize());
|
|
278
|
+
}
|
|
279
|
+
}
|
|
413
280
|
exports["default"] = DiskCache;
|
|
414
281
|
|
|
415
282
|
|
|
@@ -419,123 +286,59 @@ exports["default"] = DiskCache;
|
|
|
419
286
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
420
287
|
|
|
421
288
|
|
|
422
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
423
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
424
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
425
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
426
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
427
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
428
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
429
|
-
});
|
|
430
|
-
};
|
|
431
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
432
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
433
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
434
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
435
|
-
function step(op) {
|
|
436
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
437
|
-
while (_) try {
|
|
438
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
439
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
440
|
-
switch (op[0]) {
|
|
441
|
-
case 0: case 1: t = op; break;
|
|
442
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
443
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
444
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
445
|
-
default:
|
|
446
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
447
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
448
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
449
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
450
|
-
if (t[2]) _.ops.pop();
|
|
451
|
-
_.trys.pop(); continue;
|
|
452
|
-
}
|
|
453
|
-
op = body.call(thisArg, _);
|
|
454
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
455
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
456
|
-
}
|
|
457
|
-
};
|
|
458
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
459
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
460
|
-
if (!m) return o;
|
|
461
|
-
var i = m.call(o), r, ar = [], e;
|
|
462
|
-
try {
|
|
463
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
464
|
-
}
|
|
465
|
-
catch (error) { e = { error: error }; }
|
|
466
|
-
finally {
|
|
467
|
-
try {
|
|
468
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
469
|
-
}
|
|
470
|
-
finally { if (e) throw e.error; }
|
|
471
|
-
}
|
|
472
|
-
return ar;
|
|
473
|
-
};
|
|
474
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
475
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
476
|
-
if (ar || !(i in from)) {
|
|
477
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
478
|
-
ar[i] = from[i];
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
482
|
-
};
|
|
483
289
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
484
290
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
485
291
|
};
|
|
486
292
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
293
|
+
const createCacheTimestampComparator_1 = __importDefault(__webpack_require__(20494));
|
|
294
|
+
const DiskCache_1 = __importDefault(__webpack_require__(2812));
|
|
295
|
+
const MemoryCache_1 = __importDefault(__webpack_require__(50192));
|
|
296
|
+
class LayeredCache {
|
|
297
|
+
constructor() {
|
|
492
298
|
this.layers = [new MemoryCache_1.default(), new DiskCache_1.default()];
|
|
493
299
|
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
if (!
|
|
300
|
+
async get(locale) {
|
|
301
|
+
const cache = this.getLastModifiedLayer(locale);
|
|
302
|
+
if (!cache) {
|
|
497
303
|
return Promise.resolve(undefined);
|
|
498
304
|
}
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
305
|
+
const [memoryCache, diskCache] = this.layers;
|
|
306
|
+
const value = await cache.get(locale);
|
|
307
|
+
if (cache === diskCache && typeof value !== 'undefined') {
|
|
308
|
+
await memoryCache.set(locale, value);
|
|
309
|
+
}
|
|
310
|
+
return value;
|
|
311
|
+
}
|
|
312
|
+
getLastModifiedTimestamp(locale) {
|
|
313
|
+
const cache = this.getLastModifiedLayer(locale);
|
|
314
|
+
if (!cache) {
|
|
504
315
|
return undefined;
|
|
505
316
|
}
|
|
506
|
-
return
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
return this.layers.some(
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
if (this.layers.some(
|
|
317
|
+
return cache.getLastModifiedTimestamp(locale);
|
|
318
|
+
}
|
|
319
|
+
has(locale) {
|
|
320
|
+
return this.layers.some((cache) => cache.has(locale));
|
|
321
|
+
}
|
|
322
|
+
isStale(locale) {
|
|
323
|
+
if (this.layers.some((cache) => cache.isStale(locale))) {
|
|
513
324
|
return true;
|
|
514
325
|
}
|
|
515
|
-
if (this.layers.every(
|
|
326
|
+
if (this.layers.every((cache) => typeof cache.isStale(locale) === 'undefined')) {
|
|
516
327
|
return undefined;
|
|
517
328
|
}
|
|
518
329
|
return false;
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
}
|
|
529
|
-
});
|
|
530
|
-
});
|
|
531
|
-
};
|
|
532
|
-
LayeredCache.prototype.getLastModifiedLayer = function (locale) {
|
|
533
|
-
var layers = this.layers.filter(function (cache) { return cache.has(locale); });
|
|
534
|
-
var _a = __read(__spreadArray([], __read(layers), false).sort((0, createCacheTimestampComparator_1.default)(locale)), 1), cached = _a[0];
|
|
330
|
+
}
|
|
331
|
+
async set(locale, trie) {
|
|
332
|
+
const [memoryCache, diskCache] = this.layers;
|
|
333
|
+
await diskCache.set(locale, trie);
|
|
334
|
+
await memoryCache.set(locale, trie);
|
|
335
|
+
}
|
|
336
|
+
getLastModifiedLayer(locale) {
|
|
337
|
+
const layers = this.layers.filter((cache) => cache.has(locale));
|
|
338
|
+
const [cached] = [...layers].sort((0, createCacheTimestampComparator_1.default)(locale));
|
|
535
339
|
return cached;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
}());
|
|
340
|
+
}
|
|
341
|
+
}
|
|
539
342
|
exports["default"] = LayeredCache;
|
|
540
343
|
|
|
541
344
|
|
|
@@ -546,104 +349,59 @@ exports["default"] = LayeredCache;
|
|
|
546
349
|
|
|
547
350
|
|
|
548
351
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
352
|
+
const constants_1 = __webpack_require__(75823);
|
|
353
|
+
class MemoryCache {
|
|
354
|
+
constructor() {
|
|
552
355
|
this.cache = {};
|
|
553
356
|
this.cacheTimestamps = {};
|
|
554
357
|
}
|
|
555
|
-
|
|
358
|
+
get(locale) {
|
|
556
359
|
return Promise.resolve(this.cache[locale]);
|
|
557
|
-
}
|
|
558
|
-
|
|
360
|
+
}
|
|
361
|
+
getLastModifiedTimestamp(locale) {
|
|
559
362
|
return this.cacheTimestamps[locale];
|
|
560
|
-
}
|
|
561
|
-
|
|
363
|
+
}
|
|
364
|
+
has(locale) {
|
|
562
365
|
return typeof this.cache[locale] !== 'undefined';
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
|
|
366
|
+
}
|
|
367
|
+
isStale(locale) {
|
|
368
|
+
const timestamp = this.getLastModifiedTimestamp(locale);
|
|
566
369
|
if (!this.has(locale) || typeof timestamp === 'undefined') {
|
|
567
370
|
return undefined;
|
|
568
371
|
}
|
|
569
|
-
|
|
372
|
+
const timeSinceModification = Math.abs(timestamp - Date.now());
|
|
570
373
|
return timeSinceModification > constants_1.CACHE_STALE_THRESHOLD;
|
|
571
|
-
}
|
|
572
|
-
|
|
374
|
+
}
|
|
375
|
+
set(locale, trie) {
|
|
573
376
|
this.cacheTimestamps[locale] = Date.now();
|
|
574
377
|
this.cache[locale] = trie;
|
|
575
378
|
return Promise.resolve();
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
}());
|
|
379
|
+
}
|
|
380
|
+
}
|
|
579
381
|
exports["default"] = MemoryCache;
|
|
580
382
|
|
|
581
383
|
|
|
582
384
|
/***/ }),
|
|
583
385
|
|
|
584
386
|
/***/ 26554:
|
|
585
|
-
/***/ (
|
|
387
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
586
388
|
|
|
587
389
|
|
|
588
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
589
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
590
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
591
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
592
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
593
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
594
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
595
|
-
});
|
|
596
|
-
};
|
|
597
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
598
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
599
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
600
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
601
|
-
function step(op) {
|
|
602
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
603
|
-
while (_) try {
|
|
604
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
605
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
606
|
-
switch (op[0]) {
|
|
607
|
-
case 0: case 1: t = op; break;
|
|
608
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
609
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
610
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
611
|
-
default:
|
|
612
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
613
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
614
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
615
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
616
|
-
if (t[2]) _.ops.pop();
|
|
617
|
-
_.trys.pop(); continue;
|
|
618
|
-
}
|
|
619
|
-
op = body.call(thisArg, _);
|
|
620
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
621
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
622
|
-
}
|
|
623
|
-
};
|
|
624
390
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
return
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
case 2: return [2 /*return*/, _a.sent()];
|
|
640
|
-
case 3:
|
|
641
|
-
promise = null;
|
|
642
|
-
return [7 /*endfinally*/];
|
|
643
|
-
case 4: return [2 /*return*/];
|
|
644
|
-
}
|
|
645
|
-
});
|
|
646
|
-
}); };
|
|
391
|
+
const createAsyncProxy = (asyncCallback) => {
|
|
392
|
+
let promise = null;
|
|
393
|
+
return async () => {
|
|
394
|
+
if (promise) {
|
|
395
|
+
return promise;
|
|
396
|
+
}
|
|
397
|
+
try {
|
|
398
|
+
promise = asyncCallback();
|
|
399
|
+
return await promise;
|
|
400
|
+
}
|
|
401
|
+
finally {
|
|
402
|
+
promise = null;
|
|
403
|
+
}
|
|
404
|
+
};
|
|
647
405
|
};
|
|
648
406
|
exports["default"] = createAsyncProxy;
|
|
649
407
|
|
|
@@ -655,10 +413,10 @@ exports["default"] = createAsyncProxy;
|
|
|
655
413
|
|
|
656
414
|
|
|
657
415
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
658
|
-
|
|
659
|
-
return
|
|
660
|
-
|
|
661
|
-
|
|
416
|
+
const createCacheTimestampComparator = (locale) => {
|
|
417
|
+
return (a, b) => {
|
|
418
|
+
const aTimestamp = a.getLastModifiedTimestamp(locale);
|
|
419
|
+
const bTimestamp = b.getLastModifiedTimestamp(locale);
|
|
662
420
|
if (aTimestamp === bTimestamp) {
|
|
663
421
|
return 0;
|
|
664
422
|
}
|
|
@@ -680,64 +438,20 @@ exports["default"] = createCacheTimestampComparator;
|
|
|
680
438
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
681
439
|
|
|
682
440
|
|
|
683
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
684
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
685
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
686
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
687
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
688
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
689
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
690
|
-
});
|
|
691
|
-
};
|
|
692
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
693
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
694
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
695
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
696
|
-
function step(op) {
|
|
697
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
698
|
-
while (_) try {
|
|
699
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
700
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
701
|
-
switch (op[0]) {
|
|
702
|
-
case 0: case 1: t = op; break;
|
|
703
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
704
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
705
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
706
|
-
default:
|
|
707
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
708
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
709
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
710
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
711
|
-
if (t[2]) _.ops.pop();
|
|
712
|
-
_.trys.pop(); continue;
|
|
713
|
-
}
|
|
714
|
-
op = body.call(thisArg, _);
|
|
715
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
716
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
717
|
-
}
|
|
718
|
-
};
|
|
719
441
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
720
442
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
721
443
|
};
|
|
722
444
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
case 1:
|
|
734
|
-
words = _a.sent();
|
|
735
|
-
logger_1.default.info('downloadDictionary - success', { locale: locale });
|
|
736
|
-
trie = trie_1.Trie.fromArray(words);
|
|
737
|
-
return [2 /*return*/, trie];
|
|
738
|
-
}
|
|
739
|
-
});
|
|
740
|
-
}); };
|
|
445
|
+
const trie_1 = __webpack_require__(83140);
|
|
446
|
+
const logger_1 = __importDefault(__webpack_require__(52954));
|
|
447
|
+
const word_lists_1 = __webpack_require__(51585);
|
|
448
|
+
const downloadDictionary = async (locale) => {
|
|
449
|
+
logger_1.default.info('downloadDictionary', { locale });
|
|
450
|
+
const words = await (0, word_lists_1.getWordList)(locale);
|
|
451
|
+
logger_1.default.info('downloadDictionary - success', { locale });
|
|
452
|
+
const trie = trie_1.Trie.fromArray(words);
|
|
453
|
+
return trie;
|
|
454
|
+
};
|
|
741
455
|
exports["default"] = downloadDictionary;
|
|
742
456
|
|
|
743
457
|
|
|
@@ -751,10 +465,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
751
465
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
752
466
|
};
|
|
753
467
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
return path_1.default.resolve(constants_1.OUTPUT_DIRECTORY,
|
|
468
|
+
const path_1 = __importDefault(__webpack_require__(71017));
|
|
469
|
+
const constants_1 = __webpack_require__(75823);
|
|
470
|
+
const getDictionaryFilepath = (locale) => {
|
|
471
|
+
return path_1.default.resolve(constants_1.OUTPUT_DIRECTORY, `${locale}.txt`);
|
|
758
472
|
};
|
|
759
473
|
exports["default"] = getDictionaryFilepath;
|
|
760
474
|
|
|
@@ -796,61 +510,23 @@ Object.defineProperty(exports, "writeFile", ({ enumerable: true, get: function (
|
|
|
796
510
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
797
511
|
|
|
798
512
|
|
|
799
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
800
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
801
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
802
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
803
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
804
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
805
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
806
|
-
});
|
|
807
|
-
};
|
|
808
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
809
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
810
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
811
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
812
|
-
function step(op) {
|
|
813
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
814
|
-
while (_) try {
|
|
815
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
816
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
817
|
-
switch (op[0]) {
|
|
818
|
-
case 0: case 1: t = op; break;
|
|
819
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
820
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
821
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
822
|
-
default:
|
|
823
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
824
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
825
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
826
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
827
|
-
if (t[2]) _.ops.pop();
|
|
828
|
-
_.trys.pop(); continue;
|
|
829
|
-
}
|
|
830
|
-
op = body.call(thisArg, _);
|
|
831
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
832
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
833
|
-
}
|
|
834
|
-
};
|
|
835
513
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
836
514
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
837
515
|
};
|
|
838
516
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
return
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
});
|
|
851
|
-
})];
|
|
517
|
+
const fs_1 = __importDefault(__webpack_require__(57147));
|
|
518
|
+
const readFile = async (filepath) => {
|
|
519
|
+
return new Promise((resolve, reject) => {
|
|
520
|
+
fs_1.default.readFile(filepath, { encoding: 'utf-8' }, (error, data) => {
|
|
521
|
+
if (error) {
|
|
522
|
+
reject();
|
|
523
|
+
}
|
|
524
|
+
else {
|
|
525
|
+
resolve(data.toString());
|
|
526
|
+
}
|
|
527
|
+
});
|
|
852
528
|
});
|
|
853
|
-
}
|
|
529
|
+
};
|
|
854
530
|
exports["default"] = readFile;
|
|
855
531
|
|
|
856
532
|
|
|
@@ -860,61 +536,23 @@ exports["default"] = readFile;
|
|
|
860
536
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
861
537
|
|
|
862
538
|
|
|
863
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
864
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
865
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
866
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
867
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
868
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
869
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
870
|
-
});
|
|
871
|
-
};
|
|
872
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
873
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
874
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
875
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
876
|
-
function step(op) {
|
|
877
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
878
|
-
while (_) try {
|
|
879
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
880
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
881
|
-
switch (op[0]) {
|
|
882
|
-
case 0: case 1: t = op; break;
|
|
883
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
884
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
885
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
886
|
-
default:
|
|
887
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
888
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
889
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
890
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
891
|
-
if (t[2]) _.ops.pop();
|
|
892
|
-
_.trys.pop(); continue;
|
|
893
|
-
}
|
|
894
|
-
op = body.call(thisArg, _);
|
|
895
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
896
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
897
|
-
}
|
|
898
|
-
};
|
|
899
539
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
900
540
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
901
541
|
};
|
|
902
542
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
return
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
});
|
|
915
|
-
})];
|
|
543
|
+
const fs_1 = __importDefault(__webpack_require__(57147));
|
|
544
|
+
const writeFile = async (filepath, data) => {
|
|
545
|
+
return new Promise((resolve, reject) => {
|
|
546
|
+
fs_1.default.writeFile(filepath, data, (error) => {
|
|
547
|
+
if (error) {
|
|
548
|
+
reject();
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
resolve();
|
|
552
|
+
}
|
|
553
|
+
});
|
|
916
554
|
});
|
|
917
|
-
}
|
|
555
|
+
};
|
|
918
556
|
exports["default"] = writeFile;
|
|
919
557
|
|
|
920
558
|
|
|
@@ -1014,213 +652,150 @@ const validateRequest = ({ board , characters , config })=>{
|
|
|
1014
652
|
/***/ }),
|
|
1015
653
|
|
|
1016
654
|
/***/ 6700:
|
|
1017
|
-
/***/ (
|
|
655
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1018
656
|
|
|
1019
657
|
|
|
1020
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
1021
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
1022
|
-
if (!m) return o;
|
|
1023
|
-
var i = m.call(o), r, ar = [], e;
|
|
1024
|
-
try {
|
|
1025
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
1026
|
-
}
|
|
1027
|
-
catch (error) { e = { error: error }; }
|
|
1028
|
-
finally {
|
|
1029
|
-
try {
|
|
1030
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
1031
|
-
}
|
|
1032
|
-
finally { if (e) throw e.error; }
|
|
1033
|
-
}
|
|
1034
|
-
return ar;
|
|
1035
|
-
};
|
|
1036
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
1037
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
1038
|
-
if (ar || !(i in from)) {
|
|
1039
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
1040
|
-
ar[i] = from[i];
|
|
1041
|
-
}
|
|
1042
|
-
}
|
|
1043
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
1044
|
-
};
|
|
1045
658
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
659
|
+
const constants_1 = __webpack_require__(38436);
|
|
660
|
+
const types_1 = __webpack_require__(46452);
|
|
661
|
+
class PatternsFiller {
|
|
662
|
+
constructor(config, trie) {
|
|
1050
663
|
this.config = config;
|
|
1051
664
|
this.trie = trie;
|
|
1052
665
|
}
|
|
1053
|
-
|
|
1054
|
-
|
|
666
|
+
fill(pattern, tiles) {
|
|
667
|
+
const patterns = [];
|
|
1055
668
|
if (pattern.getNumberOfEmptyCells() > tiles.length) {
|
|
1056
669
|
return [];
|
|
1057
670
|
}
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
for (
|
|
1061
|
-
|
|
671
|
+
const onPatternFound = (newPattern) => patterns.push(newPattern);
|
|
672
|
+
const tilesPermutations = this.generateBlankTilesPermutations(tiles);
|
|
673
|
+
for (let index = 0; index < tilesPermutations.length; ++index) {
|
|
674
|
+
const tilesPermutation = tilesPermutations[index];
|
|
1062
675
|
this.fillPattern(pattern, String(pattern), tilesPermutation, onPatternFound);
|
|
1063
676
|
}
|
|
1064
677
|
return patterns;
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
|
|
678
|
+
}
|
|
679
|
+
fillPattern(pattern, word, tiles, onPatternFound) {
|
|
680
|
+
const indexOfFirstCellWithoutTile = pattern.getIndexOfFirstCellWithoutTile();
|
|
1068
681
|
if (indexOfFirstCellWithoutTile === -1) {
|
|
1069
682
|
if (this.canAddPattern(pattern, word)) {
|
|
1070
683
|
onPatternFound(pattern.clone());
|
|
1071
684
|
}
|
|
1072
685
|
}
|
|
1073
686
|
else {
|
|
1074
|
-
for (
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
var previousTile = pattern.cells[indexOfFirstCellWithoutTile].tile;
|
|
687
|
+
for (let index = 0; index < tiles.length; ++index) {
|
|
688
|
+
const tile = tiles[index];
|
|
689
|
+
const previousTile = pattern.cells[indexOfFirstCellWithoutTile].tile;
|
|
1078
690
|
pattern.cells[indexOfFirstCellWithoutTile].tile = tile;
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
691
|
+
const indexOfNextCellWithoutTile = pattern.getIndexOfFirstCellWithoutTile();
|
|
692
|
+
const indexOfFirstEmptyLetter = word.indexOf(constants_1.EMPTY_CELL);
|
|
693
|
+
const newWordPrefix = word.substring(0, indexOfFirstEmptyLetter) + tile.character;
|
|
694
|
+
const newWord = newWordPrefix + word.substring(indexOfFirstEmptyLetter + 1);
|
|
1083
695
|
if (indexOfNextCellWithoutTile === -1) {
|
|
1084
696
|
if (this.canAddPattern(pattern, newWord)) {
|
|
1085
697
|
onPatternFound(pattern.clone());
|
|
1086
698
|
}
|
|
1087
699
|
}
|
|
1088
700
|
else if (this.trie.hasPrefix(newWordPrefix)) {
|
|
1089
|
-
|
|
701
|
+
tiles.splice(index, 1);
|
|
702
|
+
this.fillPattern(pattern, newWord, tiles, onPatternFound);
|
|
703
|
+
tiles.splice(index, 0, tile);
|
|
1090
704
|
}
|
|
1091
705
|
pattern.cells[indexOfFirstCellWithoutTile].tile = previousTile;
|
|
1092
706
|
}
|
|
1093
707
|
}
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
|
-
var _this = this;
|
|
708
|
+
}
|
|
709
|
+
canAddPattern(pattern, word) {
|
|
1097
710
|
return (this.trie.has(word) &&
|
|
1098
711
|
pattern
|
|
1099
712
|
.getCollisions()
|
|
1100
713
|
.map(String)
|
|
1101
|
-
.every(
|
|
1102
|
-
}
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
var firstBlankIndex = tiles.findIndex(function (_a) {
|
|
1107
|
-
var character = _a.character, isBlank = _a.isBlank;
|
|
1108
|
-
return isBlank && !alphabet.includes(character);
|
|
1109
|
-
});
|
|
714
|
+
.every((collision) => this.trie.has(collision)));
|
|
715
|
+
}
|
|
716
|
+
generateBlankTilesPermutations(tiles) {
|
|
717
|
+
const { alphabet } = this.config;
|
|
718
|
+
const firstBlankIndex = tiles.findIndex(({ character, isBlank }) => isBlank && !alphabet.includes(character));
|
|
1110
719
|
if (firstBlankIndex === -1) {
|
|
1111
720
|
return [tiles];
|
|
1112
721
|
}
|
|
1113
|
-
|
|
1114
|
-
return this.config.alphabet.reduce(
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
return permutations.concat(
|
|
722
|
+
const remainingTiles = tiles.slice(0, firstBlankIndex).concat(tiles.slice(firstBlankIndex + 1));
|
|
723
|
+
return this.config.alphabet.reduce((permutations, character) => {
|
|
724
|
+
const newTile = new types_1.Tile({ character, isBlank: true });
|
|
725
|
+
const newTiles = [...remainingTiles, newTile];
|
|
726
|
+
return permutations.concat(this.generateBlankTilesPermutations(newTiles));
|
|
1118
727
|
}, []);
|
|
1119
|
-
}
|
|
1120
|
-
|
|
1121
|
-
}());
|
|
728
|
+
}
|
|
729
|
+
}
|
|
1122
730
|
exports["default"] = PatternsFiller;
|
|
1123
731
|
|
|
1124
732
|
|
|
1125
733
|
/***/ }),
|
|
1126
734
|
|
|
1127
735
|
/***/ 34196:
|
|
1128
|
-
/***/ (
|
|
736
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1129
737
|
|
|
1130
738
|
|
|
1131
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
1132
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
1133
|
-
if (!m) return o;
|
|
1134
|
-
var i = m.call(o), r, ar = [], e;
|
|
1135
|
-
try {
|
|
1136
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
1137
|
-
}
|
|
1138
|
-
catch (error) { e = { error: error }; }
|
|
1139
|
-
finally {
|
|
1140
|
-
try {
|
|
1141
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
1142
|
-
}
|
|
1143
|
-
finally { if (e) throw e.error; }
|
|
1144
|
-
}
|
|
1145
|
-
return ar;
|
|
1146
|
-
};
|
|
1147
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
1148
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
1149
|
-
if (ar || !(i in from)) {
|
|
1150
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
1151
|
-
ar[i] = from[i];
|
|
1152
|
-
}
|
|
1153
|
-
}
|
|
1154
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
1155
|
-
};
|
|
1156
739
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
740
|
+
const types_1 = __webpack_require__(46452);
|
|
741
|
+
class PatternsGenerator {
|
|
742
|
+
constructor(config) {
|
|
1160
743
|
this.config = config;
|
|
1161
744
|
}
|
|
1162
|
-
|
|
1163
|
-
return
|
|
1164
|
-
}
|
|
1165
|
-
|
|
745
|
+
generate(board) {
|
|
746
|
+
return [...this.generateHorizontal(board), ...this.generateVertical(board)];
|
|
747
|
+
}
|
|
748
|
+
generateHorizontal(board) {
|
|
1166
749
|
return this.generatePatterns({
|
|
1167
|
-
board
|
|
1168
|
-
getNthVector:
|
|
750
|
+
board,
|
|
751
|
+
getNthVector: (index) => board.getRow(index),
|
|
1169
752
|
numberOfVectors: this.config.boardHeight,
|
|
1170
753
|
PatternModel: types_1.HorizontalPattern,
|
|
1171
754
|
});
|
|
1172
|
-
}
|
|
1173
|
-
|
|
755
|
+
}
|
|
756
|
+
generateVertical(board) {
|
|
1174
757
|
return this.generatePatterns({
|
|
1175
|
-
board
|
|
1176
|
-
getNthVector:
|
|
758
|
+
board,
|
|
759
|
+
getNthVector: (index) => board.getColumn(index),
|
|
1177
760
|
numberOfVectors: this.config.boardWidth,
|
|
1178
761
|
PatternModel: types_1.VerticalPattern,
|
|
1179
762
|
});
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
return this.generateVectors({ getNthVector: getNthVector, numberOfVectors: numberOfVectors }).reduce(function (patterns, cells) {
|
|
1185
|
-
return patterns.concat(_this.generateCellsPatterns({ board: board, PatternModel: PatternModel, cells: cells }));
|
|
763
|
+
}
|
|
764
|
+
generatePatterns({ board, getNthVector, numberOfVectors, PatternModel, }) {
|
|
765
|
+
return this.generateVectors({ getNthVector, numberOfVectors }).reduce((patterns, cells) => {
|
|
766
|
+
return patterns.concat(this.generateCellsPatterns({ board, PatternModel, cells }));
|
|
1186
767
|
}, []);
|
|
1187
|
-
}
|
|
1188
|
-
|
|
1189
|
-
var getNthVector = _a.getNthVector, numberOfVectors = _a.numberOfVectors;
|
|
768
|
+
}
|
|
769
|
+
generateVectors({ getNthVector, numberOfVectors, }) {
|
|
1190
770
|
return Array(numberOfVectors)
|
|
1191
771
|
.fill(0)
|
|
1192
|
-
.map(
|
|
1193
|
-
}
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
}, []));
|
|
1208
|
-
}, []);
|
|
1209
|
-
};
|
|
1210
|
-
PatternsGenerator.prototype.generateStartIndices = function (cells) {
|
|
772
|
+
.map((_, index) => getNthVector(index));
|
|
773
|
+
}
|
|
774
|
+
generateCellsPatterns({ board, cells, PatternModel, }) {
|
|
775
|
+
return this.generateStartIndices(cells).reduce((patterns, startIndex) => patterns.concat(this.generateEndIndices(cells, startIndex).reduce((placeablePatterns, endIndex) => {
|
|
776
|
+
const pattern = new PatternModel({
|
|
777
|
+
board,
|
|
778
|
+
cells: cells.slice(startIndex, endIndex + 1),
|
|
779
|
+
});
|
|
780
|
+
if (pattern.canBePlaced(this.config)) {
|
|
781
|
+
placeablePatterns.push(pattern);
|
|
782
|
+
}
|
|
783
|
+
return placeablePatterns;
|
|
784
|
+
}, [])), []);
|
|
785
|
+
}
|
|
786
|
+
generateStartIndices(cells) {
|
|
1211
787
|
return Array(cells.length - 1)
|
|
1212
788
|
.fill(0)
|
|
1213
|
-
.map(
|
|
1214
|
-
.filter(
|
|
1215
|
-
}
|
|
1216
|
-
|
|
789
|
+
.map((_, startIndex) => startIndex)
|
|
790
|
+
.filter((startIndex) => startIndex === 0 || !cells[startIndex - 1].hasTile());
|
|
791
|
+
}
|
|
792
|
+
generateEndIndices(cells, startIndex) {
|
|
1217
793
|
return Array(cells.length - startIndex - 1)
|
|
1218
794
|
.fill(0)
|
|
1219
|
-
.map(
|
|
1220
|
-
.filter(
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
}());
|
|
795
|
+
.map((_, endIndex) => endIndex + startIndex + 1)
|
|
796
|
+
.filter((endIndex) => endIndex >= cells.length - 1 || !cells[endIndex + 1].hasTile());
|
|
797
|
+
}
|
|
798
|
+
}
|
|
1224
799
|
exports["default"] = PatternsGenerator;
|
|
1225
800
|
|
|
1226
801
|
|
|
@@ -1231,15 +806,13 @@ exports["default"] = PatternsGenerator;
|
|
|
1231
806
|
|
|
1232
807
|
|
|
1233
808
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
var _b = bonus && bonus.canApply(_this.config, cell) ? bonus.value : constants_1.NO_BONUS, characterMultiplier = _b.characterMultiplier, wordMultiplier = _b.wordMultiplier;
|
|
1242
|
-
var characterScore = cell.tile.isBlank ? _this.config.blankScore : _this.config.pointsMap[cell.tile.character];
|
|
809
|
+
const constants_1 = __webpack_require__(38436);
|
|
810
|
+
class ScoresCalculator {
|
|
811
|
+
constructor(config) {
|
|
812
|
+
this.reduceCellScore = ({ multiplier, score }, cell) => {
|
|
813
|
+
const bonus = this.config.getCellBonus(cell);
|
|
814
|
+
const { characterMultiplier, wordMultiplier } = bonus && bonus.canApply(this.config, cell) ? bonus.value : constants_1.NO_BONUS;
|
|
815
|
+
const characterScore = cell.tile.isBlank ? this.config.blankScore : this.config.pointsMap[cell.tile.character];
|
|
1243
816
|
return {
|
|
1244
817
|
multiplier: multiplier * wordMultiplier,
|
|
1245
818
|
score: score + characterScore * characterMultiplier,
|
|
@@ -1247,28 +820,26 @@ var ScoresCalculator = /** @class */ (function () {
|
|
|
1247
820
|
};
|
|
1248
821
|
this.config = config;
|
|
1249
822
|
}
|
|
1250
|
-
|
|
823
|
+
calculate(pattern) {
|
|
1251
824
|
return this.calculatePatternScoreWithCollisions(pattern) + this.calculateBonusScore(pattern);
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
|
|
825
|
+
}
|
|
826
|
+
calculateBonusScore(pattern) {
|
|
827
|
+
const areAllTilesUsed = pattern.getNumberOfEmptyCells() === this.config.maximumNumberOfCharacters;
|
|
1255
828
|
return areAllTilesUsed ? this.config.allTilesBonusScore : 0;
|
|
1256
|
-
}
|
|
1257
|
-
|
|
1258
|
-
var _this = this;
|
|
829
|
+
}
|
|
830
|
+
calculatePatternScoreWithCollisions(pattern) {
|
|
1259
831
|
return pattern
|
|
1260
832
|
.getCollisions()
|
|
1261
|
-
.reduce(
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
|
-
|
|
833
|
+
.reduce((patternsScore, collisionPattern) => patternsScore + this.calculatePatternScore(collisionPattern), this.calculatePatternScore(pattern));
|
|
834
|
+
}
|
|
835
|
+
calculatePatternScore(pattern) {
|
|
836
|
+
const { multiplier, score } = pattern.cells.reduce(this.reduceCellScore, {
|
|
1265
837
|
multiplier: 1,
|
|
1266
838
|
score: 0,
|
|
1267
|
-
})
|
|
839
|
+
});
|
|
1268
840
|
return score * multiplier;
|
|
1269
|
-
}
|
|
1270
|
-
|
|
1271
|
-
}());
|
|
841
|
+
}
|
|
842
|
+
}
|
|
1272
843
|
exports["default"] = ScoresCalculator;
|
|
1273
844
|
|
|
1274
845
|
|
|
@@ -1282,35 +853,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
1282
853
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1283
854
|
};
|
|
1284
855
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
856
|
+
const types_1 = __webpack_require__(46452);
|
|
857
|
+
const uniqBy_1 = __importDefault(__webpack_require__(50285));
|
|
858
|
+
const PatternsFiller_1 = __importDefault(__webpack_require__(6700));
|
|
859
|
+
const PatternsGenerator_1 = __importDefault(__webpack_require__(34196));
|
|
860
|
+
const ScoresCalculator_1 = __importDefault(__webpack_require__(19368));
|
|
861
|
+
class Solver {
|
|
862
|
+
constructor(config, trie) {
|
|
1292
863
|
this.patternsFiller = new PatternsFiller_1.default(config, trie);
|
|
1293
864
|
this.patternsGenerator = new PatternsGenerator_1.default(config);
|
|
1294
865
|
this.scoresCalculator = new ScoresCalculator_1.default(config);
|
|
1295
866
|
}
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
var patterns = this.patternsGenerator
|
|
867
|
+
solve(board, tiles) {
|
|
868
|
+
const patterns = this.patternsGenerator
|
|
1299
869
|
.generate(board)
|
|
1300
|
-
.reduce(
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
});
|
|
1309
|
-
});
|
|
870
|
+
.reduce((filledPatterns, pattern) => filledPatterns.concat(this.patternsFiller.fill(pattern, tiles)), []);
|
|
871
|
+
const uniquePatterns = (0, uniqBy_1.default)(patterns, (pattern) => JSON.stringify(pattern.toJson()));
|
|
872
|
+
const results = uniquePatterns.map((pattern, index) => new types_1.Result({
|
|
873
|
+
cells: pattern.cells,
|
|
874
|
+
id: index,
|
|
875
|
+
numberOfCollisions: pattern.getCollisions().length,
|
|
876
|
+
points: this.scoresCalculator.calculate(pattern),
|
|
877
|
+
}));
|
|
1310
878
|
return results;
|
|
1311
|
-
}
|
|
1312
|
-
|
|
1313
|
-
}());
|
|
879
|
+
}
|
|
880
|
+
}
|
|
1314
881
|
exports["default"] = Solver;
|
|
1315
882
|
|
|
1316
883
|
|
|
@@ -1332,219 +899,62 @@ Object.defineProperty(exports, "default", ({ enumerable: true, get: function ()
|
|
|
1332
899
|
/***/ }),
|
|
1333
900
|
|
|
1334
901
|
/***/ 61704:
|
|
1335
|
-
/***/ (
|
|
902
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1336
903
|
|
|
1337
904
|
|
|
1338
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1339
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1340
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1341
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1342
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1343
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1344
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1345
|
-
});
|
|
1346
|
-
};
|
|
1347
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
1348
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
1349
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
1350
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
1351
|
-
function step(op) {
|
|
1352
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
1353
|
-
while (_) try {
|
|
1354
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1355
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1356
|
-
switch (op[0]) {
|
|
1357
|
-
case 0: case 1: t = op; break;
|
|
1358
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
1359
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
1360
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
1361
|
-
default:
|
|
1362
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
1363
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
1364
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
1365
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
1366
|
-
if (t[2]) _.ops.pop();
|
|
1367
|
-
_.trys.pop(); continue;
|
|
1368
|
-
}
|
|
1369
|
-
op = body.call(thisArg, _);
|
|
1370
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
1371
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1372
|
-
}
|
|
1373
|
-
};
|
|
1374
905
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
return
|
|
1379
|
-
|
|
1380
|
-
});
|
|
1381
|
-
}); };
|
|
906
|
+
const lib_1 = __webpack_require__(60337);
|
|
907
|
+
const FILE_URL = 'https://raw.githubusercontent.com/HanSolo80/German-Dictionary/master/dictionary.txt';
|
|
908
|
+
const getDeDeWordList = async () => {
|
|
909
|
+
return (0, lib_1.getTxtWordList)(FILE_URL);
|
|
910
|
+
};
|
|
1382
911
|
exports["default"] = getDeDeWordList;
|
|
1383
912
|
|
|
1384
913
|
|
|
1385
914
|
/***/ }),
|
|
1386
915
|
|
|
1387
916
|
/***/ 3284:
|
|
1388
|
-
/***/ (
|
|
917
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1389
918
|
|
|
1390
919
|
|
|
1391
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1392
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1393
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1394
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1395
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1396
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1397
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1398
|
-
});
|
|
1399
|
-
};
|
|
1400
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
1401
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
1402
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
1403
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
1404
|
-
function step(op) {
|
|
1405
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
1406
|
-
while (_) try {
|
|
1407
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1408
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1409
|
-
switch (op[0]) {
|
|
1410
|
-
case 0: case 1: t = op; break;
|
|
1411
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
1412
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
1413
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
1414
|
-
default:
|
|
1415
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
1416
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
1417
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
1418
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
1419
|
-
if (t[2]) _.ops.pop();
|
|
1420
|
-
_.trys.pop(); continue;
|
|
1421
|
-
}
|
|
1422
|
-
op = body.call(thisArg, _);
|
|
1423
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
1424
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1425
|
-
}
|
|
1426
|
-
};
|
|
1427
920
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
return
|
|
1432
|
-
|
|
1433
|
-
});
|
|
1434
|
-
}); };
|
|
921
|
+
const lib_1 = __webpack_require__(60337);
|
|
922
|
+
const FILE_URL = 'https://www.wordgamedictionary.com/sowpods/download/sowpods.txt';
|
|
923
|
+
const getEnGbWordList = async () => {
|
|
924
|
+
return (0, lib_1.getTxtWordList)(FILE_URL);
|
|
925
|
+
};
|
|
1435
926
|
exports["default"] = getEnGbWordList;
|
|
1436
927
|
|
|
1437
928
|
|
|
1438
929
|
/***/ }),
|
|
1439
930
|
|
|
1440
931
|
/***/ 163:
|
|
1441
|
-
/***/ (
|
|
932
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1442
933
|
|
|
1443
934
|
|
|
1444
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1445
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1446
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1447
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1448
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1449
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1450
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1451
|
-
});
|
|
1452
|
-
};
|
|
1453
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
1454
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
1455
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
1456
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
1457
|
-
function step(op) {
|
|
1458
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
1459
|
-
while (_) try {
|
|
1460
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1461
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1462
|
-
switch (op[0]) {
|
|
1463
|
-
case 0: case 1: t = op; break;
|
|
1464
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
1465
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
1466
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
1467
|
-
default:
|
|
1468
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
1469
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
1470
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
1471
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
1472
|
-
if (t[2]) _.ops.pop();
|
|
1473
|
-
_.trys.pop(); continue;
|
|
1474
|
-
}
|
|
1475
|
-
op = body.call(thisArg, _);
|
|
1476
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
1477
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1478
|
-
}
|
|
1479
|
-
};
|
|
1480
935
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
return
|
|
1485
|
-
|
|
1486
|
-
});
|
|
1487
|
-
}); };
|
|
936
|
+
const lib_1 = __webpack_require__(60337);
|
|
937
|
+
const FILE_URL = 'https://www.wordgamedictionary.com/twl06/download/twl06.txt';
|
|
938
|
+
const getEnUsWordList = async () => {
|
|
939
|
+
return (0, lib_1.getTxtWordList)(FILE_URL);
|
|
940
|
+
};
|
|
1488
941
|
exports["default"] = getEnUsWordList;
|
|
1489
942
|
|
|
1490
943
|
|
|
1491
944
|
/***/ }),
|
|
1492
945
|
|
|
1493
946
|
/***/ 87537:
|
|
1494
|
-
/***/ (
|
|
947
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1495
948
|
|
|
1496
949
|
|
|
1497
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1498
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1499
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1500
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1501
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1502
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1503
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1504
|
-
});
|
|
1505
|
-
};
|
|
1506
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
1507
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
1508
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
1509
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
1510
|
-
function step(op) {
|
|
1511
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
1512
|
-
while (_) try {
|
|
1513
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1514
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1515
|
-
switch (op[0]) {
|
|
1516
|
-
case 0: case 1: t = op; break;
|
|
1517
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
1518
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
1519
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
1520
|
-
default:
|
|
1521
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
1522
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
1523
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
1524
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
1525
|
-
if (t[2]) _.ops.pop();
|
|
1526
|
-
_.trys.pop(); continue;
|
|
1527
|
-
}
|
|
1528
|
-
op = body.call(thisArg, _);
|
|
1529
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
1530
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1531
|
-
}
|
|
1532
|
-
};
|
|
1533
950
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
return
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
case 1:
|
|
1542
|
-
words = _a.sent();
|
|
1543
|
-
return [2 /*return*/, words.map(normalizeWord)];
|
|
1544
|
-
}
|
|
1545
|
-
});
|
|
1546
|
-
}); };
|
|
1547
|
-
var normalizeWord = function (word) {
|
|
951
|
+
const lib_1 = __webpack_require__(60337);
|
|
952
|
+
const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/fise-2/master/fise-2.txt';
|
|
953
|
+
const getEsEsWordList = async () => {
|
|
954
|
+
const words = await (0, lib_1.getTxtWordList)(FILE_URL);
|
|
955
|
+
return words.map(normalizeWord);
|
|
956
|
+
};
|
|
957
|
+
const normalizeWord = (word) => {
|
|
1548
958
|
// normalization from https://stackoverflow.com/a/37511463
|
|
1549
959
|
return word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
1550
960
|
};
|
|
@@ -1554,60 +964,19 @@ exports["default"] = getEsEsWordList;
|
|
|
1554
964
|
/***/ }),
|
|
1555
965
|
|
|
1556
966
|
/***/ 27098:
|
|
1557
|
-
/***/ (
|
|
967
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1558
968
|
|
|
1559
969
|
|
|
1560
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1561
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1562
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1563
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1564
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1565
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1566
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1567
|
-
});
|
|
1568
|
-
};
|
|
1569
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
1570
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
1571
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
1572
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
1573
|
-
function step(op) {
|
|
1574
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
1575
|
-
while (_) try {
|
|
1576
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1577
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1578
|
-
switch (op[0]) {
|
|
1579
|
-
case 0: case 1: t = op; break;
|
|
1580
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
1581
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
1582
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
1583
|
-
default:
|
|
1584
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
1585
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
1586
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
1587
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
1588
|
-
if (t[2]) _.ops.pop();
|
|
1589
|
-
_.trys.pop(); continue;
|
|
1590
|
-
}
|
|
1591
|
-
op = body.call(thisArg, _);
|
|
1592
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
1593
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1594
|
-
}
|
|
1595
|
-
};
|
|
1596
970
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
return [2 /*return*/, words.map(normalizeWord)];
|
|
1607
|
-
}
|
|
1608
|
-
});
|
|
1609
|
-
}); };
|
|
1610
|
-
var normalizeWord = function (word) {
|
|
971
|
+
const lib_1 = __webpack_require__(60337);
|
|
972
|
+
const FILE_URL =
|
|
973
|
+
// eslint-disable-next-line max-len
|
|
974
|
+
'https://raw.githubusercontent.com/hbenbel/French-Dictionary/a573eab10cc798d7d5da7daab4d2ac0259bb46a3/dictionary/dictionary.txt';
|
|
975
|
+
const getFrFrWordList = async () => {
|
|
976
|
+
const words = await (0, lib_1.getTxtWordList)(FILE_URL);
|
|
977
|
+
return words.map(normalizeWord);
|
|
978
|
+
};
|
|
979
|
+
const normalizeWord = (word) => {
|
|
1611
980
|
// normalization from https://stackoverflow.com/a/37511463
|
|
1612
981
|
return word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
1613
982
|
};
|
|
@@ -1620,110 +989,53 @@ exports["default"] = getFrFrWordList;
|
|
|
1620
989
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1621
990
|
|
|
1622
991
|
|
|
1623
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1624
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1625
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1626
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1627
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1628
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1629
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1630
|
-
});
|
|
1631
|
-
};
|
|
1632
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
1633
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
1634
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
1635
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
1636
|
-
function step(op) {
|
|
1637
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
1638
|
-
while (_) try {
|
|
1639
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1640
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1641
|
-
switch (op[0]) {
|
|
1642
|
-
case 0: case 1: t = op; break;
|
|
1643
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
1644
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
1645
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
1646
|
-
default:
|
|
1647
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
1648
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
1649
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
1650
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
1651
|
-
if (t[2]) _.ops.pop();
|
|
1652
|
-
_.trys.pop(); continue;
|
|
1653
|
-
}
|
|
1654
|
-
op = body.call(thisArg, _);
|
|
1655
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
1656
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1657
|
-
}
|
|
1658
|
-
};
|
|
1659
992
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
1660
993
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1661
994
|
};
|
|
1662
995
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
}); };
|
|
1694
|
-
var fetchZipUrl = function (url) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1695
|
-
var html, filename, href;
|
|
1696
|
-
return __generator(this, function (_a) {
|
|
1697
|
-
switch (_a.label) {
|
|
1698
|
-
case 0: return [4 /*yield*/, (0, lib_1.downloadHtml)(url)];
|
|
1699
|
-
case 1:
|
|
1700
|
-
html = _a.sent();
|
|
1701
|
-
return [4 /*yield*/, parseZipContainingPage(html)];
|
|
1702
|
-
case 2:
|
|
1703
|
-
filename = _a.sent();
|
|
1704
|
-
href = new url_1.URL(filename, url).href;
|
|
1705
|
-
return [2 /*return*/, href];
|
|
1706
|
-
}
|
|
1707
|
-
});
|
|
1708
|
-
}); };
|
|
1709
|
-
var parseZipContainingPage = function (html) {
|
|
1710
|
-
var $ = cheerio_1.default.load(html);
|
|
1711
|
-
var $links = $('a');
|
|
1712
|
-
var links = Array.from($links)
|
|
1713
|
-
.map(function (link) { return $(link).attr('href'); })
|
|
996
|
+
const cheerio_1 = __importDefault(__webpack_require__(55473));
|
|
997
|
+
const memfs_1 = __webpack_require__(28098);
|
|
998
|
+
const unzipper_1 = __importDefault(__webpack_require__(23428));
|
|
999
|
+
const url_1 = __webpack_require__(57310);
|
|
1000
|
+
const lib_1 = __webpack_require__(60337);
|
|
1001
|
+
const PAGE_URL = 'https://sjp.pl/sl/growy/';
|
|
1002
|
+
const FILE_TO_EXTRACT_FROM_ZIP = 'slowa.txt';
|
|
1003
|
+
const getPlPlWordList = async () => {
|
|
1004
|
+
const zipTempFilename = (0, lib_1.getTempFilename)();
|
|
1005
|
+
const tempFilename = (0, lib_1.getTempFilename)();
|
|
1006
|
+
const zipUrl = await fetchZipUrl(PAGE_URL);
|
|
1007
|
+
await (0, lib_1.downloadFile)(zipUrl, memfs_1.fs.createWriteStream(zipTempFilename));
|
|
1008
|
+
await unzip(zipTempFilename, tempFilename);
|
|
1009
|
+
memfs_1.fs.unlinkSync(zipTempFilename);
|
|
1010
|
+
const file = memfs_1.fs.readFileSync(tempFilename, 'utf-8');
|
|
1011
|
+
memfs_1.fs.unlinkSync(tempFilename);
|
|
1012
|
+
const words = (0, lib_1.extractWords)(file.toString());
|
|
1013
|
+
return words;
|
|
1014
|
+
};
|
|
1015
|
+
const fetchZipUrl = async (url) => {
|
|
1016
|
+
const html = await (0, lib_1.downloadHtml)(url);
|
|
1017
|
+
const filename = await parseZipContainingPage(html);
|
|
1018
|
+
const { href } = new url_1.URL(filename, url);
|
|
1019
|
+
return href;
|
|
1020
|
+
};
|
|
1021
|
+
const parseZipContainingPage = (html) => {
|
|
1022
|
+
const $ = cheerio_1.default.load(html);
|
|
1023
|
+
const $links = $('a');
|
|
1024
|
+
const links = Array.from($links)
|
|
1025
|
+
.map((link) => $(link).attr('href'))
|
|
1714
1026
|
.filter(Boolean);
|
|
1715
|
-
|
|
1027
|
+
const zipFilename = links.find((link) => link.endsWith('.zip'));
|
|
1716
1028
|
if (typeof zipFilename === 'undefined') {
|
|
1717
1029
|
throw new Error('Cannot find link to zip file on the page');
|
|
1718
1030
|
}
|
|
1719
1031
|
return zipFilename;
|
|
1720
1032
|
};
|
|
1721
|
-
|
|
1033
|
+
const unzip = (zipFilename, outputFilename) => {
|
|
1722
1034
|
return memfs_1.fs
|
|
1723
1035
|
.createReadStream(zipFilename)
|
|
1724
1036
|
.pipe(unzipper_1.default.Parse())
|
|
1725
|
-
.on('entry',
|
|
1726
|
-
|
|
1037
|
+
.on('entry', (entry) => {
|
|
1038
|
+
const fileName = entry.path;
|
|
1727
1039
|
if (fileName === FILE_TO_EXTRACT_FROM_ZIP) {
|
|
1728
1040
|
entry.pipe(memfs_1.fs.createWriteStream(outputFilename));
|
|
1729
1041
|
}
|
|
@@ -1745,24 +1057,23 @@ exports["default"] = getPlPlWordList;
|
|
|
1745
1057
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
1746
1058
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1747
1059
|
};
|
|
1748
|
-
var _a;
|
|
1749
1060
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1061
|
+
const types_1 = __webpack_require__(46452);
|
|
1062
|
+
const getDeDeWordList_1 = __importDefault(__webpack_require__(61704));
|
|
1063
|
+
const getEnGbWordList_1 = __importDefault(__webpack_require__(3284));
|
|
1064
|
+
const getEnUsWordList_1 = __importDefault(__webpack_require__(163));
|
|
1065
|
+
const getEsEsWordList_1 = __importDefault(__webpack_require__(87537));
|
|
1066
|
+
const getFrFrWordList_1 = __importDefault(__webpack_require__(27098));
|
|
1067
|
+
const getPlPlWordList_1 = __importDefault(__webpack_require__(81848));
|
|
1068
|
+
const localeMap = {
|
|
1069
|
+
[types_1.Locale.DE_DE]: getDeDeWordList_1.default,
|
|
1070
|
+
[types_1.Locale.EN_GB]: getEnGbWordList_1.default,
|
|
1071
|
+
[types_1.Locale.EN_US]: getEnUsWordList_1.default,
|
|
1072
|
+
[types_1.Locale.ES_ES]: getEsEsWordList_1.default,
|
|
1073
|
+
[types_1.Locale.FR_FR]: getFrFrWordList_1.default,
|
|
1074
|
+
[types_1.Locale.PL_PL]: getPlPlWordList_1.default,
|
|
1075
|
+
};
|
|
1076
|
+
const getWordList = (locale) => localeMap[locale]();
|
|
1766
1077
|
exports["default"] = getWordList;
|
|
1767
1078
|
|
|
1768
1079
|
|
|
@@ -1813,11 +1124,11 @@ __exportStar(__webpack_require__(60337), exports);
|
|
|
1813
1124
|
|
|
1814
1125
|
|
|
1815
1126
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
return new Promise(
|
|
1819
|
-
|
|
1820
|
-
|
|
1127
|
+
const follow_redirects_1 = __webpack_require__(24396);
|
|
1128
|
+
const downloadFile = (url, outputStream) => {
|
|
1129
|
+
return new Promise((resolve, reject) => {
|
|
1130
|
+
const protocol = url.startsWith('https') ? follow_redirects_1.https : follow_redirects_1.http;
|
|
1131
|
+
const request = protocol.get(url, (response) => {
|
|
1821
1132
|
if (typeof response.statusCode === 'undefined' || response.statusCode >= 400) {
|
|
1822
1133
|
reject();
|
|
1823
1134
|
return;
|
|
@@ -1839,17 +1150,17 @@ exports["default"] = downloadFile;
|
|
|
1839
1150
|
|
|
1840
1151
|
|
|
1841
1152
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
return new Promise(
|
|
1845
|
-
|
|
1846
|
-
protocol.get(url,
|
|
1847
|
-
|
|
1153
|
+
const follow_redirects_1 = __webpack_require__(24396);
|
|
1154
|
+
const downloadHtml = (url) => {
|
|
1155
|
+
return new Promise((resolve, reject) => {
|
|
1156
|
+
const protocol = url.startsWith('https') ? follow_redirects_1.https : follow_redirects_1.http;
|
|
1157
|
+
protocol.get(url, (response) => {
|
|
1158
|
+
let data = '';
|
|
1848
1159
|
response.setEncoding('utf8');
|
|
1849
|
-
response.on('data',
|
|
1160
|
+
response.on('data', (chunk) => {
|
|
1850
1161
|
data += chunk;
|
|
1851
1162
|
});
|
|
1852
|
-
response.on('end',
|
|
1163
|
+
response.on('end', () => {
|
|
1853
1164
|
resolve(data);
|
|
1854
1165
|
});
|
|
1855
1166
|
response.on('error', reject);
|
|
@@ -1869,11 +1180,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
1869
1180
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1870
1181
|
};
|
|
1871
1182
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1183
|
+
const findFirstWordIndex_1 = __importDefault(__webpack_require__(47669));
|
|
1184
|
+
const extractWords = (file) => {
|
|
1185
|
+
const lines = file.replace(/\r/g, '').split('\n');
|
|
1186
|
+
const firstWordIndex = (0, findFirstWordIndex_1.default)(lines);
|
|
1187
|
+
const words = lines.slice(firstWordIndex).filter(Boolean);
|
|
1877
1188
|
return words;
|
|
1878
1189
|
};
|
|
1879
1190
|
exports["default"] = extractWords;
|
|
@@ -1886,12 +1197,12 @@ exports["default"] = extractWords;
|
|
|
1886
1197
|
|
|
1887
1198
|
|
|
1888
1199
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1200
|
+
const findFirstWordIndex = (lines) => {
|
|
1201
|
+
const firstWordIndex = lines.findIndex((line, index) => {
|
|
1202
|
+
const nextLine = line[index + 1] || '';
|
|
1203
|
+
const isNextLineInOrder = line.localeCompare(nextLine) === 1;
|
|
1204
|
+
const hasWhitespace = Boolean(line.match(/\s/));
|
|
1205
|
+
const isEmpty = line.trim().length === 0;
|
|
1895
1206
|
return !isEmpty && !hasWhitespace && isNextLineInOrder;
|
|
1896
1207
|
});
|
|
1897
1208
|
if (typeof firstWordIndex === 'undefined') {
|
|
@@ -1912,11 +1223,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
1912
1223
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1913
1224
|
};
|
|
1914
1225
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
if (bytes === void 0) { bytes = 8; }
|
|
1918
|
-
return crypto_1.default.randomBytes(bytes).toString('hex');
|
|
1919
|
-
};
|
|
1226
|
+
const crypto_1 = __importDefault(__webpack_require__(6113));
|
|
1227
|
+
const getHash = (bytes = 8) => crypto_1.default.randomBytes(bytes).toString('hex');
|
|
1920
1228
|
exports["default"] = getHash;
|
|
1921
1229
|
|
|
1922
1230
|
|
|
@@ -1930,9 +1238,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
1930
1238
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1931
1239
|
};
|
|
1932
1240
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
return
|
|
1241
|
+
const getHash_1 = __importDefault(__webpack_require__(93938));
|
|
1242
|
+
const getTempFilename = () => {
|
|
1243
|
+
return `/${(0, getHash_1.default)()}.txt`;
|
|
1936
1244
|
};
|
|
1937
1245
|
exports["default"] = getTempFilename;
|
|
1938
1246
|
|
|
@@ -1943,66 +1251,22 @@ exports["default"] = getTempFilename;
|
|
|
1943
1251
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1944
1252
|
|
|
1945
1253
|
|
|
1946
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1947
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1948
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1949
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1950
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1951
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1952
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1953
|
-
});
|
|
1954
|
-
};
|
|
1955
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
1956
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
1957
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
1958
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
1959
|
-
function step(op) {
|
|
1960
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
1961
|
-
while (_) try {
|
|
1962
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1963
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
1964
|
-
switch (op[0]) {
|
|
1965
|
-
case 0: case 1: t = op; break;
|
|
1966
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
1967
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
1968
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
1969
|
-
default:
|
|
1970
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
1971
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
1972
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
1973
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
1974
|
-
if (t[2]) _.ops.pop();
|
|
1975
|
-
_.trys.pop(); continue;
|
|
1976
|
-
}
|
|
1977
|
-
op = body.call(thisArg, _);
|
|
1978
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
1979
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
1980
|
-
}
|
|
1981
|
-
};
|
|
1982
1254
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
1983
1255
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1984
1256
|
};
|
|
1985
1257
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
_a.sent();
|
|
1999
|
-
file = memfs_1.fs.readFileSync(tempFilename, 'utf-8');
|
|
2000
|
-
words = (0, extractWords_1.default)(file.toString());
|
|
2001
|
-
memfs_1.fs.unlinkSync(tempFilename);
|
|
2002
|
-
return [2 /*return*/, words];
|
|
2003
|
-
}
|
|
2004
|
-
});
|
|
2005
|
-
}); };
|
|
1258
|
+
const memfs_1 = __webpack_require__(28098);
|
|
1259
|
+
const downloadFile_1 = __importDefault(__webpack_require__(920));
|
|
1260
|
+
const extractWords_1 = __importDefault(__webpack_require__(39759));
|
|
1261
|
+
const getTempFilename_1 = __importDefault(__webpack_require__(52688));
|
|
1262
|
+
const getTxtWordList = async (url) => {
|
|
1263
|
+
const tempFilename = (0, getTempFilename_1.default)();
|
|
1264
|
+
await (0, downloadFile_1.default)(url, memfs_1.fs.createWriteStream(tempFilename));
|
|
1265
|
+
const file = memfs_1.fs.readFileSync(tempFilename, 'utf-8');
|
|
1266
|
+
const words = (0, extractWords_1.default)(file.toString());
|
|
1267
|
+
memfs_1.fs.unlinkSync(tempFilename);
|
|
1268
|
+
return words;
|
|
1269
|
+
};
|
|
2006
1270
|
exports["default"] = getTxtWordList;
|
|
2007
1271
|
|
|
2008
1272
|
|