scrabble-solver 2.16.5 → 2.16.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/.github/workflows/deploy.yml +1 -1
  2. package/.nx/workspace-data/d/server-process.json +2 -2
  3. package/.nx/workspace-data/file-map.json +423 -417
  4. package/.nx/workspace-data/lockfile-dependencies.hash +1 -1
  5. package/.nx/workspace-data/lockfile-nodes.hash +1 -1
  6. package/.nx/workspace-data/nx_files.nxt +0 -0
  7. package/.nx/workspace-data/parsed-lock-file.dependencies.json +199 -239
  8. package/.nx/workspace-data/parsed-lock-file.nodes.json +399 -471
  9. package/.nx/workspace-data/project-graph.json +620 -750
  10. package/CLAUDE.md +1 -1
  11. package/README.md +2 -2
  12. package/bun.lock +105 -121
  13. package/lerna.json +1 -1
  14. package/package.json +8 -8
  15. package/packages/configs/package.json +3 -3
  16. package/packages/constants/package.json +1 -1
  17. package/packages/dictionaries/package.json +4 -4
  18. package/packages/logger/package.json +1 -1
  19. package/packages/scrabble-solver/.next/BUILD_ID +1 -1
  20. package/packages/scrabble-solver/.next/build-manifest.json +8 -8
  21. package/packages/scrabble-solver/.next/cache/.previewinfo +1 -1
  22. package/packages/scrabble-solver/.next/cache/.rscinfo +1 -1
  23. package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
  24. package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
  25. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
  26. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack.old +0 -0
  27. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
  28. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  29. package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
  30. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  31. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack.old +0 -0
  32. package/packages/scrabble-solver/.next/diagnostics/framework.json +1 -1
  33. package/packages/scrabble-solver/.next/prerender-manifest.json +4 -4
  34. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  35. package/packages/scrabble-solver/.next/server/chunks/712.js +1 -1
  36. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  37. package/packages/scrabble-solver/.next/server/pages/404.html +1 -1
  38. package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
  39. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  40. package/packages/scrabble-solver/.next/server/pages/_error.js.nft.json +1 -1
  41. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +1 -1
  42. package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
  43. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  44. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  45. package/packages/scrabble-solver/.next/server/pages/not-found.html +1 -1
  46. package/packages/scrabble-solver/.next/server/pages-manifest.json +1 -1
  47. package/packages/scrabble-solver/.next/static/chunks/{main-00489babb6f51cdf.js → main-92448bb08bb6bf1f.js} +1 -1
  48. package/packages/scrabble-solver/.next/static/chunks/pages/{_app-9b8d13beabe62d43.js → _app-4ae86f006f6b9fe7.js} +4 -4
  49. package/packages/scrabble-solver/.next/static/chunks/pages/{index-1d609730ebea97fd.js → index-bdf5e1e44cea16f6.js} +1 -1
  50. package/packages/scrabble-solver/.next/static/{QzOFuqqrEDsCEV0MLUrPP → js6-w0PwySs2PyOSeCYfi}/_buildManifest.js +1 -1
  51. package/packages/scrabble-solver/.next/trace +21 -21
  52. package/packages/scrabble-solver/.next/trace-build +1 -1
  53. package/packages/scrabble-solver/package.json +11 -13
  54. package/packages/scrabble-solver/public/service-worker.js +1 -1
  55. package/packages/scrabble-solver/src/components/Tooltip/Tooltip.tsx +4 -1
  56. package/packages/scrabble-solver/tsconfig.tsbuildinfo +1 -1
  57. package/packages/solver/build/fillPattern.d.ts +3 -1
  58. package/packages/solver/package.json +5 -5
  59. package/packages/types/package.json +2 -2
  60. package/packages/word-definitions/build/languages/english.d.ts +1 -1
  61. package/packages/word-definitions/build/languages/english.js +23 -11
  62. package/packages/word-definitions/package.json +2 -2
  63. package/packages/word-definitions/src/__tests__/expected/en-US.awe.json +7 -4
  64. package/packages/word-definitions/src/__tests__/expected/en-US.oe.json +2 -2
  65. package/packages/word-definitions/src/__tests__/expected/en-US.pawn.json +11 -8
  66. package/packages/word-definitions/src/__tests__/expected/en-US.pawnee.json +3 -1
  67. package/packages/word-definitions/src/__tests__/expected/en-US.pean.json +4 -4
  68. package/packages/word-definitions/src/__tests__/expected/en-US.wiz.json +7 -1
  69. package/packages/word-definitions/src/__tests__/expected/en-US.zzzzqq.json +4 -0
  70. package/packages/word-definitions/src/__tests__/input/en-US.awe.json +1 -0
  71. package/packages/word-definitions/src/__tests__/input/en-US.oe.json +1 -0
  72. package/packages/word-definitions/src/__tests__/input/en-US.pawn.json +1 -0
  73. package/packages/word-definitions/src/__tests__/input/en-US.pawnee.json +1 -0
  74. package/packages/word-definitions/src/__tests__/input/en-US.pean.json +1 -0
  75. package/packages/word-definitions/src/__tests__/input/en-US.wiz.json +1 -0
  76. package/packages/word-definitions/src/__tests__/input/en-US.zzzzqq.json +1 -0
  77. package/packages/word-definitions/src/languages/english.ts +36 -12
  78. package/packages/word-definitions/src/parse.test.ts +9 -8
  79. package/packages/word-lists/package.json +2 -2
  80. package/packages/word-definitions/src/__tests__/input/en-US.awe.html +0 -2235
  81. package/packages/word-definitions/src/__tests__/input/en-US.oe.html +0 -1337
  82. package/packages/word-definitions/src/__tests__/input/en-US.pawn.html +0 -2435
  83. package/packages/word-definitions/src/__tests__/input/en-US.pawnee.html +0 -1356
  84. package/packages/word-definitions/src/__tests__/input/en-US.pean.html +0 -1512
  85. package/packages/word-definitions/src/__tests__/input/en-US.wiz.html +0 -1556
  86. /package/packages/scrabble-solver/.next/static/{QzOFuqqrEDsCEV0MLUrPP → js6-w0PwySs2PyOSeCYfi}/_ssgManifest.js +0 -0
package/CLAUDE.md CHANGED
@@ -19,7 +19,7 @@ logger (independent, used by app + dictionaries)
19
19
  - `solver` — pure word-finding engine. Given a `Trie`, `Config`, `Board`, and `Tile[]`, returns scored `Result`s. Has no I/O. Pipeline is `generatePatterns → fillPattern (per pattern) → areDigraphsValid (only when `config.twoCharacterTiles` is non-empty) → getUniquePatterns → getPatternScore`. New solving rules belong in this pipeline; `solve.ts` itself is just orchestration.
20
20
  - `dictionaries` — downloads/caches per-locale word lists to `$HOME/.scrabble-solver/dictionaries` and exposes them as `Trie`s. The `Dictionaries` class layers a `MemoryCache` over a `DiskCache` (`LayeredCache`) and uses a per-locale `createAsyncProxy` to coalesce concurrent downloads. Cache entries older than `CACHE_STALE_THRESHOLD` (1 day) are refreshed on access. Only this package and `logger` perform filesystem I/O — keep other packages pure so they can run in Edge / browser contexts.
21
21
  - `word-lists` — pulls raw word lists from upstream sources (one fetcher per locale in `src/languages/`). Used by `dictionaries` during downloads.
22
- - `word-definitions` — per-locale `crawl(word) → string` and a parser for each source (Merriam-Webster, CNRTL, DWDS, SJP, dexonline, vajehyab, etc.). Add a new locale by adding a `crawl` and a `parse` function in `src/languages/` and wiring them into `crawl.ts` / `parse.ts`. `parse.test.ts` is where you add fixture-based parser tests.
22
+ - `word-definitions` — per-locale `crawl(word) → string` and a parser for each source (Wiktionary, CNRTL, DWDS, SJP, dexonline, vajehyab, etc.). Add a new locale by adding a `crawl` and a `parse` function in `src/languages/` and wiring them into `crawl.ts` / `parse.ts`. `parse.test.ts` is where you add fixture-based parser tests.
23
23
  - `types` — domain model classes (`Board`, `Cell`, `Tile`, `Pattern`, `Result`, `Config`, `Locale`, …) plus `*Json` shapes. Most of these have a `fromJson` / `toJson` round-trip — use them at the wire boundary instead of hand-rolled serialization.
24
24
  - `configs` — split into **games** (`scrabble`, `superScrabble`, `scrabbleDuel`, `letterLeague`, `crossplay`, `literaki`, `kelimelik` — each defines board size, bonuses, rack size, blanks count, bingo bonus) and **languages** (`english`, `french`, …, each spreads a base game config and overrides `locale` + `tiles`). A locale config is one game × one language; e.g. `polishScrabble` = `scrabble` ⊕ Polish tiles + digraphs. Adding a language means a new config here **and** the 15-step checklist under "Add a new language" in `README.md`.
25
25
  - `logger` — Winston logger writing JSON to `$HOME/.scrabble-solver/logs/{all,error}.log`. Only `error` goes to console. Used server-side by the app + dictionaries; do **not** import from browser code.
package/README.md CHANGED
@@ -76,8 +76,8 @@ Some of the word lists below are sourced from the companion repository [kamilmie
76
76
 
77
77
  | Language | Word list | Word definitions | [Highest-scoring word](https://codesandbox.io/s/highest-scoring-words-in-scrabble-vbj1ns?file=/src/index.js) |
78
78
  | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
79
- | 🇬🇧 English | [💾](https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/sowpods.txt) [SOWPODS](https://en.wikipedia.org/wiki/Collins_Scrabble_Words) | [Merriam-Webster](https://www.merriam-webster.com/) | oxyphenbutazone (1458) |
80
- | 🇺🇸 English | [💾](https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/twl06.txt) [TWL06](https://en.wikipedia.org/wiki/NASPA_Word_List) | [Merriam-Webster](https://www.merriam-webster.com/) | oxyphenbutazone (1458) |
79
+ | 🇬🇧 English | [💾](https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/sowpods.txt) [SOWPODS](https://en.wikipedia.org/wiki/Collins_Scrabble_Words) | [Wiktionary](https://en.wiktionary.org/) | oxyphenbutazone (1458) |
80
+ | 🇺🇸 English | [💾](https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/twl06.txt) [TWL06](https://en.wikipedia.org/wiki/NASPA_Word_List) | [Wiktionary](https://en.wiktionary.org/) | oxyphenbutazone (1458) |
81
81
  | 🇫🇷 French | [💾](https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt) [ODS8](https://github.com/Thecoolsim/French-Scrabble-ODS8) | [CNRTL](https://www.cnrtl.fr/) | schizothymiques (1566) |
82
82
  | 🇩🇪 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) |
83
83
  | 🇮🇷 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) اگزیستانسیالیست |