@scrabble-solver/scrabble-solver 2.15.11 → 2.15.13
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +16 -16
- package/.next/cache/.previewinfo +1 -0
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/diagnostics/framework.json +1 -1
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +4 -4
- package/.next/required-server-files.json +23 -12
- package/.next/routes-manifest.json +7 -3
- package/.next/server/chunks/106.js +1 -0
- package/.next/server/chunks/30.js +4 -4
- package/.next/server/chunks/318.js +1 -0
- package/.next/server/chunks/50.js +19 -0
- package/.next/server/chunks/812.js +1 -1
- package/.next/server/chunks/929.js +1 -0
- package/.next/server/chunks/974.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
- package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale].js +1 -1
- package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
- package/.next/server/pages/api/solve.js +1 -1
- package/.next/server/pages/api/solve.js.nft.json +1 -1
- package/.next/server/pages/api/verify.js +1 -1
- package/.next/server/pages/api/verify.js.nft.json +1 -1
- package/.next/server/pages/api/visit.js +1 -1
- package/.next/server/pages/api/visit.js.nft.json +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/webpack-api-runtime.js +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/{47JHul8F9NSWCNSEuahuL → MhrqAqLI9_L8obb7tgjvi}/_buildManifest.js +1 -1
- package/.next/static/chunks/framework-aad31c68dd0bb0ea.js +1 -0
- package/.next/static/chunks/main-eab5847b41f0af4a.js +1 -0
- package/.next/static/chunks/pages/{404-590e2a3839c1d9e0.js → 404-04457ede98c6b53e.js} +1 -1
- package/.next/static/chunks/pages/_app-bf81f201c021fdc1.js +1 -0
- package/.next/static/chunks/pages/{_error-7ea2d37f66343175.js → _error-a9800cedd835bcad.js} +1 -1
- package/.next/static/chunks/pages/index-79a390f3c2a2499f.js +1 -0
- package/.next/static/css/{6682db14f926d4c7.css → 04a3767982ec10e8.css} +1 -1
- package/.next/static/css/{d875648f38121a28.css → 1fae874a25934f54.css} +1 -1
- package/.next/trace +24 -23
- package/coverage/clover.xml +6 -0
- package/coverage/coverage-final.json +1 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +101 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +0 -0
- package/package.json +18 -18
- package/src/api/getServerLoggingData.ts +1 -1
- package/src/api/isBoardValid.ts +1 -1
- package/src/api/isCellValid.ts +1 -1
- package/src/api/isRowValid.ts +1 -1
- package/src/components/Alert/Alert.tsx +1 -1
- package/src/components/Badge/Badge.tsx +1 -1
- package/src/components/Board/Board.tsx +8 -8
- package/src/components/Board/BoardPure.tsx +11 -11
- package/src/components/Board/components/Actions/Actions.tsx +3 -3
- package/src/components/Board/components/Actions/lib.ts +3 -3
- package/src/components/Board/components/Cell/Cell.tsx +7 -7
- package/src/components/Board/components/InputPrompt/InputPrompt.tsx +2 -2
- package/src/components/Board/components/ToggleDirectionButton/ToggleDirectionButton.tsx +2 -2
- package/src/components/Board/hooks/useBackgroundImage.tsx +1 -1
- package/src/components/Board/hooks/useBoardStyle.ts +1 -1
- package/src/components/Board/hooks/useGrid.ts +13 -13
- package/src/components/Board/lib.ts +37 -0
- package/src/components/Board/selectors.ts +8 -0
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Button/Link.tsx +1 -1
- package/src/components/Dictionary/Dictionary.tsx +10 -3
- package/src/components/DictionaryInput/DictionaryInput.tsx +1 -1
- package/src/components/EmptyState/EmptyState.tsx +3 -3
- package/src/components/IconButton/IconButton.tsx +1 -1
- package/src/components/IconButton/Link.tsx +1 -1
- package/src/components/Key/Key.tsx +1 -1
- package/src/components/Keys/Arrows/Arrows.tsx +1 -1
- package/src/components/Keys/index.tsx +1 -1
- package/src/components/Loading/Loading.tsx +6 -8
- package/src/components/Logo/LogoBlueprint.tsx +1 -1
- package/src/components/Modal/Modal.tsx +4 -2
- package/src/components/Modal/components/Section/Section.tsx +1 -1
- package/src/components/NavButtons/NavButtons.tsx +4 -3
- package/src/components/NavButtons/selectors.ts +11 -0
- package/src/components/NotFound/NotFound.tsx +1 -1
- package/src/components/PlainTiles/PlainTiles.tsx +1 -1
- package/src/components/PlainTiles/Tile.tsx +1 -1
- package/src/components/PlainTiles/lib.ts +90 -0
- package/src/components/Progress/Progress.tsx +1 -1
- package/src/components/Rack/Rack.tsx +10 -26
- package/src/components/Rack/components/InputPrompt/InputPrompt.tsx +5 -8
- package/src/components/Rack/components/InputPrompt/lib.test.ts +27 -0
- package/src/components/Rack/components/InputPrompt/lib.ts +19 -0
- package/src/components/Rack/components/RackTile/RackTile.tsx +9 -9
- package/src/components/Rack/selectors.ts +9 -0
- package/src/components/Radio/Radio.tsx +1 -1
- package/src/components/Results/Cell.tsx +2 -2
- package/src/components/Results/Header.tsx +1 -1
- package/src/components/Results/HeaderButton.tsx +2 -2
- package/src/components/Results/Result.tsx +5 -6
- package/src/components/Results/Results.tsx +6 -6
- package/src/components/Results/SolveButton.tsx +3 -3
- package/src/components/Results/types.ts +2 -2
- package/src/components/ResultsInput/ResultsInput.tsx +1 -1
- package/src/components/SeoMessage/SeoMessage.tsx +1 -1
- package/src/components/Solver/Solver.tsx +4 -4
- package/src/components/Solver/components/InsertButton/InsertButton.tsx +1 -1
- package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +5 -5
- package/src/components/Spinner/Spinner.tsx +1 -1
- package/src/components/Tile/Tile.tsx +7 -7
- package/src/components/Tile/TilePure.tsx +8 -8
- package/src/components/Tooltip/Tooltip.tsx +1 -1
- package/src/components/Tooltip/TooltipContent.tsx +1 -1
- package/src/components/Tooltip/TooltipTrigger.tsx +1 -1
- package/src/components/Tooltip/context.ts +1 -1
- package/src/components/Tooltip/useTooltip.ts +1 -1
- package/src/hooks/useAppLayout.ts +1 -1
- package/src/hooks/useColumns.ts +28 -1
- package/src/hooks/useEffectOnce.ts +1 -1
- package/src/hooks/useLocalStorage.ts +8 -0
- package/src/i18n/constants.ts +1 -1
- package/src/i18n/i18n.ts +1 -1
- package/src/i18n/languages/english.json +3 -0
- package/src/i18n/languages/french.json +3 -0
- package/src/i18n/languages/german.json +3 -0
- package/src/i18n/languages/persian.json +3 -0
- package/src/i18n/languages/polish.json +3 -0
- package/src/i18n/languages/romanian.json +3 -0
- package/src/i18n/languages/spanish.json +3 -0
- package/src/i18n/languages/turkish.json +3 -0
- package/src/lib/createComparator.ts +1 -1
- package/src/lib/createKeyComparator.ts +1 -1
- package/src/lib/createKeyboardNavigation.ts +1 -1
- package/src/lib/createStringComparator.ts +1 -1
- package/src/lib/extractCharacters.test.ts +42 -15
- package/src/lib/extractCharacters.ts +27 -25
- package/src/lib/findCell.ts +1 -1
- package/src/lib/index.ts +2 -17
- package/src/lib/isCtrl.ts +1 -1
- package/src/lib/localeTransliterate.test.ts +14 -0
- package/src/lib/localeTransliterate.ts +18 -0
- package/src/lib/numberComparator.ts +1 -1
- package/src/lib/reverseComparator.ts +1 -1
- package/src/lib/zipCharactersAndTiles.ts +2 -2
- package/src/modals/DictionaryModal/DictionaryModal.tsx +1 -1
- package/src/modals/KeyMapModal/KeyMapModal.tsx +1 -1
- package/src/modals/KeyMapModal/components/Mapping/Mapping.tsx +1 -1
- package/src/modals/MenuModal/MenuModal.tsx +1 -1
- package/src/modals/RemainingTilesModal/RemainingTilesModal.tsx +3 -2
- package/src/modals/RemainingTilesModal/components/Character/Character.tsx +2 -2
- package/src/{lib/getRemainingTilesGroups.ts → modals/RemainingTilesModal/lib.ts} +26 -9
- package/src/modals/RemainingTilesModal/selectors.ts +7 -0
- package/src/modals/ResultsModal/ResultsModal.tsx +4 -4
- package/src/modals/SettingsModal/SettingsModal.tsx +6 -1
- package/src/modals/SettingsModal/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +1 -1
- package/src/modals/SettingsModal/components/AutoGroupTilesSetting/lib.ts +1 -1
- package/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.tsx +1 -1
- package/src/modals/SettingsModal/components/ConfigSetting/lib.ts +1 -1
- package/src/modals/SettingsModal/components/InputModeSetting/InputModeSetting.tsx +1 -1
- package/src/modals/SettingsModal/components/InputModeSetting/lib.ts +1 -1
- package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +2 -2
- package/src/modals/SettingsModal/components/RemoveCellFiltersSetting/RemoveCellFiltersSetting.module.scss +12 -0
- package/src/modals/SettingsModal/components/RemoveCellFiltersSetting/RemoveCellFiltersSetting.tsx +53 -0
- package/src/modals/SettingsModal/components/RemoveCellFiltersSetting/index.ts +1 -0
- package/src/modals/SettingsModal/components/RemoveCellFiltersSetting/lib.ts +13 -0
- package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.tsx +2 -2
- package/src/modals/SettingsModal/components/index.ts +1 -0
- package/src/modals/WordsModal/WordsModal.tsx +4 -3
- package/src/pages/_app.tsx +2 -2
- package/src/pages/_document.tsx +1 -1
- package/src/pages/api/dictionary/[locale]/[word].ts +2 -2
- package/src/pages/api/dictionary/[locale]/index.ts +2 -2
- package/src/pages/api/solve.ts +11 -2
- package/src/pages/api/verify.ts +2 -2
- package/src/pages/api/visit.ts +1 -1
- package/src/pages/index.tsx +34 -43
- package/src/parameters/index.ts +1 -0
- package/src/sdk/findWordDefinitions.ts +1 -1
- package/src/sdk/getDictionary.ts +1 -1
- package/src/sdk/solve.ts +1 -1
- package/src/sdk/verify.ts +1 -1
- package/src/service-worker/dictionaries/getDictionary.ts +1 -1
- package/src/service-worker/dictionaries/getDictionaryUrl.ts +1 -1
- package/src/service-worker/dictionaries/revalidateDictionary.ts +1 -1
- package/src/service-worker/getTrie.ts +1 -1
- package/src/service-worker/routeSolveRequests.ts +2 -2
- package/src/service-worker/routeVerifyRequests.ts +1 -1
- package/src/state/board/index.ts +4 -0
- package/src/state/{slices/boardInitialState.ts → board/initialState.ts} +3 -6
- package/src/state/board/selectors.ts +3 -0
- package/src/state/{slices/boardSlice.ts → board/slice.ts} +5 -4
- package/src/state/board/types.ts +3 -0
- package/src/state/cellFilters/index.ts +4 -0
- package/src/state/cellFilters/initialState.ts +3 -0
- package/src/state/cellFilters/lib.ts +8 -0
- package/src/state/cellFilters/selectors.ts +13 -0
- package/src/state/{slices/cellFilterSlice.ts → cellFilters/slice.ts} +15 -14
- package/src/state/cellFilters/types.ts +3 -0
- package/src/state/dictionary/index.ts +4 -0
- package/src/state/dictionary/initialState.ts +8 -0
- package/src/state/dictionary/selectors.ts +16 -0
- package/src/state/{slices/dictionarySlice.ts → dictionary/slice.ts} +3 -3
- package/src/state/dictionary/types.ts +8 -0
- package/src/state/index.ts +12 -5
- package/src/{lib/getRemainingTiles.ts → state/lib.ts} +3 -4
- package/src/state/localStorage.ts +11 -2
- package/src/state/rack/index.ts +4 -0
- package/src/state/rack/initialState.ts +12 -0
- package/src/state/rack/selectors.ts +7 -0
- package/src/state/{slices/rackSlice.ts → rack/slice.ts} +4 -4
- package/src/state/rack/types.ts +3 -0
- package/src/state/results/index.ts +4 -0
- package/src/state/results/initialState.ts +13 -0
- package/src/state/results/lib.ts +96 -0
- package/src/state/results/selectors.ts +75 -0
- package/src/state/{slices/resultsSlice.ts → results/slice.ts} +4 -4
- package/src/state/results/types.ts +10 -0
- package/src/state/sagas.ts +22 -23
- package/src/state/selectors.ts +15 -235
- package/src/state/settings/index.ts +4 -0
- package/src/state/{slices/settingsInitialState.ts → settings/initialState.ts} +4 -11
- package/src/state/settings/lib.ts +42 -0
- package/src/state/settings/selectors.ts +69 -0
- package/src/state/{slices/settingsSlice.ts → settings/slice.ts} +9 -4
- package/src/state/settings/types.ts +12 -0
- package/src/state/solve/index.ts +4 -0
- package/src/state/solve/initialState.ts +12 -0
- package/src/state/solve/selectors.ts +14 -0
- package/src/state/{slices/solveSlice.ts → solve/slice.ts} +3 -3
- package/src/state/solve/types.ts +10 -0
- package/src/state/store.ts +9 -11
- package/src/state/types.ts +16 -18
- package/src/state/useTranslate.ts +2 -2
- package/src/state/useTypedSelector.ts +2 -2
- package/src/state/verify/index.ts +4 -0
- package/src/state/verify/initialState.ts +12 -0
- package/src/state/verify/selectors.ts +9 -0
- package/src/state/{slices/verifySlice.ts → verify/slice.ts} +3 -3
- package/src/state/verify/types.ts +10 -0
- package/src/styles/global.scss +5 -0
- package/src/types/api.ts +1 -1
- package/src/types/index.ts +8 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/.eslintrc.js +0 -10
- package/.next/server/chunks/60.js +0 -1
- package/.next/server/chunks/968.js +0 -1
- package/.next/static/chunks/framework-288d1abd95de88d9.js +0 -1
- package/.next/static/chunks/main-016492249b3393e2.js +0 -1
- package/.next/static/chunks/pages/_app-0e951de0aebb6505.js +0 -1
- package/.next/static/chunks/pages/index-c1d5a66d0f4794a6.js +0 -1
- package/src/components/Board/lib/getBonusColor.ts +0 -16
- package/src/components/Board/lib/getPositionInGrid.ts +0 -13
- package/src/components/Board/lib/index.ts +0 -2
- package/src/components/PlainTiles/lib/createPlainTile.ts +0 -41
- package/src/components/PlainTiles/lib/createPlainTiles.ts +0 -25
- package/src/components/PlainTiles/lib/getViewbox.ts +0 -17
- package/src/components/PlainTiles/lib/getX.ts +0 -5
- package/src/components/PlainTiles/lib/getY.ts +0 -5
- package/src/components/PlainTiles/lib/index.ts +0 -6
- package/src/components/PlainTiles/lib/randomize.ts +0 -1
- package/src/lib/createArray.ts +0 -1
- package/src/lib/createGridOf.ts +0 -9
- package/src/lib/detectLocale.ts +0 -27
- package/src/lib/extractCharactersByCase.test.ts +0 -29
- package/src/lib/extractCharactersByCase.ts +0 -29
- package/src/lib/getCellSize.ts +0 -10
- package/src/lib/getCoordinates.ts +0 -16
- package/src/lib/getRemainingTilesCount.ts +0 -11
- package/src/lib/getTotalRemainingTilesCount.ts +0 -11
- package/src/lib/groupResults.ts +0 -35
- package/src/lib/guessLocale.ts +0 -20
- package/src/lib/isUpperCase.ts +0 -5
- package/src/lib/resultMatchesCellFilter.ts +0 -21
- package/src/lib/sortGroupedResults.ts +0 -21
- package/src/lib/sortResults.ts +0 -41
- package/src/state/slices/cellFilterInitialState.ts +0 -5
- package/src/state/slices/dictionaryInitialState.ts +0 -15
- package/src/state/slices/index.ts +0 -16
- package/src/state/slices/rackInitialState.ts +0 -9
- package/src/state/slices/resultsInitialState.ts +0 -20
- package/src/state/slices/solveInitialState.ts +0 -21
- package/src/state/slices/verifyInitialState.ts +0 -19
- /package/.next/static/{47JHul8F9NSWCNSEuahuL → MhrqAqLI9_L8obb7tgjvi}/_ssgManifest.js +0 -0
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"keepAlive": true
|
|
86
86
|
},
|
|
87
87
|
"logging": {},
|
|
88
|
+
"compiler": {},
|
|
88
89
|
"expireTime": 31536000,
|
|
89
90
|
"staticPageGenerationTimeout": 60,
|
|
90
91
|
"modularizeImports": {
|
|
@@ -97,7 +98,7 @@
|
|
|
97
98
|
},
|
|
98
99
|
"outputFileTracingRoot": "/home/kamil/projects/scrabble-solver",
|
|
99
100
|
"experimental": {
|
|
100
|
-
"
|
|
101
|
+
"useSkewCookie": false,
|
|
101
102
|
"nodeMiddleware": false,
|
|
102
103
|
"cacheLife": {
|
|
103
104
|
"default": {
|
|
@@ -146,6 +147,7 @@
|
|
|
146
147
|
"linkNoTouchStart": false,
|
|
147
148
|
"caseSensitiveRoutes": false,
|
|
148
149
|
"clientSegmentCache": false,
|
|
150
|
+
"dynamicOnHover": false,
|
|
149
151
|
"preloadEntriesOnStart": true,
|
|
150
152
|
"clientRouterFilter": true,
|
|
151
153
|
"clientRouterFilterRedirects": false,
|
|
@@ -173,9 +175,6 @@
|
|
|
173
175
|
"swcTraceProfiling": false,
|
|
174
176
|
"forceSwcTransforms": false,
|
|
175
177
|
"largePageDataBytes": 128000,
|
|
176
|
-
"turbo": {
|
|
177
|
-
"root": "/home/kamil/projects/scrabble-solver"
|
|
178
|
-
},
|
|
179
178
|
"typedRoutes": false,
|
|
180
179
|
"typedEnv": false,
|
|
181
180
|
"parallelServerCompiles": false,
|
|
@@ -184,8 +183,10 @@
|
|
|
184
183
|
"authInterrupts": false,
|
|
185
184
|
"webpackMemoryOptimizations": false,
|
|
186
185
|
"optimizeServerReact": true,
|
|
187
|
-
"useEarlyImport": false,
|
|
188
186
|
"viewTransition": false,
|
|
187
|
+
"routerBFCache": false,
|
|
188
|
+
"removeUncaughtErrorAndRejectionListeners": false,
|
|
189
|
+
"validateRSCRequestHeaders": false,
|
|
189
190
|
"staleTimes": {
|
|
190
191
|
"dynamic": 0,
|
|
191
192
|
"static": 300
|
|
@@ -196,6 +197,12 @@
|
|
|
196
197
|
"dynamicIO": false,
|
|
197
198
|
"inlineCss": false,
|
|
198
199
|
"useCache": false,
|
|
200
|
+
"globalNotFound": false,
|
|
201
|
+
"devtoolNewPanelUI": false,
|
|
202
|
+
"devtoolSegmentExplorer": false,
|
|
203
|
+
"browserDebugInfoInTerminal": false,
|
|
204
|
+
"optimizeRouterScrolling": false,
|
|
205
|
+
"strictNextHead": true,
|
|
199
206
|
"optimizePackageImports": [
|
|
200
207
|
"lucide-react",
|
|
201
208
|
"date-fns",
|
|
@@ -227,10 +234,10 @@
|
|
|
227
234
|
"@effect/sql-mssql",
|
|
228
235
|
"@effect/sql-mysql2",
|
|
229
236
|
"@effect/sql-pg",
|
|
230
|
-
"@effect/sql-
|
|
231
|
-
"@effect/sql-
|
|
232
|
-
"@effect/sql-
|
|
233
|
-
"@effect/sql-
|
|
237
|
+
"@effect/sql-sqlite-node",
|
|
238
|
+
"@effect/sql-sqlite-bun",
|
|
239
|
+
"@effect/sql-sqlite-wasm",
|
|
240
|
+
"@effect/sql-sqlite-react-native",
|
|
234
241
|
"@effect/rpc",
|
|
235
242
|
"@effect/rpc-http",
|
|
236
243
|
"@effect/typeclass",
|
|
@@ -276,9 +283,12 @@
|
|
|
276
283
|
"trustHostHeader": false,
|
|
277
284
|
"isExperimentalCompile": false
|
|
278
285
|
},
|
|
279
|
-
"htmlLimitedBots": "Mediapartners-Google|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview",
|
|
286
|
+
"htmlLimitedBots": "Mediapartners-Google|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti",
|
|
280
287
|
"bundlePagesRouterDependencies": false,
|
|
281
|
-
"configFileName": "next.config.js"
|
|
288
|
+
"configFileName": "next.config.js",
|
|
289
|
+
"turbopack": {
|
|
290
|
+
"root": "/home/kamil/projects/scrabble-solver"
|
|
291
|
+
}
|
|
282
292
|
},
|
|
283
293
|
"appDir": "/home/kamil/projects/scrabble-solver/packages/scrabble-solver",
|
|
284
294
|
"relativeAppDir": "packages/scrabble-solver",
|
|
@@ -296,7 +306,8 @@
|
|
|
296
306
|
".next/server/dynamic-css-manifest.js",
|
|
297
307
|
".next/BUILD_ID",
|
|
298
308
|
".next/server/next-font-manifest.js",
|
|
299
|
-
".next/server/next-font-manifest.json"
|
|
309
|
+
".next/server/next-font-manifest.json",
|
|
310
|
+
".next/required-server-files.json"
|
|
300
311
|
],
|
|
301
312
|
"ignore": [
|
|
302
313
|
"../../node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"
|
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"headers": [],
|
|
16
|
+
"rewrites": {
|
|
17
|
+
"beforeFiles": [],
|
|
18
|
+
"afterFiles": [],
|
|
19
|
+
"fallback": []
|
|
20
|
+
},
|
|
16
21
|
"dynamicRoutes": [
|
|
17
22
|
{
|
|
18
23
|
"page": "/api/dictionary/[locale]",
|
|
@@ -49,7 +54,7 @@
|
|
|
49
54
|
"dataRoutes": [
|
|
50
55
|
{
|
|
51
56
|
"page": "/",
|
|
52
|
-
"dataRouteRegex": "^/_next/data/
|
|
57
|
+
"dataRouteRegex": "^/_next/data/MhrqAqLI9_L8obb7tgjvi/index\\.json$"
|
|
53
58
|
}
|
|
54
59
|
],
|
|
55
60
|
"rsc": {
|
|
@@ -67,6 +72,5 @@
|
|
|
67
72
|
"rewriteHeaders": {
|
|
68
73
|
"pathHeader": "x-nextjs-rewritten-path",
|
|
69
74
|
"queryHeader": "x-nextjs-rewritten-query"
|
|
70
|
-
}
|
|
71
|
-
"rewrites": []
|
|
75
|
+
}
|
|
72
76
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=106,exports.ids=[106],exports.modules={1356:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getDictionaryFilepath=void 0;let e=d(c(33873)),f=c(84960);b.getDictionaryFilepath=a=>e.default.resolve(f.OUTPUT_DIRECTORY,`${a}.txt`)},2655:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.MemoryCache=b.LayeredCache=b.getDictionaryFilepath=b.downloadDictionary=b.DiskCache=b.createCacheTimestampComparator=b.createAsyncProxy=void 0;var d=c(80457);Object.defineProperty(b,"createAsyncProxy",{enumerable:!0,get:function(){return d.createAsyncProxy}});var e=c(10743);Object.defineProperty(b,"createCacheTimestampComparator",{enumerable:!0,get:function(){return e.createCacheTimestampComparator}});var f=c(70928);Object.defineProperty(b,"DiskCache",{enumerable:!0,get:function(){return f.DiskCache}});var g=c(49085);Object.defineProperty(b,"downloadDictionary",{enumerable:!0,get:function(){return g.downloadDictionary}});var h=c(1356);Object.defineProperty(b,"getDictionaryFilepath",{enumerable:!0,get:function(){return h.getDictionaryFilepath}});var i=c(16299);Object.defineProperty(b,"LayeredCache",{enumerable:!0,get:function(){return i.LayeredCache}});var j=c(70294);Object.defineProperty(b,"MemoryCache",{enumerable:!0,get:function(){return j.MemoryCache}})},5145:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getTxtWordList=void 0;let e=d(c(29021)),f=c(77279),g=c(33471);b.getTxtWordList=async(a,b)=>{let c=await (0,f.downloadFile)(a),d=e.default.readFileSync(c,"utf-8"),h=(0,g.extractWords)(d.toLocaleString(),b);return e.default.unlinkSync(c),h}},5878:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.findFirstWordIndex=void 0,b.findFirstWordIndex=(a,b)=>{let c=a.findIndex((a,c)=>{let d=a[c+1]||"",e=a.localeCompare(d,b)>0,f=!!a.match(/\s/);return 0!==a.trim().length&&!f&&e});if(void 0===c)throw Error("Cannot find index of the first word in the file");return c}},10184:(a,b,c)=>{c.d(b,{T:()=>d});let d=a=>({origin:a.headers.origin,referer:a.headers.referer,userAgent:a.headers["user-agent"],xForwardedFor:a.headers["x-forwarded-for"],xRealIp:a.headers["x-real-ip"]})},10305:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/french/ods8.txt",d.Locale.FR_FR);return(0,e.transliterateDiacritics)(a)}},10743:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.createCacheTimestampComparator=void 0,b.createCacheTimestampComparator=a=>(b,c)=>{let d=b.getLastModifiedTimestamp(a),e=c.getLastModifiedTimestamp(a);return d===e?0:void 0===d?1:void 0===e?-1:e-d}},16299:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.LayeredCache=void 0;let d=c(10743),e=c(70928),f=c(70294);class g{constructor(){this.layers=[new f.MemoryCache,new e.DiskCache]}async get(a){let b=this.getLastModifiedLayer(a);if(!b)return Promise.resolve(void 0);let[c,d]=this.layers,e=await b.get(a);return b===d&&void 0!==e&&await c.set(a,e),e}getLastModifiedTimestamp(a){let b=this.getLastModifiedLayer(a);if(b)return b.getLastModifiedTimestamp(a)}has(a){return this.layers.some(b=>b.has(a))}isStale(a){return!!this.layers.some(b=>b.isStale(a))||!!this.layers.every(b=>void 0===b.isStale(a))&&void 0}async set(a,b){let[c,d]=this.layers;await d.set(a,b),await c.set(a,b)}getLastModifiedLayer(a){let[b]=[...this.layers.filter(b=>b.has(a))].sort((0,d.createCacheTimestampComparator)(a));return b}}b.LayeredCache=g},24392:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.CharacterBonus=void 0;let d=c(34474),e=c(57103);class f extends e.Bonus{constructor(){super(...arguments),this.type=d.BONUS_CHARACTER}canApply(a,b){return super.canApply(a,b)&&this.matchesCellTileScore(a,b)}matchesCellTileScore(a,b){return void 0===this.score||this.score===a.pointsMap[b.tile.character]}get value(){return{characterMultiplier:this.multiplier,wordMultiplier:1}}}b.CharacterBonus=f},26182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.VerticalPattern=void 0;let d=c(29660);class e extends d.Pattern{clone(){return new e(this.board,this.cells.map(a=>a.clone()))}getCollisions(){let a=[];return this.cells.filter(a=>a.isEmpty&&(this.board.collidesLeft(a)||this.board.collidesRight(a))).forEach(b=>{let c=this.board.getRow(b.y),e=b.x-1;for(;e>=0&&c[e].hasTile();)--e;let f=c.slice(e+1,b.x);for(e=b.x+1;e<c.length&&c[e].hasTile();)++e;let g=c.slice(b.x+1,e),h=[...f,b,...g];if(h.length>1){let b=new d.Pattern(this.board,h);a.push(b)}}),a}}b.VerticalPattern=e},26220:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.OUTPUT_DIRECTORY=void 0;let e=d(c(21820));b.OUTPUT_DIRECTORY=d(c(33873)).default.resolve(e.default.homedir(),".scrabble-solver","logs")},27475:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;var f=c(42507);Object.defineProperty(b,"getWordList",{enumerable:!0,get:function(){return f.getWordList}}),e(c(67511),b),e(c(98335),b)},27605:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Result=void 0;let d=c(34474),e=c(43734);class f{constructor({cells:a,id:b,collisions:c,points:d}){let e=k(a);this.blanksCount=g(e).length,this.cells=a,this.collisions=c,this.consonantsCount=h(e).length,this.id=b,this.length=a.length,this.points=d,this.pointsRatio=j(e,d),this.tiles=e,this.tilesCount=e.length,this.vowelsCount=i(e).length,this.word=l(a),this.words=m(a,c),this.wordsCount=1+this.collisions.length}toJson(){return{cells:this.cells.map(a=>a.toJson()),id:this.id,collisions:this.collisions.map(a=>a.map(a=>a.toJson())),points:this.points}}isHorizontal(){return this.cells[0].y===this.cells[1].y}isVertical(){return this.cells[0].x===this.cells[1].x}}b.Result=f,f.fromJson=a=>new f({id:a.id,cells:a.cells.map(e.Cell.fromJson),collisions:a.collisions.map(a=>a.map(e.Cell.fromJson)),points:a.points});let g=a=>a.filter(({isBlank:a})=>a),h=a=>a.filter(n),i=a=>a.filter(o),j=(a,b)=>b/a.length,k=a=>a.filter(({isEmpty:a})=>a).map(({tile:a})=>a),l=a=>a.reduce((a,b)=>a+b.toString(),""),m=(a,b)=>[a,...b].map(l),n=({character:a,isBlank:b})=>d.CONSONANTS.includes(a)&&!b,o=({character:a,isBlank:b})=>d.VOWELS.includes(a)&&!b},29562:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordDefinition=b.WordBonus=b.VerticalPattern=b.isTileJson=b.Tile=b.Result=b.Pattern=b.Locale=b.isLocale=b.isObject=b.isError=b.HorizontalPattern=b.isGame=b.Game=b.FinalPattern=b.Config=b.CharacterBonus=b.isCellJson=b.Cell=b.Bonus=b.isBoardJson=b.Board=b.isScoreBingo=b.isMultiplierBingo=b.isBingo=void 0;var d=c(97055);Object.defineProperty(b,"isBingo",{enumerable:!0,get:function(){return d.isBingo}}),Object.defineProperty(b,"isMultiplierBingo",{enumerable:!0,get:function(){return d.isMultiplierBingo}}),Object.defineProperty(b,"isScoreBingo",{enumerable:!0,get:function(){return d.isScoreBingo}});var e=c(54182);Object.defineProperty(b,"Board",{enumerable:!0,get:function(){return e.Board}});var f=c(43728);Object.defineProperty(b,"isBoardJson",{enumerable:!0,get:function(){return f.isBoardJson}});var g=c(57103);Object.defineProperty(b,"Bonus",{enumerable:!0,get:function(){return g.Bonus}});var h=c(43734);Object.defineProperty(b,"Cell",{enumerable:!0,get:function(){return h.Cell}});var i=c(74784);Object.defineProperty(b,"isCellJson",{enumerable:!0,get:function(){return i.isCellJson}});var j=c(24392);Object.defineProperty(b,"CharacterBonus",{enumerable:!0,get:function(){return j.CharacterBonus}});var k=c(95776);Object.defineProperty(b,"Config",{enumerable:!0,get:function(){return k.Config}});var l=c(88368);Object.defineProperty(b,"FinalPattern",{enumerable:!0,get:function(){return l.FinalPattern}});var m=c(48852);Object.defineProperty(b,"Game",{enumerable:!0,get:function(){return m.Game}}),Object.defineProperty(b,"isGame",{enumerable:!0,get:function(){return m.isGame}});var n=c(88144);Object.defineProperty(b,"HorizontalPattern",{enumerable:!0,get:function(){return n.HorizontalPattern}});var o=c(58612);Object.defineProperty(b,"isError",{enumerable:!0,get:function(){return o.isError}});var p=c(52143);Object.defineProperty(b,"isObject",{enumerable:!0,get:function(){return p.isObject}});var q=c(52680);Object.defineProperty(b,"isLocale",{enumerable:!0,get:function(){return q.isLocale}}),Object.defineProperty(b,"Locale",{enumerable:!0,get:function(){return q.Locale}});var r=c(29660);Object.defineProperty(b,"Pattern",{enumerable:!0,get:function(){return r.Pattern}});var s=c(27605);Object.defineProperty(b,"Result",{enumerable:!0,get:function(){return s.Result}});var t=c(35722);Object.defineProperty(b,"Tile",{enumerable:!0,get:function(){return t.Tile}});var u=c(91652);Object.defineProperty(b,"isTileJson",{enumerable:!0,get:function(){return u.isTileJson}});var v=c(26182);Object.defineProperty(b,"VerticalPattern",{enumerable:!0,get:function(){return v.VerticalPattern}});var w=c(67699);Object.defineProperty(b,"WordBonus",{enumerable:!0,get:function(){return w.WordBonus}});var x=c(51385);Object.defineProperty(b,"WordDefinition",{enumerable:!0,get:function(){return x.WordDefinition}})},29660:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Pattern=void 0;class c{constructor(a,b){this.board=a,this.cells=b}canBePlaced(a){let b=this.getEmptyCellsCount();return b>=1&&b<=a.rackSize&&(this.hasAtLeast1NonEmptyCell()||this.collides()||this.goesThroughBoardCenter()&&this.board.isEmpty())}clone(){return new c(this.board,this.cells.map(a=>a.clone()))}collides(){return this.cells.some(a=>a.isEmpty&&this.board.collides(a))}getIndexOfFirstCellWithoutTile(){return this.cells.findIndex(a=>!a.hasTile())}getEmptyCellsCount(){return this.cells.filter(a=>a.isEmpty).length}goesThroughBoardCenter(){return this.cells.some(a=>a.x===this.board.center.x&&a.y===this.board.center.y&&a.isEmpty)}hasAtLeast1EmptyCell(){return this.cells.some(a=>a.isEmpty)}hasAtLeast1NonEmptyCell(){return this.cells.some(a=>!a.isEmpty)}getCollisions(){return[]}toJson(){return{cells:this.cells.map(a=>a.toJson()),collisions:this.getCollisions().map(a=>a.toJson()),word:this.toString()}}toString(){return this.cells.reduce((a,b)=>a+b.toString(),"")}}b.Pattern=c},33471:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.extractWords=void 0;let d=c(5878);b.extractWords=(a,b)=>{let c=a.split(/\r?\n/g),e=(0,d.findFirstWordIndex)(c,b),f=[];for(let a=e;a<c.length;++a){let b=c[a].trim();b.length>0&&f.push(b.toLocaleLowerCase())}return f}},34474:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.VOWELS=b.CONSONANTS=b.NO_BONUS=b.EMPTY_CELL=b.BONUS_WORD=b.BONUS_CHARACTER=b.BLANK=b.COMMA_LATIN=b.COMMA_ARABIC=void 0,b.COMMA_ARABIC="،",b.COMMA_LATIN=",",b.BLANK=" ",b.BONUS_CHARACTER="BONUS_CHARACTER",b.BONUS_WORD="BONUS_WORD",b.EMPTY_CELL=" ",b.NO_BONUS={characterMultiplier:1,wordMultiplier:1},b.CONSONANTS="bc\xe7ćdfgğhjklłmnń\xf1pqrsşśtvwxzźż".split(""),b.VOWELS="aą\xe4eęio\xf3\xf6u\xfcyı".split("")},35722:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Tile=void 0;let d=c(34474);class e{constructor({character:a,isBlank:b=!1}){this.character=a,this.isBlank=b}clone(){return new e({character:this.character,isBlank:this.isBlank})}equals(a){return this.character===a.character&&this.isBlank===a.isBlank}toJson(){return{character:this.character,isBlank:this.isBlank}}toString(){return this.character}}b.Tile=e,e.fromJson=a=>a?new e({character:a.character,isBlank:a.isBlank}):e.Null,e.Null=Object.freeze({character:d.EMPTY_CELL,isBlank:!1,clone:()=>e.Null,equals:a=>a===e.Null,toJson:()=>null,toString:()=>d.EMPTY_CELL})},37779:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/german/german.txt",d.Locale.DE_DE)},38670:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.transliterateDiacritics=void 0;let d=c(66605),e=c(40224);b.transliterateDiacritics=(a,b)=>(0,e.unique)(a.map(a=>(0,d.transliterate)(a,b)))},39287:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/file-2017.txt",d.Locale.ES_ES);return(0,e.transliterateDiacritics)(a,{ignore:["\xf1"]})}},40224:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.unique=void 0,b.unique=a=>Array.from(new Set(a))},42507:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(67511),f={[d.Locale.DE_DE]:e.german.getWordList,[d.Locale.EN_GB]:e.english.getWordListGb,[d.Locale.EN_US]:e.english.getWordListUs,[d.Locale.ES_ES]:e.spanish.getWordList,[d.Locale.FA_IR]:e.persian.getWordList,[d.Locale.FR_FR]:e.french.getWordList,[d.Locale.PL_PL]:e.polish.getWordList,[d.Locale.RO_RO]:e.romanian.getWordList,[d.Locale.TR_TR]:e.turkish.getWordList};b.getWordList=a=>f[a]()},43728:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isBoardJson=void 0;let d=c(74784);b.isBoardJson=a=>{if(!Array.isArray(a))return!1;for(let b of a){if(!Array.isArray(a))return!1;for(let a of b)if(!(0,d.isCellJson)(a))return!1}return!0}},43734:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Cell=void 0;let d=c(35722);class e{constructor({isEmpty:a=!0,tile:b=d.Tile.Null,x:c,y:e}){this.isEmpty=a,this.tile=b,this.x=c,this.y=e}clone(){return new e({isEmpty:this.isEmpty,tile:this.tile.clone(),x:this.x,y:this.y})}equals(a){return this.x===a.x&&this.y===a.y&&this.isEmpty===a.isEmpty&&this.tile.equals(a.tile)}hasTile(){return this.tile!==d.Tile.Null}isCandidate(){return this.isEmpty&&this.hasTile()}toJson(){return{isEmpty:this.isEmpty,tile:this.tile.toJson(),x:this.x,y:this.y}}toString(){return this.tile.toString()}}b.Cell=e,e.fromJson=a=>new e({isEmpty:a.isEmpty,tile:d.Tile.fromJson(a.tile),x:a.x,y:a.y})},48852:(a,b)=>{var c;Object.defineProperty(b,"__esModule",{value:!0}),b.isGame=b.Game=void 0,function(a){a.Kelimelik="kelimelik",a.LetterLeague="letter-league",a.Literaki="literaki",a.Scrabble="scrabble",a.ScrabbleDuel="scrabble-duel",a.SuperScrabble="super-scrabble"}(c||(b.Game=c={}));let d=Object.values(c);b.isGame=a=>d.includes(a)},49085:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadDictionary=void 0;let d=c(19362),e=c(57519),f=c(27475);b.downloadDictionary=async a=>{e.logger.info("downloadDictionary",{locale:a});let b=await (0,f.getWordList)(a);return e.logger.info("downloadDictionary - success",{locale:a}),d.Trie.fromArray(b)}},51385:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordDefinition=void 0;class c{constructor({definitions:a,exists:b,isAllowed:c,word:d}){this.definitions=a,this.exists=b,this.isAllowed=c,this.word=d}toJson(){return{definitions:this.definitions,exists:this.exists,isAllowed:this.isAllowed,word:this.word}}}b.WordDefinition=c,c.fromJson=a=>a?new c({definitions:a.definitions,exists:a.exists,isAllowed:a.isAllowed,word:a.word}):c.Null,c.Null=Object.freeze({definitions:[],exists:!1,isAllowed:!1,word:"",toJson:()=>null})},51513:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.logger=void 0;let e=d(c(33873)),f=c(55124),g=c(26220);b.logger=(0,f.createLogger)({level:"info",format:f.format.combine(f.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),f.format.errors({stack:!0}),f.format.splat(),f.format.json(),f.format.prettyPrint()),transports:[new f.transports.File({filename:e.default.resolve(g.OUTPUT_DIRECTORY,"error.log"),level:"error"}),new f.transports.File({filename:e.default.resolve(g.OUTPUT_DIRECTORY,"all.log")}),new f.transports.Console({format:f.format.combine(f.format.colorize(),f.format.simple()),level:"error"})]})},52143:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isObject=void 0,b.isObject=a=>"object"==typeof a&&null!==a},52250:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.downloadHtml=void 0;let d=c(31097);b.downloadHtml=a=>new Promise((b,c)=>{(a.startsWith("https")?d.https:d.http).get(a,a=>{let d="";a.setEncoding("utf8"),a.on("data",a=>{d+=a}),a.on("end",()=>{b(d)}),a.on("error",c)})})},52498:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getTempFilepath=void 0;let e=d(c(21820)),f=d(c(33873)),g=c(93839),h=f.default.resolve(e.default.homedir(),".scrabble-solver");b.getTempFilepath=()=>{let a=`${(0,g.getHash)()}.txt`;return f.default.join(h,a)}},52680:(a,b)=>{var c;Object.defineProperty(b,"__esModule",{value:!0}),b.isLocale=b.Locale=void 0,function(a){a.DE_DE="de-DE",a.EN_GB="en-GB",a.EN_US="en-US",a.ES_ES="es-ES",a.FA_IR="fa-IR",a.FR_FR="fr-FR",a.PL_PL="pl-PL",a.RO_RO="ro-RO",a.TR_TR="tr-TR"}(c||(b.Locale=c={}));let d=Object.values(c);b.isLocale=a=>d.includes(a)},54182:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Board=void 0;let d=c(34474),e=c(43734),f=c(35722);class g{static fromStringArray(a){return new g({rows:a.map((a,b)=>a.split("").map((a,c)=>new e.Cell({isEmpty:!a||a===d.EMPTY_CELL,tile:a===d.EMPTY_CELL?f.Tile.Null:new f.Tile({character:a}),x:c,y:b})))})}constructor({rows:a}){this.rows=a,this.columnsCount=a[0].length,this.rowsCount=a.length}get center(){let a=Math.floor(this.columnsCount/2),b=Math.floor(this.rowsCount/2);return this.rows[b][a]}clone(){return new g({rows:this.rows.map(a=>a.map(a=>a.clone()))})}collides(a){return this.collidesUp(a)||this.collidesDown(a)||this.collidesLeft(a)||this.collidesRight(a)}collidesDown({x:a,y:b}){return b<this.rowsCount-1&&!this.rows[b+1][a].isEmpty}collidesLeft({x:a,y:b}){return a>0&&!this.rows[b][a-1].isEmpty}collidesRight({x:a,y:b}){return a<this.columnsCount-1&&!this.rows[b][a+1].isEmpty}collidesUp({x:a,y:b}){return b>0&&!this.rows[b-1][a].isEmpty}equals(a){return this.columnsCount===a.columnsCount&&this.rowsCount===a.rowsCount&&this.rows.every((b,c)=>b.every((b,d)=>b.equals(a.rows[c][d])))}getBlanksCount(){return this.rows.reduce((a,b)=>a+b.reduce((a,b)=>a+ +!!b.tile.isBlank,0),0)}getColumn(a){return this.rows.map(b=>b[a])}getRow(a){return this.rows[a]}getTilesCount(){return this.rows.reduce((a,b)=>a+b.reduce((a,b)=>a+ +!!b.hasTile(),0),0)}getWords(){return[...i(this.rows),...i(h(this.rows))]}isEmpty(){return this.rows.every(a=>a.every(({isEmpty:a})=>a))}toJson(){return this.rows.map(a=>a.map(a=>a.toJson()))}toString(){return this.rows.map(a=>a.map(String).join("")).join("\n")}updateCell(a,b,c){this.rows[b][a]=c(this.rows[b][a])}updateRow(a,b){this.rows[a]=b(this.rows[a])}}b.Board=g,g.create=(a,b)=>{let c=Array(b),d=Array(a).fill(" ").join(""),e=c.fill(d);return g.fromStringArray(e)},g.fromJson=a=>new g({rows:a.map(a=>a.map(e.Cell.fromJson))});let h=a=>{let b=a.length,c=a[0].length,d=Array(c).fill(null).map(()=>Array(b));for(let e=0;e<b;++e)for(let b=0;b<c;++b)d[b][e]=a[e][b];return d},i=a=>{let b=[];for(let c of a){let a=[];for(let d of c)d.isEmpty?a.length>0&&(a.length>1&&b.push(j(a)),a=[]):a.push(d);a.length>1&&b.push(j(a))}return b},j=a=>a.map(a=>a.tile.character).join("")},57103:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Bonus=void 0;class c{constructor({multiplier:a,score:b,x:c,y:d}){this.multiplier=a,this.score=b,this.x=c,this.y=d}canApply(a,b){return b.isEmpty&&this.matchesCellCoordinates(b)}matchesCellCoordinates(a){return this.x===a.x&&this.y===a.y}toJson(){return{multiplier:this.multiplier,score:this.score,type:this.type,x:this.x,y:this.y}}get value(){return{characterMultiplier:1,wordMultiplier:1}}}b.Bonus=c},57519:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.logger=void 0;var d=c(51513);Object.defineProperty(b,"logger",{enumerable:!0,get:function(){return d.logger}})},58612:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isError=void 0;let d=c(52143);b.isError=a=>!!(0,d.isObject)(a)&&"string"==typeof a.message},59321:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.unzip=void 0;let e=d(c(29021)),f=d(c(42029));b.unzip=(a,b,c)=>e.default.createReadStream(a).pipe(f.default.Parse()).on("entry",a=>{a.path===b?a.pipe(e.default.createWriteStream(c)):a.autodrain()}).promise()},67511:function(a,b,c){var d,e=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),f=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),g=this&&this.__importStar||(d=function(a){return(d=Object.getOwnPropertyNames||function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[b.length]=c);return b})(a)},function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c=d(a),g=0;g<c.length;g++)"default"!==c[g]&&e(b,a,c[g]);return f(b,a),b});Object.defineProperty(b,"__esModule",{value:!0}),b.turkish=b.spanish=b.romanian=b.polish=b.persian=b.french=b.german=b.english=void 0,b.english=g(c(80119)),b.german=g(c(37779)),b.french=g(c(10305)),b.persian=g(c(91135)),b.polish=g(c(72794)),b.romanian=g(c(82248)),b.spanish=g(c(39287)),b.turkish=g(c(92639))},67699:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.WordBonus=void 0;let d=c(34474),e=c(57103);class f extends e.Bonus{constructor(){super(...arguments),this.type=d.BONUS_WORD}get value(){return{characterMultiplier:1,wordMultiplier:this.multiplier}}}b.WordBonus=f},70294:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.MemoryCache=void 0;let d=c(84960);class e{constructor(){this.cache={},this.cacheTimestamps={}}get(a){return Promise.resolve(this.cache[a])}getLastModifiedTimestamp(a){return this.cacheTimestamps[a]}has(a){return void 0!==this.cache[a]}isStale(a){let b=this.getLastModifiedTimestamp(a);if(this.has(a)&&void 0!==b)return Math.abs(b-Date.now())>d.CACHE_STALE_THRESHOLD}set(a,b){return this.cacheTimestamps[a]=Date.now(),this.cache[a]=b,Promise.resolve()}}b.MemoryCache=e},70928:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.DiskCache=void 0;let e=c(19362),f=d(c(29021)),g=c(84960),h=c(1356);class i{async get(a){if(!this.has(a))return;let b=(0,h.getDictionaryFilepath)(a),c=await f.default.promises.readFile(b,"utf-8");return e.Trie.deserialize(c)}getLastModifiedTimestamp(a){let b=(0,h.getDictionaryFilepath)(a);if(f.default.existsSync(b))return f.default.statSync(b).mtimeMs}has(a){let b=(0,h.getDictionaryFilepath)(a);return f.default.existsSync(b)}isStale(a){if(!this.has(a))return;let b=this.getLastModifiedTimestamp(a);if(void 0!==b)return Math.abs(b-Date.now())>g.CACHE_STALE_THRESHOLD}async set(a,b){let c=(0,h.getDictionaryFilepath)(a);await f.default.promises.writeFile(c,b.serialize())}}b.DiskCache=i},72794:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let e=c(29562),f=c(14217),g=d(c(29021)),h=c(79551),i=c(98335);b.getWordList=async()=>{try{let a=(0,i.getTempFilepath)(),b=await j("https://sjp.pl/sl/growy/"),c=await (0,i.downloadFile)(b);await (0,i.unzip)(c,"slowa.txt",a),g.default.unlinkSync(c);let d=g.default.readFileSync(a,"utf-8");g.default.unlinkSync(a);let e=(0,i.extractWords)(d.toLocaleString(),"pl-PL");if(e.length<2e6)return l();return e}catch{return l()}};let j=async a=>{let b=k(await (0,i.downloadHtml)(a)),{href:c}=new h.URL(b,a);return c},k=a=>{let b=(0,f.load)(a),c=Array.from(b("a")).map(a=>b(a).attr("href")).filter(Boolean).find(a=>a.endsWith(".zip"));if(void 0===c)throw Error("Cannot find link to zip file on the page");return c},l=()=>(0,i.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/polish/sjp.txt",e.Locale.PL_PL)},74784:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isCellJson=void 0;let d=c(52143),e=c(91652);b.isCellJson=a=>(0,d.isObject)(a)&&"boolean"==typeof a.isEmpty&&((0,e.isTileJson)(a.tile)||null===a.tile)&&"number"==typeof a.x&&"number"==typeof a.y},77279:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.downloadFile=void 0;let e=c(31097),f=d(c(29021)),g=c(52498);b.downloadFile=a=>new Promise((b,c)=>{let d=(0,g.getTempFilepath)(),h=a.startsWith("https")?e.https:e.http,i=f.default.createWriteStream(d);h.get(a,e=>{if(void 0===e.statusCode||e.statusCode>=400)return void c(Error(`Cannot download file: ${a}`));e.on("error",a=>{i.close(),c(a)}),e.on("end",()=>{i.on("finish",()=>{i.close(),b(d)})}),e.pipe(i)}).on("error",a=>{i.close(),c(a)})})},77715:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.dictionaries=void 0;let f=c(90949);e(c(2655),b),b.dictionaries=new f.Dictionaries},80119:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordListUs=b.getWordListGb=void 0;let d=c(29562),e=c(98335);b.getWordListGb=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/sowpods.txt",d.Locale.EN_GB),b.getWordListUs=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/twl06.txt",d.Locale.EN_US)},80457:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.createAsyncProxy=void 0,b.createAsyncProxy=a=>{let b=null;return async()=>{if(b)return b;try{return b=a(),await b}finally{b=null}}}},82248:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>{let a=await (0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt",d.Locale.RO_RO);return(0,e.transliterateDiacritics)(a)}},84960:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.OUTPUT_DIRECTORY=b.CACHE_STALE_THRESHOLD=b.DAY=void 0;let e=d(c(21820)),f=d(c(33873));b.DAY=864e5,b.CACHE_STALE_THRESHOLD=+b.DAY,b.OUTPUT_DIRECTORY=f.default.resolve(e.default.homedir(),".scrabble-solver","dictionaries")},88144:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.HorizontalPattern=void 0;let d=c(29660);class e extends d.Pattern{clone(){return new e(this.board,this.cells.map(a=>a.clone()))}getCollisions(){let a=[];return this.cells.filter(a=>a.isEmpty&&(this.board.collidesUp(a)||this.board.collidesDown(a))).forEach(b=>{let c=this.board.getColumn(b.x),e=b.y-1;for(;e>=0&&c[e].hasTile();)--e;let f=c.slice(e+1,b.y);for(e=b.y+1;e<c.length&&c[e].hasTile();)++e;let g=c.slice(b.y+1,e),h=[...f,b,...g];if(h.length>1){let b=new d.Pattern(this.board,h);a.push(b)}}),a}}b.HorizontalPattern=e},88368:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.FinalPattern=void 0;let d=c(29660);class e extends d.Pattern{constructor(a){super(a.board,a.cells),this.collisions=a.getCollisions()}getCollisions(){return this.collisions}}b.FinalPattern=e},90949:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.Dictionaries=void 0;let e=c(57519),f=c(29562),g=d(c(29021)),h=c(84960),i=c(2655);class j{constructor(){this.cache=new i.LayeredCache,this.downloadDictionaryProxies=Object.fromEntries(Object.values(f.Locale).map(a=>[a,(0,i.createAsyncProxy)(()=>(0,i.downloadDictionary)(a))]))}async get(a){if(this.cache.has(a)){let b=await this.cache.get(a);if(b)return b}return e.logger.info("Dictionaries - cache miss",{locale:a}),this.updateDictionary(a)}remove(){g.default.rmdirSync(h.OUTPUT_DIRECTORY,{recursive:!0})}async update(a){let b=a?Object.values(f.Locale):this.getLocalesToUpdate();e.logger.info("Dictionaries - update",{force:a,locales:b}),await Promise.all(b.map(a=>this.updateDictionary(a)))}getLocalesToUpdate(){return Object.values(f.Locale).filter(a=>!1!==this.cache.isStale(a))}async updateDictionary(a){e.logger.info("Dictionaries - updateDictionary",{locale:a}),g.default.mkdirSync(h.OUTPUT_DIRECTORY,{recursive:!0});let b=this.downloadDictionaryProxies[a],c=await b();return await this.cache.set(a,c),c}}b.Dictionaries=j},91135:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/persian/persian.txt",d.Locale.FA_IR)},91652:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isTileJson=void 0;let d=c(52143);b.isTileJson=a=>(0,d.isObject)(a)&&"string"==typeof a.character&&"boolean"==typeof a.isBlank},92639:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.getWordList=void 0;let d=c(29562),e=c(98335);b.getWordList=async()=>(0,e.getTxtWordList)("https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/turkish/kelimelik.txt",d.Locale.TR_TR)},93839:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.getHash=void 0;let e=d(c(55511));b.getHash=(a=8)=>e.default.randomBytes(a).toString("hex")},95776:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.Config=void 0;let d=c(34474),e=c(24392),f=c(67699);class g{constructor(a){this.bonuses=h(a),this.config=a,this.pointsMap=j(this.config)}get alphabet(){return i(this.config)}get bingo(){return this.config.bingo}get blankScore(){return this.config.blankScore}get blanksCount(){return this.config.blanksCount}get boardHeight(){return this.config.boardHeight}get boardWidth(){return this.config.boardWidth}get game(){return this.config.game}get locale(){return this.config.locale}get twoCharacterTiles(){return this.config.tiles.filter(a=>2===a.character.length).map(a=>a.character)}getCellBonus(a){return this.bonuses.find(b=>b.matchesCellCoordinates(a))}getCellBonusValue(a){return this.getCellBonus(a)?.value||d.NO_BONUS}getCharacterPoints(a){if(null!==a)return a===d.BLANK?this.blankScore:this.pointsMap[a]}getTwoCharacterTileByPrefix(a){if(1===a.length)return this.twoCharacterTiles.find(b=>b.startsWith(a))}getTilePoints(a){if(null!==a)return a.isBlank?this.blankScore:this.getCharacterPoints(a.character)}hasCharacter(a){return a in this.pointsMap}isTwoCharacterTilePrefix(a){return void 0!==this.getTwoCharacterTileByPrefix(a)}get rackSize(){return this.config.rackSize}get supportsRemainingTiles(){return this.tiles.every(a=>"number"==typeof a.count)}get tiles(){return this.config.tiles}toJson(){return this.config}}b.Config=g,g.fromJson=a=>new g(a);let h=a=>a.bonuses.map(a=>{if(a.type===d.BONUS_CHARACTER)return new e.CharacterBonus(a);if(a.type===d.BONUS_WORD)return new f.WordBonus(a);throw Error(`Unsupported Bonus type: "${a.type}"`)}),i=a=>a.tiles.map(({character:a})=>a),j=a=>a.tiles.reduce((a,{character:b,score:c})=>({...a,[b]:c}),{})},97055:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.isMultiplierBingo=b.isScoreBingo=b.isBingo=void 0;let d=c(52143);b.isBingo=a=>(0,b.isScoreBingo)(a)||(0,b.isMultiplierBingo)(a),b.isScoreBingo=a=>(0,d.isObject)(a)&&"score"in a&&"number"==typeof a.score,b.isMultiplierBingo=a=>(0,d.isObject)(a)&&"multiplier"in a&&"number"==typeof a.multiplier},98335:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),b.unzip=b.unique=b.transliterateDiacritics=b.getTxtWordList=b.getTempFilepath=b.getHash=b.findFirstWordIndex=b.extractWords=b.downloadHtml=b.downloadFile=void 0;var d=c(77279);Object.defineProperty(b,"downloadFile",{enumerable:!0,get:function(){return d.downloadFile}});var e=c(52250);Object.defineProperty(b,"downloadHtml",{enumerable:!0,get:function(){return e.downloadHtml}});var f=c(33471);Object.defineProperty(b,"extractWords",{enumerable:!0,get:function(){return f.extractWords}});var g=c(5878);Object.defineProperty(b,"findFirstWordIndex",{enumerable:!0,get:function(){return g.findFirstWordIndex}});var h=c(93839);Object.defineProperty(b,"getHash",{enumerable:!0,get:function(){return h.getHash}});var i=c(52498);Object.defineProperty(b,"getTempFilepath",{enumerable:!0,get:function(){return i.getTempFilepath}});var j=c(5145);Object.defineProperty(b,"getTxtWordList",{enumerable:!0,get:function(){return j.getTxtWordList}});var k=c(38670);Object.defineProperty(b,"transliterateDiacritics",{enumerable:!0,get:function(){return k.transliterateDiacritics}});var l=c(40224);Object.defineProperty(b,"unique",{enumerable:!0,get:function(){return l.unique}});var m=c(59321);Object.defineProperty(b,"unzip",{enumerable:!0,get:function(){return m.unzip}})}};
|