scrabble-solver 2.13.1 → 2.13.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.
Files changed (155) hide show
  1. package/.github/workflows/build.yml +3 -4
  2. package/.github/workflows/eslint.yml +1 -1
  3. package/.github/workflows/test.yml +1 -2
  4. package/.nx/cache/file-map.json +2610 -0
  5. package/.nx/cache/lockfile.hash +1 -0
  6. package/.nx/cache/nx_files.nxt +0 -0
  7. package/.nx/cache/parsed-lock-file.json +32593 -0
  8. package/.nx/cache/project-graph.json +32416 -0
  9. package/README.md +8 -8
  10. package/lerna.json +1 -1
  11. package/package.json +36 -29
  12. package/packages/configs/package.json +4 -5
  13. package/packages/constants/package.json +2 -3
  14. package/packages/dictionaries/package-lock.json +2 -2
  15. package/packages/dictionaries/package.json +5 -6
  16. package/packages/logger/package-lock.json +15 -7
  17. package/packages/logger/package.json +3 -4
  18. package/packages/scrabble-solver/.next/BUILD_ID +1 -1
  19. package/packages/scrabble-solver/.next/build-manifest.json +16 -16
  20. package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
  21. package/packages/scrabble-solver/.next/cache/eslint/.cache_8dgz12 +1 -1
  22. package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
  23. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
  24. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/0.pack +0 -0
  25. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
  26. package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
  27. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  28. package/packages/scrabble-solver/.next/next-minimal-server.js.nft.json +1 -0
  29. package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
  30. package/packages/scrabble-solver/.next/prerender-manifest.js +1 -0
  31. package/packages/scrabble-solver/.next/prerender-manifest.json +1 -1
  32. package/packages/scrabble-solver/.next/required-server-files.json +1 -1
  33. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  34. package/packages/scrabble-solver/.next/server/InjectManifest.js.nft.json +1 -1
  35. package/packages/scrabble-solver/.next/server/chunks/28.js +1 -0
  36. package/packages/scrabble-solver/.next/server/chunks/331.js +6 -0
  37. package/packages/scrabble-solver/.next/server/chunks/577.js +1 -0
  38. package/packages/scrabble-solver/.next/server/chunks/911.js +1 -1083
  39. package/packages/scrabble-solver/.next/server/chunks/977.js +1 -0
  40. package/packages/scrabble-solver/.next/server/functions-config-manifest.json +1 -0
  41. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  42. package/packages/scrabble-solver/.next/server/middleware-react-loadable-manifest.js +1 -1
  43. package/packages/scrabble-solver/.next/server/next-font-manifest.js +1 -1
  44. package/packages/scrabble-solver/.next/server/next-font-manifest.json +1 -6
  45. package/packages/scrabble-solver/.next/server/pages/404.html +1 -1
  46. package/packages/scrabble-solver/.next/server/pages/404.js.nft.json +1 -1
  47. package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
  48. package/packages/scrabble-solver/.next/server/pages/_app.js +1 -380
  49. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  50. package/packages/scrabble-solver/.next/server/pages/_document.js +1 -212
  51. package/packages/scrabble-solver/.next/server/pages/_document.js.nft.json +1 -1
  52. package/packages/scrabble-solver/.next/server/pages/_error.js +1 -166
  53. package/packages/scrabble-solver/.next/server/pages/_error.js.nft.json +1 -1
  54. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +2 -836
  55. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  56. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js +1 -192
  57. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  58. package/packages/scrabble-solver/.next/server/pages/api/solve.js +1 -1121
  59. package/packages/scrabble-solver/.next/server/pages/api/solve.js.nft.json +1 -1
  60. package/packages/scrabble-solver/.next/server/pages/api/verify.js +1 -213
  61. package/packages/scrabble-solver/.next/server/pages/api/verify.js.nft.json +1 -1
  62. package/packages/scrabble-solver/.next/server/pages/api/visit.js +1 -131
  63. package/packages/scrabble-solver/.next/server/pages/api/visit.js.nft.json +1 -1
  64. package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
  65. package/packages/scrabble-solver/.next/server/pages/index.js +1 -2088
  66. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  67. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  68. package/packages/scrabble-solver/.next/server/pages-manifest.json +1 -12
  69. package/packages/scrabble-solver/.next/server/webpack-api-runtime.js +1 -172
  70. package/packages/scrabble-solver/.next/server/webpack-runtime.js +1 -229
  71. package/packages/scrabble-solver/.next/static/chunks/framework-1728d40275bc359a.js +49 -0
  72. package/packages/scrabble-solver/.next/static/chunks/main-5fb7abbfc135de15.js +1 -0
  73. package/packages/scrabble-solver/.next/static/chunks/pages/404-b6e238bb4117d451.js +1 -0
  74. package/packages/scrabble-solver/.next/static/chunks/pages/_app-b95404c40a0092e6.js +17 -0
  75. package/packages/scrabble-solver/.next/static/chunks/pages/_error-db043fa3544f8809.js +1 -0
  76. package/packages/scrabble-solver/.next/static/chunks/pages/index-59d569ef79bc2580.js +1 -0
  77. package/packages/scrabble-solver/.next/static/css/8fa2fb99b90e109e.css +1 -0
  78. package/packages/scrabble-solver/.next/static/css/c80ebc6fd13311f1.css +2 -0
  79. package/packages/scrabble-solver/.next/static/r00VHxlMI-jbGWpg3nm2M/_buildManifest.js +1 -0
  80. package/packages/scrabble-solver/.next/trace +44 -51
  81. package/packages/scrabble-solver/package-lock.json +755 -524
  82. package/packages/scrabble-solver/package.json +30 -31
  83. package/packages/scrabble-solver/public/service-worker.js +2 -0
  84. package/packages/scrabble-solver/public/service-worker.js.map +1 -0
  85. package/packages/scrabble-solver/src/i18n/ro.json +5 -5
  86. package/packages/scrabble-solver/src/state/slices/boardSlice.ts +4 -4
  87. package/packages/scrabble-solver/src/state/store.ts +1 -1
  88. package/packages/solver/package-lock.json +2 -2
  89. package/packages/solver/package.json +6 -7
  90. package/packages/types/package.json +3 -4
  91. package/packages/word-definitions/package-lock.json +10 -10
  92. package/packages/word-definitions/package.json +5 -5
  93. package/packages/word-lists/build/getFrFrWordList.js +1 -5
  94. package/packages/word-lists/build/getRoRoWordList.js +1 -5
  95. package/packages/word-lists/build/lib/index.d.ts +2 -0
  96. package/packages/word-lists/build/lib/index.js +5 -1
  97. package/packages/word-lists/build/lib/latinizeDiacritics.d.ts +2 -0
  98. package/packages/word-lists/build/lib/latinizeDiacritics.js +11 -0
  99. package/packages/word-lists/build/lib/unique.d.ts +2 -0
  100. package/packages/word-lists/build/lib/unique.js +4 -0
  101. package/packages/word-lists/package-lock.json +22 -22
  102. package/packages/word-lists/package.json +8 -9
  103. package/packages/word-lists/src/getFrFrWordList.ts +2 -3
  104. package/packages/word-lists/src/getRoRoWordList.ts +2 -3
  105. package/packages/word-lists/src/lib/index.ts +2 -0
  106. package/packages/word-lists/src/lib/latinizeDiacritics.ts +9 -0
  107. package/packages/word-lists/src/lib/unique.ts +3 -0
  108. package/tsconfig.json +1 -1
  109. package/packages/configs/dictionaries/build/Dictionaries.d.ts +0 -13
  110. package/packages/configs/dictionaries/build/Dictionaries.js +0 -46
  111. package/packages/configs/dictionaries/build/constants/index.d.ts +0 -3
  112. package/packages/configs/dictionaries/build/constants/index.js +0 -11
  113. package/packages/configs/dictionaries/build/index.d.ts +0 -3
  114. package/packages/configs/dictionaries/build/index.js +0 -23
  115. package/packages/configs/dictionaries/build/lib/DiskCache.d.ts +0 -11
  116. package/packages/configs/dictionaries/build/lib/DiskCache.js +0 -48
  117. package/packages/configs/dictionaries/build/lib/LayeredCache.d.ts +0 -13
  118. package/packages/configs/dictionaries/build/lib/LayeredCache.js +0 -55
  119. package/packages/configs/dictionaries/build/lib/MemoryCache.d.ts +0 -13
  120. package/packages/configs/dictionaries/build/lib/MemoryCache.js +0 -32
  121. package/packages/configs/dictionaries/build/lib/createAsyncProxy.d.ts +0 -3
  122. package/packages/configs/dictionaries/build/lib/createAsyncProxy.js +0 -18
  123. package/packages/configs/dictionaries/build/lib/createCacheTimestampComparator.d.ts +0 -5
  124. package/packages/configs/dictionaries/build/lib/createCacheTimestampComparator.js +0 -19
  125. package/packages/configs/dictionaries/build/lib/downloadDictionary.d.ts +0 -4
  126. package/packages/configs/dictionaries/build/lib/downloadDictionary.js +0 -16
  127. package/packages/configs/dictionaries/build/lib/getDictionaryFilepath.d.ts +0 -3
  128. package/packages/configs/dictionaries/build/lib/getDictionaryFilepath.js +0 -11
  129. package/packages/configs/dictionaries/build/lib/index.d.ts +0 -7
  130. package/packages/configs/dictionaries/build/lib/index.js +0 -20
  131. package/packages/configs/dictionaries/build/types/Cache.d.ts +0 -8
  132. package/packages/configs/dictionaries/build/types/Cache.js +0 -2
  133. package/packages/configs/dictionaries/build/types/index.d.ts +0 -1
  134. package/packages/configs/dictionaries/build/types/index.js +0 -2
  135. package/packages/scrabble-solver/.next/cache/next-server.js.nft.json +0 -1
  136. package/packages/scrabble-solver/.next/server/chunks/210.js +0 -109
  137. package/packages/scrabble-solver/.next/server/chunks/277.js +0 -11942
  138. package/packages/scrabble-solver/.next/server/chunks/44.js +0 -1813
  139. package/packages/scrabble-solver/.next/server/chunks/50.js +0 -12119
  140. package/packages/scrabble-solver/.next/server/chunks/636.js +0 -286
  141. package/packages/scrabble-solver/.next/server/chunks/675.js +0 -572
  142. package/packages/scrabble-solver/.next/server/chunks/859.js +0 -835
  143. package/packages/scrabble-solver/.next/server/chunks/865.js +0 -20424
  144. package/packages/scrabble-solver/.next/server/chunks/907.js +0 -42530
  145. package/packages/scrabble-solver/.next/server/chunks/987.js +0 -91
  146. package/packages/scrabble-solver/.next/static/RJ5_dKU0dHcryeTVO6SSX/_buildManifest.js +0 -1
  147. package/packages/scrabble-solver/.next/static/chunks/framework-2c29dc3cd933590b.js +0 -49
  148. package/packages/scrabble-solver/.next/static/chunks/main-4dcb7f9b52833aba.js +0 -1
  149. package/packages/scrabble-solver/.next/static/chunks/pages/404-b4b5ce15153d4825.js +0 -1
  150. package/packages/scrabble-solver/.next/static/chunks/pages/_app-b92880dde164b954.js +0 -32
  151. package/packages/scrabble-solver/.next/static/chunks/pages/_error-54de1933a164a1ff.js +0 -1
  152. package/packages/scrabble-solver/.next/static/chunks/pages/index-f56eaa969a831c70.js +0 -1
  153. package/packages/scrabble-solver/.next/static/css/4e8b47fe382a8a8f.css +0 -2
  154. package/packages/scrabble-solver/.next/static/css/cfae5256f1689f57.css +0 -1
  155. /package/packages/scrabble-solver/.next/static/{RJ5_dKU0dHcryeTVO6SSX → r00VHxlMI-jbGWpg3nm2M}/_ssgManifest.js +0 -0
@@ -5,7 +5,7 @@
5
5
  "cell.set-not-blank": "Marcare camp ocupat ",
6
6
  "cell.tile.location": "Tabla: camp ({{x}}, {{y}})",
7
7
  "cell.toggle-direction": "Directie scriere",
8
- "common.blanks": "Campuri libere",
8
+ "common.blanks": "Jokeri",
9
9
  "common.clear": "Stergere",
10
10
  "common.close": "Inchidere",
11
11
  "common.consonants": "Consoane",
@@ -13,7 +13,7 @@
13
13
  "common.next": "Pasul urmator",
14
14
  "common.points": "Puncte",
15
15
  "common.previous": "Pasul anterior",
16
- "common.tiles": "Piese",
16
+ "common.tiles": "Litere",
17
17
  "common.two-letter-tiles": "2 litere",
18
18
  "common.vowels": "Vocale",
19
19
  "common.word": "Cuvant",
@@ -21,12 +21,12 @@
21
21
  "dictionary": "Dictionar",
22
22
  "dictionary.empty-state.no-definitions": "Cuvantul exista in dictionar dar nu are o definitie.",
23
23
  "dictionary.empty-state.no-results": "Definitia nu a fost gasita in dictionar",
24
- "dictionary.empty-state.not-allowed": "Cuvantul nu este permis.",
24
+ "dictionary.empty-state.not-allowed": "Cuvantul nu apare in dictionar",
25
25
  "dictionary.empty-state.uninitialized": "Aici va fi definitia cuvantului.",
26
26
  "dictionary.input.placeholder": "Cautare dictionar…",
27
27
  "dictionary.input.title": "Cuvinte separate prin virgula",
28
28
  "empty-state.error": "Eroare",
29
- "empty-state.info": "Informatii",
29
+ "empty-state.info": "Spatiu date",
30
30
  "empty-state.success": "Succes",
31
31
  "empty-state.warning": "Atentionare",
32
32
  "github": "Vezi acest proiect pe GitHub",
@@ -40,7 +40,7 @@
40
40
  "keyMap.board-and-rack.remove-tile": "Indeparteaza piesa",
41
41
  "keyMap.board-and-rack.submit": "Pornire cautare",
42
42
  "keyMap.rack": "Grupa litere",
43
- "keyMap.rack.insert-blank": "Introduce camp liber (spacebar)",
43
+ "keyMap.rack.insert-blank": "Introducere joker",
44
44
  "menu": "Meniu",
45
45
  "rack.placeholder": "Litere…",
46
46
  "rack.tile.location": "Grupa litere: piesa ({{index}})",
@@ -1,7 +1,7 @@
1
1
  import { createSlice, PayloadAction } from '@reduxjs/toolkit';
2
2
  import { games } from '@scrabble-solver/configs';
3
3
  import { EMPTY_CELL } from '@scrabble-solver/constants';
4
- import { Board, Cell, Game, Result, Tile } from '@scrabble-solver/types';
4
+ import { Board, Cell, Result, Tile } from '@scrabble-solver/types';
5
5
 
6
6
  import boardInitialState from './boardInitialState';
7
7
  import settingsSlice from './settingsSlice';
@@ -56,8 +56,8 @@ const boardSlice = createSlice({
56
56
  return newBoard;
57
57
  },
58
58
  },
59
- extraReducers: {
60
- [settingsSlice.actions.changeGame.type]: (state, action: PayloadAction<Game>) => {
59
+ extraReducers: (builder) => {
60
+ builder.addCase(settingsSlice.actions.changeGame, (state, action) => {
61
61
  const game = action.payload;
62
62
  const config = Object.values(games).find((gameConfig) => gameConfig.game === game);
63
63
 
@@ -70,7 +70,7 @@ const boardSlice = createSlice({
70
70
  }
71
71
 
72
72
  return state;
73
- },
73
+ });
74
74
  },
75
75
  });
76
76
 
@@ -26,7 +26,7 @@ const store = configureStore({
26
26
  solve: solveSlice.reducer,
27
27
  verify: verifySlice.reducer,
28
28
  },
29
- middleware: [sagaMiddleware],
29
+ middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat([sagaMiddleware]),
30
30
  });
31
31
 
32
32
  sagaMiddleware.run(rootSaga);
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/solver",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/solver",
9
- "version": "2.13.1",
9
+ "version": "2.13.3",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "@kamilmielnik/trie": "^2.0.1"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/solver",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "description": "Scrabble Solver 2 - Solver",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -20,17 +20,16 @@
20
20
  "homepage": "https://scrabble-solver.org",
21
21
  "scripts": {
22
22
  "build": "tsc --project .",
23
- "clean": "rimraf build/ node_modules/",
24
- "clean:force": "npm run clean && rimraf package-lock.json"
23
+ "clean": "rimraf build/"
25
24
  },
26
25
  "dependencies": {
27
26
  "@kamilmielnik/trie": "^2.0.1",
28
- "@scrabble-solver/types": "^2.13.1"
27
+ "@scrabble-solver/types": "^2.13.3"
29
28
  },
30
29
  "devDependencies": {
31
- "@scrabble-solver/configs": "^2.13.1",
32
- "@scrabble-solver/constants": "^2.13.1",
33
- "@scrabble-solver/dictionaries": "^2.13.1"
30
+ "@scrabble-solver/configs": "^2.13.3",
31
+ "@scrabble-solver/constants": "^2.13.3",
32
+ "@scrabble-solver/dictionaries": "^2.13.3"
34
33
  },
35
34
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
36
35
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/types",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "description": "Scrabble Solver 2 - Types",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -20,11 +20,10 @@
20
20
  "homepage": "https://scrabble-solver.org",
21
21
  "scripts": {
22
22
  "build": "tsc --project .",
23
- "clean": "rimraf build/ node_modules/",
24
- "clean:force": "npm run clean && rimraf package-lock.json"
23
+ "clean": "rimraf build/"
25
24
  },
26
25
  "dependencies": {
27
- "@scrabble-solver/constants": "^2.13.1"
26
+ "@scrabble-solver/constants": "^2.13.3"
28
27
  },
29
28
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
30
29
  }
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-definitions",
9
- "version": "2.13.1",
9
+ "version": "2.13.3",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "cheerio": "^1.0.0-rc.12",
13
- "follow-redirects": "^1.15.2",
13
+ "follow-redirects": "^1.15.5",
14
14
  "striptags": "^3.2.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@types/follow-redirects": "^1.14.1"
17
+ "@types/follow-redirects": "^1.14.4"
18
18
  }
19
19
  },
20
20
  "node_modules/@types/follow-redirects": {
21
- "version": "1.14.3",
22
- "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.3.tgz",
23
- "integrity": "sha512-VN4w0rKWI4DVySabR5/9P65nwcVEAr1taWFyYW3YR7rHYO/bOgG+LHpWfSzthPmCEfmawuXsMd4huQeSoc7jpg==",
21
+ "version": "1.14.4",
22
+ "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.4.tgz",
23
+ "integrity": "sha512-GWXfsD0Jc1RWiFmMuMFCpXMzi9L7oPDVwxUnZdg89kDNnqsRfUKXEtUYtA98A6lig1WXH/CYY/fvPW9HuN5fTA==",
24
24
  "dev": true,
25
25
  "dependencies": {
26
26
  "@types/node": "*"
@@ -165,9 +165,9 @@
165
165
  }
166
166
  },
167
167
  "node_modules/follow-redirects": {
168
- "version": "1.15.3",
169
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
170
- "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
168
+ "version": "1.15.5",
169
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
170
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
171
171
  "funding": [
172
172
  {
173
173
  "type": "individual",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "description": "Scrabble Solver 2 - Word definitions",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -20,15 +20,15 @@
20
20
  "homepage": "https://scrabble-solver.org",
21
21
  "scripts": {
22
22
  "build": "tsc --project .",
23
- "clean": "rimraf build/ node_modules/ package-lock.json"
23
+ "clean": "rimraf build/"
24
24
  },
25
25
  "dependencies": {
26
- "@scrabble-solver/types": "^2.13.1",
26
+ "@scrabble-solver/types": "^2.13.3",
27
27
  "cheerio": "^1.0.0-rc.12",
28
- "follow-redirects": "^1.15.2",
28
+ "follow-redirects": "^1.15.5",
29
29
  "striptags": "^3.2.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@types/follow-redirects": "^1.14.1"
32
+ "@types/follow-redirects": "^1.14.4"
33
33
  }
34
34
  }
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const types_1 = require("@scrabble-solver/types");
7
- const latinize_1 = __importDefault(require("latinize"));
8
4
  const lib_1 = require("./lib");
9
5
  const FILE_URL = 'https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt';
10
6
  const getFrFrWordList = async () => {
11
7
  const words = await (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.FR_FR);
12
- return words.map(latinize_1.default);
8
+ return (0, lib_1.latinizeDiacritics)(words);
13
9
  };
14
10
  exports.default = getFrFrWordList;
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const types_1 = require("@scrabble-solver/types");
7
- const latinize_1 = __importDefault(require("latinize"));
8
4
  const lib_1 = require("./lib");
9
5
  const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt';
10
6
  const getRoRoWordList = async () => {
11
7
  const words = await (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.RO_RO);
12
- return words.map(latinize_1.default);
8
+ return (0, lib_1.latinizeDiacritics)(words);
13
9
  };
14
10
  exports.default = getRoRoWordList;
@@ -5,4 +5,6 @@ export { default as findFirstWordIndex } from './findFirstWordIndex';
5
5
  export { default as getHash } from './getHash';
6
6
  export { default as getTempFilepath } from './getTempFilepath';
7
7
  export { default as getTxtWordList } from './getTxtWordList';
8
+ export { default as latinizeDiacritics } from './latinizeDiacritics';
9
+ export { default as unique } from './unique';
8
10
  export { default as unzip } from './unzip';
@@ -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.unzip = exports.getTxtWordList = exports.getTempFilepath = exports.getHash = exports.findFirstWordIndex = exports.extractWords = exports.downloadHtml = exports.downloadFile = void 0;
6
+ exports.unzip = exports.unique = exports.latinizeDiacritics = exports.getTxtWordList = exports.getTempFilepath = exports.getHash = exports.findFirstWordIndex = exports.extractWords = exports.downloadHtml = exports.downloadFile = void 0;
7
7
  var downloadFile_1 = require("./downloadFile");
8
8
  Object.defineProperty(exports, "downloadFile", { enumerable: true, get: function () { return __importDefault(downloadFile_1).default; } });
9
9
  var downloadHtml_1 = require("./downloadHtml");
@@ -18,5 +18,9 @@ var getTempFilepath_1 = require("./getTempFilepath");
18
18
  Object.defineProperty(exports, "getTempFilepath", { enumerable: true, get: function () { return __importDefault(getTempFilepath_1).default; } });
19
19
  var getTxtWordList_1 = require("./getTxtWordList");
20
20
  Object.defineProperty(exports, "getTxtWordList", { enumerable: true, get: function () { return __importDefault(getTxtWordList_1).default; } });
21
+ var latinizeDiacritics_1 = require("./latinizeDiacritics");
22
+ Object.defineProperty(exports, "latinizeDiacritics", { enumerable: true, get: function () { return __importDefault(latinizeDiacritics_1).default; } });
23
+ var unique_1 = require("./unique");
24
+ Object.defineProperty(exports, "unique", { enumerable: true, get: function () { return __importDefault(unique_1).default; } });
21
25
  var unzip_1 = require("./unzip");
22
26
  Object.defineProperty(exports, "unzip", { enumerable: true, get: function () { return __importDefault(unzip_1).default; } });
@@ -0,0 +1,2 @@
1
+ declare const latinizeDiacritics: (words: string[]) => string[];
2
+ export default latinizeDiacritics;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const latinize_1 = __importDefault(require("latinize"));
7
+ const unique_1 = __importDefault(require("./unique"));
8
+ const latinizeDiacritics = (words) => {
9
+ return (0, unique_1.default)(words.map((word) => (0, latinize_1.default)(word)));
10
+ };
11
+ exports.default = latinizeDiacritics;
@@ -0,0 +1,2 @@
1
+ declare const unique: <T>(array: T[]) => T[];
2
+ export default unique;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const unique = (array) => Array.from(new Set(array));
4
+ exports.default = unique;
@@ -1,38 +1,38 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-lists",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-lists",
9
- "version": "2.13.1",
9
+ "version": "2.13.3",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "cheerio": "^1.0.0-rc.12",
13
- "follow-redirects": "^1.15.2",
13
+ "follow-redirects": "^1.15.5",
14
14
  "latinize": "^1.0.0",
15
- "unzipper": "^0.10.11"
15
+ "unzipper": "^0.10.14"
16
16
  },
17
17
  "devDependencies": {
18
- "@types/follow-redirects": "^1.14.1",
19
- "@types/latinize": "^0.2.17",
20
- "@types/unzipper": "^0.10.5"
18
+ "@types/follow-redirects": "^1.14.4",
19
+ "@types/latinize": "^0.2.18",
20
+ "@types/unzipper": "^0.10.9"
21
21
  }
22
22
  },
23
23
  "node_modules/@types/follow-redirects": {
24
- "version": "1.14.1",
25
- "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.1.tgz",
26
- "integrity": "sha512-THBEFwqsLuU/K62B5JRwab9NW97cFmL4Iy34NTMX0bMycQVzq2q7PKOkhfivIwxdpa/J72RppgC42vCHfwKJ0Q==",
24
+ "version": "1.14.4",
25
+ "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.4.tgz",
26
+ "integrity": "sha512-GWXfsD0Jc1RWiFmMuMFCpXMzi9L7oPDVwxUnZdg89kDNnqsRfUKXEtUYtA98A6lig1WXH/CYY/fvPW9HuN5fTA==",
27
27
  "dev": true,
28
28
  "dependencies": {
29
29
  "@types/node": "*"
30
30
  }
31
31
  },
32
32
  "node_modules/@types/latinize": {
33
- "version": "0.2.17",
34
- "resolved": "https://registry.npmjs.org/@types/latinize/-/latinize-0.2.17.tgz",
35
- "integrity": "sha512-TqSJE7HHuwaxaGLAWm+YlFBymfNaLdQdddmZutXRD7+kabPgpWAiQHazOixwz1IrHGtacM8Oed/cg8CzrYvEDQ==",
33
+ "version": "0.2.18",
34
+ "resolved": "https://registry.npmjs.org/@types/latinize/-/latinize-0.2.18.tgz",
35
+ "integrity": "sha512-QjX4tcVEOcqDakv96sLMA2ESMcxSJel5KHxmcBgeTlZI7v6gFx9Tjqmt5+Pp8ijfGGr6CxuXzDNYk8A/iZ/GiA==",
36
36
  "dev": true
37
37
  },
38
38
  "node_modules/@types/node": {
@@ -42,9 +42,9 @@
42
42
  "dev": true
43
43
  },
44
44
  "node_modules/@types/unzipper": {
45
- "version": "0.10.5",
46
- "resolved": "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.10.5.tgz",
47
- "integrity": "sha512-NrLJb29AdnBARpg9S/4ktfPEisbJ0AvaaAr3j7Q1tg8AgcEUsq2HqbNzvgLRoWyRtjzeLEv7vuL39u1mrNIyNA==",
45
+ "version": "0.10.9",
46
+ "resolved": "https://registry.npmjs.org/@types/unzipper/-/unzipper-0.10.9.tgz",
47
+ "integrity": "sha512-vHbmFZAw8emNAOVkHVbS3qBnbr0x/qHQZ+ei1HE7Oy6Tyrptl+jpqnOX+BF5owcu/HZLOV0nJK+K9sjs1Ox2JA==",
48
48
  "dev": true,
49
49
  "dependencies": {
50
50
  "@types/node": "*"
@@ -264,9 +264,9 @@
264
264
  }
265
265
  },
266
266
  "node_modules/follow-redirects": {
267
- "version": "1.15.2",
268
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
269
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
267
+ "version": "1.15.5",
268
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
269
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
270
270
  "funding": [
271
271
  {
272
272
  "type": "individual",
@@ -509,9 +509,9 @@
509
509
  }
510
510
  },
511
511
  "node_modules/unzipper": {
512
- "version": "0.10.11",
513
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
514
- "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
512
+ "version": "0.10.14",
513
+ "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz",
514
+ "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
515
515
  "dependencies": {
516
516
  "big-integer": "^1.6.17",
517
517
  "binary": "~0.3.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-lists",
3
- "version": "2.13.1",
3
+ "version": "2.13.3",
4
4
  "description": "Scrabble Solver 2 - Word lists",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -20,20 +20,19 @@
20
20
  "homepage": "https://scrabble-solver.org",
21
21
  "scripts": {
22
22
  "build": "tsc --project .",
23
- "clean": "rimraf build/ node_modules/",
24
- "clean:force": "npm run clean && rimraf package-lock.json"
23
+ "clean": "rimraf build/"
25
24
  },
26
25
  "dependencies": {
27
- "@scrabble-solver/types": "^2.13.1",
26
+ "@scrabble-solver/types": "^2.13.3",
28
27
  "cheerio": "^1.0.0-rc.12",
29
- "follow-redirects": "^1.15.2",
28
+ "follow-redirects": "^1.15.5",
30
29
  "latinize": "^1.0.0",
31
- "unzipper": "^0.10.11"
30
+ "unzipper": "^0.10.14"
32
31
  },
33
32
  "devDependencies": {
34
- "@types/follow-redirects": "^1.14.1",
35
- "@types/latinize": "^0.2.17",
36
- "@types/unzipper": "^0.10.5"
33
+ "@types/follow-redirects": "^1.14.4",
34
+ "@types/latinize": "^0.2.18",
35
+ "@types/unzipper": "^0.10.9"
37
36
  },
38
37
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
39
38
  }
@@ -1,13 +1,12 @@
1
1
  import { Locale } from '@scrabble-solver/types';
2
- import latinize from 'latinize';
3
2
 
4
- import { getTxtWordList } from './lib';
3
+ import { getTxtWordList, latinizeDiacritics } from './lib';
5
4
 
6
5
  const FILE_URL = 'https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt';
7
6
 
8
7
  const getFrFrWordList = async (): Promise<string[]> => {
9
8
  const words = await getTxtWordList(FILE_URL, Locale.FR_FR);
10
- return words.map(latinize);
9
+ return latinizeDiacritics(words);
11
10
  };
12
11
 
13
12
  export default getFrFrWordList;
@@ -1,13 +1,12 @@
1
1
  import { Locale } from '@scrabble-solver/types';
2
- import latinize from 'latinize';
3
2
 
4
- import { getTxtWordList } from './lib';
3
+ import { getTxtWordList, latinizeDiacritics } from './lib';
5
4
 
6
5
  const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt';
7
6
 
8
7
  const getRoRoWordList = async (): Promise<string[]> => {
9
8
  const words = await getTxtWordList(FILE_URL, Locale.RO_RO);
10
- return words.map(latinize);
9
+ return latinizeDiacritics(words);
11
10
  };
12
11
 
13
12
  export default getRoRoWordList;
@@ -5,4 +5,6 @@ export { default as findFirstWordIndex } from './findFirstWordIndex';
5
5
  export { default as getHash } from './getHash';
6
6
  export { default as getTempFilepath } from './getTempFilepath';
7
7
  export { default as getTxtWordList } from './getTxtWordList';
8
+ export { default as latinizeDiacritics } from './latinizeDiacritics';
9
+ export { default as unique } from './unique';
8
10
  export { default as unzip } from './unzip';
@@ -0,0 +1,9 @@
1
+ import latinize from 'latinize';
2
+
3
+ import unique from './unique';
4
+
5
+ const latinizeDiacritics = (words: string[]): string[] => {
6
+ return unique(words.map((word) => latinize(word)));
7
+ };
8
+
9
+ export default latinizeDiacritics;
@@ -0,0 +1,3 @@
1
+ const unique = <T>(array: T[]): T[] => Array.from(new Set(array));
2
+
3
+ export default unique;
package/tsconfig.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "downlevelIteration": true,
5
5
  "esModuleInterop": true,
6
6
  "forceConsistentCasingInFileNames": true,
7
- "lib": ["esnext"],
7
+ "lib": ["esnext", "dom"],
8
8
  "module": "commonjs",
9
9
  "moduleResolution": "node",
10
10
  "noImplicitReturns": true,
@@ -1,13 +0,0 @@
1
- import { Trie } from '@kamilmielnik/trie';
2
- import { Locale } from '@scrabble-solver/types';
3
- declare class Dictionaries {
4
- private readonly cache;
5
- private readonly downloadDictionaryProxies;
6
- constructor();
7
- get(locale: Locale): Promise<Trie>;
8
- remove(): void;
9
- update(force?: boolean): Promise<void>;
10
- private getLocalesToUpdate;
11
- private updateDictionary;
12
- }
13
- export default Dictionaries;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const logger_1 = __importDefault(require("@scrabble-solver/logger"));
7
- const types_1 = require("@scrabble-solver/types");
8
- const fs_1 = __importDefault(require("fs"));
9
- const constants_1 = require("./constants");
10
- const lib_1 = require("./lib");
11
- class Dictionaries {
12
- constructor() {
13
- this.cache = new lib_1.LayeredCache();
14
- this.downloadDictionaryProxies = Object.fromEntries(Object.values(types_1.Locale).map((locale) => [locale, (0, lib_1.createAsyncProxy)(() => (0, lib_1.downloadDictionary)(locale))]));
15
- }
16
- async get(locale) {
17
- if (this.cache.has(locale)) {
18
- const trie = await this.cache.get(locale);
19
- if (trie) {
20
- return trie;
21
- }
22
- }
23
- logger_1.default.info('Dictionaries - cache miss', { locale });
24
- return this.updateDictionary(locale);
25
- }
26
- remove() {
27
- fs_1.default.rmdirSync(constants_1.OUTPUT_DIRECTORY, { recursive: true });
28
- }
29
- async update(force) {
30
- const locales = force ? Object.values(types_1.Locale) : this.getLocalesToUpdate();
31
- logger_1.default.info('Dictionaries - update', { force, locales });
32
- await Promise.all(locales.map((locale) => this.updateDictionary(locale)));
33
- }
34
- getLocalesToUpdate() {
35
- return Object.values(types_1.Locale).filter((locale) => this.cache.isStale(locale) !== false);
36
- }
37
- async updateDictionary(locale) {
38
- logger_1.default.info('Dictionaries - updateDictionary', { locale });
39
- fs_1.default.mkdirSync(constants_1.OUTPUT_DIRECTORY, { recursive: true });
40
- const downloadDictionaryProxy = this.downloadDictionaryProxies[locale];
41
- const trie = await downloadDictionaryProxy();
42
- await this.cache.set(locale, trie);
43
- return trie;
44
- }
45
- }
46
- exports.default = Dictionaries;
@@ -1,3 +0,0 @@
1
- export declare const DAY: number;
2
- export declare const CACHE_STALE_THRESHOLD: number;
3
- export declare const OUTPUT_DIRECTORY: string;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OUTPUT_DIRECTORY = exports.CACHE_STALE_THRESHOLD = exports.DAY = void 0;
7
- const os_1 = __importDefault(require("os"));
8
- const path_1 = __importDefault(require("path"));
9
- exports.DAY = 24 * 60 * 60 * 1000;
10
- exports.CACHE_STALE_THRESHOLD = 1 * exports.DAY; // eslint-disable-line no-implicit-coercion
11
- exports.OUTPUT_DIRECTORY = path_1.default.resolve(os_1.default.homedir(), '.scrabble-solver', 'dictionaries');
@@ -1,3 +0,0 @@
1
- import Dictionaries from './Dictionaries';
2
- export * from './lib';
3
- export declare const dictionaries: Dictionaries;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.dictionaries = void 0;
21
- const Dictionaries_1 = __importDefault(require("./Dictionaries"));
22
- __exportStar(require("./lib"), exports);
23
- exports.dictionaries = new Dictionaries_1.default();
@@ -1,11 +0,0 @@
1
- import { Trie } from '@kamilmielnik/trie';
2
- import { Locale } from '@scrabble-solver/types';
3
- import { Cache } from '../types';
4
- declare class DiskCache implements Cache<Locale, Trie> {
5
- get(locale: Locale): Promise<Trie | undefined>;
6
- getLastModifiedTimestamp(locale: Locale): number | undefined;
7
- has(locale: Locale): boolean;
8
- isStale(locale: Locale): boolean | undefined;
9
- set(locale: Locale, trie: Trie): Promise<void>;
10
- }
11
- export default DiskCache;