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
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p>
|
|
9
|
-
Free, open-source, and cross-platform analysis tool for <a href="https://en.wikipedia.org/wiki/Scrabble">Scrabble</a> & <a href="https://pl.wikipedia.org/wiki/Literaki">Literaki</a>.
|
|
9
|
+
Free, open-source, and cross-platform analysis tool for <a href="https://en.wikipedia.org/wiki/Scrabble">Scrabble</a>, <a href="https://en.wikipedia.org/wiki/Super_Scrabble">Super Scrabble</a> & <a href="https://pl.wikipedia.org/wiki/Literaki">Literaki</a>.
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p>
|
|
@@ -51,21 +51,25 @@
|
|
|
51
51
|
3. [Install](#install)
|
|
52
52
|
4. [Uninstall](#uninstall)
|
|
53
53
|
5. [Develop](#develop)
|
|
54
|
+
1. [Setup](#setup)
|
|
55
|
+
2. [Run app dev server](#run-app-dev-server)
|
|
56
|
+
3. [Rebuild a single package](#rebuild-a-single-package)
|
|
57
|
+
4. [Add a new language](#add-a-new-language)
|
|
54
58
|
6. [Tech stack](#tech-stack)
|
|
55
59
|
7. [Related projects](#related-projects)
|
|
56
60
|
8. [Media](#media)
|
|
57
61
|
|
|
58
62
|
## Dictionaries
|
|
59
63
|
|
|
60
|
-
| Language | Word list
|
|
61
|
-
|
|
62
|
-
| 🇬🇧 English | [💾](https://www.wordgamedictionary.com/sowpods/download/sowpods.txt) [SOWPODS](https://en.wikipedia.org/wiki/Collins_Scrabble_Words)
|
|
63
|
-
| 🇺🇸 English | [💾](https://www.wordgamedictionary.com/twl06/download/twl06.txt) [TWL06](https://en.wikipedia.org/wiki/NASPA_Word_List)
|
|
64
|
-
| 🇫🇷 French | [💾](https://raw.githubusercontent.com/
|
|
65
|
-
| 🇩🇪 German | [💾](https://raw.githubusercontent.com/hippler/german-wordlist/master/words.txt) [hippler/german-wordlist](https://github.com/hippler/german-wordlist)
|
|
66
|
-
| 🇮🇷 Persian | [💾](https://raw.githubusercontent.com/MansourM/persian-to-persian-dictionary/main/moein/words.txt) [MansourM/persian-to-persian-dictionary](https://github.com/MansourM/persian-to-persian-dictionary)
|
|
67
|
-
| 🇵🇱 Polish | [💾](https://sjp.pl/slownik/growy/) [SJP.PL](https://sjp.pl/slownik/dp.phtml)
|
|
68
|
-
| 🇪🇸 Spanish | [💾](https://github.com/kamilmielnik/fise-2/blob/master/fise-2.txt) [FISE-2](https://fisescrabble.org/)
|
|
64
|
+
| Language | Word list | Word definitions | [Highest-scoring word](https://codesandbox.io/s/highest-scoring-words-in-scrabble-vbj1ns?file=/src/index.js) |
|
|
65
|
+
|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
|
|
66
|
+
| 🇬🇧 English | [💾](https://www.wordgamedictionary.com/sowpods/download/sowpods.txt) [SOWPODS](https://en.wikipedia.org/wiki/Collins_Scrabble_Words) | [Merriam-Webster](https://www.merriam-webster.com/) | oxyphenbutazone (1458) |
|
|
67
|
+
| 🇺🇸 English | [💾](https://www.wordgamedictionary.com/twl06/download/twl06.txt) [TWL06](https://en.wikipedia.org/wiki/NASPA_Word_List) | [Merriam-Webster](https://www.merriam-webster.com/) | oxyphenbutazone (1458) |
|
|
68
|
+
| 🇫🇷 French | [💾](https://raw.githubusercontent.com/kamilmielnik/french-dictionary/master/dictionary.txt) [kamilmielnik/french-dictionary](https://github.com/kamilmielnik/french-dictionary/) | [CNRTL](https://www.cnrtl.fr/) | encyclopediques (1512) |
|
|
69
|
+
| 🇩🇪 German | [💾](https://raw.githubusercontent.com/hippler/german-wordlist/master/words.txt) [hippler/german-wordlist](https://github.com/hippler/german-wordlist) | [DWDS](https://www.dwds.de) | polytoxikomanem (1512) |
|
|
70
|
+
| 🇮🇷 Persian | [💾](https://raw.githubusercontent.com/MansourM/persian-to-persian-dictionary/main/moein/words.txt) [MansourM/persian-to-persian-dictionary](https://github.com/MansourM/persian-to-persian-dictionary) | [واژه یاب](https://vajehyab.com) | (756) اگزیستانسیالیست |
|
|
71
|
+
| 🇵🇱 Polish | [💾](https://sjp.pl/slownik/growy/) [SJP.PL](https://sjp.pl/slownik/dp.phtml) | [SJP.PL](https://sjp.pl) | współposiądźmyż (1512) |
|
|
72
|
+
| 🇪🇸 Spanish | [💾](https://github.com/kamilmielnik/fise-2/blob/master/fise-2.txt) [FISE-2](https://fisescrabble.org/) | [Diccionarios.com](https://www.diccionarios.com/) | flexibilizabais (1323) |
|
|
69
73
|
|
|
70
74
|
## Run
|
|
71
75
|
|
|
@@ -89,8 +93,8 @@ scrabble-solver
|
|
|
89
93
|
```Shell
|
|
90
94
|
npm uninstall -g scrabble-solver
|
|
91
95
|
|
|
92
|
-
#
|
|
93
|
-
#
|
|
96
|
+
# Logs and dictionaries are stored in $HOME/.scrabble-solver
|
|
97
|
+
# $HOME location is acquired using os.homedir()
|
|
94
98
|
rm -rf $HOME/.scrabble-solver
|
|
95
99
|
```
|
|
96
100
|
|
|
@@ -103,7 +107,7 @@ npm install
|
|
|
103
107
|
npm run install:dev
|
|
104
108
|
```
|
|
105
109
|
|
|
106
|
-
###
|
|
110
|
+
### Run app dev server
|
|
107
111
|
|
|
108
112
|
```Shell
|
|
109
113
|
npx lerna run dev --scope=@scrabble-solver/scrabble-solver
|
|
@@ -117,6 +121,29 @@ Note: hot code reload works only for the [`scrabble-solver`](https://github.com/
|
|
|
117
121
|
npx lerna run build --scope=@scrabble-solver/PACKAGE_NAME_HERE
|
|
118
122
|
```
|
|
119
123
|
|
|
124
|
+
### Add a new language
|
|
125
|
+
|
|
126
|
+
1. Find and download a flag representing the locale in an SVG format
|
|
127
|
+
- I usually find them at https://commons.wikimedia.org/
|
|
128
|
+
2. Rename the file to `FlagXX.svg` and put it in [packages/scrabble-solver/src/icons](https://github.com/kamilmielnik/scrabble-solver/tree/master/packages/scrabble-solver/src/icons)
|
|
129
|
+
3. Export the SVG file in [packages/scrabble-solver/src/icons/index.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/scrabble-solver/src/icons/index.ts)
|
|
130
|
+
4. Add IETF language tag for the new locale in [packages/types/src/Locale.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/types/src/Locale.ts)
|
|
131
|
+
5. Rebuild the types package
|
|
132
|
+
```Shell
|
|
133
|
+
npx lerna run build --scope=@scrabble-solver/types
|
|
134
|
+
```
|
|
135
|
+
6. Add locale configuration in [packages/scrabble-solver/src/i18n/constants.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/scrabble-solver/src/i18n/constants.ts)
|
|
136
|
+
7. Update locale-detecting code in [packages/scrabble-solver/src/lib/detectLocale.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/scrabble-solver/src/lib/detectLocale.ts)
|
|
137
|
+
8. Add game configs for the new locale in [packages/configs/src/locales](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/configs/src/locales)
|
|
138
|
+
9. Add an export for these locale configs in [packages/configs/src/locales/index.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/configs/src/locales/index.ts)
|
|
139
|
+
10. Add a translation file in [packages/scrabble-solver/src/i18n](https://github.com/kamilmielnik/scrabble-solver/tree/master/packages/scrabble-solver/src/i18n) and fill it with translations
|
|
140
|
+
- Copy any existing file, e.g. `en.json` and modify it
|
|
141
|
+
11. Add an entry for the translations in [packages/scrabble-solver/src/i18n/i18n.ts](https://github.com/kamilmielnik/scrabble-solver/tree/master/packages/scrabble-solver/src/i18n/i18n.ts)
|
|
142
|
+
12. Add a function to fetch the list of words in the new locale in [packages/word-lists/src/getWordList.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/word-lists/src/getWordList.ts)
|
|
143
|
+
13. Add a function to fetch the word definition in the new locale in [packages/word-definitions/src/crawl/crawl.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/word-definitions/src/crawl/crawl.ts)
|
|
144
|
+
14. Add a function to parse the word definition crawled in the previous step in [packages/word-definitions/src/parse/parse.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/word-definitions/src/parse/parse.ts)
|
|
145
|
+
- Bonus points for adding tests in [packages/word-definitions/src/parse/parse.test.ts](https://github.com/kamilmielnik/scrabble-solver/blob/master/packages/word-definitions/src/parse/parse.test.ts)
|
|
146
|
+
|
|
120
147
|
## Tech stack
|
|
121
148
|
|
|
122
149
|
- [TypeScript](https://www.typescriptlang.org/)
|
package/lerna.json
CHANGED
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scrabble-solver",
|
|
3
|
-
"version": "2.12.
|
|
4
|
-
"description": "Scrabble Solver 2 - Free, open-source, and cross-platform analysis tool for Scrabble & Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish & Spanish.",
|
|
3
|
+
"version": "2.12.4",
|
|
4
|
+
"description": "Scrabble Solver 2 - Free, open-source, and cross-platform analysis tool for Scrabble, Super Scrabble & Literaki. Quickly find top scoring words using given letters and board state. Available in English, French, German, Polish & Spanish.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Scrabble",
|
|
7
|
+
"Super Scrabble",
|
|
7
8
|
"Literaki",
|
|
8
9
|
"Solver",
|
|
9
10
|
"Finder",
|
|
@@ -0,0 +1,12 @@
|
|
|
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.superScrabble = exports.scrabble = exports.literaki = void 0;
|
|
7
|
+
var literaki_1 = require("./literaki");
|
|
8
|
+
Object.defineProperty(exports, "literaki", { enumerable: true, get: function () { return __importDefault(literaki_1).default; } });
|
|
9
|
+
var scrabble_1 = require("./scrabble");
|
|
10
|
+
Object.defineProperty(exports, "scrabble", { enumerable: true, get: function () { return __importDefault(scrabble_1).default; } });
|
|
11
|
+
var superScrabble_1 = require("./superScrabble");
|
|
12
|
+
Object.defineProperty(exports, "superScrabble", { enumerable: true, get: function () { return __importDefault(superScrabble_1).default; } });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Game } from '@scrabble-solver/types';
|
|
2
|
+
declare const literaki: {
|
|
3
|
+
allTilesBonusScore: number;
|
|
4
|
+
blankScore: number;
|
|
5
|
+
blanksCount: number;
|
|
6
|
+
boardHeight: number;
|
|
7
|
+
boardWidth: number;
|
|
8
|
+
game: Game;
|
|
9
|
+
maximumCharactersCount: number;
|
|
10
|
+
name: string;
|
|
11
|
+
bonuses: ({
|
|
12
|
+
multiplier: number;
|
|
13
|
+
score: number;
|
|
14
|
+
type: string;
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
} | {
|
|
18
|
+
multiplier: number;
|
|
19
|
+
type: string;
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
score?: undefined;
|
|
23
|
+
})[];
|
|
24
|
+
};
|
|
25
|
+
export default literaki;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("@scrabble-solver/constants");
|
|
4
|
+
const types_1 = require("@scrabble-solver/types");
|
|
5
|
+
const literaki = {
|
|
6
|
+
allTilesBonusScore: 50,
|
|
7
|
+
blankScore: 0,
|
|
8
|
+
blanksCount: 2,
|
|
9
|
+
boardHeight: 15,
|
|
10
|
+
boardWidth: 15,
|
|
11
|
+
game: types_1.Game.Literaki,
|
|
12
|
+
maximumCharactersCount: 7,
|
|
13
|
+
name: 'Literaki',
|
|
14
|
+
bonuses: [
|
|
15
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 0, y: 0 },
|
|
16
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 2, y: 0 },
|
|
17
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 5, y: 0 },
|
|
18
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 7, y: 0 },
|
|
19
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 9, y: 0 },
|
|
20
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 12, y: 0 },
|
|
21
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 14, y: 0 },
|
|
22
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 4, y: 1 },
|
|
23
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 6, y: 1 },
|
|
24
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 8, y: 1 },
|
|
25
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 10, y: 1 },
|
|
26
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 0, y: 2 },
|
|
27
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 2 },
|
|
28
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 5, y: 2 },
|
|
29
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 7, y: 2 },
|
|
30
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 9, y: 2 },
|
|
31
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 2 },
|
|
32
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 14, y: 2 },
|
|
33
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 2, y: 3 },
|
|
34
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 4, y: 3 },
|
|
35
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 6, y: 3 },
|
|
36
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 8, y: 3 },
|
|
37
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 10, y: 3 },
|
|
38
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 12, y: 3 },
|
|
39
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 1, y: 4 },
|
|
40
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 3, y: 4 },
|
|
41
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 5, y: 4 },
|
|
42
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 9, y: 4 },
|
|
43
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 11, y: 4 },
|
|
44
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 13, y: 4 },
|
|
45
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 0, y: 5 },
|
|
46
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 5 },
|
|
47
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 4, y: 5 },
|
|
48
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 7, y: 5 },
|
|
49
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 10, y: 5 },
|
|
50
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 12, y: 5 },
|
|
51
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 14, y: 5 },
|
|
52
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 1, y: 6 },
|
|
53
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 3, y: 6 },
|
|
54
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 6, y: 6 },
|
|
55
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 8, y: 6 },
|
|
56
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 11, y: 6 },
|
|
57
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 13, y: 6 },
|
|
58
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 0, y: 7 },
|
|
59
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 2, y: 7 },
|
|
60
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 5, y: 7 },
|
|
61
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 7, y: 7 },
|
|
62
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 9, y: 7 },
|
|
63
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 12, y: 7 },
|
|
64
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 14, y: 7 },
|
|
65
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 1, y: 8 },
|
|
66
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 3, y: 8 },
|
|
67
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 6, y: 8 },
|
|
68
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 8, y: 8 },
|
|
69
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 11, y: 8 },
|
|
70
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 13, y: 8 },
|
|
71
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 0, y: 9 },
|
|
72
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 9 },
|
|
73
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 4, y: 9 },
|
|
74
|
+
{ multiplier: 3, score: 3, type: constants_1.BONUS_CHARACTER, x: 7, y: 9 },
|
|
75
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 10, y: 9 },
|
|
76
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 12, y: 9 },
|
|
77
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 14, y: 9 },
|
|
78
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 1, y: 10 },
|
|
79
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 3, y: 10 },
|
|
80
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 5, y: 10 },
|
|
81
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 9, y: 10 },
|
|
82
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 11, y: 10 },
|
|
83
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 13, y: 10 },
|
|
84
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 2, y: 11 },
|
|
85
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 4, y: 11 },
|
|
86
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 6, y: 11 },
|
|
87
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 8, y: 11 },
|
|
88
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 10, y: 11 },
|
|
89
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 12, y: 11 },
|
|
90
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 0, y: 12 },
|
|
91
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 12 },
|
|
92
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 5, y: 12 },
|
|
93
|
+
{ multiplier: 3, score: 1, type: constants_1.BONUS_CHARACTER, x: 7, y: 12 },
|
|
94
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 9, y: 12 },
|
|
95
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 12 },
|
|
96
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 14, y: 12 },
|
|
97
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 4, y: 13 },
|
|
98
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 6, y: 13 },
|
|
99
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 8, y: 13 },
|
|
100
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 10, y: 13 },
|
|
101
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 0, y: 14 },
|
|
102
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 2, y: 14 },
|
|
103
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 5, y: 14 },
|
|
104
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 7, y: 14 },
|
|
105
|
+
{ multiplier: 3, score: 2, type: constants_1.BONUS_CHARACTER, x: 9, y: 14 },
|
|
106
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 12, y: 14 },
|
|
107
|
+
{ multiplier: 3, score: 5, type: constants_1.BONUS_CHARACTER, x: 14, y: 14 },
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
exports.default = literaki;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Game } from '@scrabble-solver/types';
|
|
2
|
+
declare const scrabble: {
|
|
3
|
+
allTilesBonusScore: number;
|
|
4
|
+
blankScore: number;
|
|
5
|
+
blanksCount: number;
|
|
6
|
+
boardHeight: number;
|
|
7
|
+
boardWidth: number;
|
|
8
|
+
game: Game;
|
|
9
|
+
maximumCharactersCount: number;
|
|
10
|
+
name: string;
|
|
11
|
+
bonuses: {
|
|
12
|
+
multiplier: number;
|
|
13
|
+
type: string;
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
export default scrabble;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("@scrabble-solver/constants");
|
|
4
|
+
const types_1 = require("@scrabble-solver/types");
|
|
5
|
+
const scrabble = {
|
|
6
|
+
allTilesBonusScore: 50,
|
|
7
|
+
blankScore: 0,
|
|
8
|
+
blanksCount: 2,
|
|
9
|
+
boardHeight: 15,
|
|
10
|
+
boardWidth: 15,
|
|
11
|
+
game: types_1.Game.Scrabble,
|
|
12
|
+
maximumCharactersCount: 7,
|
|
13
|
+
name: 'Scrabble',
|
|
14
|
+
bonuses: [
|
|
15
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 0, y: 0 },
|
|
16
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 0 },
|
|
17
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 7, y: 0 },
|
|
18
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 0 },
|
|
19
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 14, y: 0 },
|
|
20
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 1, y: 1 },
|
|
21
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 5, y: 1 },
|
|
22
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 9, y: 1 },
|
|
23
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 13, y: 1 },
|
|
24
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 2 },
|
|
25
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 6, y: 2 },
|
|
26
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 8, y: 2 },
|
|
27
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 12, y: 2 },
|
|
28
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 0, y: 3 },
|
|
29
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 3, y: 3 },
|
|
30
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 7, y: 3 },
|
|
31
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 11, y: 3 },
|
|
32
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 14, y: 3 },
|
|
33
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 4, y: 4 },
|
|
34
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 10, y: 4 },
|
|
35
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 1, y: 5 },
|
|
36
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 5, y: 5 },
|
|
37
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 9, y: 5 },
|
|
38
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 13, y: 5 },
|
|
39
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 2, y: 6 },
|
|
40
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 6, y: 6 },
|
|
41
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 8, y: 6 },
|
|
42
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 12, y: 6 },
|
|
43
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 0, y: 7 },
|
|
44
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 7 },
|
|
45
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 7, y: 7 },
|
|
46
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 7 },
|
|
47
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 14, y: 7 },
|
|
48
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 2, y: 8 },
|
|
49
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 6, y: 8 },
|
|
50
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 8, y: 8 },
|
|
51
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 12, y: 8 },
|
|
52
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 1, y: 9 },
|
|
53
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 5, y: 9 },
|
|
54
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 9, y: 9 },
|
|
55
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 13, y: 9 },
|
|
56
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 4, y: 10 },
|
|
57
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 10, y: 10 },
|
|
58
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 0, y: 11 },
|
|
59
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 3, y: 11 },
|
|
60
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 7, y: 11 },
|
|
61
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 11, y: 11 },
|
|
62
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 14, y: 11 },
|
|
63
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 12 },
|
|
64
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 6, y: 12 },
|
|
65
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 8, y: 12 },
|
|
66
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 12, y: 12 },
|
|
67
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 1, y: 13 },
|
|
68
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 5, y: 13 },
|
|
69
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 9, y: 13 },
|
|
70
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 13, y: 13 },
|
|
71
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 0, y: 14 },
|
|
72
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 14 },
|
|
73
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 7, y: 14 },
|
|
74
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 14 },
|
|
75
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 14, y: 14 },
|
|
76
|
+
],
|
|
77
|
+
};
|
|
78
|
+
exports.default = scrabble;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Game } from '@scrabble-solver/types';
|
|
2
|
+
declare const scrabble: {
|
|
3
|
+
allTilesBonusScore: number;
|
|
4
|
+
blankScore: number;
|
|
5
|
+
blanksCount: number;
|
|
6
|
+
boardHeight: number;
|
|
7
|
+
boardWidth: number;
|
|
8
|
+
game: Game;
|
|
9
|
+
maximumCharactersCount: number;
|
|
10
|
+
name: string;
|
|
11
|
+
bonuses: {
|
|
12
|
+
multiplier: number;
|
|
13
|
+
type: string;
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
export default scrabble;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("@scrabble-solver/constants");
|
|
4
|
+
const types_1 = require("@scrabble-solver/types");
|
|
5
|
+
const scrabble = {
|
|
6
|
+
allTilesBonusScore: 50,
|
|
7
|
+
blankScore: 0,
|
|
8
|
+
blanksCount: 4,
|
|
9
|
+
boardHeight: 21,
|
|
10
|
+
boardWidth: 21,
|
|
11
|
+
game: types_1.Game.SuperScrabble,
|
|
12
|
+
maximumCharactersCount: 7,
|
|
13
|
+
name: 'Super Scrabble',
|
|
14
|
+
bonuses: [
|
|
15
|
+
{ multiplier: 4, type: constants_1.BONUS_WORD, x: 0, y: 0 },
|
|
16
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 0 },
|
|
17
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 7, y: 0 },
|
|
18
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 10, y: 0 },
|
|
19
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 13, y: 0 },
|
|
20
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 17, y: 0 },
|
|
21
|
+
{ multiplier: 4, type: constants_1.BONUS_WORD, x: 20, y: 0 },
|
|
22
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 1, y: 1 },
|
|
23
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 4, y: 1 },
|
|
24
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 8, y: 1 },
|
|
25
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 12, y: 1 },
|
|
26
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 16, y: 1 },
|
|
27
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 19, y: 1 },
|
|
28
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 2 },
|
|
29
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 5, y: 2 },
|
|
30
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 9, y: 2 },
|
|
31
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 11, y: 2 },
|
|
32
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 15, y: 2 },
|
|
33
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 18, y: 2 },
|
|
34
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 0, y: 3 },
|
|
35
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 3, y: 3 },
|
|
36
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 6, y: 3 },
|
|
37
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 10, y: 3 },
|
|
38
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 14, y: 3 },
|
|
39
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 17, y: 3 },
|
|
40
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 20, y: 3 },
|
|
41
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 1, y: 4 },
|
|
42
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 4, y: 4 },
|
|
43
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 8, y: 4 },
|
|
44
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 12, y: 4 },
|
|
45
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 16, y: 4 },
|
|
46
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 19, y: 4 },
|
|
47
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 2, y: 5 },
|
|
48
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 5, y: 5 },
|
|
49
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 9, y: 5 },
|
|
50
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 5 },
|
|
51
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 15, y: 5 },
|
|
52
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 18, y: 5 },
|
|
53
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 6 },
|
|
54
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 6, y: 6 },
|
|
55
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 10, y: 6 },
|
|
56
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 14, y: 6 },
|
|
57
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 17, y: 6 },
|
|
58
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 0, y: 7 },
|
|
59
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 7, y: 7 },
|
|
60
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 13, y: 7 },
|
|
61
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 20, y: 7 },
|
|
62
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 1, y: 8 },
|
|
63
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 4, y: 8 },
|
|
64
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 8, y: 8 },
|
|
65
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 12, y: 8 },
|
|
66
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 16, y: 8 },
|
|
67
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 19, y: 8 },
|
|
68
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 9 },
|
|
69
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 5, y: 9 },
|
|
70
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 9, y: 9 },
|
|
71
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 9 },
|
|
72
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 15, y: 9 },
|
|
73
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 18, y: 9 },
|
|
74
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 0, y: 10 },
|
|
75
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 3, y: 10 },
|
|
76
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 6, y: 10 },
|
|
77
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 14, y: 10 },
|
|
78
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 17, y: 10 },
|
|
79
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 20, y: 10 },
|
|
80
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 11 },
|
|
81
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 5, y: 11 },
|
|
82
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 9, y: 11 },
|
|
83
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 11 },
|
|
84
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 15, y: 11 },
|
|
85
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 18, y: 11 },
|
|
86
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 1, y: 12 },
|
|
87
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 4, y: 12 },
|
|
88
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 8, y: 12 },
|
|
89
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 12, y: 12 },
|
|
90
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 16, y: 12 },
|
|
91
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 19, y: 12 },
|
|
92
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 0, y: 13 },
|
|
93
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 7, y: 13 },
|
|
94
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 13, y: 13 },
|
|
95
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 20, y: 13 },
|
|
96
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 14 },
|
|
97
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 6, y: 14 },
|
|
98
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 10, y: 14 },
|
|
99
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 14, y: 14 },
|
|
100
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 17, y: 14 },
|
|
101
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 2, y: 15 },
|
|
102
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 5, y: 15 },
|
|
103
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 9, y: 15 },
|
|
104
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 11, y: 15 },
|
|
105
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 15, y: 15 },
|
|
106
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 18, y: 15 },
|
|
107
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 1, y: 16 },
|
|
108
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 4, y: 16 },
|
|
109
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 8, y: 16 },
|
|
110
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 12, y: 16 },
|
|
111
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 16, y: 16 },
|
|
112
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 19, y: 16 },
|
|
113
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 0, y: 17 },
|
|
114
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 3, y: 17 },
|
|
115
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 6, y: 17 },
|
|
116
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 10, y: 17 },
|
|
117
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 14, y: 17 },
|
|
118
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 17, y: 17 },
|
|
119
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 20, y: 17 },
|
|
120
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 2, y: 18 },
|
|
121
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 5, y: 18 },
|
|
122
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 9, y: 18 },
|
|
123
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 11, y: 18 },
|
|
124
|
+
{ multiplier: 4, type: constants_1.BONUS_CHARACTER, x: 15, y: 18 },
|
|
125
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 18, y: 18 },
|
|
126
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 1, y: 19 },
|
|
127
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 4, y: 19 },
|
|
128
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 8, y: 19 },
|
|
129
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 12, y: 19 },
|
|
130
|
+
{ multiplier: 3, type: constants_1.BONUS_CHARACTER, x: 16, y: 19 },
|
|
131
|
+
{ multiplier: 2, type: constants_1.BONUS_WORD, x: 19, y: 19 },
|
|
132
|
+
{ multiplier: 4, type: constants_1.BONUS_WORD, x: 0, y: 20 },
|
|
133
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 3, y: 20 },
|
|
134
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 7, y: 20 },
|
|
135
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 10, y: 20 },
|
|
136
|
+
{ multiplier: 3, type: constants_1.BONUS_WORD, x: 13, y: 20 },
|
|
137
|
+
{ multiplier: 2, type: constants_1.BONUS_CHARACTER, x: 17, y: 20 },
|
|
138
|
+
{ multiplier: 4, type: constants_1.BONUS_WORD, x: 20, y: 20 },
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
exports.default = scrabble;
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import { Config, Locale } from '@scrabble-solver/types';
|
|
2
|
-
|
|
3
|
-
id: string;
|
|
4
|
-
name: string;
|
|
5
|
-
}
|
|
6
|
-
declare const getConfig: (configId: string) => Result;
|
|
1
|
+
import { Config, Game, Locale } from '@scrabble-solver/types';
|
|
2
|
+
declare const getConfig: (game: Game, locale: Locale) => Config;
|
|
7
3
|
export default getConfig;
|
|
@@ -1,16 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
4
24
|
};
|
|
5
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const configs =
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
throw new Error(`Invalid "configId" parameter: not one of ${configs.map(({ id }) => id).join('/')}`);
|
|
26
|
+
const locales = __importStar(require("./locales"));
|
|
27
|
+
const getConfig = (game, locale) => {
|
|
28
|
+
const configs = Object.values(locales).flat();
|
|
29
|
+
const localeConfig = configs.find((config) => config.game === game && config.locale === locale);
|
|
30
|
+
if (typeof localeConfig === 'undefined') {
|
|
31
|
+
throw new Error(`No game "${game}" in "${locale}"`);
|
|
13
32
|
}
|
|
14
|
-
return
|
|
33
|
+
return localeConfig;
|
|
15
34
|
};
|
|
16
35
|
exports.default = getConfig;
|
|
@@ -0,0 +1,31 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const locales = __importStar(require("./locales"));
|
|
27
|
+
const hasConfig = (game, locale) => {
|
|
28
|
+
const configs = Object.values(locales).flat();
|
|
29
|
+
return configs.some((config) => config.game === game && config.locale === locale);
|
|
30
|
+
};
|
|
31
|
+
exports.default = hasConfig;
|