scrabble-solver 2.12.1 → 2.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -4
- package/lerna.json +1 -1
- package/package.json +9 -8
- 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 +4 -4
- 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 +2 -2
- package/packages/dictionaries/package-lock.json +3 -10
- package/packages/dictionaries/package.json +5 -5
- package/packages/logger/package-lock.json +3 -224
- package/packages/logger/package.json +2 -2
- package/packages/scrabble-solver/.next/BUILD_ID +1 -1
- package/packages/scrabble-solver/.next/build-manifest.json +14 -14
- 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/required-server-files.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 +1202 -1013
- package/packages/scrabble-solver/.next/server/chunks/44.js +36 -6
- package/packages/scrabble-solver/.next/server/chunks/675.js +35 -13
- package/packages/scrabble-solver/.next/server/chunks/859.js +21 -4
- package/packages/scrabble-solver/.next/server/chunks/865.js +478 -106
- 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/api/dictionary/[locale]/[word].js +4 -2
- package/packages/scrabble-solver/.next/server/pages/api/solve.js +51 -20
- 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 +55 -65
- 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/chunks/{framework-2c5cac93e8c637b5.js → framework-2c29dc3cd933590b.js} +2 -2
- package/packages/scrabble-solver/.next/static/chunks/main-4dcb7f9b52833aba.js +1 -0
- 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/static/{_yG9K-PD5kWT_p4sMdCSV → wNIKOJJzkMSJYb2nOL21o}/_buildManifest.js +1 -1
- package/packages/scrabble-solver/.next/trace +51 -52
- package/packages/scrabble-solver/package-lock.json +269 -5105
- package/packages/scrabble-solver/package.json +13 -13
- package/packages/scrabble-solver/src/components/Board/Board.module.scss +33 -0
- package/packages/scrabble-solver/src/components/Board/Board.tsx +3 -0
- package/packages/scrabble-solver/src/components/Board/BoardPure.tsx +25 -1
- 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/components/InputPrompt/InputPrompt.tsx +1 -0
- package/packages/scrabble-solver/src/components/Board/hooks/useBackgroundImage.tsx +24 -6
- package/packages/scrabble-solver/src/components/PlainTiles/lib/createPlainTile.ts +4 -4
- package/packages/scrabble-solver/src/components/Rack/components/InputPrompt/InputPrompt.tsx +1 -0
- 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/SettingsModal.tsx +7 -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 +10 -10
- 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/README.md +1 -1
- package/packages/solver/build/areDigraphsValid.d.ts +3 -0
- package/packages/solver/build/areDigraphsValid.js +16 -0
- package/packages/solver/build/getPatternHash.js +2 -2
- package/packages/solver/build/index.d.ts +1 -0
- package/packages/solver/build/index.js +3 -1
- package/packages/solver/build/solve.js +5 -1
- package/packages/solver/package-lock.json +3 -10
- package/packages/solver/package.json +6 -6
- package/packages/solver/src/areDigraphsValid.ts +20 -0
- 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 +13 -3
- package/packages/solver/src/index.ts +1 -0
- package/packages/solver/src/solve.test.ts +93 -7
- package/packages/solver/src/solve.ts +6 -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 +3 -3
- 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 +9 -159
- package/packages/word-definitions/package.json +3 -3
- package/packages/word-definitions/src/lib/normalizeDefinition.ts +3 -1
- package/packages/word-lists/package-lock.json +9 -401
- package/packages/word-lists/package.json +3 -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/scrabble-solver/.next/static/chunks/main-0ecb9ccfcb6c9b24.js +0 -1
- package/packages/scrabble-solver/.next/static/chunks/pages/_app-bea4539a6b8042de.js +0 -32
- package/packages/scrabble-solver/.next/static/chunks/pages/index-4e8566409753e1c3.js +0 -1
- package/packages/scrabble-solver/.next/static/css/58053f9594647860.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/{_yG9K-PD5kWT_p4sMdCSV → wNIKOJJzkMSJYb2nOL21o}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Locale } from '@scrabble-solver/types';
|
|
1
|
+
import { Game, Locale } from '@scrabble-solver/types';
|
|
3
2
|
|
|
4
3
|
import { guessLocale } from 'lib';
|
|
5
4
|
import { AutoGroupTiles, InputMode } from 'types';
|
|
@@ -8,7 +7,7 @@ import localStorage from '../localStorage';
|
|
|
8
7
|
|
|
9
8
|
export interface SettingsState {
|
|
10
9
|
autoGroupTiles: AutoGroupTiles;
|
|
11
|
-
|
|
10
|
+
game: Game;
|
|
12
11
|
inputMode: InputMode;
|
|
13
12
|
locale: Locale;
|
|
14
13
|
}
|
|
@@ -18,7 +17,7 @@ const isTouchScreen = typeof globalThis.matchMedia !== 'undefined' && globalThis
|
|
|
18
17
|
|
|
19
18
|
const settingsInitialState: SettingsState = {
|
|
20
19
|
autoGroupTiles: typeof localStorageAutoGroupTiles === 'undefined' ? 'left' : localStorageAutoGroupTiles,
|
|
21
|
-
|
|
20
|
+
game: localStorage.getGame() || Game.Scrabble,
|
|
22
21
|
inputMode: localStorage.getInputMode() || (isTouchScreen ? 'touchscreen' : 'keyboard'),
|
|
23
22
|
locale: localStorage.getLocale() || guessLocale(),
|
|
24
23
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
2
|
-
import { Locale } from '@scrabble-solver/types';
|
|
2
|
+
import { Game, Locale } from '@scrabble-solver/types';
|
|
3
3
|
|
|
4
4
|
import { AutoGroupTiles, InputMode } from 'types';
|
|
5
5
|
|
|
@@ -14,9 +14,9 @@ const settingsSlice = createSlice({
|
|
|
14
14
|
return { ...state, autoGroupTiles };
|
|
15
15
|
},
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
return { ...state,
|
|
17
|
+
changeGame: (state, action: PayloadAction<Game>) => {
|
|
18
|
+
const game = action.payload;
|
|
19
|
+
return { ...state, game };
|
|
20
20
|
},
|
|
21
21
|
|
|
22
22
|
changeInputMode: (state, action: PayloadAction<InputMode>) => {
|
|
@@ -29,7 +29,7 @@ const settingsSlice = createSlice({
|
|
|
29
29
|
return { ...state, locale };
|
|
30
30
|
},
|
|
31
31
|
|
|
32
|
-
init: (state, action: PayloadAction<Partial<Pick<typeof settingsInitialState, '
|
|
32
|
+
init: (state, action: PayloadAction<Partial<Pick<typeof settingsInitialState, 'game' | 'locale'>>>) => {
|
|
33
33
|
return { ...state, ...action.payload };
|
|
34
34
|
},
|
|
35
35
|
},
|
|
@@ -97,20 +97,11 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
|
|
|
97
97
|
--z-index--close-button: 101;
|
|
98
98
|
--z-index--tooltip: 102;
|
|
99
99
|
|
|
100
|
-
--flag--de--aspect-ratio: 20 / 12;
|
|
101
|
-
--flag--es--aspect-ratio: 750 / 500;
|
|
102
|
-
--flag--fa--aspect-ratio: 630 / 360;
|
|
103
|
-
--flag--fr--aspect-ratio: 24 / 15;
|
|
104
|
-
--flag--gb--aspect-ratio: 60 / 30;
|
|
105
|
-
--flag--pl--aspect-ratio: 16 / 10;
|
|
106
|
-
--flag--us--aspect-ratio: 7410 / 3900;
|
|
107
|
-
|
|
108
100
|
--button--icon--size: 24px;
|
|
109
101
|
--dictionary--height: 260px;
|
|
110
102
|
--dictionary--height--mobile: 110px;
|
|
111
103
|
--key--height: 36px;
|
|
112
104
|
--key--icon--size: 16px;
|
|
113
|
-
--logo--aspect-ratio: 682 / 166;
|
|
114
105
|
--logo--height: 60px;
|
|
115
106
|
--modal--width: 370px;
|
|
116
107
|
--nav--height: calc(var(--logo--height) + var(--nav--padding));
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const areDigraphsValid = (config, pattern) => {
|
|
4
|
+
const { twoCharacterTiles } = config;
|
|
5
|
+
const { cells } = pattern;
|
|
6
|
+
for (let index = 0; index < cells.length - 1; ++index) {
|
|
7
|
+
const current = cells[index];
|
|
8
|
+
const next = cells[index + 1];
|
|
9
|
+
const digraphCandidate = current.tile.character + next.tile.character;
|
|
10
|
+
if (twoCharacterTiles.includes(digraphCandidate)) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
};
|
|
16
|
+
exports.default = areDigraphsValid;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const getPatternHash = (pattern) => {
|
|
4
4
|
return pattern.cells
|
|
5
|
+
.filter((cell) => cell.isEmpty)
|
|
5
6
|
.map((cell) => {
|
|
6
7
|
const blank = cell.tile.isBlank ? '!' : '';
|
|
7
8
|
const tile = cell.tile.character + blank;
|
|
8
|
-
|
|
9
|
-
return cell.x + ',' + cell.y + ',' + tile;
|
|
9
|
+
return [cell.x, cell.y, tile].join(',');
|
|
10
10
|
})
|
|
11
11
|
.join('-');
|
|
12
12
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { default as areDigraphsValid } from './areDigraphsValid';
|
|
1
2
|
export { default as fillPattern } from './fillPattern';
|
|
2
3
|
export { default as generateEndIndices } from './generateEndIndices';
|
|
3
4
|
export { default as generateHorizontalPatterns } from './generateHorizontalPatterns';
|
|
@@ -3,7 +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
|
-
exports.solve = exports.getUniquePatterns = exports.getPatternScore = exports.getPatternHash = exports.getCellsScore = exports.generateVerticalPatterns = exports.generateVectors = exports.generateStartIndices = exports.generatePatterns = exports.generatePattern = exports.generateHorizontalPatterns = exports.generateEndIndices = exports.fillPattern = void 0;
|
|
6
|
+
exports.solve = exports.getUniquePatterns = exports.getPatternScore = exports.getPatternHash = exports.getCellsScore = exports.generateVerticalPatterns = exports.generateVectors = exports.generateStartIndices = exports.generatePatterns = exports.generatePattern = exports.generateHorizontalPatterns = exports.generateEndIndices = exports.fillPattern = exports.areDigraphsValid = void 0;
|
|
7
|
+
var areDigraphsValid_1 = require("./areDigraphsValid");
|
|
8
|
+
Object.defineProperty(exports, "areDigraphsValid", { enumerable: true, get: function () { return __importDefault(areDigraphsValid_1).default; } });
|
|
7
9
|
var fillPattern_1 = require("./fillPattern");
|
|
8
10
|
Object.defineProperty(exports, "fillPattern", { enumerable: true, get: function () { return __importDefault(fillPattern_1).default; } });
|
|
9
11
|
var generateEndIndices_1 = require("./generateEndIndices");
|
|
@@ -3,6 +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
|
+
const areDigraphsValid_1 = __importDefault(require("./areDigraphsValid"));
|
|
6
7
|
const fillPattern_1 = __importDefault(require("./fillPattern"));
|
|
7
8
|
const generatePatterns_1 = __importDefault(require("./generatePatterns"));
|
|
8
9
|
const getPatternScore_1 = __importDefault(require("./getPatternScore"));
|
|
@@ -10,7 +11,10 @@ const getUniquePatterns_1 = __importDefault(require("./getUniquePatterns"));
|
|
|
10
11
|
const solve = (trie, config, board, tiles) => {
|
|
11
12
|
const patterns = (0, generatePatterns_1.default)(config, board);
|
|
12
13
|
const filledPatterns = patterns.flatMap((pattern) => (0, fillPattern_1.default)(trie, config, pattern, tiles));
|
|
13
|
-
const
|
|
14
|
+
const validPatterns = config.twoCharacterTiles.length > 0
|
|
15
|
+
? filledPatterns.filter((pattern) => (0, areDigraphsValid_1.default)(config, pattern))
|
|
16
|
+
: filledPatterns;
|
|
17
|
+
const uniquePatterns = (0, getUniquePatterns_1.default)(validPatterns);
|
|
14
18
|
const results = uniquePatterns.map((pattern, index) => ({
|
|
15
19
|
cells: pattern.cells.map((cell) => cell.toJson()),
|
|
16
20
|
collisions: pattern.getCollisions().map((collision) => collision.cells.map((cell) => cell.toJson())),
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/solver",
|
|
3
|
-
"version": "2.12.
|
|
4
|
-
"lockfileVersion":
|
|
3
|
+
"version": "2.12.3",
|
|
4
|
+
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@scrabble-solver/solver",
|
|
9
|
-
"version": "2.12.
|
|
9
|
+
"version": "2.12.3",
|
|
10
10
|
"license": "CC-BY-NC-ND-4.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@kamilmielnik/trie": "^2.0.1"
|
|
@@ -20,12 +20,5 @@
|
|
|
20
20
|
"node": ">=16"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
},
|
|
24
|
-
"dependencies": {
|
|
25
|
-
"@kamilmielnik/trie": {
|
|
26
|
-
"version": "2.0.1",
|
|
27
|
-
"resolved": "https://registry.npmjs.org/@kamilmielnik/trie/-/trie-2.0.1.tgz",
|
|
28
|
-
"integrity": "sha512-6Ulw5/xgFRadHsx0uVnpOxB2E2ZO2osnaakI26yS3RMlww580JiaQEfXUmQjXZcmOjcO+HrZ0CWjRDhoDYKHbg=="
|
|
29
|
-
}
|
|
30
23
|
}
|
|
31
24
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/solver",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.3",
|
|
4
4
|
"description": "Scrabble Solver 2 - Solver",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"bugs": {
|
|
18
18
|
"url": "https://github.com/kamilmielnik/scrabble-solver/issues"
|
|
19
19
|
},
|
|
20
|
-
"homepage": "https://
|
|
20
|
+
"homepage": "https://scrabble-solver.org",
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "tsc --project .",
|
|
23
23
|
"clean": "rimraf build/ node_modules/",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@kamilmielnik/trie": "^2.0.1",
|
|
28
|
-
"@scrabble-solver/types": "^2.12.
|
|
28
|
+
"@scrabble-solver/types": "^2.12.3"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@scrabble-solver/configs": "^2.12.
|
|
32
|
-
"@scrabble-solver/constants": "^2.12.
|
|
33
|
-
"@scrabble-solver/dictionaries": "^2.12.
|
|
31
|
+
"@scrabble-solver/configs": "^2.12.3",
|
|
32
|
+
"@scrabble-solver/constants": "^2.12.3",
|
|
33
|
+
"@scrabble-solver/dictionaries": "^2.12.3"
|
|
34
34
|
},
|
|
35
35
|
"gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
|
|
36
36
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Config, Pattern } from '@scrabble-solver/types';
|
|
2
|
+
|
|
3
|
+
const areDigraphsValid = (config: Config, pattern: Pattern): boolean => {
|
|
4
|
+
const { twoCharacterTiles } = config;
|
|
5
|
+
const { cells } = pattern;
|
|
6
|
+
|
|
7
|
+
for (let index = 0; index < cells.length - 1; ++index) {
|
|
8
|
+
const current = cells[index];
|
|
9
|
+
const next = cells[index + 1];
|
|
10
|
+
const digraphCandidate = current.tile.character + next.tile.character;
|
|
11
|
+
|
|
12
|
+
if (twoCharacterTiles.includes(digraphCandidate)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return true;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default areDigraphsValid;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Trie } from '@kamilmielnik/trie';
|
|
2
|
-
import {
|
|
2
|
+
import { getConfig } from '@scrabble-solver/configs';
|
|
3
3
|
import { dictionaries } from '@scrabble-solver/dictionaries';
|
|
4
|
-
import { Board, Cell, FinalPattern, Locale, Pattern, Tile, VerticalPattern } from '@scrabble-solver/types';
|
|
4
|
+
import { Board, Cell, FinalPattern, Game, Locale, Pattern, Tile, VerticalPattern } from '@scrabble-solver/types';
|
|
5
5
|
|
|
6
6
|
import fillPattern, { fillPatternRecursive } from './fillPattern';
|
|
7
7
|
|
|
8
8
|
const board = Board.fromStringArray([' t ', 'do ', ' ']);
|
|
9
9
|
const locale = Locale.PL_PL;
|
|
10
|
-
const config =
|
|
10
|
+
const config = getConfig(Game.Literaki, locale);
|
|
11
11
|
|
|
12
12
|
describe('fillPattern', () => {
|
|
13
13
|
let trie: Trie | undefined;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getConfig } from '@scrabble-solver/configs';
|
|
2
|
+
import { Board, Game, Locale } from '@scrabble-solver/types';
|
|
3
|
+
|
|
4
|
+
import generatePatterns from './generatePatterns';
|
|
5
|
+
|
|
6
|
+
describe('generatePatterns', () => {
|
|
7
|
+
it('Generates all patterns for an empty board', () => {
|
|
8
|
+
const config = getConfig(Game.Scrabble, Locale.EN_US);
|
|
9
|
+
const board = Board.create(config.boardWidth, config.boardHeight);
|
|
10
|
+
|
|
11
|
+
expect(generatePatterns(config, board).length).toEqual(54);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -2,11 +2,11 @@ import { Pattern } from '@scrabble-solver/types';
|
|
|
2
2
|
|
|
3
3
|
const getPatternHash = (pattern: Pattern): string => {
|
|
4
4
|
return pattern.cells
|
|
5
|
+
.filter((cell) => cell.isEmpty)
|
|
5
6
|
.map((cell) => {
|
|
6
7
|
const blank = cell.tile.isBlank ? '!' : '';
|
|
7
8
|
const tile = cell.tile.character + blank;
|
|
8
|
-
|
|
9
|
-
return cell.x + ',' + cell.y + ',' + tile;
|
|
9
|
+
return [cell.x, cell.y, tile].join(',');
|
|
10
10
|
})
|
|
11
11
|
.join('-');
|
|
12
12
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Board, Cell, HorizontalPattern, Locale, Pattern, Tile, VerticalPattern } from '@scrabble-solver/types';
|
|
1
|
+
import { getConfig } from '@scrabble-solver/configs';
|
|
2
|
+
import { Board, Cell, Game, HorizontalPattern, Locale, Pattern, Tile, VerticalPattern } from '@scrabble-solver/types';
|
|
3
3
|
|
|
4
4
|
import getPatternScore from './getPatternScore';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const locale = Locale.PL_PL;
|
|
7
|
+
const config = getConfig(Game.Literaki, locale);
|
|
7
8
|
const board = Board.fromStringArray([
|
|
8
9
|
' kasom ',
|
|
9
10
|
' i ',
|
|
@@ -57,4 +58,13 @@ describe('getPatternScore', () => {
|
|
|
57
58
|
|
|
58
59
|
expect(getPatternScore(config, pattern)).toBe(2);
|
|
59
60
|
});
|
|
61
|
+
|
|
62
|
+
it('gives 0 score for unknown characters', () => {
|
|
63
|
+
const pattern = new HorizontalPattern(board, [
|
|
64
|
+
new Cell({ x: 13, y: 14, tile: new Tile({ character: '?', isBlank: false }), isEmpty: true }),
|
|
65
|
+
new Cell({ x: 12, y: 14, tile: new Tile({ character: 't' }), isEmpty: false }),
|
|
66
|
+
]);
|
|
67
|
+
|
|
68
|
+
expect(getPatternScore(config, pattern)).toBe(2);
|
|
69
|
+
});
|
|
60
70
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { default as areDigraphsValid } from './areDigraphsValid';
|
|
1
2
|
export { default as fillPattern } from './fillPattern';
|
|
2
3
|
export { default as generateEndIndices } from './generateEndIndices';
|
|
3
4
|
export { default as generateHorizontalPatterns } from './generateHorizontalPatterns';
|
|
@@ -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(() => {
|
|
@@ -47,7 +49,7 @@ describe('solve - PL', () => {
|
|
|
47
49
|
]);
|
|
48
50
|
const tiles = generateTiles(['l', 'i', 'n', 'o']);
|
|
49
51
|
const results = solve(trie!, config, board, tiles);
|
|
50
|
-
expect(results.length).toBe(
|
|
52
|
+
expect(results.length).toBe(60);
|
|
51
53
|
});
|
|
52
54
|
|
|
53
55
|
it('zmartwychwstałą x9', () => {
|
|
@@ -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(() => {
|
|
@@ -136,4 +161,65 @@ describe('solve - ES', () => {
|
|
|
136
161
|
expect(results.length).toBe(24);
|
|
137
162
|
expect(bestResult.points).toBe(22);
|
|
138
163
|
});
|
|
164
|
+
|
|
165
|
+
it('chooho - does not use C + H to imitate CH', () => {
|
|
166
|
+
const board = Board.fromStringArray([
|
|
167
|
+
' ',
|
|
168
|
+
' ',
|
|
169
|
+
' ',
|
|
170
|
+
' ',
|
|
171
|
+
' ',
|
|
172
|
+
' ',
|
|
173
|
+
' ',
|
|
174
|
+
' ',
|
|
175
|
+
' ',
|
|
176
|
+
' ',
|
|
177
|
+
' ',
|
|
178
|
+
' ',
|
|
179
|
+
' ',
|
|
180
|
+
' ',
|
|
181
|
+
' ',
|
|
182
|
+
]);
|
|
183
|
+
const tiles = generateTiles(['ch', 'o', 'o', 'c', 'h']);
|
|
184
|
+
const results = solve(trie!, config, board, tiles);
|
|
185
|
+
const words = results.map((result) => result.cells.map((cell) => cell.tile?.character).join(''));
|
|
186
|
+
expect(words).not.toContain('chocho');
|
|
187
|
+
});
|
|
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
|
+
});
|
|
139
225
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Trie } from '@kamilmielnik/trie';
|
|
2
2
|
import { Board, Config, ResultJson, Tile } from '@scrabble-solver/types';
|
|
3
3
|
|
|
4
|
+
import areDigraphsValid from './areDigraphsValid';
|
|
4
5
|
import fillPattern from './fillPattern';
|
|
5
6
|
import generatePatterns from './generatePatterns';
|
|
6
7
|
import getPatternScore from './getPatternScore';
|
|
@@ -9,7 +10,11 @@ import getUniquePatterns from './getUniquePatterns';
|
|
|
9
10
|
const solve = (trie: Trie, config: Config, board: Board, tiles: Tile[]): ResultJson[] => {
|
|
10
11
|
const patterns = generatePatterns(config, board);
|
|
11
12
|
const filledPatterns = patterns.flatMap((pattern) => fillPattern(trie, config, pattern, tiles));
|
|
12
|
-
const
|
|
13
|
+
const validPatterns =
|
|
14
|
+
config.twoCharacterTiles.length > 0
|
|
15
|
+
? filledPatterns.filter((pattern) => areDigraphsValid(config, pattern))
|
|
16
|
+
: filledPatterns;
|
|
17
|
+
const uniquePatterns = getUniquePatterns(validPatterns);
|
|
13
18
|
const results = uniquePatterns.map((pattern, index) => ({
|
|
14
19
|
cells: pattern.cells.map((cell) => cell.toJson()),
|
|
15
20
|
collisions: pattern.getCollisions().map((collision) => collision.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; } });
|