scrabble-solver 2.8.2 → 2.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/.eslintrc.js +1 -1
  2. package/.gitattributes +2 -0
  3. package/HISTORY.md +17 -0
  4. package/README.md +8 -26
  5. package/lerna.json +1 -1
  6. package/package.json +13 -13
  7. package/packages/configs/build/getConfig.js +6 -12
  8. package/packages/configs/build/getLocaleConfig.js +2 -2
  9. package/packages/configs/build/isConfigId.js +5 -8
  10. package/packages/configs/build/literaki/bonuses.js +2 -2
  11. package/packages/configs/build/literaki/literaki.js +14 -27
  12. package/packages/configs/build/literaki/tiles/tilesDe.js +1 -1
  13. package/packages/configs/build/literaki/tiles/tilesEn.js +1 -1
  14. package/packages/configs/build/literaki/tiles/tilesEs.js +1 -1
  15. package/packages/configs/build/literaki/tiles/tilesFr.js +1 -1
  16. package/packages/configs/build/literaki/tiles/tilesPl.js +1 -1
  17. package/packages/configs/build/scrabble/bonuses.js +2 -2
  18. package/packages/configs/build/scrabble/scrabble.js +14 -27
  19. package/packages/configs/build/scrabble/tiles/tilesDe.js +1 -1
  20. package/packages/configs/build/scrabble/tiles/tilesEn.js +1 -1
  21. package/packages/configs/build/scrabble/tiles/tilesEs.js +1 -1
  22. package/packages/configs/build/scrabble/tiles/tilesFr.js +1 -1
  23. package/packages/configs/build/scrabble/tiles/tilesPl.js +1 -1
  24. package/packages/configs/package.json +3 -3
  25. package/packages/constants/package.json +1 -1
  26. package/packages/dictionaries/build/Dictionaries.js +37 -110
  27. package/packages/dictionaries/build/constants/index.js +2 -2
  28. package/packages/dictionaries/build/index.js +1 -1
  29. package/packages/dictionaries/build/lib/DiskCache.js +29 -91
  30. package/packages/dictionaries/build/lib/LayeredCache.js +37 -101
  31. package/packages/dictionaries/build/lib/MemoryCache.js +16 -17
  32. package/packages/dictionaries/build/lib/createAsyncProxy.js +14 -58
  33. package/packages/dictionaries/build/lib/createCacheTimestampComparator.js +4 -4
  34. package/packages/dictionaries/build/lib/downloadDictionary.js +10 -54
  35. package/packages/dictionaries/build/lib/getDictionaryFilepath.js +4 -4
  36. package/packages/dictionaries/build/lib/index.d.ts +0 -2
  37. package/packages/dictionaries/build/lib/index.js +1 -5
  38. package/packages/dictionaries/package-lock.json +10 -10
  39. package/packages/dictionaries/package.json +5 -5
  40. package/packages/dictionaries/src/lib/DiskCache.ts +2 -4
  41. package/packages/dictionaries/src/lib/LayeredCache.ts +17 -8
  42. package/packages/dictionaries/src/lib/index.ts +0 -2
  43. package/packages/logger/build/constants.js +2 -2
  44. package/packages/logger/build/logger.js +4 -4
  45. package/packages/logger/package-lock.json +2 -2
  46. package/packages/logger/package.json +1 -1
  47. package/packages/scrabble-solver/.next/BUILD_ID +1 -1
  48. package/packages/scrabble-solver/.next/build-manifest.json +10 -10
  49. package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
  50. package/packages/scrabble-solver/.next/cache/eslint/.cache_8dgz12 +1 -1
  51. package/packages/scrabble-solver/.next/cache/next-server.js.nft.json +1 -1
  52. package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
  53. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
  54. package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
  55. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  56. package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
  57. package/packages/scrabble-solver/.next/prerender-manifest.json +1 -1
  58. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  59. package/packages/scrabble-solver/.next/server/chunks/206.js +98 -97
  60. package/packages/scrabble-solver/.next/server/chunks/413.js +396 -677
  61. package/packages/scrabble-solver/.next/server/chunks/515.js +546 -550
  62. package/packages/scrabble-solver/.next/server/chunks/907.js +399 -681
  63. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  64. package/packages/scrabble-solver/.next/server/pages/404.html +5 -1
  65. package/packages/scrabble-solver/.next/server/pages/404.js.nft.json +1 -1
  66. package/packages/scrabble-solver/.next/server/pages/500.html +2 -2
  67. package/packages/scrabble-solver/.next/server/pages/_app.js +7 -10
  68. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  69. package/packages/scrabble-solver/.next/server/pages/_document.js +0 -3
  70. package/packages/scrabble-solver/.next/server/pages/_error.js.nft.json +1 -1
  71. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +114 -171
  72. package/packages/scrabble-solver/.next/server/pages/api/solve.js +426 -1206
  73. package/packages/scrabble-solver/.next/server/pages/index.html +17 -1
  74. package/packages/scrabble-solver/.next/server/pages/index.js +7 -14
  75. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  76. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  77. package/packages/scrabble-solver/.next/static/-UOLkxdxU0PlKbXa09-xO/_buildManifest.js +1 -0
  78. package/packages/scrabble-solver/.next/static/{nXSSCVI5pGlS_NxEidxkS → -UOLkxdxU0PlKbXa09-xO}/_ssgManifest.js +0 -0
  79. package/packages/scrabble-solver/.next/static/chunks/56-2d34867599a0ac66.js +1 -0
  80. package/packages/scrabble-solver/.next/static/chunks/pages/{404-02d949d2fe59e960.js → 404-30c06e61d256c5b2.js} +1 -1
  81. package/packages/scrabble-solver/.next/static/chunks/pages/_app-6ffa2ab900772b67.js +1 -0
  82. package/packages/scrabble-solver/.next/static/chunks/pages/{index-75517525489ab316.js → index-13ea7770a65c69ee.js} +1 -1
  83. package/packages/scrabble-solver/.next/static/css/{d676d43c6b9c9a57.css → 551d09cac435debb.css} +1 -1
  84. package/packages/scrabble-solver/.next/static/css/{6a9e5ba3f77c27f2.css → cdbc9e0afcff5473.css} +1 -1
  85. package/packages/scrabble-solver/.next/trace +42 -42
  86. package/packages/scrabble-solver/package-lock.json +85 -85
  87. package/packages/scrabble-solver/package.json +13 -13
  88. package/packages/scrabble-solver/src/components/Board/Board.tsx +1 -1
  89. package/packages/scrabble-solver/src/components/Board/BoardPure.tsx +1 -1
  90. package/packages/scrabble-solver/src/components/Board/components/Cell/Button.tsx +1 -1
  91. package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.tsx +1 -1
  92. package/packages/scrabble-solver/src/components/Board/components/Cell/CellPure.tsx +1 -1
  93. package/packages/scrabble-solver/src/components/Board/hooks/useGrid.ts +9 -0
  94. package/packages/scrabble-solver/src/components/Button/Button.tsx +1 -1
  95. package/packages/scrabble-solver/src/components/Checkbox/Checkbox.tsx +1 -1
  96. package/packages/scrabble-solver/src/components/Dictionary/Dictionary.tsx +1 -1
  97. package/packages/scrabble-solver/src/components/DictionaryInput/DictionaryInput.tsx +1 -1
  98. package/packages/scrabble-solver/src/components/EmptyState/EmptyState.tsx +1 -1
  99. package/packages/scrabble-solver/src/components/Key/Key.tsx +1 -1
  100. package/packages/scrabble-solver/src/components/KeyMap/KeyMap.tsx +2 -2
  101. package/packages/scrabble-solver/src/components/KeyMap/components/Mapping/Mapping.module.scss +4 -0
  102. package/packages/scrabble-solver/src/components/KeyMap/components/Mapping/Mapping.tsx +16 -12
  103. package/packages/scrabble-solver/src/components/Loading/Loading.tsx +1 -1
  104. package/packages/scrabble-solver/src/components/Logo/Logo.tsx +1 -1
  105. package/packages/scrabble-solver/src/components/NavButtons/NavButtons.tsx +1 -1
  106. package/packages/scrabble-solver/src/components/NotFound/NotFound.tsx +1 -1
  107. package/packages/scrabble-solver/src/components/PlainTiles/PlainTiles.tsx +5 -1
  108. package/packages/scrabble-solver/src/components/PlainTiles/Tile.tsx +1 -1
  109. package/packages/scrabble-solver/src/components/Rack/Rack.tsx +1 -1
  110. package/packages/scrabble-solver/src/components/Rack/RackTile.tsx +1 -1
  111. package/packages/scrabble-solver/src/components/Radio/Radio.tsx +1 -1
  112. package/packages/scrabble-solver/src/components/RemainingTiles/Character.tsx +1 -1
  113. package/packages/scrabble-solver/src/components/RemainingTiles/RemainingTiles.tsx +1 -1
  114. package/packages/scrabble-solver/src/components/Results/Cell.tsx +1 -1
  115. package/packages/scrabble-solver/src/components/Results/HeaderButton.tsx +1 -1
  116. package/packages/scrabble-solver/src/components/Results/Result.tsx +1 -1
  117. package/packages/scrabble-solver/src/components/Results/Results.tsx +1 -1
  118. package/packages/scrabble-solver/src/components/Results/SolveButton.tsx +1 -1
  119. package/packages/scrabble-solver/src/components/ResultsInput/ResultsInput.tsx +1 -1
  120. package/packages/scrabble-solver/src/components/Screen/Screen.tsx +1 -1
  121. package/packages/scrabble-solver/src/components/Settings/Settings.tsx +1 -1
  122. package/packages/scrabble-solver/src/components/Settings/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +1 -1
  123. package/packages/scrabble-solver/src/components/Settings/components/ConfigSetting/ConfigSetting.tsx +1 -1
  124. package/packages/scrabble-solver/src/components/Settings/components/LocaleSetting/LocaleSetting.tsx +1 -1
  125. package/packages/scrabble-solver/src/components/Sidebar/Sidebar.tsx +1 -1
  126. package/packages/scrabble-solver/src/components/Sidebar/components/Section/Section.tsx +1 -1
  127. package/packages/scrabble-solver/src/components/Splash/Splash.tsx +1 -1
  128. package/packages/scrabble-solver/src/components/SquareButton/Link.tsx +1 -1
  129. package/packages/scrabble-solver/src/components/SquareButton/SquareButton.tsx +1 -1
  130. package/packages/scrabble-solver/src/components/SvgFontCss/SvgFontCss.tsx +12 -0
  131. package/packages/scrabble-solver/src/components/SvgFontCss/index.ts +1 -0
  132. package/packages/scrabble-solver/src/components/Tile/Tile.tsx +1 -1
  133. package/packages/scrabble-solver/src/components/Tile/TilePure.tsx +2 -2
  134. package/packages/scrabble-solver/src/components/Tooltip/useTooltip.tsx +1 -1
  135. package/packages/scrabble-solver/src/components/Well/Well.tsx +1 -1
  136. package/packages/scrabble-solver/src/components/index.ts +1 -0
  137. package/packages/scrabble-solver/src/hooks/usePortal.tsx +19 -9
  138. package/packages/scrabble-solver/src/lib/createKeyboardNavigation.ts +3 -0
  139. package/packages/scrabble-solver/src/lib/memoize.ts +1 -1
  140. package/packages/scrabble-solver/src/pages/_app.tsx +1 -1
  141. package/packages/scrabble-solver/src/pages/_document.tsx +1 -1
  142. package/packages/scrabble-solver/src/pages/index.tsx +6 -15
  143. package/packages/scrabble-solver/src/styles/global.scss +3 -0
  144. package/packages/solver/build/PatternsFiller.js +38 -72
  145. package/packages/solver/build/PatternsGenerator.js +43 -72
  146. package/packages/solver/build/ScoresCalculator.js +20 -24
  147. package/packages/solver/build/Solver.js +19 -24
  148. package/packages/solver/package-lock.json +17 -17
  149. package/packages/solver/package.json +7 -7
  150. package/packages/solver/src/PatternsFiller.ts +5 -10
  151. package/packages/solver/src/PatternsGenerator.ts +17 -16
  152. package/packages/solver/src/Solver.ts +4 -8
  153. package/packages/types/build/Board.js +68 -85
  154. package/packages/types/build/Bonus.js +15 -21
  155. package/packages/types/build/Cell.js +31 -33
  156. package/packages/types/build/CharacterBonus.js +18 -40
  157. package/packages/types/build/Config.js +62 -117
  158. package/packages/types/build/HorizontalPattern.js +17 -63
  159. package/packages/types/build/Pattern.js +37 -41
  160. package/packages/types/build/Result.js +23 -46
  161. package/packages/types/build/Tile.js +22 -24
  162. package/packages/types/build/VerticalPattern.js +17 -63
  163. package/packages/types/build/WordBonus.js +13 -35
  164. package/packages/types/build/WordDefinition.js +13 -15
  165. package/packages/types/package.json +2 -2
  166. package/packages/types/src/Cell.ts +1 -1
  167. package/packages/types/src/Pattern.ts +1 -1
  168. package/packages/word-definitions/build/crawl/crawl.js +15 -16
  169. package/packages/word-definitions/build/crawl/crawlEnglish.js +3 -3
  170. package/packages/word-definitions/build/crawl/crawlFrench.js +3 -3
  171. package/packages/word-definitions/build/crawl/crawlGerman.js +3 -3
  172. package/packages/word-definitions/build/crawl/crawlPolish.js +3 -3
  173. package/packages/word-definitions/build/crawl/crawlSpanish.js +3 -3
  174. package/packages/word-definitions/build/getWordDefinition.js +9 -52
  175. package/packages/word-definitions/build/lib/normalizeDefinition.js +15 -15
  176. package/packages/word-definitions/build/lib/request.js +8 -20
  177. package/packages/word-definitions/build/lib/unique.js +1 -1
  178. package/packages/word-definitions/build/parse/parse.js +18 -19
  179. package/packages/word-definitions/build/parse/parseEnglish.js +5 -5
  180. package/packages/word-definitions/build/parse/parseFrench.js +5 -5
  181. package/packages/word-definitions/build/parse/parseGerman.js +6 -6
  182. package/packages/word-definitions/build/parse/parsePolish.js +6 -6
  183. package/packages/word-definitions/build/parse/parseSpanish.js +9 -9
  184. package/packages/word-definitions/package-lock.json +8 -8
  185. package/packages/word-definitions/package.json +2 -2
  186. package/packages/word-lists/build/getDeDeWordList.js +5 -43
  187. package/packages/word-lists/build/getEnGbWordList.js +5 -43
  188. package/packages/word-lists/build/getEnUsWordList.js +5 -43
  189. package/packages/word-lists/build/getEsEsWordList.js +7 -50
  190. package/packages/word-lists/build/getFrFrWordList.js +9 -50
  191. package/packages/word-lists/build/getPlPlWordList.js +33 -91
  192. package/packages/word-lists/build/getWordList.js +16 -17
  193. package/packages/word-lists/build/lib/downloadFile.d.ts +1 -2
  194. package/packages/word-lists/build/lib/downloadFile.js +28 -10
  195. package/packages/word-lists/build/lib/downloadHtml.js +8 -8
  196. package/packages/word-lists/build/lib/extractWords.js +5 -5
  197. package/packages/word-lists/build/lib/findFirstWordIndex.js +6 -6
  198. package/packages/word-lists/build/lib/getHash.js +2 -5
  199. package/packages/word-lists/build/lib/getTempFilename.js +3 -3
  200. package/packages/word-lists/build/lib/getTxtWordList.js +10 -56
  201. package/packages/word-lists/package-lock.json +2 -2
  202. package/packages/word-lists/package.json +2 -2
  203. package/packages/word-lists/src/getFrFrWordList.ts +1 -0
  204. package/packages/word-lists/src/getPlPlWordList.ts +2 -3
  205. package/packages/word-lists/src/lib/downloadFile.ts +25 -7
  206. package/packages/word-lists/src/lib/getTxtWordList.ts +2 -4
  207. package/tsconfig.json +1 -1
  208. package/packages/dictionaries/build/lib/readFile.d.ts +0 -2
  209. package/packages/dictionaries/build/lib/readFile.js +0 -57
  210. package/packages/dictionaries/build/lib/writeFile.d.ts +0 -2
  211. package/packages/dictionaries/build/lib/writeFile.js +0 -57
  212. package/packages/dictionaries/src/lib/readFile.ts +0 -15
  213. package/packages/dictionaries/src/lib/writeFile.ts +0 -15
  214. package/packages/scrabble-solver/.next/static/chunks/195-fcadef5c6eed8338.js +0 -1
  215. package/packages/scrabble-solver/.next/static/chunks/pages/_app-f4030148d742bcd2.js +0 -1
  216. package/packages/scrabble-solver/.next/static/nXSSCVI5pGlS_NxEidxkS/_buildManifest.js +0 -1
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.OUTPUT_DIRECTORY = exports.CACHE_STALE_THRESHOLD = exports.DAY = void 0;
7
- var os_1 = __importDefault(require("os"));
8
- var path_1 = __importDefault(require("path"));
7
+ const os_1 = __importDefault(require("os"));
8
+ const path_1 = __importDefault(require("path"));
9
9
  exports.DAY = 24 * 60 * 60 * 1000;
10
10
  exports.CACHE_STALE_THRESHOLD = 30 * exports.DAY;
11
11
  exports.OUTPUT_DIRECTORY = path_1.default.resolve(os_1.default.homedir(), '.scrabble-solver', 'dictionaries');
@@ -18,6 +18,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.dictionaries = void 0;
21
- var Dictionaries_1 = __importDefault(require("./Dictionaries"));
21
+ const Dictionaries_1 = __importDefault(require("./Dictionaries"));
22
22
  __exportStar(require("./lib"), exports);
23
23
  exports.dictionaries = new Dictionaries_1.default();
@@ -1,110 +1,48 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
39
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
4
  };
41
5
  Object.defineProperty(exports, "__esModule", { value: true });
42
- var trie_1 = require("@kamilmielnik/trie");
43
- var fs_1 = __importDefault(require("fs"));
44
- var constants_1 = require("../constants");
45
- var getDictionaryFilepath_1 = __importDefault(require("./getDictionaryFilepath"));
46
- var readFile_1 = __importDefault(require("./readFile"));
47
- var writeFile_1 = __importDefault(require("./writeFile"));
48
- var DiskCache = /** @class */ (function () {
49
- function DiskCache() {
6
+ const trie_1 = require("@kamilmielnik/trie");
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const constants_1 = require("../constants");
9
+ const getDictionaryFilepath_1 = __importDefault(require("./getDictionaryFilepath"));
10
+ class DiskCache {
11
+ async get(locale) {
12
+ if (!this.has(locale)) {
13
+ return undefined;
14
+ }
15
+ const filepath = (0, getDictionaryFilepath_1.default)(locale);
16
+ const serialized = await fs_1.default.promises.readFile(filepath, 'utf-8');
17
+ const trie = trie_1.Trie.deserialize(serialized);
18
+ return trie;
50
19
  }
51
- DiskCache.prototype.get = function (locale) {
52
- return __awaiter(this, void 0, void 0, function () {
53
- var filepath, serialized, trie;
54
- return __generator(this, function (_a) {
55
- switch (_a.label) {
56
- case 0:
57
- if (!this.has(locale)) {
58
- return [2 /*return*/, undefined];
59
- }
60
- filepath = (0, getDictionaryFilepath_1.default)(locale);
61
- return [4 /*yield*/, (0, readFile_1.default)(filepath)];
62
- case 1:
63
- serialized = _a.sent();
64
- trie = trie_1.Trie.deserialize(serialized);
65
- return [2 /*return*/, trie];
66
- }
67
- });
68
- });
69
- };
70
- DiskCache.prototype.getLastModifiedTimestamp = function (locale) {
71
- var filepath = (0, getDictionaryFilepath_1.default)(locale);
20
+ getLastModifiedTimestamp(locale) {
21
+ const filepath = (0, getDictionaryFilepath_1.default)(locale);
72
22
  if (!fs_1.default.existsSync(filepath)) {
73
23
  return undefined;
74
24
  }
75
- var stats = fs_1.default.statSync(filepath);
25
+ const stats = fs_1.default.statSync(filepath);
76
26
  return stats.mtimeMs;
77
- };
78
- DiskCache.prototype.has = function (locale) {
79
- var filepath = (0, getDictionaryFilepath_1.default)(locale);
27
+ }
28
+ has(locale) {
29
+ const filepath = (0, getDictionaryFilepath_1.default)(locale);
80
30
  return fs_1.default.existsSync(filepath);
81
- };
82
- DiskCache.prototype.isStale = function (locale) {
31
+ }
32
+ isStale(locale) {
83
33
  if (!this.has(locale)) {
84
34
  return undefined;
85
35
  }
86
- var lastModifiedTimestamp = this.getLastModifiedTimestamp(locale);
36
+ const lastModifiedTimestamp = this.getLastModifiedTimestamp(locale);
87
37
  if (typeof lastModifiedTimestamp === 'undefined') {
88
38
  return undefined;
89
39
  }
90
- var timeSinceModification = Math.abs(lastModifiedTimestamp - Date.now());
40
+ const timeSinceModification = Math.abs(lastModifiedTimestamp - Date.now());
91
41
  return timeSinceModification > constants_1.CACHE_STALE_THRESHOLD;
92
- };
93
- DiskCache.prototype.set = function (locale, trie) {
94
- return __awaiter(this, void 0, void 0, function () {
95
- var filepath;
96
- return __generator(this, function (_a) {
97
- switch (_a.label) {
98
- case 0:
99
- filepath = (0, getDictionaryFilepath_1.default)(locale);
100
- return [4 /*yield*/, (0, writeFile_1.default)(filepath, trie.serialize())];
101
- case 1:
102
- _a.sent();
103
- return [2 /*return*/];
104
- }
105
- });
106
- });
107
- };
108
- return DiskCache;
109
- }());
42
+ }
43
+ async set(locale, trie) {
44
+ const filepath = (0, getDictionaryFilepath_1.default)(locale);
45
+ await fs_1.default.promises.writeFile(filepath, trie.serialize());
46
+ }
47
+ }
110
48
  exports.default = DiskCache;
@@ -1,119 +1,55 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __read = (this && this.__read) || function (o, n) {
39
- var m = typeof Symbol === "function" && o[Symbol.iterator];
40
- if (!m) return o;
41
- var i = m.call(o), r, ar = [], e;
42
- try {
43
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
- }
45
- catch (error) { e = { error: error }; }
46
- finally {
47
- try {
48
- if (r && !r.done && (m = i["return"])) m.call(i);
49
- }
50
- finally { if (e) throw e.error; }
51
- }
52
- return ar;
53
- };
54
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
55
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
56
- if (ar || !(i in from)) {
57
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
58
- ar[i] = from[i];
59
- }
60
- }
61
- return to.concat(ar || Array.prototype.slice.call(from));
62
- };
63
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
64
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
65
4
  };
66
5
  Object.defineProperty(exports, "__esModule", { value: true });
67
- var createCacheTimestampComparator_1 = __importDefault(require("./createCacheTimestampComparator"));
68
- var DiskCache_1 = __importDefault(require("./DiskCache"));
69
- var MemoryCache_1 = __importDefault(require("./MemoryCache"));
70
- var LayeredCache = /** @class */ (function () {
71
- function LayeredCache() {
6
+ const createCacheTimestampComparator_1 = __importDefault(require("./createCacheTimestampComparator"));
7
+ const DiskCache_1 = __importDefault(require("./DiskCache"));
8
+ const MemoryCache_1 = __importDefault(require("./MemoryCache"));
9
+ class LayeredCache {
10
+ constructor() {
72
11
  this.layers = [new MemoryCache_1.default(), new DiskCache_1.default()];
73
12
  }
74
- LayeredCache.prototype.get = function (locale) {
75
- var cached = this.getLastModifiedLayer(locale);
76
- if (!cached) {
13
+ async get(locale) {
14
+ const cache = this.getLastModifiedLayer(locale);
15
+ if (!cache) {
77
16
  return Promise.resolve(undefined);
78
17
  }
79
- return cached.get(locale);
80
- };
81
- LayeredCache.prototype.getLastModifiedTimestamp = function (locale) {
82
- var cached = this.getLastModifiedLayer(locale);
83
- if (!cached) {
18
+ const [memoryCache, diskCache] = this.layers;
19
+ const value = await cache.get(locale);
20
+ if (cache === diskCache && typeof value !== 'undefined') {
21
+ await memoryCache.set(locale, value);
22
+ }
23
+ return value;
24
+ }
25
+ getLastModifiedTimestamp(locale) {
26
+ const cache = this.getLastModifiedLayer(locale);
27
+ if (!cache) {
84
28
  return undefined;
85
29
  }
86
- return cached.getLastModifiedTimestamp(locale);
87
- };
88
- LayeredCache.prototype.has = function (locale) {
89
- return this.layers.some(function (cache) { return cache.has(locale); });
90
- };
91
- LayeredCache.prototype.isStale = function (locale) {
92
- if (this.layers.some(function (cache) { return cache.isStale(locale); })) {
30
+ return cache.getLastModifiedTimestamp(locale);
31
+ }
32
+ has(locale) {
33
+ return this.layers.some((cache) => cache.has(locale));
34
+ }
35
+ isStale(locale) {
36
+ if (this.layers.some((cache) => cache.isStale(locale))) {
93
37
  return true;
94
38
  }
95
- if (this.layers.every(function (cache) { return typeof cache.isStale(locale) === 'undefined'; })) {
39
+ if (this.layers.every((cache) => typeof cache.isStale(locale) === 'undefined')) {
96
40
  return undefined;
97
41
  }
98
42
  return false;
99
- };
100
- LayeredCache.prototype.set = function (locale, trie) {
101
- return __awaiter(this, void 0, void 0, function () {
102
- return __generator(this, function (_a) {
103
- switch (_a.label) {
104
- case 0: return [4 /*yield*/, Promise.all(this.layers.map(function (cache) { return cache.set(locale, trie); }))];
105
- case 1:
106
- _a.sent();
107
- return [2 /*return*/];
108
- }
109
- });
110
- });
111
- };
112
- LayeredCache.prototype.getLastModifiedLayer = function (locale) {
113
- var layers = this.layers.filter(function (cache) { return cache.has(locale); });
114
- var _a = __read(__spreadArray([], __read(layers), false).sort((0, createCacheTimestampComparator_1.default)(locale)), 1), cached = _a[0];
43
+ }
44
+ async set(locale, trie) {
45
+ const [memoryCache, diskCache] = this.layers;
46
+ await diskCache.set(locale, trie);
47
+ await memoryCache.set(locale, trie);
48
+ }
49
+ getLastModifiedLayer(locale) {
50
+ const layers = this.layers.filter((cache) => cache.has(locale));
51
+ const [cached] = [...layers].sort((0, createCacheTimestampComparator_1.default)(locale));
115
52
  return cached;
116
- };
117
- return LayeredCache;
118
- }());
53
+ }
54
+ }
119
55
  exports.default = LayeredCache;
@@ -1,33 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var constants_1 = require("../constants");
4
- var MemoryCache = /** @class */ (function () {
5
- function MemoryCache() {
3
+ const constants_1 = require("../constants");
4
+ class MemoryCache {
5
+ constructor() {
6
6
  this.cache = {};
7
7
  this.cacheTimestamps = {};
8
8
  }
9
- MemoryCache.prototype.get = function (locale) {
9
+ get(locale) {
10
10
  return Promise.resolve(this.cache[locale]);
11
- };
12
- MemoryCache.prototype.getLastModifiedTimestamp = function (locale) {
11
+ }
12
+ getLastModifiedTimestamp(locale) {
13
13
  return this.cacheTimestamps[locale];
14
- };
15
- MemoryCache.prototype.has = function (locale) {
14
+ }
15
+ has(locale) {
16
16
  return typeof this.cache[locale] !== 'undefined';
17
- };
18
- MemoryCache.prototype.isStale = function (locale) {
19
- var timestamp = this.getLastModifiedTimestamp(locale);
17
+ }
18
+ isStale(locale) {
19
+ const timestamp = this.getLastModifiedTimestamp(locale);
20
20
  if (!this.has(locale) || typeof timestamp === 'undefined') {
21
21
  return undefined;
22
22
  }
23
- var timeSinceModification = Math.abs(timestamp - Date.now());
23
+ const timeSinceModification = Math.abs(timestamp - Date.now());
24
24
  return timeSinceModification > constants_1.CACHE_STALE_THRESHOLD;
25
- };
26
- MemoryCache.prototype.set = function (locale, trie) {
25
+ }
26
+ set(locale, trie) {
27
27
  this.cacheTimestamps[locale] = Date.now();
28
28
  this.cache[locale] = trie;
29
29
  return Promise.resolve();
30
- };
31
- return MemoryCache;
32
- }());
30
+ }
31
+ }
33
32
  exports.default = MemoryCache;
@@ -1,62 +1,18 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
- var createAsyncProxy = function (asyncCallback) {
40
- var promise = null;
41
- return function () { return __awaiter(void 0, void 0, void 0, function () {
42
- return __generator(this, function (_a) {
43
- switch (_a.label) {
44
- case 0:
45
- if (promise) {
46
- return [2 /*return*/, promise];
47
- }
48
- _a.label = 1;
49
- case 1:
50
- _a.trys.push([1, , 3, 4]);
51
- promise = asyncCallback();
52
- return [4 /*yield*/, promise];
53
- case 2: return [2 /*return*/, _a.sent()];
54
- case 3:
55
- promise = null;
56
- return [7 /*endfinally*/];
57
- case 4: return [2 /*return*/];
58
- }
59
- });
60
- }); };
3
+ const createAsyncProxy = (asyncCallback) => {
4
+ let promise = null;
5
+ return async () => {
6
+ if (promise) {
7
+ return promise;
8
+ }
9
+ try {
10
+ promise = asyncCallback();
11
+ return await promise;
12
+ }
13
+ finally {
14
+ promise = null;
15
+ }
16
+ };
61
17
  };
62
18
  exports.default = createAsyncProxy;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var createCacheTimestampComparator = function (locale) {
4
- return function (a, b) {
5
- var aTimestamp = a.getLastModifiedTimestamp(locale);
6
- var bTimestamp = b.getLastModifiedTimestamp(locale);
3
+ const createCacheTimestampComparator = (locale) => {
4
+ return (a, b) => {
5
+ const aTimestamp = a.getLastModifiedTimestamp(locale);
6
+ const bTimestamp = b.getLastModifiedTimestamp(locale);
7
7
  if (aTimestamp === bTimestamp) {
8
8
  return 0;
9
9
  }
@@ -1,60 +1,16 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
39
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
4
  };
41
5
  Object.defineProperty(exports, "__esModule", { value: true });
42
- var trie_1 = require("@kamilmielnik/trie");
43
- var logger_1 = __importDefault(require("@scrabble-solver/logger"));
44
- var word_lists_1 = require("@scrabble-solver/word-lists");
45
- var downloadDictionary = function (locale) { return __awaiter(void 0, void 0, void 0, function () {
46
- var words, trie;
47
- return __generator(this, function (_a) {
48
- switch (_a.label) {
49
- case 0:
50
- logger_1.default.info('downloadDictionary', { locale: locale });
51
- return [4 /*yield*/, (0, word_lists_1.getWordList)(locale)];
52
- case 1:
53
- words = _a.sent();
54
- logger_1.default.info('downloadDictionary - success', { locale: locale });
55
- trie = trie_1.Trie.fromArray(words);
56
- return [2 /*return*/, trie];
57
- }
58
- });
59
- }); };
6
+ const trie_1 = require("@kamilmielnik/trie");
7
+ const logger_1 = __importDefault(require("@scrabble-solver/logger"));
8
+ const word_lists_1 = require("@scrabble-solver/word-lists");
9
+ const downloadDictionary = async (locale) => {
10
+ logger_1.default.info('downloadDictionary', { locale });
11
+ const words = await (0, word_lists_1.getWordList)(locale);
12
+ logger_1.default.info('downloadDictionary - success', { locale });
13
+ const trie = trie_1.Trie.fromArray(words);
14
+ return trie;
15
+ };
60
16
  exports.default = downloadDictionary;
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var path_1 = __importDefault(require("path"));
7
- var constants_1 = require("../constants");
8
- var getDictionaryFilepath = function (locale) {
9
- return path_1.default.resolve(constants_1.OUTPUT_DIRECTORY, "".concat(locale, ".txt"));
6
+ const path_1 = __importDefault(require("path"));
7
+ const constants_1 = require("../constants");
8
+ const getDictionaryFilepath = (locale) => {
9
+ return path_1.default.resolve(constants_1.OUTPUT_DIRECTORY, `${locale}.txt`);
10
10
  };
11
11
  exports.default = getDictionaryFilepath;
@@ -5,5 +5,3 @@ export { default as downloadDictionary } from './downloadDictionary';
5
5
  export { default as getDictionaryFilepath } from './getDictionaryFilepath';
6
6
  export { default as LayeredCache } from './LayeredCache';
7
7
  export { default as MemoryCache } from './MemoryCache';
8
- export { default as readFile } from './readFile';
9
- export { default as writeFile } from './writeFile';
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.writeFile = exports.readFile = exports.MemoryCache = exports.LayeredCache = exports.getDictionaryFilepath = exports.downloadDictionary = exports.DiskCache = exports.createCacheTimestampComparator = exports.createAsyncProxy = void 0;
6
+ exports.MemoryCache = exports.LayeredCache = exports.getDictionaryFilepath = exports.downloadDictionary = exports.DiskCache = exports.createCacheTimestampComparator = exports.createAsyncProxy = void 0;
7
7
  var createAsyncProxy_1 = require("./createAsyncProxy");
8
8
  Object.defineProperty(exports, "createAsyncProxy", { enumerable: true, get: function () { return __importDefault(createAsyncProxy_1).default; } });
9
9
  var createCacheTimestampComparator_1 = require("./createCacheTimestampComparator");
@@ -18,7 +18,3 @@ var LayeredCache_1 = require("./LayeredCache");
18
18
  Object.defineProperty(exports, "LayeredCache", { enumerable: true, get: function () { return __importDefault(LayeredCache_1).default; } });
19
19
  var MemoryCache_1 = require("./MemoryCache");
20
20
  Object.defineProperty(exports, "MemoryCache", { enumerable: true, get: function () { return __importDefault(MemoryCache_1).default; } });
21
- var readFile_1 = require("./readFile");
22
- Object.defineProperty(exports, "readFile", { enumerable: true, get: function () { return __importDefault(readFile_1).default; } });
23
- var writeFile_1 = require("./writeFile");
24
- Object.defineProperty(exports, "writeFile", { enumerable: true, get: function () { return __importDefault(writeFile_1).default; } });
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@scrabble-solver/dictionaries",
3
- "version": "2.8.2",
3
+ "version": "2.8.4",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/dictionaries",
9
- "version": "2.8.2",
9
+ "version": "2.8.4",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
- "@kamilmielnik/trie": "^1.0.3"
12
+ "@kamilmielnik/trie": "^2.0.0"
13
13
  },
14
14
  "bin": {
15
15
  "remove-dictionaries": "bin/remove-dictionaries.js",
@@ -17,19 +17,19 @@
17
17
  }
18
18
  },
19
19
  "node_modules/@kamilmielnik/trie": {
20
- "version": "1.0.3",
21
- "resolved": "https://registry.npmjs.org/@kamilmielnik/trie/-/trie-1.0.3.tgz",
22
- "integrity": "sha512-xIGglzz91BwfudrsNoxX0nRlfUrGu7Y9QxJ5RnrapLGZAer02CiVayBP00gndpkP3xjmueI9l49xb4W3JgcLXA==",
20
+ "version": "2.0.0",
21
+ "resolved": "https://registry.npmjs.org/@kamilmielnik/trie/-/trie-2.0.0.tgz",
22
+ "integrity": "sha512-YWTYtrV97bQ5hRifG1FImP47PI400a56O8+oQClQOtDjY3tioxab4sOgFHckiDdswciN1RwngCZ9Kv3phJfSuA==",
23
23
  "engines": {
24
- "node": ">=10"
24
+ "node": ">=16"
25
25
  }
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
29
  "@kamilmielnik/trie": {
30
- "version": "1.0.3",
31
- "resolved": "https://registry.npmjs.org/@kamilmielnik/trie/-/trie-1.0.3.tgz",
32
- "integrity": "sha512-xIGglzz91BwfudrsNoxX0nRlfUrGu7Y9QxJ5RnrapLGZAer02CiVayBP00gndpkP3xjmueI9l49xb4W3JgcLXA=="
30
+ "version": "2.0.0",
31
+ "resolved": "https://registry.npmjs.org/@kamilmielnik/trie/-/trie-2.0.0.tgz",
32
+ "integrity": "sha512-YWTYtrV97bQ5hRifG1FImP47PI400a56O8+oQClQOtDjY3tioxab4sOgFHckiDdswciN1RwngCZ9Kv3phJfSuA=="
33
33
  }
34
34
  }
35
35
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/dictionaries",
3
- "version": "2.8.2",
3
+ "version": "2.8.4",
4
4
  "description": "Scrabble Solver 2 - Dictionaries",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -30,10 +30,10 @@
30
30
  "postbuild": "node ./bin/update-dictionaries.js"
31
31
  },
32
32
  "dependencies": {
33
- "@kamilmielnik/trie": "^1.0.3",
34
- "@scrabble-solver/logger": "^2.8.2",
35
- "@scrabble-solver/types": "^2.8.2",
36
- "@scrabble-solver/word-lists": "^2.8.2"
33
+ "@kamilmielnik/trie": "^2.0.0",
34
+ "@scrabble-solver/logger": "^2.8.4",
35
+ "@scrabble-solver/types": "^2.8.4",
36
+ "@scrabble-solver/word-lists": "^2.8.4"
37
37
  },
38
38
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
39
39
  }