scrabble-solver 2.12.2 → 2.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -13
- package/lerna.json +1 -1
- package/package.json +3 -2
- package/packages/configs/build/games/index.d.ts +3 -0
- package/packages/configs/build/games/index.js +12 -0
- package/packages/configs/build/games/literaki.d.ts +25 -0
- package/packages/configs/build/games/literaki.js +110 -0
- package/packages/configs/build/games/scrabble.d.ts +18 -0
- package/packages/configs/build/games/scrabble.js +78 -0
- package/packages/configs/build/games/superScrabble.d.ts +18 -0
- package/packages/configs/build/games/superScrabble.js +141 -0
- package/packages/configs/build/getConfig.d.ts +2 -6
- package/packages/configs/build/getConfig.js +29 -10
- package/packages/configs/build/hasConfig.d.ts +3 -0
- package/packages/configs/build/hasConfig.js +31 -0
- package/packages/configs/build/index.d.ts +7 -4
- package/packages/configs/build/index.js +32 -9
- package/packages/configs/build/locales/deDe.d.ts +3 -0
- package/packages/configs/build/locales/deDe.js +42 -0
- package/packages/configs/build/locales/enGb.d.ts +3 -0
- package/packages/configs/build/locales/enGb.js +104 -0
- package/packages/configs/build/locales/enUs.d.ts +3 -0
- package/packages/configs/build/locales/enUs.js +104 -0
- package/packages/configs/build/locales/esEs.d.ts +3 -0
- package/packages/configs/build/locales/esEs.js +41 -0
- package/packages/configs/build/locales/faIr.d.ts +3 -0
- package/packages/configs/build/locales/faIr.js +45 -0
- package/packages/configs/build/locales/frFr.d.ts +3 -0
- package/packages/configs/build/locales/frFr.js +39 -0
- package/packages/configs/build/locales/index.d.ts +7 -0
- package/packages/configs/build/locales/index.js +20 -0
- package/packages/configs/build/locales/plPl.d.ts +3 -0
- package/packages/configs/build/locales/plPl.js +83 -0
- package/packages/configs/package.json +3 -3
- package/packages/configs/src/games/index.ts +3 -0
- package/packages/configs/src/games/literaki.ts +110 -0
- package/packages/configs/src/games/scrabble.ts +78 -0
- package/packages/configs/src/games/superScrabble.ts +141 -0
- package/packages/configs/src/getConfig.ts +8 -15
- package/packages/configs/src/hasConfig.ts +10 -0
- package/packages/configs/src/index.ts +7 -4
- package/packages/configs/src/locales/deDe.ts +43 -0
- package/packages/configs/src/locales/enGb.ts +105 -0
- package/packages/configs/src/locales/enUs.ts +105 -0
- package/packages/configs/src/locales/esEs.ts +42 -0
- package/packages/configs/src/locales/faIr.ts +46 -0
- package/packages/configs/src/locales/frFr.ts +40 -0
- package/packages/configs/src/locales/index.ts +7 -0
- package/packages/configs/src/locales/plPl.ts +84 -0
- package/packages/constants/package.json +1 -1
- package/packages/dictionaries/package-lock.json +3 -10
- package/packages/dictionaries/package.json +4 -4
- package/packages/logger/package-lock.json +3 -224
- package/packages/logger/package.json +1 -1
- package/packages/scrabble-solver/.next/BUILD_ID +1 -1
- package/packages/scrabble-solver/.next/build-manifest.json +6 -6
- package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
- package/packages/scrabble-solver/.next/cache/eslint/.cache_8dgz12 +1 -1
- package/packages/scrabble-solver/.next/cache/next-server.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/prerender-manifest.json +1 -1
- package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
- package/packages/scrabble-solver/.next/server/chunks/131.js +478 -106
- package/packages/scrabble-solver/.next/server/chunks/277.js +1132 -976
- package/packages/scrabble-solver/.next/server/chunks/44.js +37 -9
- package/packages/scrabble-solver/.next/server/chunks/865.js +597 -169
- package/packages/scrabble-solver/.next/server/chunks/911.js +894 -773
- package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/404.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/404.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/_app.js +3 -1
- package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/_document.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +4 -2
- package/packages/scrabble-solver/.next/server/pages/api/solve.js +23 -19
- package/packages/scrabble-solver/.next/server/pages/api/verify.js +8 -5
- package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.js +42 -55
- package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
- package/packages/scrabble-solver/.next/server/pages-manifest.json +2 -2
- package/packages/scrabble-solver/.next/static/{9dmPfnTc_AQTHBPvL7xQe → 8oRk1nUMQYFWmhu4SExQI}/_buildManifest.js +1 -1
- package/packages/scrabble-solver/.next/static/chunks/pages/_app-e7f3d1c9c09c8f91.js +32 -0
- package/packages/scrabble-solver/.next/static/chunks/pages/index-82b2939158c7729f.js +1 -0
- package/packages/scrabble-solver/.next/static/css/4e8b47fe382a8a8f.css +2 -0
- package/packages/scrabble-solver/.next/static/css/cfae5256f1689f57.css +1 -0
- package/packages/scrabble-solver/.next/trace +51 -52
- package/packages/scrabble-solver/package-lock.json +158 -4898
- package/packages/scrabble-solver/package.json +8 -8
- package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.module.scss +4 -12
- package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.tsx +4 -0
- package/packages/scrabble-solver/src/components/Board/hooks/useBackgroundImage.tsx +23 -0
- package/packages/scrabble-solver/src/components/PlainTiles/lib/createPlainTile.ts +4 -4
- package/packages/scrabble-solver/src/components/Radio/Radio.module.scss +4 -0
- package/packages/scrabble-solver/src/components/Radio/Radio.tsx +1 -0
- package/packages/scrabble-solver/src/components/SeoMessage/SeoMessage.tsx +3 -3
- package/packages/scrabble-solver/src/hooks/useAppLayout.ts +1 -2
- package/packages/scrabble-solver/src/hooks/useLocalStorage.ts +5 -5
- package/packages/scrabble-solver/src/i18n/constants.ts +31 -61
- package/packages/scrabble-solver/src/lib/extractCharacters.test.ts +3 -3
- package/packages/scrabble-solver/src/lib/extractCharactersByCase.test.ts +3 -3
- package/packages/scrabble-solver/src/lib/getCellSize.ts +2 -2
- package/packages/scrabble-solver/src/modals/MenuModal/MenuModal.module.scss +0 -1
- package/packages/scrabble-solver/src/modals/MenuModal/MenuModal.tsx +3 -3
- package/packages/scrabble-solver/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.tsx +16 -7
- package/packages/scrabble-solver/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.module.scss +1 -4
- package/packages/scrabble-solver/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +8 -8
- package/packages/scrabble-solver/src/pages/_app.tsx +3 -1
- package/packages/scrabble-solver/src/pages/api/dictionary/[locale]/[word].ts +6 -3
- package/packages/scrabble-solver/src/pages/api/solve.ts +11 -7
- package/packages/scrabble-solver/src/pages/api/verify.ts +11 -7
- package/packages/scrabble-solver/src/pages/index.module.scss +0 -1
- package/packages/scrabble-solver/src/parameters/index.ts +4 -6
- package/packages/scrabble-solver/src/sdk/solve.ts +3 -3
- package/packages/scrabble-solver/src/sdk/verify.ts +3 -3
- package/packages/scrabble-solver/src/service-worker/routeSolveRequests.ts +3 -3
- package/packages/scrabble-solver/src/state/localStorage.ts +6 -6
- package/packages/scrabble-solver/src/state/sagas.ts +18 -7
- package/packages/scrabble-solver/src/state/selectors.ts +3 -3
- package/packages/scrabble-solver/src/state/slices/boardInitialState.ts +3 -3
- package/packages/scrabble-solver/src/state/slices/boardSlice.ts +20 -6
- package/packages/scrabble-solver/src/state/slices/settingsInitialState.ts +3 -4
- package/packages/scrabble-solver/src/state/slices/settingsSlice.ts +5 -5
- package/packages/scrabble-solver/src/styles/variables.scss +0 -9
- package/packages/solver/build/getPatternHash.js +2 -2
- package/packages/solver/build/solve.js +3 -1
- package/packages/solver/package-lock.json +3 -10
- package/packages/solver/package.json +5 -5
- package/packages/solver/src/fillPattern.test.ts +3 -3
- package/packages/solver/src/generatePatterns.test.ts +13 -0
- package/packages/solver/src/getPatternHash.ts +2 -2
- package/packages/solver/src/getPatternScore.test.ts +4 -3
- package/packages/solver/src/solve.test.ts +68 -6
- package/packages/solver/src/solve.ts +4 -1
- package/packages/types/build/Config.d.ts +2 -0
- package/packages/types/build/Config.js +3 -0
- package/packages/types/build/ConfigJson.d.ts +2 -1
- package/packages/types/build/Dictionary.d.ts +7 -0
- package/packages/types/build/Dictionary.js +2 -0
- package/packages/types/build/Game.d.ts +7 -0
- package/packages/types/build/Game.js +13 -0
- package/packages/types/build/Locale.d.ts +5 -0
- package/packages/types/build/Locale.js +5 -1
- package/packages/types/build/index.d.ts +4 -2
- package/packages/types/build/index.js +8 -5
- package/packages/types/package.json +2 -2
- package/packages/types/src/Config.ts +5 -0
- package/packages/types/src/ConfigJson.ts +2 -1
- package/packages/types/src/Dictionary.ts +9 -0
- package/packages/types/src/Game.ts +11 -0
- package/packages/types/src/Locale.ts +5 -1
- package/packages/types/src/index.ts +4 -2
- package/packages/word-definitions/build/lib/normalizeDefinition.js +3 -1
- package/packages/word-definitions/package-lock.json +13 -163
- package/packages/word-definitions/package.json +2 -2
- package/packages/word-definitions/src/lib/normalizeDefinition.ts +3 -1
- package/packages/word-lists/build/getFrFrWordList.js +1 -3
- package/packages/word-lists/package-lock.json +9 -401
- package/packages/word-lists/package.json +2 -2
- package/packages/word-lists/src/getFrFrWordList.ts +1 -3
- package/packages/configs/build/getLocaleConfig.d.ts +0 -3
- package/packages/configs/build/getLocaleConfig.js +0 -10
- package/packages/configs/build/isConfigId.d.ts +0 -2
- package/packages/configs/build/isConfigId.js +0 -12
- package/packages/configs/build/literaki/bonuses.d.ts +0 -14
- package/packages/configs/build/literaki/bonuses.js +0 -99
- package/packages/configs/build/literaki/index.d.ts +0 -1
- package/packages/configs/build/literaki/index.js +0 -8
- package/packages/configs/build/literaki/literaki.d.ts +0 -13
- package/packages/configs/build/literaki/literaki.js +0 -31
- package/packages/configs/build/literaki/tiles/index.d.ts +0 -6
- package/packages/configs/build/literaki/tiles/index.js +0 -18
- package/packages/configs/build/literaki/tiles/tilesDe.d.ts +0 -6
- package/packages/configs/build/literaki/tiles/tilesDe.js +0 -34
- package/packages/configs/build/literaki/tiles/tilesEn.d.ts +0 -6
- package/packages/configs/build/literaki/tiles/tilesEn.js +0 -31
- package/packages/configs/build/literaki/tiles/tilesEs.d.ts +0 -6
- package/packages/configs/build/literaki/tiles/tilesEs.js +0 -33
- package/packages/configs/build/literaki/tiles/tilesFa.d.ts +0 -6
- package/packages/configs/build/literaki/tiles/tilesFa.js +0 -37
- package/packages/configs/build/literaki/tiles/tilesFr.d.ts +0 -6
- package/packages/configs/build/literaki/tiles/tilesFr.js +0 -31
- package/packages/configs/build/literaki/tiles/tilesPl.d.ts +0 -6
- package/packages/configs/build/literaki/tiles/tilesPl.js +0 -37
- package/packages/configs/build/scrabble/bonuses.d.ts +0 -7
- package/packages/configs/build/scrabble/bonuses.js +0 -67
- package/packages/configs/build/scrabble/index.d.ts +0 -1
- package/packages/configs/build/scrabble/index.js +0 -8
- package/packages/configs/build/scrabble/scrabble.d.ts +0 -13
- package/packages/configs/build/scrabble/scrabble.js +0 -31
- package/packages/configs/build/scrabble/tiles/index.d.ts +0 -6
- package/packages/configs/build/scrabble/tiles/index.js +0 -18
- package/packages/configs/build/scrabble/tiles/tilesDe.d.ts +0 -6
- package/packages/configs/build/scrabble/tiles/tilesDe.js +0 -34
- package/packages/configs/build/scrabble/tiles/tilesEn.d.ts +0 -6
- package/packages/configs/build/scrabble/tiles/tilesEn.js +0 -31
- package/packages/configs/build/scrabble/tiles/tilesEs.d.ts +0 -6
- package/packages/configs/build/scrabble/tiles/tilesEs.js +0 -33
- package/packages/configs/build/scrabble/tiles/tilesFa.d.ts +0 -6
- package/packages/configs/build/scrabble/tiles/tilesFa.js +0 -37
- package/packages/configs/build/scrabble/tiles/tilesFr.d.ts +0 -6
- package/packages/configs/build/scrabble/tiles/tilesFr.js +0 -31
- package/packages/configs/build/scrabble/tiles/tilesPl.d.ts +0 -6
- package/packages/configs/build/scrabble/tiles/tilesPl.js +0 -37
- package/packages/configs/src/getLocaleConfig.ts +0 -9
- package/packages/configs/src/isConfigId.ts +0 -10
- package/packages/configs/src/literaki/bonuses.ts +0 -99
- package/packages/configs/src/literaki/index.ts +0 -1
- package/packages/configs/src/literaki/literaki.ts +0 -30
- package/packages/configs/src/literaki/tiles/index.ts +0 -6
- package/packages/configs/src/literaki/tiles/tilesDe.ts +0 -33
- package/packages/configs/src/literaki/tiles/tilesEn.ts +0 -30
- package/packages/configs/src/literaki/tiles/tilesEs.ts +0 -32
- package/packages/configs/src/literaki/tiles/tilesFa.ts +0 -36
- package/packages/configs/src/literaki/tiles/tilesFr.ts +0 -30
- package/packages/configs/src/literaki/tiles/tilesPl.ts +0 -36
- package/packages/configs/src/scrabble/bonuses.ts +0 -67
- package/packages/configs/src/scrabble/index.ts +0 -1
- package/packages/configs/src/scrabble/scrabble.ts +0 -30
- package/packages/configs/src/scrabble/tiles/index.ts +0 -6
- package/packages/configs/src/scrabble/tiles/tilesDe.ts +0 -33
- package/packages/configs/src/scrabble/tiles/tilesEn.ts +0 -30
- package/packages/configs/src/scrabble/tiles/tilesEs.ts +0 -32
- package/packages/configs/src/scrabble/tiles/tilesFa.ts +0 -36
- package/packages/configs/src/scrabble/tiles/tilesFr.ts +0 -30
- package/packages/configs/src/scrabble/tiles/tilesPl.ts +0 -36
- package/packages/dictionaries/.scrabble-solver/dictionaries/de-DE.txt +0 -1
- package/packages/dictionaries/.scrabble-solver/dictionaries/en-GB.txt +0 -1
- package/packages/dictionaries/.scrabble-solver/dictionaries/en-US.txt +0 -1
- package/packages/dictionaries/.scrabble-solver/dictionaries/es-ES.txt +0 -1
- package/packages/dictionaries/.scrabble-solver/dictionaries/fa-IR.txt +0 -1
- package/packages/dictionaries/.scrabble-solver/dictionaries/fr-FR.txt +0 -1
- package/packages/dictionaries/.scrabble-solver/dictionaries/pl-PL.txt +0 -1
- package/packages/scrabble-solver/.next/static/chunks/pages/_app-02851b06b95b19cb.js +0 -32
- package/packages/scrabble-solver/.next/static/chunks/pages/index-0ba5607d1aad8a09.js +0 -1
- package/packages/scrabble-solver/.next/static/css/09dfdea53eba31a9.css +0 -2
- package/packages/scrabble-solver/.next/static/css/60e8258da7362a1a.css +0 -1
- package/packages/scrabble-solver/src/i18n/i18n.module.scss +0 -27
- package/packages/scrabble-solver/src/modals/SettingsModal/components/ConfigSetting/options.ts +0 -19
- package/packages/scrabble-solver/src/modals/SettingsModal/components/ConfigSetting/types.ts +0 -9
- package/packages/scrabble-solver/src/modals/SettingsModal/components/InputModeSetting/types.ts +0 -7
- package/packages/scrabble-solver/src/modals/SettingsModal/components/LocaleSetting/types.ts +0 -9
- /package/packages/scrabble-solver/.next/static/{9dmPfnTc_AQTHBPvL7xQe → 8oRk1nUMQYFWmhu4SExQI}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
/* eslint-disable max-lines */
|
|
2
|
+
|
|
1
3
|
import { Trie } from '@kamilmielnik/trie';
|
|
2
|
-
import {
|
|
4
|
+
import { getConfig } from '@scrabble-solver/configs';
|
|
3
5
|
import { dictionaries } from '@scrabble-solver/dictionaries';
|
|
4
|
-
import { Board, Locale, Result, Tile } from '@scrabble-solver/types';
|
|
6
|
+
import { Board, Game, Locale, Result, Tile } from '@scrabble-solver/types';
|
|
5
7
|
|
|
6
8
|
import solve from './solve';
|
|
7
9
|
|
|
@@ -16,9 +18,9 @@ const getBestResult = ([firstResult, ...results]: Result[]): Result => {
|
|
|
16
18
|
);
|
|
17
19
|
};
|
|
18
20
|
|
|
19
|
-
describe('solve - PL', () => {
|
|
21
|
+
describe('solve - pl-PL', () => {
|
|
20
22
|
const locale = Locale.PL_PL;
|
|
21
|
-
const config =
|
|
23
|
+
const config = getConfig(Game.Literaki, locale);
|
|
22
24
|
let trie: Trie | undefined;
|
|
23
25
|
|
|
24
26
|
beforeAll(() => {
|
|
@@ -99,11 +101,34 @@ describe('solve - PL', () => {
|
|
|
99
101
|
expect(bestResult.word).toBe('zmartwychwstałą');
|
|
100
102
|
expect(bestResult.points).toBe(1157);
|
|
101
103
|
});
|
|
104
|
+
|
|
105
|
+
it('does not duplicate results', () => {
|
|
106
|
+
const board = Board.fromStringArray([
|
|
107
|
+
' a ',
|
|
108
|
+
' a',
|
|
109
|
+
' ',
|
|
110
|
+
' ',
|
|
111
|
+
' ',
|
|
112
|
+
' ',
|
|
113
|
+
' ',
|
|
114
|
+
' ',
|
|
115
|
+
' ',
|
|
116
|
+
' ',
|
|
117
|
+
' ',
|
|
118
|
+
' ',
|
|
119
|
+
' ',
|
|
120
|
+
' ',
|
|
121
|
+
' ',
|
|
122
|
+
]);
|
|
123
|
+
const tiles = generateTiles(['d']);
|
|
124
|
+
const results = solve(trie!, config, board, tiles);
|
|
125
|
+
expect(results.length).toBe(4);
|
|
126
|
+
});
|
|
102
127
|
});
|
|
103
128
|
|
|
104
|
-
describe('solve - ES', () => {
|
|
129
|
+
describe('solve - es-ES', () => {
|
|
105
130
|
const locale = Locale.ES_ES;
|
|
106
|
-
const config =
|
|
131
|
+
const config = getConfig(Game.Scrabble, locale);
|
|
107
132
|
let trie: Trie | undefined;
|
|
108
133
|
|
|
109
134
|
beforeAll(() => {
|
|
@@ -161,3 +186,40 @@ describe('solve - ES', () => {
|
|
|
161
186
|
expect(words).not.toContain('chocho');
|
|
162
187
|
});
|
|
163
188
|
});
|
|
189
|
+
|
|
190
|
+
describe('solve - en-GB', () => {
|
|
191
|
+
const locale = Locale.EN_GB;
|
|
192
|
+
const config = getConfig(Game.Scrabble, locale);
|
|
193
|
+
let trie: Trie | undefined;
|
|
194
|
+
|
|
195
|
+
beforeAll(() => {
|
|
196
|
+
return dictionaries.get(locale).then((loadedTrie) => {
|
|
197
|
+
trie = loadedTrie;
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it('no', () => {
|
|
202
|
+
const board = Board.fromStringArray([
|
|
203
|
+
' ',
|
|
204
|
+
' ko',
|
|
205
|
+
' ',
|
|
206
|
+
' ',
|
|
207
|
+
' ',
|
|
208
|
+
' ',
|
|
209
|
+
' ',
|
|
210
|
+
' ',
|
|
211
|
+
' ',
|
|
212
|
+
' ',
|
|
213
|
+
' ',
|
|
214
|
+
' ',
|
|
215
|
+
' ',
|
|
216
|
+
' ',
|
|
217
|
+
' ',
|
|
218
|
+
]);
|
|
219
|
+
const tiles = generateTiles(['n']);
|
|
220
|
+
const results = solve(trie!, config, board, tiles).map(Result.fromJson);
|
|
221
|
+
expect(results.some((result) => result.word === 'no')).toBe(true);
|
|
222
|
+
expect(results.some((result) => result.word === 'on')).toBe(true);
|
|
223
|
+
expect(results.length).toBe(2);
|
|
224
|
+
});
|
|
225
|
+
});
|
|
@@ -10,7 +10,10 @@ import getUniquePatterns from './getUniquePatterns';
|
|
|
10
10
|
const solve = (trie: Trie, config: Config, board: Board, tiles: Tile[]): ResultJson[] => {
|
|
11
11
|
const patterns = generatePatterns(config, board);
|
|
12
12
|
const filledPatterns = patterns.flatMap((pattern) => fillPattern(trie, config, pattern, tiles));
|
|
13
|
-
const validPatterns =
|
|
13
|
+
const validPatterns =
|
|
14
|
+
config.twoCharacterTiles.length > 0
|
|
15
|
+
? filledPatterns.filter((pattern) => areDigraphsValid(config, pattern))
|
|
16
|
+
: filledPatterns;
|
|
14
17
|
const uniquePatterns = getUniquePatterns(validPatterns);
|
|
15
18
|
const results = uniquePatterns.map((pattern, index) => ({
|
|
16
19
|
cells: pattern.cells.map((cell) => cell.toJson()),
|
|
@@ -2,6 +2,7 @@ import Bonus from './Bonus';
|
|
|
2
2
|
import BonusValue from './BonusValue';
|
|
3
3
|
import Cell from './Cell';
|
|
4
4
|
import ConfigJson from './ConfigJson';
|
|
5
|
+
import Game from './Game';
|
|
5
6
|
import Locale from './Locale';
|
|
6
7
|
import Tile from './Tile';
|
|
7
8
|
import TileConfig from './TileConfig';
|
|
@@ -17,6 +18,7 @@ declare class Config {
|
|
|
17
18
|
get blanksCount(): number;
|
|
18
19
|
get boardHeight(): number;
|
|
19
20
|
get boardWidth(): number;
|
|
21
|
+
get game(): Game;
|
|
20
22
|
get locale(): Locale;
|
|
21
23
|
get twoCharacterTiles(): string[];
|
|
22
24
|
getCellBonus(cell: Cell): Bonus | undefined;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import BonusJson from './BonusJson';
|
|
2
|
+
import Game from './Game';
|
|
2
3
|
import Locale from './Locale';
|
|
3
4
|
import TileConfig from './TileConfig';
|
|
4
5
|
interface ConfigJson {
|
|
@@ -8,7 +9,7 @@ interface ConfigJson {
|
|
|
8
9
|
boardHeight: number;
|
|
9
10
|
boardWidth: number;
|
|
10
11
|
bonuses: BonusJson[];
|
|
11
|
-
|
|
12
|
+
game: Game;
|
|
12
13
|
locale: Locale;
|
|
13
14
|
maximumCharactersCount: number;
|
|
14
15
|
name: string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isGame = void 0;
|
|
4
|
+
var Game;
|
|
5
|
+
(function (Game) {
|
|
6
|
+
Game["Literaki"] = "literaki";
|
|
7
|
+
Game["Scrabble"] = "scrabble";
|
|
8
|
+
Game["SuperScrabble"] = "super-scrabble";
|
|
9
|
+
})(Game || (Game = {}));
|
|
10
|
+
const games = Object.values(Game);
|
|
11
|
+
const isGame = (locale) => games.includes(locale);
|
|
12
|
+
exports.isGame = isGame;
|
|
13
|
+
exports.default = Game;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isLocale = void 0;
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Locales are defined using IETF language tags
|
|
6
|
+
* @see https://en.wikipedia.org/wiki/IETF_language_tag
|
|
7
|
+
* @see https://en.wikipedia.org/wiki/ISO_3166-1
|
|
8
|
+
*/
|
|
5
9
|
var Locale;
|
|
6
10
|
(function (Locale) {
|
|
7
11
|
Locale["DE_DE"] = "de-DE";
|
|
@@ -10,10 +10,10 @@ export { default as Collision } from './Collision';
|
|
|
10
10
|
export { default as CollisionJson } from './CollisionJson';
|
|
11
11
|
export { default as Config } from './Config';
|
|
12
12
|
export { default as ConfigJson } from './ConfigJson';
|
|
13
|
+
export { default as Dictionary } from './Dictionary';
|
|
13
14
|
export { default as FinalPattern } from './FinalPattern';
|
|
15
|
+
export { default as Game, isGame } from './Game';
|
|
14
16
|
export { default as HorizontalPattern } from './HorizontalPattern';
|
|
15
|
-
export { default as isError } from './isError';
|
|
16
|
-
export { default as isObject } from './isObject';
|
|
17
17
|
export { default as Locale, isLocale } from './Locale';
|
|
18
18
|
export { default as Pattern } from './Pattern';
|
|
19
19
|
export { default as PatternJson } from './PatternJson';
|
|
@@ -26,3 +26,5 @@ export { default as VerticalPattern } from './VerticalPattern';
|
|
|
26
26
|
export { default as WordBonus } from './WordBonus';
|
|
27
27
|
export { default as WordDefinition } from './WordDefinition';
|
|
28
28
|
export { default as WordDefinitionJson } from './WordDefinitionJson';
|
|
29
|
+
export { default as isError } from './isError';
|
|
30
|
+
export { default as isObject } from './isObject';
|
|
@@ -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.WordDefinition = exports.WordBonus = exports.VerticalPattern = exports.isTileJson = exports.Tile = exports.Result = exports.Pattern = exports.isLocale = exports.Locale = exports.
|
|
6
|
+
exports.isObject = exports.isError = exports.WordDefinition = exports.WordBonus = exports.VerticalPattern = exports.isTileJson = exports.Tile = exports.Result = exports.Pattern = exports.isLocale = exports.Locale = exports.HorizontalPattern = exports.isGame = exports.Game = exports.FinalPattern = exports.Config = exports.CharacterBonus = exports.isCellJson = exports.Cell = exports.Bonus = exports.isBoardJson = exports.Board = void 0;
|
|
7
7
|
var Board_1 = require("./Board");
|
|
8
8
|
Object.defineProperty(exports, "Board", { enumerable: true, get: function () { return __importDefault(Board_1).default; } });
|
|
9
9
|
var BoardJson_1 = require("./BoardJson");
|
|
@@ -20,12 +20,11 @@ var Config_1 = require("./Config");
|
|
|
20
20
|
Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return __importDefault(Config_1).default; } });
|
|
21
21
|
var FinalPattern_1 = require("./FinalPattern");
|
|
22
22
|
Object.defineProperty(exports, "FinalPattern", { enumerable: true, get: function () { return __importDefault(FinalPattern_1).default; } });
|
|
23
|
+
var Game_1 = require("./Game");
|
|
24
|
+
Object.defineProperty(exports, "Game", { enumerable: true, get: function () { return __importDefault(Game_1).default; } });
|
|
25
|
+
Object.defineProperty(exports, "isGame", { enumerable: true, get: function () { return Game_1.isGame; } });
|
|
23
26
|
var HorizontalPattern_1 = require("./HorizontalPattern");
|
|
24
27
|
Object.defineProperty(exports, "HorizontalPattern", { enumerable: true, get: function () { return __importDefault(HorizontalPattern_1).default; } });
|
|
25
|
-
var isError_1 = require("./isError");
|
|
26
|
-
Object.defineProperty(exports, "isError", { enumerable: true, get: function () { return __importDefault(isError_1).default; } });
|
|
27
|
-
var isObject_1 = require("./isObject");
|
|
28
|
-
Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return __importDefault(isObject_1).default; } });
|
|
29
28
|
var Locale_1 = require("./Locale");
|
|
30
29
|
Object.defineProperty(exports, "Locale", { enumerable: true, get: function () { return __importDefault(Locale_1).default; } });
|
|
31
30
|
Object.defineProperty(exports, "isLocale", { enumerable: true, get: function () { return Locale_1.isLocale; } });
|
|
@@ -43,3 +42,7 @@ var WordBonus_1 = require("./WordBonus");
|
|
|
43
42
|
Object.defineProperty(exports, "WordBonus", { enumerable: true, get: function () { return __importDefault(WordBonus_1).default; } });
|
|
44
43
|
var WordDefinition_1 = require("./WordDefinition");
|
|
45
44
|
Object.defineProperty(exports, "WordDefinition", { enumerable: true, get: function () { return __importDefault(WordDefinition_1).default; } });
|
|
45
|
+
var isError_1 = require("./isError");
|
|
46
|
+
Object.defineProperty(exports, "isError", { enumerable: true, get: function () { return __importDefault(isError_1).default; } });
|
|
47
|
+
var isObject_1 = require("./isObject");
|
|
48
|
+
Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return __importDefault(isObject_1).default; } });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/types",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.4",
|
|
4
4
|
"description": "Scrabble Solver 2 - Types",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"clean:force": "npm run clean && rimraf package-lock.json"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@scrabble-solver/constants": "^2.12.
|
|
27
|
+
"@scrabble-solver/constants": "^2.12.4"
|
|
28
28
|
},
|
|
29
29
|
"gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
|
|
30
30
|
}
|
|
@@ -5,6 +5,7 @@ import BonusValue from './BonusValue';
|
|
|
5
5
|
import Cell from './Cell';
|
|
6
6
|
import CharacterBonus from './CharacterBonus';
|
|
7
7
|
import ConfigJson from './ConfigJson';
|
|
8
|
+
import Game from './Game';
|
|
8
9
|
import Locale from './Locale';
|
|
9
10
|
import Tile from './Tile';
|
|
10
11
|
import TileConfig from './TileConfig';
|
|
@@ -51,6 +52,10 @@ class Config {
|
|
|
51
52
|
return this.config.boardWidth;
|
|
52
53
|
}
|
|
53
54
|
|
|
55
|
+
public get game(): Game {
|
|
56
|
+
return this.config.game;
|
|
57
|
+
}
|
|
58
|
+
|
|
54
59
|
public get locale(): Locale {
|
|
55
60
|
return this.config.locale;
|
|
56
61
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import BonusJson from './BonusJson';
|
|
2
|
+
import Game from './Game';
|
|
2
3
|
import Locale from './Locale';
|
|
3
4
|
import TileConfig from './TileConfig';
|
|
4
5
|
|
|
@@ -9,7 +10,7 @@ interface ConfigJson {
|
|
|
9
10
|
boardHeight: number;
|
|
10
11
|
boardWidth: number;
|
|
11
12
|
bonuses: BonusJson[];
|
|
12
|
-
|
|
13
|
+
game: Game;
|
|
13
14
|
locale: Locale;
|
|
14
15
|
maximumCharactersCount: number;
|
|
15
16
|
name: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
enum Game {
|
|
2
|
+
Literaki = 'literaki',
|
|
3
|
+
Scrabble = 'scrabble',
|
|
4
|
+
SuperScrabble = 'super-scrabble',
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const games = Object.values(Game);
|
|
8
|
+
|
|
9
|
+
export const isGame = (locale: unknown): locale is Game => games.includes(locale as Game);
|
|
10
|
+
|
|
11
|
+
export default Game;
|
|
@@ -10,10 +10,10 @@ export { default as Collision } from './Collision';
|
|
|
10
10
|
export { default as CollisionJson } from './CollisionJson';
|
|
11
11
|
export { default as Config } from './Config';
|
|
12
12
|
export { default as ConfigJson } from './ConfigJson';
|
|
13
|
+
export { default as Dictionary } from './Dictionary';
|
|
13
14
|
export { default as FinalPattern } from './FinalPattern';
|
|
15
|
+
export { default as Game, isGame } from './Game';
|
|
14
16
|
export { default as HorizontalPattern } from './HorizontalPattern';
|
|
15
|
-
export { default as isError } from './isError';
|
|
16
|
-
export { default as isObject } from './isObject';
|
|
17
17
|
export { default as Locale, isLocale } from './Locale';
|
|
18
18
|
export { default as Pattern } from './Pattern';
|
|
19
19
|
export { default as PatternJson } from './PatternJson';
|
|
@@ -26,3 +26,5 @@ export { default as VerticalPattern } from './VerticalPattern';
|
|
|
26
26
|
export { default as WordBonus } from './WordBonus';
|
|
27
27
|
export { default as WordDefinition } from './WordDefinition';
|
|
28
28
|
export { default as WordDefinitionJson } from './WordDefinitionJson';
|
|
29
|
+
export { default as isError } from './isError';
|
|
30
|
+
export { default as isObject } from './isObject';
|
|
@@ -15,7 +15,9 @@ const normalizeQuotes = (definition) => definition.replace(/\."/g, '".');
|
|
|
15
15
|
const normalizeMarkers = (definition) => definition.replace(/^\(\d+\.\d+\)\s+/g, '');
|
|
16
16
|
const normalizeTrailingSymbols = (definition) => definition.trim().replace(/:$/, '');
|
|
17
17
|
const normalizeLeadingSymbols = (definition) => definition.trim().replace(/^:/, '');
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* @see https://stackoverflow.com/a/40732368
|
|
20
|
+
*/
|
|
19
21
|
const normalizeNonWords = (definition) => (/[\w\u0621-\u064A]+/.test(definition) ? definition : '');
|
|
20
22
|
const normalizeCommas = (definition) => {
|
|
21
23
|
return definition
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/word-definitions",
|
|
3
|
-
"version": "2.12.
|
|
4
|
-
"lockfileVersion":
|
|
3
|
+
"version": "2.12.4",
|
|
4
|
+
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@scrabble-solver/word-definitions",
|
|
9
|
-
"version": "2.12.
|
|
9
|
+
"version": "2.12.4",
|
|
10
10
|
"license": "CC-BY-NC-ND-4.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"cheerio": "^1.0.0-rc.12",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"node_modules/@types/node": {
|
|
30
|
-
"version": "
|
|
31
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-
|
|
32
|
-
"integrity": "sha512-
|
|
30
|
+
"version": "20.4.5",
|
|
31
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz",
|
|
32
|
+
"integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==",
|
|
33
33
|
"dev": true
|
|
34
34
|
},
|
|
35
35
|
"node_modules/boolbase": {
|
|
@@ -138,22 +138,22 @@
|
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
140
|
"node_modules/domutils": {
|
|
141
|
-
"version": "3.0
|
|
142
|
-
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.
|
|
143
|
-
"integrity": "sha512-
|
|
141
|
+
"version": "3.1.0",
|
|
142
|
+
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
|
|
143
|
+
"integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
|
|
144
144
|
"dependencies": {
|
|
145
145
|
"dom-serializer": "^2.0.0",
|
|
146
146
|
"domelementtype": "^2.3.0",
|
|
147
|
-
"domhandler": "^5.0.
|
|
147
|
+
"domhandler": "^5.0.3"
|
|
148
148
|
},
|
|
149
149
|
"funding": {
|
|
150
150
|
"url": "https://github.com/fb55/domutils?sponsor=1"
|
|
151
151
|
}
|
|
152
152
|
},
|
|
153
153
|
"node_modules/entities": {
|
|
154
|
-
"version": "4.
|
|
155
|
-
"resolved": "https://registry.npmjs.org/entities/-/entities-4.
|
|
156
|
-
"integrity": "sha512-
|
|
154
|
+
"version": "4.5.0",
|
|
155
|
+
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
|
156
|
+
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
|
157
157
|
"engines": {
|
|
158
158
|
"node": ">=0.12"
|
|
159
159
|
},
|
|
@@ -237,155 +237,5 @@
|
|
|
237
237
|
"resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
|
|
238
238
|
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
|
|
239
239
|
}
|
|
240
|
-
},
|
|
241
|
-
"dependencies": {
|
|
242
|
-
"@types/follow-redirects": {
|
|
243
|
-
"version": "1.14.1",
|
|
244
|
-
"resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.1.tgz",
|
|
245
|
-
"integrity": "sha512-THBEFwqsLuU/K62B5JRwab9NW97cFmL4Iy34NTMX0bMycQVzq2q7PKOkhfivIwxdpa/J72RppgC42vCHfwKJ0Q==",
|
|
246
|
-
"dev": true,
|
|
247
|
-
"requires": {
|
|
248
|
-
"@types/node": "*"
|
|
249
|
-
}
|
|
250
|
-
},
|
|
251
|
-
"@types/node": {
|
|
252
|
-
"version": "18.15.11",
|
|
253
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
|
|
254
|
-
"integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
|
|
255
|
-
"dev": true
|
|
256
|
-
},
|
|
257
|
-
"boolbase": {
|
|
258
|
-
"version": "1.0.0",
|
|
259
|
-
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
|
260
|
-
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
|
|
261
|
-
},
|
|
262
|
-
"cheerio": {
|
|
263
|
-
"version": "1.0.0-rc.12",
|
|
264
|
-
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
|
|
265
|
-
"integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
|
|
266
|
-
"requires": {
|
|
267
|
-
"cheerio-select": "^2.1.0",
|
|
268
|
-
"dom-serializer": "^2.0.0",
|
|
269
|
-
"domhandler": "^5.0.3",
|
|
270
|
-
"domutils": "^3.0.1",
|
|
271
|
-
"htmlparser2": "^8.0.1",
|
|
272
|
-
"parse5": "^7.0.0",
|
|
273
|
-
"parse5-htmlparser2-tree-adapter": "^7.0.0"
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
"cheerio-select": {
|
|
277
|
-
"version": "2.1.0",
|
|
278
|
-
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
|
|
279
|
-
"integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
|
|
280
|
-
"requires": {
|
|
281
|
-
"boolbase": "^1.0.0",
|
|
282
|
-
"css-select": "^5.1.0",
|
|
283
|
-
"css-what": "^6.1.0",
|
|
284
|
-
"domelementtype": "^2.3.0",
|
|
285
|
-
"domhandler": "^5.0.3",
|
|
286
|
-
"domutils": "^3.0.1"
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
"css-select": {
|
|
290
|
-
"version": "5.1.0",
|
|
291
|
-
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
|
|
292
|
-
"integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
|
|
293
|
-
"requires": {
|
|
294
|
-
"boolbase": "^1.0.0",
|
|
295
|
-
"css-what": "^6.1.0",
|
|
296
|
-
"domhandler": "^5.0.2",
|
|
297
|
-
"domutils": "^3.0.1",
|
|
298
|
-
"nth-check": "^2.0.1"
|
|
299
|
-
}
|
|
300
|
-
},
|
|
301
|
-
"css-what": {
|
|
302
|
-
"version": "6.1.0",
|
|
303
|
-
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
|
|
304
|
-
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
|
|
305
|
-
},
|
|
306
|
-
"dom-serializer": {
|
|
307
|
-
"version": "2.0.0",
|
|
308
|
-
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
|
|
309
|
-
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
|
|
310
|
-
"requires": {
|
|
311
|
-
"domelementtype": "^2.3.0",
|
|
312
|
-
"domhandler": "^5.0.2",
|
|
313
|
-
"entities": "^4.2.0"
|
|
314
|
-
}
|
|
315
|
-
},
|
|
316
|
-
"domelementtype": {
|
|
317
|
-
"version": "2.3.0",
|
|
318
|
-
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
|
|
319
|
-
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
|
|
320
|
-
},
|
|
321
|
-
"domhandler": {
|
|
322
|
-
"version": "5.0.3",
|
|
323
|
-
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
|
|
324
|
-
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
|
|
325
|
-
"requires": {
|
|
326
|
-
"domelementtype": "^2.3.0"
|
|
327
|
-
}
|
|
328
|
-
},
|
|
329
|
-
"domutils": {
|
|
330
|
-
"version": "3.0.1",
|
|
331
|
-
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
|
|
332
|
-
"integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
|
|
333
|
-
"requires": {
|
|
334
|
-
"dom-serializer": "^2.0.0",
|
|
335
|
-
"domelementtype": "^2.3.0",
|
|
336
|
-
"domhandler": "^5.0.1"
|
|
337
|
-
}
|
|
338
|
-
},
|
|
339
|
-
"entities": {
|
|
340
|
-
"version": "4.4.0",
|
|
341
|
-
"resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
|
|
342
|
-
"integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA=="
|
|
343
|
-
},
|
|
344
|
-
"follow-redirects": {
|
|
345
|
-
"version": "1.15.2",
|
|
346
|
-
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
|
|
347
|
-
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
|
|
348
|
-
},
|
|
349
|
-
"htmlparser2": {
|
|
350
|
-
"version": "8.0.2",
|
|
351
|
-
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
|
|
352
|
-
"integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
|
|
353
|
-
"requires": {
|
|
354
|
-
"domelementtype": "^2.3.0",
|
|
355
|
-
"domhandler": "^5.0.3",
|
|
356
|
-
"domutils": "^3.0.1",
|
|
357
|
-
"entities": "^4.4.0"
|
|
358
|
-
}
|
|
359
|
-
},
|
|
360
|
-
"nth-check": {
|
|
361
|
-
"version": "2.1.1",
|
|
362
|
-
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
|
363
|
-
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
|
|
364
|
-
"requires": {
|
|
365
|
-
"boolbase": "^1.0.0"
|
|
366
|
-
}
|
|
367
|
-
},
|
|
368
|
-
"parse5": {
|
|
369
|
-
"version": "7.1.2",
|
|
370
|
-
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
|
|
371
|
-
"integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
|
|
372
|
-
"requires": {
|
|
373
|
-
"entities": "^4.4.0"
|
|
374
|
-
}
|
|
375
|
-
},
|
|
376
|
-
"parse5-htmlparser2-tree-adapter": {
|
|
377
|
-
"version": "7.0.0",
|
|
378
|
-
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
|
|
379
|
-
"integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
|
|
380
|
-
"requires": {
|
|
381
|
-
"domhandler": "^5.0.2",
|
|
382
|
-
"parse5": "^7.0.0"
|
|
383
|
-
}
|
|
384
|
-
},
|
|
385
|
-
"striptags": {
|
|
386
|
-
"version": "3.2.0",
|
|
387
|
-
"resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
|
|
388
|
-
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
|
|
389
|
-
}
|
|
390
240
|
}
|
|
391
241
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/word-definitions",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.4",
|
|
4
4
|
"description": "Scrabble Solver 2 - Word definitions",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"clean": "rimraf build/ node_modules/ package-lock.json"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@scrabble-solver/types": "^2.12.
|
|
26
|
+
"@scrabble-solver/types": "^2.12.4",
|
|
27
27
|
"cheerio": "^1.0.0-rc.12",
|
|
28
28
|
"follow-redirects": "^1.15.2",
|
|
29
29
|
"striptags": "^3.2.0"
|
|
@@ -21,7 +21,9 @@ const normalizeTrailingSymbols: Normalize = (definition) => definition.trim().re
|
|
|
21
21
|
|
|
22
22
|
const normalizeLeadingSymbols: Normalize = (definition) => definition.trim().replace(/^:/, '');
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* @see https://stackoverflow.com/a/40732368
|
|
26
|
+
*/
|
|
25
27
|
const normalizeNonWords: Normalize = (definition) => (/[\w\u0621-\u064A]+/.test(definition) ? definition : '');
|
|
26
28
|
|
|
27
29
|
const normalizeCommas: Normalize = (definition) => {
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const types_1 = require("@scrabble-solver/types");
|
|
4
4
|
const lib_1 = require("./lib");
|
|
5
|
-
const FILE_URL =
|
|
6
|
-
// eslint-disable-next-line max-len
|
|
7
|
-
'https://raw.githubusercontent.com/hbenbel/French-Dictionary/a573eab10cc798d7d5da7daab4d2ac0259bb46a3/dictionary/dictionary.txt';
|
|
5
|
+
const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/french-dictionary/master/fr-FR.txt';
|
|
8
6
|
const getFrFrWordList = async () => {
|
|
9
7
|
const words = await (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.FR_FR);
|
|
10
8
|
return words.map(normalizeWord);
|