scrabble-solver 2.9.2 → 2.10.0

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 (216) hide show
  1. package/.prettierignore +2 -0
  2. package/README.md +41 -11
  3. package/lerna.json +1 -1
  4. package/package.json +2 -2
  5. package/packages/configs/build/literaki/literaki.d.ts +1 -0
  6. package/packages/configs/build/literaki/literaki.js +1 -0
  7. package/packages/configs/build/literaki/tiles/index.d.ts +1 -0
  8. package/packages/configs/build/literaki/tiles/index.js +3 -1
  9. package/packages/configs/build/literaki/tiles/tilesFa.d.ts +6 -0
  10. package/packages/configs/build/literaki/tiles/tilesFa.js +37 -0
  11. package/packages/configs/build/scrabble/scrabble.d.ts +1 -0
  12. package/packages/configs/build/scrabble/scrabble.js +1 -0
  13. package/packages/configs/build/scrabble/tiles/index.d.ts +1 -0
  14. package/packages/configs/build/scrabble/tiles/index.js +3 -1
  15. package/packages/configs/build/scrabble/tiles/tilesFa.d.ts +6 -0
  16. package/packages/configs/build/scrabble/tiles/tilesFa.js +37 -0
  17. package/packages/configs/package.json +3 -3
  18. package/packages/configs/src/literaki/literaki.ts +2 -1
  19. package/packages/configs/src/literaki/tiles/index.ts +1 -0
  20. package/packages/configs/src/literaki/tiles/tilesFa.ts +36 -0
  21. package/packages/configs/src/scrabble/scrabble.ts +2 -1
  22. package/packages/configs/src/scrabble/tiles/index.ts +1 -0
  23. package/packages/configs/src/scrabble/tiles/tilesFa.ts +36 -0
  24. package/packages/constants/package.json +1 -1
  25. package/packages/dictionaries/package-lock.json +2 -2
  26. package/packages/dictionaries/package.json +4 -4
  27. package/packages/logger/package-lock.json +2 -2
  28. package/packages/logger/package.json +1 -1
  29. package/packages/logger/scripts/stats.js +1 -1
  30. package/packages/scrabble-solver/.next/BUILD_ID +1 -1
  31. package/packages/scrabble-solver/.next/build-manifest.json +11 -11
  32. package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
  33. package/packages/scrabble-solver/.next/cache/eslint/.cache_8dgz12 +1 -1
  34. package/packages/scrabble-solver/.next/cache/next-server.js.nft.json +1 -1
  35. package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
  36. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
  37. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/0.pack +0 -0
  38. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
  39. package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
  40. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  41. package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
  42. package/packages/scrabble-solver/.next/prerender-manifest.json +1 -1
  43. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  44. package/packages/scrabble-solver/.next/server/chunks/{429.js → 131.js} +2 -3652
  45. package/packages/scrabble-solver/.next/server/chunks/413.js +367 -185
  46. package/packages/scrabble-solver/.next/server/chunks/44.js +71 -45
  47. package/packages/scrabble-solver/.next/server/chunks/515.js +1135 -504
  48. package/packages/scrabble-solver/.next/server/chunks/911.js +96 -2
  49. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  50. package/packages/scrabble-solver/.next/server/pages/404.html +2 -2
  51. package/packages/scrabble-solver/.next/server/pages/404.js.nft.json +1 -1
  52. package/packages/scrabble-solver/.next/server/pages/500.html +2 -2
  53. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  54. package/packages/scrabble-solver/.next/server/pages/_error.js.nft.json +1 -1
  55. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js +48 -10
  56. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  57. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js +1 -8
  58. package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  59. package/packages/scrabble-solver/.next/server/pages/api/solve.js +62 -49
  60. package/packages/scrabble-solver/.next/server/pages/api/solve.js.nft.json +1 -1
  61. package/packages/scrabble-solver/.next/server/pages/api/verify.js +2 -9
  62. package/packages/scrabble-solver/.next/server/pages/api/verify.js.nft.json +1 -1
  63. package/packages/scrabble-solver/.next/server/pages/index.html +4 -8
  64. package/packages/scrabble-solver/.next/server/pages/index.js +43 -36
  65. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  66. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  67. package/packages/scrabble-solver/.next/server/pages-manifest.json +2 -2
  68. package/packages/scrabble-solver/.next/static/chunks/368-d423e70be6c0c473.js +1 -0
  69. package/packages/scrabble-solver/.next/static/chunks/pages/{404-7082923654d5996f.js → 404-932294135c3206dd.js} +1 -1
  70. package/packages/scrabble-solver/.next/static/chunks/pages/_app-3f5508a5f544d9eb.js +1 -0
  71. package/packages/scrabble-solver/.next/static/chunks/pages/index-8af7a9d7a2cd98a7.js +1 -0
  72. package/packages/scrabble-solver/.next/static/css/6b1833fd19d3a74a.css +1 -0
  73. package/packages/scrabble-solver/.next/static/css/a6154e4ca046ca13.css +1 -0
  74. package/packages/scrabble-solver/.next/static/css/bad53af6f8616677.css +1 -0
  75. package/packages/scrabble-solver/.next/static/vscqn7BEtAxJteWSwNnas/_buildManifest.js +1 -0
  76. package/packages/scrabble-solver/.next/static/{Ntg-ilwD7GqTIFwRpSaTQ → vscqn7BEtAxJteWSwNnas}/_ssgManifest.js +0 -0
  77. package/packages/scrabble-solver/.next/trace +52 -52
  78. package/packages/scrabble-solver/package-lock.json +2 -2
  79. package/packages/scrabble-solver/package.json +8 -8
  80. package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.module.scss +45 -9
  81. package/packages/scrabble-solver/src/components/Board/hooks/useGrid.ts +4 -2
  82. package/packages/scrabble-solver/src/components/Dictionary/Dictionary.module.scss +8 -1
  83. package/packages/scrabble-solver/src/components/EmptyState/EmptyState.tsx +6 -2
  84. package/packages/scrabble-solver/src/components/Loading/Loading.tsx +13 -2
  85. package/packages/scrabble-solver/src/components/Logo/Logo.svg +62 -0
  86. package/packages/scrabble-solver/src/components/Logo/index.ts +1 -1
  87. package/packages/scrabble-solver/src/components/NavButtons/NavButtons.module.scss +8 -7
  88. package/packages/scrabble-solver/src/components/NavButtons/NavButtons.tsx +35 -28
  89. package/packages/scrabble-solver/src/components/PlainTiles/PlainTiles.tsx +7 -1
  90. package/packages/scrabble-solver/src/components/PlainTiles/Tile.tsx +4 -3
  91. package/packages/scrabble-solver/src/components/Rack/Rack.tsx +4 -2
  92. package/packages/scrabble-solver/src/components/Radio/Radio.module.scss +1 -1
  93. package/packages/scrabble-solver/src/components/RemainingTiles/Character.tsx +7 -2
  94. package/packages/scrabble-solver/src/components/RemainingTiles/RemainingTiles.tsx +28 -20
  95. package/packages/scrabble-solver/src/components/Results/Cell.tsx +5 -3
  96. package/packages/scrabble-solver/src/components/Results/Result.tsx +8 -3
  97. package/packages/scrabble-solver/src/components/Results/Results.module.scss +31 -9
  98. package/packages/scrabble-solver/src/components/Results/Results.tsx +6 -2
  99. package/packages/scrabble-solver/src/components/Results/getColumns.ts +58 -0
  100. package/packages/scrabble-solver/src/components/Settings/components/ConfigSetting/ConfigSetting.module.scss +1 -0
  101. package/packages/scrabble-solver/src/components/Settings/components/LocaleSetting/LocaleSetting.module.scss +12 -1
  102. package/packages/scrabble-solver/src/components/Settings/components/LocaleSetting/LocaleSetting.tsx +1 -1
  103. package/packages/scrabble-solver/src/components/Settings/components/LocaleSetting/options.ts +7 -1
  104. package/packages/scrabble-solver/src/components/Sidebar/Sidebar.module.scss +42 -8
  105. package/packages/scrabble-solver/src/components/SvgFontCss/SvgFontCss.tsx +8 -7
  106. package/packages/scrabble-solver/src/components/SvgFontCss/createCss.ts +11 -0
  107. package/packages/scrabble-solver/src/components/SvgFontCss/createStyle.ts +9 -0
  108. package/packages/scrabble-solver/src/components/SvgFontCss/createSvg.ts +10 -0
  109. package/packages/scrabble-solver/src/components/SvgFontFix/SvgFontFix.module.scss +5 -0
  110. package/packages/scrabble-solver/src/components/SvgFontFix/SvgFontFix.tsx +21 -0
  111. package/packages/scrabble-solver/src/components/SvgFontFix/index.ts +1 -0
  112. package/packages/scrabble-solver/src/components/Tile/Tile.module.scss +10 -2
  113. package/packages/scrabble-solver/src/components/Tile/Tile.tsx +4 -0
  114. package/packages/scrabble-solver/src/components/Tile/TilePure.tsx +3 -1
  115. package/packages/scrabble-solver/src/components/Words/Words.tsx +4 -3
  116. package/packages/scrabble-solver/src/components/index.ts +1 -0
  117. package/packages/scrabble-solver/src/hooks/index.ts +2 -0
  118. package/packages/scrabble-solver/src/hooks/useDirection.ts +22 -0
  119. package/packages/scrabble-solver/src/hooks/useLanguage.ts +22 -0
  120. package/packages/scrabble-solver/src/i18n/constants.ts +53 -0
  121. package/packages/scrabble-solver/src/i18n/fa.json +56 -0
  122. package/packages/scrabble-solver/src/i18n/i18n.ts +22 -0
  123. package/packages/scrabble-solver/src/i18n/index.ts +2 -20
  124. package/packages/scrabble-solver/src/icons/FlagFa.svg +95 -0
  125. package/packages/scrabble-solver/src/icons/index.ts +1 -0
  126. package/packages/scrabble-solver/src/lib/createComparator.ts +22 -0
  127. package/packages/scrabble-solver/src/lib/createKeyComparator.ts +4 -2
  128. package/packages/scrabble-solver/src/lib/createStringComparator.ts +5 -0
  129. package/packages/scrabble-solver/src/lib/detectLocale.ts +4 -0
  130. package/packages/scrabble-solver/src/lib/getRemainingTiles.ts +4 -2
  131. package/packages/scrabble-solver/src/lib/getRemainingTilesGroups.ts +48 -23
  132. package/packages/scrabble-solver/src/lib/index.ts +2 -2
  133. package/packages/scrabble-solver/src/lib/sortResults.ts +11 -9
  134. package/packages/scrabble-solver/src/lib/unorderedArraysEqual.ts +3 -2
  135. package/packages/scrabble-solver/src/pages/api/verify.ts +1 -1
  136. package/packages/scrabble-solver/src/pages/index.module.scss +7 -18
  137. package/packages/scrabble-solver/src/pages/index.tsx +10 -2
  138. package/packages/scrabble-solver/src/service-worker/routeVerifyRequests.ts +1 -1
  139. package/packages/scrabble-solver/src/state/selectors.ts +5 -5
  140. package/packages/scrabble-solver/src/styles/global.scss +6 -1
  141. package/packages/solver/package-lock.json +2 -2
  142. package/packages/solver/package.json +5 -5
  143. package/packages/types/build/Locale.d.ts +1 -0
  144. package/packages/types/build/Locale.js +1 -0
  145. package/packages/types/build/Result.d.ts +0 -1
  146. package/packages/types/build/Result.js +0 -5
  147. package/packages/types/package.json +2 -2
  148. package/packages/types/src/Locale.ts +1 -0
  149. package/packages/types/src/Result.ts +0 -11
  150. package/packages/word-definitions/build/crawl/crawl.js +2 -0
  151. package/packages/word-definitions/build/crawl/crawlFarsi.d.ts +2 -0
  152. package/packages/word-definitions/build/crawl/crawlFarsi.js +11 -0
  153. package/packages/word-definitions/build/lib/normalizeDefinition.js +2 -1
  154. package/packages/word-definitions/build/parse/index.d.ts +1 -0
  155. package/packages/word-definitions/build/parse/index.js +3 -1
  156. package/packages/word-definitions/build/parse/parse.js +2 -0
  157. package/packages/word-definitions/build/parse/parseFarsi.d.ts +3 -0
  158. package/packages/word-definitions/build/parse/parseFarsi.js +13 -0
  159. package/packages/word-definitions/package-lock.json +2 -2
  160. package/packages/word-definitions/package.json +2 -2
  161. package/packages/word-definitions/src/crawl/crawl.ts +2 -0
  162. package/packages/word-definitions/src/crawl/crawlFarsi.ts +11 -0
  163. package/packages/word-definitions/src/lib/normalizeDefinition.ts +2 -1
  164. package/packages/word-definitions/src/parse/index.ts +1 -0
  165. package/packages/word-definitions/src/parse/parse.ts +2 -0
  166. package/packages/word-definitions/src/parse/parseFarsi.ts +17 -0
  167. package/packages/word-lists/build/getDeDeWordList.js +2 -1
  168. package/packages/word-lists/build/getEnGbWordList.js +2 -1
  169. package/packages/word-lists/build/getEnUsWordList.js +2 -1
  170. package/packages/word-lists/build/getEsEsWordList.js +2 -1
  171. package/packages/word-lists/build/getFaIrWordList.d.ts +2 -0
  172. package/packages/word-lists/build/getFaIrWordList.js +9 -0
  173. package/packages/word-lists/build/getFrFrWordList.js +2 -1
  174. package/packages/word-lists/build/getPlPlWordList.js +9 -9
  175. package/packages/word-lists/build/getWordList.js +2 -0
  176. package/packages/word-lists/build/lib/downloadFile.js +5 -5
  177. package/packages/word-lists/build/lib/extractWords.d.ts +1 -1
  178. package/packages/word-lists/build/lib/extractWords.js +10 -7
  179. package/packages/word-lists/build/lib/findFirstWordIndex.d.ts +1 -1
  180. package/packages/word-lists/build/lib/findFirstWordIndex.js +2 -2
  181. package/packages/word-lists/build/lib/getTempFilepath.d.ts +2 -0
  182. package/packages/word-lists/build/lib/getTempFilepath.js +14 -0
  183. package/packages/word-lists/build/lib/getTxtWordList.d.ts +1 -1
  184. package/packages/word-lists/build/lib/getTxtWordList.js +5 -5
  185. package/packages/word-lists/build/lib/index.d.ts +1 -1
  186. package/packages/word-lists/build/lib/index.js +3 -3
  187. package/packages/word-lists/package-lock.json +2 -32
  188. package/packages/word-lists/package.json +2 -3
  189. package/packages/word-lists/src/getDeDeWordList.ts +3 -1
  190. package/packages/word-lists/src/getEnGbWordList.ts +3 -1
  191. package/packages/word-lists/src/getEnUsWordList.ts +3 -1
  192. package/packages/word-lists/src/getEsEsWordList.ts +3 -1
  193. package/packages/word-lists/src/getFaIrWordList.ts +11 -0
  194. package/packages/word-lists/src/getFrFrWordList.ts +3 -1
  195. package/packages/word-lists/src/getPlPlWordList.ts +7 -7
  196. package/packages/word-lists/src/getWordList.ts +2 -0
  197. package/packages/word-lists/src/lib/downloadFile.ts +5 -5
  198. package/packages/word-lists/src/lib/extractWords.ts +13 -7
  199. package/packages/word-lists/src/lib/findFirstWordIndex.ts +2 -2
  200. package/packages/word-lists/src/lib/getTempFilepath.ts +13 -0
  201. package/packages/word-lists/src/lib/getTxtWordList.ts +3 -3
  202. package/packages/word-lists/src/lib/index.ts +1 -1
  203. package/img/logo.svg +0 -76
  204. package/packages/scrabble-solver/.next/static/Ntg-ilwD7GqTIFwRpSaTQ/_buildManifest.js +0 -1
  205. package/packages/scrabble-solver/.next/static/chunks/317-5e5334962dd7c681.js +0 -1
  206. package/packages/scrabble-solver/.next/static/chunks/pages/_app-183f598b1d4d480b.js +0 -1
  207. package/packages/scrabble-solver/.next/static/chunks/pages/index-b1ffeaddd9fb64b5.js +0 -1
  208. package/packages/scrabble-solver/.next/static/css/751e8a14776d05d8.css +0 -1
  209. package/packages/scrabble-solver/.next/static/css/ad2a08918868cad8.css +0 -1
  210. package/packages/scrabble-solver/.next/static/css/e8de67ad5ea35427.css +0 -1
  211. package/packages/scrabble-solver/src/components/Results/constants.ts +0 -42
  212. package/packages/scrabble-solver/src/lib/comparator.ts +0 -16
  213. package/packages/scrabble-solver/src/lib/stringComparator.ts +0 -5
  214. package/packages/word-lists/build/lib/getTempFilename.d.ts +0 -2
  215. package/packages/word-lists/build/lib/getTempFilename.js +0 -10
  216. package/packages/word-lists/src/lib/getTempFilename.ts +0 -7
package/.prettierignore CHANGED
@@ -1,3 +1,5 @@
1
1
  .next/
2
2
  build/
3
+ coverage/
3
4
  node_modules/
5
+ packages/scrabble-solver/public/service-worker.js
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <div align="center">
2
2
  <p>
3
3
  <a href="https://scrabble-solver.org">
4
- <img alt="Scrabble Solver logo" height="120" src="https://raw.githubusercontent.com/kamilmielnik/scrabble-solver/master/img/logo.svg" />
4
+ <img alt="Scrabble Solver logo" height="120" src="https://raw.githubusercontent.com/kamilmielnik/scrabble-solver/master/packages/scrabble-solver/src/components/Logo/Logo.svg" />
5
5
  </a>
6
6
  </p>
7
7
 
@@ -14,7 +14,7 @@
14
14
  </p>
15
15
 
16
16
  <p>
17
- Available at <a href="https://scrabble-solver.org">https://scrabble-solver.org</a>, in 6 languages.
17
+ Available at <a href="https://scrabble-solver.org">https://scrabble-solver.org</a>, in 7 languages.
18
18
  </p>
19
19
 
20
20
  <p>
@@ -22,6 +22,7 @@
22
22
  <img height="32" src="https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1fa-1f1f8.svg" alt="Flag of United States" title="English (US)" />
23
23
  <img height="32" src="https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1eb-1f1f7.svg" alt="Flag of France" title="French" />
24
24
  <img height="32" src="https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1e9-1f1ea.svg" alt="Flag of Germany" title="German" />
25
+ <img height="32" src="https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ee-1f1f7.svg" alt="Flag of Iran" title="Persian" />
25
26
  <img height="32" src="https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1f5-1f1f1.svg" alt="Flag of Poland" title="Polish" />
26
27
  <img height="32" src="https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ea-1f1f8.svg" alt="Flag of Spain" title="Spanish" />
27
28
  </p>
@@ -47,6 +48,18 @@
47
48
 
48
49
  # scrabble-solver
49
50
 
51
+ ## Dictionaries
52
+
53
+ | Language | Word list | Word definitions | [Highest-scoring word](https://codesandbox.io/s/highest-scoring-words-in-scrabble-vbj1ns?file=/src/index.js) |
54
+ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
55
+ | 🇬🇧 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) |
56
+ | 🇺🇸 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) |
57
+ | 🇫🇷 French | [💾](https://raw.githubusercontent.com/hbenbel/French-Dictionary/a573eab10cc798d7d5da7daab4d2ac0259bb46a3/dictionary/dictionary.txt) [hbenbel/French-Dictionary](https://github.com/hbenbel/French-Dictionary/) | [CNRTL](https://www.cnrtl.fr/) | encyclopediques (1512) |
58
+ | 🇩🇪 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) |
59
+ | 🇮🇷 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) گزیستانسیالیست‏ |
60
+ | 🇵🇱 Polish | [💾](https://sjp.pl/slownik/growy/) [SJP.PL](https://sjp.pl/slownik/dp.phtml) | [SJP.PL](https://sjp.pl) | współposiądźmyż (1512) |
61
+ | 🇪🇸 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) |
62
+
50
63
  ## Requirements
51
64
 
52
65
  - [Node.js](https://nodejs.org/) 16+
@@ -79,16 +92,33 @@ npm uninstall -g scrabble-solver
79
92
  rm -rf $HOME/.scrabble-solver
80
93
  ```
81
94
 
82
- ## Dictionaries
95
+ ## Develop
96
+
97
+ - All commands below are meant to be executed in the root directory
98
+ - Some of these commands can take a lot of time if you have never run them before
99
+
100
+ ### Setup
101
+
102
+ ```Shell
103
+ npm install
104
+ npm run install:dev
105
+ ```
83
106
 
84
- | Language | Word list | Word list source | Word definitions | [Highest-scoring word](https://codesandbox.io/s/highest-scoring-words-in-scrabble-vbj1ns?file=/src/index.js) |
85
- | ---------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
86
- | 🇬🇧 English | [SOWPODS](https://en.wikipedia.org/wiki/Collins_Scrabble_Words) | [Download](https://www.wordgamedictionary.com/sowpods/download/sowpods.txt) | [Merriam-Webster](https://www.merriam-webster.com/) | oxyphenbutazone (1458) |
87
- | 🇺🇸 English | [TWL06](https://en.wikipedia.org/wiki/NASPA_Word_List) | [Download](https://www.wordgamedictionary.com/twl06/download/twl06.txt) | [Merriam-Webster](https://www.merriam-webster.com/) | oxyphenbutazone (1458) |
88
- | 🇫🇷 French | [hbenbel/French-Dictionary](https://github.com/hbenbel/French-Dictionary/) | [Download](https://raw.githubusercontent.com/hbenbel/French-Dictionary/a573eab10cc798d7d5da7daab4d2ac0259bb46a3/dictionary/dictionary.txt) | [CNRTL](https://www.cnrtl.fr/) | encyclopediques (1512) |
89
- | 🇩🇪 German | [hippler/german-wordlist](https://github.com/hippler/german-wordlist) | [Download](https://raw.githubusercontent.com/hippler/german-wordlist/master/words.txt) | [DWDS](https://www.dwds.de) | polytoxikomanem (1512) |
90
- | 🇵🇱 Polish | [SJP.PL](https://sjp.pl/slownik/dp.phtml) | [Download](https://sjp.pl/slownik/growy/) | [SJP.PL](https://sjp.pl) | współposiądźmyż (1512) |
91
- | 🇪🇸 Spanish | [FISE-2](https://fisescrabble.org/) | [Download](https://github.com/kamilmielnik/fise-2/blob/master/fise-2.txt) | [Diccionarios.com](https://www.diccionarios.com/) | flexibilizabais (1323) |
107
+ ### App dev server
108
+
109
+ Runs at [http://localhost:3000/](http://localhost:3000/).
110
+
111
+ ```Shell
112
+ npx lerna run dev --scope=@scrabble-solver/scrabble-solver
113
+ ```
114
+
115
+ Hot code reload works for [`scrabble-solver` package](https://github.com/kamilmielnik/scrabble-solver/tree/master/packages/scrabble-solver) only.
116
+
117
+ ### Rebuild a single package
118
+
119
+ ```Shell
120
+ npx lerna run build --scope=@scrabble-solver/PACKAGE_NAME_HERE
121
+ ```
92
122
 
93
123
  ## Tech stack
94
124
 
package/lerna.json CHANGED
@@ -6,5 +6,5 @@
6
6
  "access": "public"
7
7
  },
8
8
  "tagVersionPrefix": "",
9
- "version": "2.9.2"
9
+ "version": "2.10.0"
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scrabble-solver",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "description": "Scrabble Solver 2 - Free and open-source analysis tool for Scrabble and 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",
@@ -50,7 +50,7 @@
50
50
  "release:prepare": "npm run reinstall",
51
51
  "release:publish": "npm run version:bump && np && lerna publish from-package --yes",
52
52
  "start": "npm-run-all --parallel start:*",
53
- "start:app": "lerna run start --scope @scrabble-solver/scrabble-solver",
53
+ "start:app": "cd packages/scrabble-solver && npm run start",
54
54
  "start:browser": "open-cli http://localhost:3333",
55
55
  "test": "jest --no-cache --coverage",
56
56
  "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand --no-cache --watch",
@@ -6,6 +6,7 @@ declare const literaki: {
6
6
  "en-GB": Config;
7
7
  "en-US": Config;
8
8
  "es-ES": Config;
9
+ "fa-IR": Config;
9
10
  "fr-FR": Config;
10
11
  "pl-PL": Config;
11
12
  };
@@ -24,6 +24,7 @@ const literaki = {
24
24
  [types_1.Locale.EN_GB]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesEn }),
25
25
  [types_1.Locale.EN_US]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesEn }),
26
26
  [types_1.Locale.ES_ES]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesEs }),
27
+ [types_1.Locale.FA_IR]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesFa }),
27
28
  [types_1.Locale.FR_FR]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesFr }),
28
29
  [types_1.Locale.PL_PL]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesPl }),
29
30
  };
@@ -1,5 +1,6 @@
1
1
  export { default as tilesEn } from './tilesEn';
2
2
  export { default as tilesEs } from './tilesEs';
3
+ export { default as tilesFa } from './tilesFa';
3
4
  export { default as tilesFr } from './tilesFr';
4
5
  export { default as tilesPl } from './tilesPl';
5
6
  export { default as tilesDe } from './tilesDe';
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.tilesDe = exports.tilesPl = exports.tilesFr = exports.tilesEs = exports.tilesEn = void 0;
6
+ exports.tilesDe = exports.tilesPl = exports.tilesFr = exports.tilesFa = exports.tilesEs = exports.tilesEn = void 0;
7
7
  var tilesEn_1 = require("./tilesEn");
8
8
  Object.defineProperty(exports, "tilesEn", { enumerable: true, get: function () { return __importDefault(tilesEn_1).default; } });
9
9
  var tilesEs_1 = require("./tilesEs");
10
10
  Object.defineProperty(exports, "tilesEs", { enumerable: true, get: function () { return __importDefault(tilesEs_1).default; } });
11
+ var tilesFa_1 = require("./tilesFa");
12
+ Object.defineProperty(exports, "tilesFa", { enumerable: true, get: function () { return __importDefault(tilesFa_1).default; } });
11
13
  var tilesFr_1 = require("./tilesFr");
12
14
  Object.defineProperty(exports, "tilesFr", { enumerable: true, get: function () { return __importDefault(tilesFr_1).default; } });
13
15
  var tilesPl_1 = require("./tilesPl");
@@ -0,0 +1,6 @@
1
+ declare const tilesFa: {
2
+ character: string;
3
+ count: number;
4
+ score: number;
5
+ }[];
6
+ export default tilesFa;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tilesFa = [
4
+ { character: 'ا', count: 12, score: 1 },
5
+ { character: 'ب', count: 4, score: 1 },
6
+ { character: 'پ', count: 1, score: 6 },
7
+ { character: 'ت', count: 4, score: 1 },
8
+ { character: 'ث', count: 1, score: 10 },
9
+ { character: 'ج', count: 2, score: 5 },
10
+ { character: 'چ', count: 1, score: 6 },
11
+ { character: 'ح', count: 1, score: 6 },
12
+ { character: 'خ', count: 2, score: 5 },
13
+ { character: 'د', count: 6, score: 1 },
14
+ { character: 'ذ', count: 1, score: 10 },
15
+ { character: 'ر', count: 7, score: 1 },
16
+ { character: 'ز', count: 3, score: 4 },
17
+ { character: 'ژ', count: 1, score: 10 },
18
+ { character: 'س', count: 3, score: 2 },
19
+ { character: 'ش', count: 3, score: 3 },
20
+ { character: 'ص', count: 1, score: 6 },
21
+ { character: 'ض', count: 1, score: 8 },
22
+ { character: 'ط', count: 1, score: 8 },
23
+ { character: 'ظ', count: 1, score: 10 },
24
+ { character: 'ع', count: 2, score: 5 },
25
+ { character: 'غ', count: 1, score: 8 },
26
+ { character: 'ف', count: 2, score: 4 },
27
+ { character: 'ق', count: 2, score: 5 },
28
+ { character: 'ک', count: 3, score: 3 },
29
+ { character: 'گ', count: 2, score: 4 },
30
+ { character: 'ل', count: 3, score: 2 },
31
+ { character: 'م', count: 5, score: 1 },
32
+ { character: 'ن', count: 6, score: 1 },
33
+ { character: 'و', count: 5, score: 1 },
34
+ { character: 'ه', count: 5, score: 1 },
35
+ { character: 'ی', count: 8, score: 1 },
36
+ ];
37
+ exports.default = tilesFa;
@@ -6,6 +6,7 @@ declare const scrabble: {
6
6
  "de-DE": Config;
7
7
  "en-US": Config;
8
8
  "es-ES": Config;
9
+ "fa-IR": Config;
9
10
  "fr-FR": Config;
10
11
  "pl-PL": Config;
11
12
  };
@@ -24,6 +24,7 @@ const scrabble = {
24
24
  [types_1.Locale.DE_DE]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesDe }),
25
25
  [types_1.Locale.EN_US]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesEn }),
26
26
  [types_1.Locale.ES_ES]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesEs }),
27
+ [types_1.Locale.FA_IR]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesFa }),
27
28
  [types_1.Locale.FR_FR]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesFr }),
28
29
  [types_1.Locale.PL_PL]: types_1.Config.fromJson({ ...base, tiles: tiles_1.tilesPl }),
29
30
  };
@@ -1,5 +1,6 @@
1
1
  export { default as tilesEn } from './tilesEn';
2
2
  export { default as tilesEs } from './tilesEs';
3
+ export { default as tilesFa } from './tilesFa';
3
4
  export { default as tilesFr } from './tilesFr';
4
5
  export { default as tilesPl } from './tilesPl';
5
6
  export { default as tilesDe } from './tilesDe';
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.tilesDe = exports.tilesPl = exports.tilesFr = exports.tilesEs = exports.tilesEn = void 0;
6
+ exports.tilesDe = exports.tilesPl = exports.tilesFr = exports.tilesFa = exports.tilesEs = exports.tilesEn = void 0;
7
7
  var tilesEn_1 = require("./tilesEn");
8
8
  Object.defineProperty(exports, "tilesEn", { enumerable: true, get: function () { return __importDefault(tilesEn_1).default; } });
9
9
  var tilesEs_1 = require("./tilesEs");
10
10
  Object.defineProperty(exports, "tilesEs", { enumerable: true, get: function () { return __importDefault(tilesEs_1).default; } });
11
+ var tilesFa_1 = require("./tilesFa");
12
+ Object.defineProperty(exports, "tilesFa", { enumerable: true, get: function () { return __importDefault(tilesFa_1).default; } });
11
13
  var tilesFr_1 = require("./tilesFr");
12
14
  Object.defineProperty(exports, "tilesFr", { enumerable: true, get: function () { return __importDefault(tilesFr_1).default; } });
13
15
  var tilesPl_1 = require("./tilesPl");
@@ -0,0 +1,6 @@
1
+ declare const tilesFa: {
2
+ character: string;
3
+ count: number;
4
+ score: number;
5
+ }[];
6
+ export default tilesFa;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tilesFa = [
4
+ { character: 'ا', count: 12, score: 1 },
5
+ { character: 'ب', count: 4, score: 1 },
6
+ { character: 'پ', count: 1, score: 6 },
7
+ { character: 'ت', count: 4, score: 1 },
8
+ { character: 'ث', count: 1, score: 10 },
9
+ { character: 'ج', count: 2, score: 5 },
10
+ { character: 'چ', count: 1, score: 6 },
11
+ { character: 'ح', count: 1, score: 6 },
12
+ { character: 'خ', count: 2, score: 5 },
13
+ { character: 'د', count: 6, score: 1 },
14
+ { character: 'ذ', count: 1, score: 10 },
15
+ { character: 'ر', count: 7, score: 1 },
16
+ { character: 'ز', count: 3, score: 4 },
17
+ { character: 'ژ', count: 1, score: 10 },
18
+ { character: 'س', count: 3, score: 2 },
19
+ { character: 'ش', count: 3, score: 3 },
20
+ { character: 'ص', count: 1, score: 6 },
21
+ { character: 'ض', count: 1, score: 8 },
22
+ { character: 'ط', count: 1, score: 8 },
23
+ { character: 'ظ', count: 1, score: 10 },
24
+ { character: 'ع', count: 2, score: 5 },
25
+ { character: 'غ', count: 1, score: 8 },
26
+ { character: 'ف', count: 2, score: 4 },
27
+ { character: 'ق', count: 2, score: 5 },
28
+ { character: 'ک', count: 3, score: 3 },
29
+ { character: 'گ', count: 2, score: 4 },
30
+ { character: 'ل', count: 3, score: 2 },
31
+ { character: 'م', count: 5, score: 1 },
32
+ { character: 'ن', count: 6, score: 1 },
33
+ { character: 'و', count: 5, score: 1 },
34
+ { character: 'ه', count: 5, score: 1 },
35
+ { character: 'ی', count: 8, score: 1 },
36
+ ];
37
+ exports.default = tilesFa;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/configs",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "description": "Scrabble Solver 2 - Configs",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -24,8 +24,8 @@
24
24
  "clean:force": "npm run clean && rimraf package-lock.json"
25
25
  },
26
26
  "dependencies": {
27
- "@scrabble-solver/constants": "^2.9.2",
28
- "@scrabble-solver/types": "^2.9.2"
27
+ "@scrabble-solver/constants": "^2.10.0",
28
+ "@scrabble-solver/types": "^2.10.0"
29
29
  },
30
30
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
31
31
  }
@@ -1,7 +1,7 @@
1
1
  import { Config, Locale } from '@scrabble-solver/types';
2
2
 
3
3
  import bonuses from './bonuses';
4
- import { tilesDe, tilesEn, tilesEs, tilesFr, tilesPl } from './tiles';
4
+ import { tilesDe, tilesEn, tilesEs, tilesFa, tilesFr, tilesPl } from './tiles';
5
5
 
6
6
  const base = {
7
7
  allTilesBonusScore: 50,
@@ -22,6 +22,7 @@ const literaki = {
22
22
  [Locale.EN_GB]: Config.fromJson({ ...base, tiles: tilesEn }),
23
23
  [Locale.EN_US]: Config.fromJson({ ...base, tiles: tilesEn }),
24
24
  [Locale.ES_ES]: Config.fromJson({ ...base, tiles: tilesEs }),
25
+ [Locale.FA_IR]: Config.fromJson({ ...base, tiles: tilesFa }),
25
26
  [Locale.FR_FR]: Config.fromJson({ ...base, tiles: tilesFr }),
26
27
  [Locale.PL_PL]: Config.fromJson({ ...base, tiles: tilesPl }),
27
28
  };
@@ -1,5 +1,6 @@
1
1
  export { default as tilesEn } from './tilesEn';
2
2
  export { default as tilesEs } from './tilesEs';
3
+ export { default as tilesFa } from './tilesFa';
3
4
  export { default as tilesFr } from './tilesFr';
4
5
  export { default as tilesPl } from './tilesPl';
5
6
  export { default as tilesDe } from './tilesDe';
@@ -0,0 +1,36 @@
1
+ const tilesFa = [
2
+ { character: 'ا', count: 12, score: 1 },
3
+ { character: 'ب', count: 4, score: 1 },
4
+ { character: 'پ', count: 1, score: 6 },
5
+ { character: 'ت', count: 4, score: 1 },
6
+ { character: 'ث', count: 1, score: 10 },
7
+ { character: 'ج', count: 2, score: 5 },
8
+ { character: 'چ', count: 1, score: 6 },
9
+ { character: 'ح', count: 1, score: 6 },
10
+ { character: 'خ', count: 2, score: 5 },
11
+ { character: 'د', count: 6, score: 1 },
12
+ { character: 'ذ', count: 1, score: 10 },
13
+ { character: 'ر', count: 7, score: 1 },
14
+ { character: 'ز', count: 3, score: 4 },
15
+ { character: 'ژ', count: 1, score: 10 },
16
+ { character: 'س', count: 3, score: 2 },
17
+ { character: 'ش', count: 3, score: 3 },
18
+ { character: 'ص', count: 1, score: 6 },
19
+ { character: 'ض', count: 1, score: 8 },
20
+ { character: 'ط', count: 1, score: 8 },
21
+ { character: 'ظ', count: 1, score: 10 },
22
+ { character: 'ع', count: 2, score: 5 },
23
+ { character: 'غ', count: 1, score: 8 },
24
+ { character: 'ف', count: 2, score: 4 },
25
+ { character: 'ق', count: 2, score: 5 },
26
+ { character: 'ک', count: 3, score: 3 },
27
+ { character: 'گ', count: 2, score: 4 },
28
+ { character: 'ل', count: 3, score: 2 },
29
+ { character: 'م', count: 5, score: 1 },
30
+ { character: 'ن', count: 6, score: 1 },
31
+ { character: 'و', count: 5, score: 1 },
32
+ { character: 'ه', count: 5, score: 1 },
33
+ { character: 'ی', count: 8, score: 1 },
34
+ ];
35
+
36
+ export default tilesFa;
@@ -1,7 +1,7 @@
1
1
  import { Config, Locale } from '@scrabble-solver/types';
2
2
 
3
3
  import bonuses from './bonuses';
4
- import { tilesEn, tilesEs, tilesFr, tilesPl, tilesDe } from './tiles';
4
+ import { tilesEn, tilesEs, tilesFa, tilesFr, tilesPl, tilesDe } from './tiles';
5
5
 
6
6
  const base = {
7
7
  allTilesBonusScore: 50,
@@ -22,6 +22,7 @@ const scrabble = {
22
22
  [Locale.DE_DE]: Config.fromJson({ ...base, tiles: tilesDe }),
23
23
  [Locale.EN_US]: Config.fromJson({ ...base, tiles: tilesEn }),
24
24
  [Locale.ES_ES]: Config.fromJson({ ...base, tiles: tilesEs }),
25
+ [Locale.FA_IR]: Config.fromJson({ ...base, tiles: tilesFa }),
25
26
  [Locale.FR_FR]: Config.fromJson({ ...base, tiles: tilesFr }),
26
27
  [Locale.PL_PL]: Config.fromJson({ ...base, tiles: tilesPl }),
27
28
  };
@@ -1,5 +1,6 @@
1
1
  export { default as tilesEn } from './tilesEn';
2
2
  export { default as tilesEs } from './tilesEs';
3
+ export { default as tilesFa } from './tilesFa';
3
4
  export { default as tilesFr } from './tilesFr';
4
5
  export { default as tilesPl } from './tilesPl';
5
6
  export { default as tilesDe } from './tilesDe';
@@ -0,0 +1,36 @@
1
+ const tilesFa = [
2
+ { character: 'ا', count: 12, score: 1 },
3
+ { character: 'ب', count: 4, score: 1 },
4
+ { character: 'پ', count: 1, score: 6 },
5
+ { character: 'ت', count: 4, score: 1 },
6
+ { character: 'ث', count: 1, score: 10 },
7
+ { character: 'ج', count: 2, score: 5 },
8
+ { character: 'چ', count: 1, score: 6 },
9
+ { character: 'ح', count: 1, score: 6 },
10
+ { character: 'خ', count: 2, score: 5 },
11
+ { character: 'د', count: 6, score: 1 },
12
+ { character: 'ذ', count: 1, score: 10 },
13
+ { character: 'ر', count: 7, score: 1 },
14
+ { character: 'ز', count: 3, score: 4 },
15
+ { character: 'ژ', count: 1, score: 10 },
16
+ { character: 'س', count: 3, score: 2 },
17
+ { character: 'ش', count: 3, score: 3 },
18
+ { character: 'ص', count: 1, score: 6 },
19
+ { character: 'ض', count: 1, score: 8 },
20
+ { character: 'ط', count: 1, score: 8 },
21
+ { character: 'ظ', count: 1, score: 10 },
22
+ { character: 'ع', count: 2, score: 5 },
23
+ { character: 'غ', count: 1, score: 8 },
24
+ { character: 'ف', count: 2, score: 4 },
25
+ { character: 'ق', count: 2, score: 5 },
26
+ { character: 'ک', count: 3, score: 3 },
27
+ { character: 'گ', count: 2, score: 4 },
28
+ { character: 'ل', count: 3, score: 2 },
29
+ { character: 'م', count: 5, score: 1 },
30
+ { character: 'ن', count: 6, score: 1 },
31
+ { character: 'و', count: 5, score: 1 },
32
+ { character: 'ه', count: 5, score: 1 },
33
+ { character: 'ی', count: 8, score: 1 },
34
+ ];
35
+
36
+ export default tilesFa;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/constants",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "description": "Scrabble Solver 2 - Constants",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/dictionaries",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/dictionaries",
9
- "version": "2.9.2",
9
+ "version": "2.10.0",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "@kamilmielnik/trie": "^2.0.1"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/dictionaries",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "description": "Scrabble Solver 2 - Dictionaries",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -31,9 +31,9 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@kamilmielnik/trie": "^2.0.1",
34
- "@scrabble-solver/logger": "^2.9.2",
35
- "@scrabble-solver/types": "^2.9.2",
36
- "@scrabble-solver/word-lists": "^2.9.2"
34
+ "@scrabble-solver/logger": "^2.10.0",
35
+ "@scrabble-solver/types": "^2.10.0",
36
+ "@scrabble-solver/word-lists": "^2.10.0"
37
37
  },
38
38
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
39
39
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/logger",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/logger",
9
- "version": "2.9.2",
9
+ "version": "2.10.0",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "winston": "^3.8.2"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/logger",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "description": "Scrabble Solver 2 - Logger",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -23,7 +23,7 @@ const getStats = (event, lines, since) => {
23
23
 
24
24
  const filteredDays = Object.fromEntries(
25
25
  Object.entries(days).filter(([key]) => {
26
- return key.localeCompare(since) !== -1;
26
+ return key.localeCompare(since) >= 0;
27
27
  }),
28
28
  );
29
29
 
@@ -1 +1 @@
1
- Ntg-ilwD7GqTIFwRpSaTQ
1
+ vscqn7BEtAxJteWSwNnas
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/Ntg-ilwD7GqTIFwRpSaTQ/_buildManifest.js",
9
- "static/Ntg-ilwD7GqTIFwRpSaTQ/_ssgManifest.js"
8
+ "static/vscqn7BEtAxJteWSwNnas/_buildManifest.js",
9
+ "static/vscqn7BEtAxJteWSwNnas/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [],
12
12
  "pages": {
@@ -15,26 +15,26 @@
15
15
  "static/chunks/framework-4556c45dd113b893.js",
16
16
  "static/chunks/main-a75cf611e061d8f8.js",
17
17
  "static/chunks/546-447e243fc9de2c59.js",
18
- "static/css/e8de67ad5ea35427.css",
19
- "static/chunks/317-5e5334962dd7c681.js",
20
- "static/css/751e8a14776d05d8.css",
21
- "static/chunks/pages/index-b1ffeaddd9fb64b5.js"
18
+ "static/css/a6154e4ca046ca13.css",
19
+ "static/chunks/368-d423e70be6c0c473.js",
20
+ "static/css/6b1833fd19d3a74a.css",
21
+ "static/chunks/pages/index-8af7a9d7a2cd98a7.js"
22
22
  ],
23
23
  "/404": [
24
24
  "static/chunks/webpack-5752944655d749a0.js",
25
25
  "static/chunks/framework-4556c45dd113b893.js",
26
26
  "static/chunks/main-a75cf611e061d8f8.js",
27
27
  "static/chunks/546-447e243fc9de2c59.js",
28
- "static/css/e8de67ad5ea35427.css",
29
- "static/chunks/317-5e5334962dd7c681.js",
30
- "static/chunks/pages/404-7082923654d5996f.js"
28
+ "static/css/a6154e4ca046ca13.css",
29
+ "static/chunks/368-d423e70be6c0c473.js",
30
+ "static/chunks/pages/404-932294135c3206dd.js"
31
31
  ],
32
32
  "/_app": [
33
33
  "static/chunks/webpack-5752944655d749a0.js",
34
34
  "static/chunks/framework-4556c45dd113b893.js",
35
35
  "static/chunks/main-a75cf611e061d8f8.js",
36
- "static/css/ad2a08918868cad8.css",
37
- "static/chunks/pages/_app-183f598b1d4d480b.js"
36
+ "static/css/bad53af6f8616677.css",
37
+ "static/chunks/pages/_app-3f5508a5f544d9eb.js"
38
38
  ],
39
39
  "/_error": [
40
40
  "static/chunks/webpack-5752944655d749a0.js",