scrabble-solver 2.11.6 → 2.11.8

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 (105) hide show
  1. package/README.md +1 -1
  2. package/lerna.json +1 -1
  3. package/package.json +1 -1
  4. package/packages/configs/package.json +3 -3
  5. package/packages/constants/package.json +1 -1
  6. package/packages/dictionaries/package-lock.json +2 -2
  7. package/packages/dictionaries/package.json +4 -4
  8. package/packages/logger/package-lock.json +2 -2
  9. package/packages/logger/package.json +1 -1
  10. package/packages/scrabble-solver/.next/BUILD_ID +1 -1
  11. package/packages/scrabble-solver/.next/build-manifest.json +11 -11
  12. package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
  13. package/packages/scrabble-solver/.next/cache/eslint/.cache_8dgz12 +1 -1
  14. package/packages/scrabble-solver/.next/cache/next-server.js.nft.json +1 -1
  15. package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
  16. package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
  17. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/0.pack +0 -0
  18. package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
  19. package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
  20. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  21. package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
  22. package/packages/scrabble-solver/.next/prerender-manifest.json +1 -1
  23. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  24. package/packages/scrabble-solver/.next/server/chunks/277.js +653 -399
  25. package/packages/scrabble-solver/.next/server/chunks/865.js +153 -115
  26. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  27. package/packages/scrabble-solver/.next/server/pages/404.html +1 -1
  28. package/packages/scrabble-solver/.next/server/pages/404.js.nft.json +1 -1
  29. package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
  30. package/packages/scrabble-solver/.next/server/pages/_app.js +9 -2
  31. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  32. package/packages/scrabble-solver/.next/server/pages/api/solve.js +30 -1
  33. package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
  34. package/packages/scrabble-solver/.next/server/pages/index.js +35 -6
  35. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  36. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  37. package/packages/scrabble-solver/.next/server/pages-manifest.json +3 -3
  38. package/packages/scrabble-solver/.next/static/5ttGCAW8jcIKxpR8om9fK/_buildManifest.js +1 -0
  39. package/packages/scrabble-solver/.next/static/chunks/framework-2c5cac93e8c637b5.js +49 -0
  40. package/packages/scrabble-solver/.next/static/chunks/pages/{404-8176f4acd0cfeb42.js → 404-ca203fa27afc37d8.js} +1 -1
  41. package/packages/scrabble-solver/.next/static/chunks/pages/_app-76a8840b6244d5a2.js +28 -0
  42. package/packages/scrabble-solver/.next/static/chunks/pages/index-6894f40e6cac9243.js +1 -0
  43. package/packages/scrabble-solver/.next/static/css/af871fef886ef5b7.css +2 -0
  44. package/packages/scrabble-solver/.next/static/css/c6e0e01f44fc0425.css +1 -0
  45. package/packages/scrabble-solver/.next/trace +50 -50
  46. package/packages/scrabble-solver/package-lock.json +2 -2
  47. package/packages/scrabble-solver/package.json +8 -8
  48. package/packages/scrabble-solver/src/components/Board/Board.module.scss +2 -59
  49. package/packages/scrabble-solver/src/components/Board/Board.tsx +22 -10
  50. package/packages/scrabble-solver/src/components/Board/BoardPure.tsx +13 -8
  51. package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.module.scss +8 -140
  52. package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.tsx +18 -37
  53. package/packages/scrabble-solver/src/components/Board/hooks/index.ts +1 -0
  54. package/packages/scrabble-solver/src/components/Board/hooks/useBackgroundImage.tsx +174 -0
  55. package/packages/scrabble-solver/src/components/Board/hooks/useGrid.ts +17 -1
  56. package/packages/scrabble-solver/src/components/Board/lib/getBonusColor.ts +18 -0
  57. package/packages/scrabble-solver/src/components/Board/lib/index.ts +1 -0
  58. package/packages/scrabble-solver/src/components/DictionaryInput/DictionaryInput.tsx +5 -3
  59. package/packages/scrabble-solver/src/components/Key/Key.module.scss +7 -11
  60. package/packages/scrabble-solver/src/components/Rack/Rack.tsx +4 -1
  61. package/packages/scrabble-solver/src/components/Rack/RackTile.tsx +12 -2
  62. package/packages/scrabble-solver/src/components/Results/Cell.tsx +2 -2
  63. package/packages/scrabble-solver/src/components/Results/Result.tsx +4 -8
  64. package/packages/scrabble-solver/src/components/Results/Results.module.scss +5 -3
  65. package/packages/scrabble-solver/src/components/Solver/Solver.tsx +2 -2
  66. package/packages/scrabble-solver/src/components/Tile/Tile.module.scss +4 -0
  67. package/packages/scrabble-solver/src/components/Tooltip/Tooltip.module.scss +2 -0
  68. package/packages/scrabble-solver/src/hooks/useAppLayout.ts +1 -0
  69. package/packages/scrabble-solver/src/i18n/constants.ts +25 -8
  70. package/packages/scrabble-solver/src/i18n/de.json +2 -2
  71. package/packages/scrabble-solver/src/i18n/en.json +2 -2
  72. package/packages/scrabble-solver/src/i18n/es.json +2 -2
  73. package/packages/scrabble-solver/src/i18n/fa.json +2 -2
  74. package/packages/scrabble-solver/src/i18n/fr.json +2 -2
  75. package/packages/scrabble-solver/src/i18n/pl.json +2 -2
  76. package/packages/scrabble-solver/src/lib/dataUrlToBlob.ts +20 -0
  77. package/packages/scrabble-solver/src/lib/index.ts +2 -0
  78. package/packages/scrabble-solver/src/lib/isCtrl.ts +7 -0
  79. package/packages/scrabble-solver/src/modals/KeyMapModal/KeyMapModal.tsx +20 -4
  80. package/packages/scrabble-solver/src/modals/KeyMapModal/components/Mapping/Mapping.module.scss +10 -4
  81. package/packages/scrabble-solver/src/pages/_app.tsx +1 -3
  82. package/packages/scrabble-solver/src/parameters/index.ts +33 -2
  83. package/packages/scrabble-solver/src/state/index.ts +1 -1
  84. package/packages/scrabble-solver/src/state/sagas.ts +3 -4
  85. package/packages/scrabble-solver/src/state/store.ts +34 -0
  86. package/packages/scrabble-solver/src/styles/variables.scss +4 -0
  87. package/packages/solver/package-lock.json +2 -2
  88. package/packages/solver/package.json +5 -5
  89. package/packages/types/package.json +2 -2
  90. package/packages/word-definitions/package-lock.json +161 -11
  91. package/packages/word-definitions/package.json +2 -2
  92. package/packages/word-lists/package-lock.json +2 -2
  93. package/packages/word-lists/package.json +2 -2
  94. package/screencast.gif +0 -0
  95. package/img/screencast.gif +0 -0
  96. package/packages/scrabble-solver/.next/static/Jmk00rVXCbdjFgP77tKXQ/_buildManifest.js +0 -1
  97. package/packages/scrabble-solver/.next/static/chunks/framework-2c79e2a64abdb08b.js +0 -33
  98. package/packages/scrabble-solver/.next/static/chunks/pages/_app-b4fa92112b8f0385.js +0 -28
  99. package/packages/scrabble-solver/.next/static/chunks/pages/index-ccd762f8f5028729.js +0 -1
  100. package/packages/scrabble-solver/.next/static/css/1cd302e7648d209c.css +0 -2
  101. package/packages/scrabble-solver/.next/static/css/34adfcf12a7d9bb6.css +0 -1
  102. package/packages/scrabble-solver/src/components/Board/components/Cell/CellPure.tsx +0 -93
  103. package/packages/scrabble-solver/src/components/Board/components/Cell/lib.ts +0 -59
  104. package/packages/scrabble-solver/src/state/createAppStore.ts +0 -38
  105. /package/packages/scrabble-solver/.next/static/{Jmk00rVXCbdjFgP77tKXQ → 5ttGCAW8jcIKxpR8om9fK}/_ssgManifest.js +0 -0
@@ -8,6 +8,7 @@ export { default as createKeyComparator } from './createKeyComparator';
8
8
  export { default as createNullMovingComparator } from './createNullMovingComparator';
9
9
  export { default as createRegExp } from './createRegExp';
10
10
  export { default as createStringComparator } from './createStringComparator';
11
+ export { default as dataUrlToBlob } from './dataUrlToBlob';
11
12
  export { default as detectLocale } from './detectLocale';
12
13
  export { default as extractCharacters } from './extractCharacters';
13
14
  export { default as extractInputValue } from './extractInputValue';
@@ -21,6 +22,7 @@ export { default as getTotalRemainingTilesCount } from './getTotalRemainingTiles
21
22
  export { default as groupResults } from './groupResults';
22
23
  export { default as guessLocale } from './guessLocale';
23
24
  export { default as inverseDirection } from './inverseDirection';
25
+ export { default as isCtrl } from './isCtrl';
24
26
  export { default as isMac } from './isMac';
25
27
  export { default as isRegExp } from './isRegExp';
26
28
  export { default as isStringArray } from './isStringArray';
@@ -0,0 +1,7 @@
1
+ import { KeyboardEvent } from 'react';
2
+
3
+ const isCtrl = <T>(event: KeyboardEvent<T> | globalThis.KeyboardEvent): boolean => {
4
+ return event.ctrlKey || event.metaKey;
5
+ };
6
+
7
+ export default isCtrl;
@@ -1,10 +1,10 @@
1
1
  import { FunctionComponent, memo } from 'react';
2
2
 
3
- import { Modal } from 'components';
4
- import { useTranslate } from 'state';
3
+ import { Key, Modal } from 'components';
4
+ import { selectConfig, useTranslate, useTypedSelector } from 'state';
5
5
 
6
6
  import { Mapping } from './components';
7
- import { ARROWS, BACKSPACE, DEL, ENTER, SPACE } from './keys';
7
+ import { ARROWS, BACKSPACE, CTRL, DEL, ENTER, SPACE } from './keys';
8
8
 
9
9
  interface Props {
10
10
  className?: string;
@@ -14,6 +14,7 @@ interface Props {
14
14
 
15
15
  const KeyMapModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) => {
16
16
  const translate = useTranslate();
17
+ const config = useTypedSelector(selectConfig);
17
18
 
18
19
  return (
19
20
  <Modal className={className} isOpen={isOpen} title={translate('keyMap')} onClose={onClose}>
@@ -21,10 +22,25 @@ const KeyMapModal: FunctionComponent<Props> = ({ className, isOpen, onClose }) =
21
22
  <Mapping description={translate('keyMap.board-and-rack.navigate')} mapping={[ARROWS]} />
22
23
  <Mapping description={translate('keyMap.board-and-rack.remove-tile')} mapping={[DEL, BACKSPACE]} />
23
24
  <Mapping description={translate('keyMap.board-and-rack.submit')} mapping={[ENTER]} />
25
+ {config.twoCharacterTiles.length > 0 && (
26
+ <Mapping
27
+ description={translate('keyMap.board-and-rack.insert-two-letter-tile')}
28
+ mapping={[
29
+ [
30
+ CTRL,
31
+ <>
32
+ {config.twoCharacterTiles.map(([firstLetter]) => (
33
+ <Key key={firstLetter}>{firstLetter.toUpperCase()}</Key>
34
+ ))}
35
+ </>,
36
+ ],
37
+ ]}
38
+ />
39
+ )}
24
40
  </Modal.Section>
25
41
 
26
42
  <Modal.Section title={translate('keyMap.board')}>
27
- <Mapping description={translate('keyMap.board.toggle-blank')} mapping={[SPACE]} />
43
+ <Mapping description={translate('keyMap.board.toggle-blank')} mapping={[SPACE, [CTRL, <Key key="b">B</Key>]]} />
28
44
  <Mapping description={translate('keyMap.board.toggle-direction')} mapping={[ARROWS]} />
29
45
  </Modal.Section>
30
46
 
@@ -18,13 +18,19 @@
18
18
  flex-wrap: wrap;
19
19
  }
20
20
 
21
- .group,
22
- .plus {
21
+ .group {
23
22
  margin: 0 var(--spacing--s);
24
23
  }
25
24
 
26
- .slash {
27
- margin: 0 var(--spacing--m);
25
+ .slash,
26
+ .plus {
27
+ min-width: var(--key--height);
28
+ height: var(--key--height);
29
+ padding: var(--spacing--s) var(--spacing--m);
30
+ font-family: var(--font--family--monospace);
31
+ line-height: calc(var(--key--height) - 2 * (var(--spacing--s) + var(--border--width)));
32
+ vertical-align: middle;
33
+ text-align: center;
28
34
  }
29
35
 
30
36
  .group {
@@ -4,7 +4,7 @@ import { FunctionComponent } from 'react';
4
4
  import { Provider } from 'react-redux';
5
5
 
6
6
  import { SeoMessage } from 'components';
7
- import { createAppStore } from 'state';
7
+ import { store } from 'state';
8
8
 
9
9
  import 'styles/global.scss';
10
10
 
@@ -40,8 +40,6 @@ const KEYWORDS = [
40
40
  'Kamil Mielnik',
41
41
  ].join(',');
42
42
 
43
- const store = createAppStore();
44
-
45
43
  const App: FunctionComponent<AppProps> = ({ Component, pageProps }) => (
46
44
  <>
47
45
  <Head>
@@ -19,6 +19,34 @@ export const COLOR_GREEN = '#bae3ba';
19
19
  export const COLOR_RED = '#f7c2aa';
20
20
  export const COLOR_YELLOW = '#efe3ae';
21
21
 
22
+ export const COLOR_BONUS_CHARACTER_1 = '#f7f1d6';
23
+ export const COLOR_BONUS_CHARACTER_2 = '#d6ebd6';
24
+ export const COLOR_BONUS_CHARACTER_3 = '#dde4f6';
25
+ export const COLOR_BONUS_CHARACTER_5 = '#fbe0d4';
26
+ export const COLOR_BONUS_CHARACTER_MULTIPLIER_2 = '#b8d5ed';
27
+ export const COLOR_BONUS_CHARACTER_MULTIPLIER_3 = '#86aed1';
28
+ export const COLOR_BONUS_START = '#b284b8';
29
+ export const COLOR_BONUS_WORD_MULTIPLIER_2 = '#fbc997';
30
+ export const COLOR_BONUS_WORD_MULTIPLIER_3 = '#f19393';
31
+ export const COLOR_FILTERED = '#444';
32
+
33
+ export const COLOR_BONUS_CHARACTER: Record<number, string> = {
34
+ 1: COLOR_BONUS_CHARACTER_1,
35
+ 2: COLOR_BONUS_CHARACTER_2,
36
+ 3: COLOR_BONUS_CHARACTER_3,
37
+ 5: COLOR_BONUS_CHARACTER_5,
38
+ };
39
+
40
+ export const COLOR_BONUS_CHARACTER_MULTIPLIER: Record<number, string> = {
41
+ 2: COLOR_BONUS_CHARACTER_MULTIPLIER_2,
42
+ 3: COLOR_BONUS_CHARACTER_MULTIPLIER_3,
43
+ };
44
+
45
+ export const COLOR_BONUS_WORD: Record<number, string> = {
46
+ 2: COLOR_BONUS_WORD_MULTIPLIER_2,
47
+ 3: COLOR_BONUS_WORD_MULTIPLIER_3,
48
+ };
49
+
22
50
  export const SPACING_XS = 2;
23
51
  export const SPACING_S = 5;
24
52
  export const SPACING_M = 10;
@@ -40,6 +68,9 @@ export const BOARD_TILE_SIZE_MAX = 64;
40
68
  */
41
69
  export const BOARD_TILE_SIZE_MIN = 20;
42
70
 
71
+ export const BORDER_COLOR = '#cdcdcd';
72
+ export const BORDER_COLOR_LIGHT = '#d9d9d9';
73
+ export const BORDER_RADIUS = 5;
43
74
  export const BORDER_WIDTH = 1;
44
75
 
45
76
  export const BUTTON_ICON_SIZE = 24;
@@ -90,10 +121,10 @@ export const RACK_TILE_SIZE_MAX = 80;
90
121
 
91
122
  export const REMAINING_TILES_TILE_SIZE = 50;
92
123
 
93
- export const RESULTS_HEADER_HEIGHT = 35;
94
-
95
124
  export const RESULTS_ITEM_HEIGHT = 40;
96
125
 
126
+ export const RESULTS_HEADER_HEIGHT = RESULTS_ITEM_HEIGHT;
127
+
97
128
  export const SOLVER_COLUMN_WIDTH = 580;
98
129
 
99
130
  export const TEXT_INPUT_HEIGHT = 40;
@@ -1,7 +1,7 @@
1
1
  export * from './actions';
2
- export { default as createAppStore } from './createAppStore';
3
2
  export { default as localStorage } from './localStorage';
4
3
  export * from './selectors';
5
4
  export * from './slices';
5
+ export { default as store } from './store';
6
6
  export { default as useTranslate } from './useTranslate';
7
7
  export { default as useTypedSelector } from './useTypedSelector';
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable max-lines */
2
2
 
3
3
  import { PayloadAction } from '@reduxjs/toolkit';
4
- import { COMMA_ARABIC, COMMA_LATIN } from '@scrabble-solver/constants';
5
4
  import { Locale, Result } from '@scrabble-solver/types';
6
5
  import { call, delay, put, select, takeEvery, takeLatest } from 'redux-saga/effects';
7
6
 
7
+ import { LOCALE_FEATURES } from 'i18n';
8
8
  import { memoize } from 'lib';
9
9
  import { findWordDefinitions, solve, verify, visit } from 'sdk';
10
10
 
@@ -144,9 +144,8 @@ function* onLocaleChange(): AnyGenerator {
144
144
 
145
145
  function* onResultCandidateChange({ payload: result }: PayloadAction<Result | null>): AnyGenerator {
146
146
  if (result) {
147
- const locale = yield select(selectLocale);
148
- const comma = locale === Locale.FA_IR ? ` ${COMMA_ARABIC}` : `${COMMA_LATIN} `;
149
- yield put(dictionarySlice.actions.changeInput(result.words.join(comma)));
147
+ const locale: Locale = yield select(selectLocale);
148
+ yield put(dictionarySlice.actions.changeInput(result.words.join(LOCALE_FEATURES[locale].separator)));
150
149
  yield put(dictionarySlice.actions.submit());
151
150
  }
152
151
  }
@@ -0,0 +1,34 @@
1
+ import { configureStore } from '@reduxjs/toolkit';
2
+ import reduxSaga from 'redux-saga';
3
+
4
+ import { rootSaga } from './sagas';
5
+ import {
6
+ boardSlice,
7
+ cellFilterSlice,
8
+ dictionarySlice,
9
+ rackSlice,
10
+ resultsSlice,
11
+ settingsSlice,
12
+ solveSlice,
13
+ verifySlice,
14
+ } from './slices';
15
+
16
+ const sagaMiddleware = reduxSaga();
17
+
18
+ const store = configureStore({
19
+ reducer: {
20
+ board: boardSlice.reducer,
21
+ cellFilter: cellFilterSlice.reducer,
22
+ dictionary: dictionarySlice.reducer,
23
+ rack: rackSlice.reducer,
24
+ results: resultsSlice.reducer,
25
+ settings: settingsSlice.reducer,
26
+ solve: solveSlice.reducer,
27
+ verify: verifySlice.reducer,
28
+ },
29
+ middleware: [sagaMiddleware],
30
+ });
31
+
32
+ sagaMiddleware.run(rootSaga);
33
+
34
+ export default store;
@@ -107,14 +107,18 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
107
107
  --button--icon--size: 24px;
108
108
  --dictionary--height: 260px;
109
109
  --dictionary--height--mobile: 110px;
110
+ --key--height: 36px;
111
+ --key--icon--size: 16px;
110
112
  --logo--aspect-ratio: 682 / 166;
111
113
  --logo--height: 60px;
112
114
  --modal--width: 370px;
113
115
  --nav--height: calc(var(--logo--height) + var(--nav--padding));
114
116
  --nav--padding: var(--spacing--l);
117
+ --results--item--height: 40px;
115
118
  --solver-column--width: 580px;
116
119
  --square-button--size: 32px;
117
120
  --text-input--height: 40px;
121
+ --tooltip--max-width: 360px;
118
122
 
119
123
  @include media('<l') {
120
124
  --dictionary--height: var(--dictionary--height--mobile);
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/solver",
3
- "version": "2.11.6",
3
+ "version": "2.11.8",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/solver",
9
- "version": "2.11.6",
9
+ "version": "2.11.8",
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/solver",
3
- "version": "2.11.6",
3
+ "version": "2.11.8",
4
4
  "description": "Scrabble Solver 2 - Solver",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -25,12 +25,12 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@kamilmielnik/trie": "^2.0.1",
28
- "@scrabble-solver/types": "^2.11.6"
28
+ "@scrabble-solver/types": "^2.11.8"
29
29
  },
30
30
  "devDependencies": {
31
- "@scrabble-solver/configs": "^2.11.6",
32
- "@scrabble-solver/constants": "^2.11.6",
33
- "@scrabble-solver/dictionaries": "^2.11.6"
31
+ "@scrabble-solver/configs": "^2.11.8",
32
+ "@scrabble-solver/constants": "^2.11.8",
33
+ "@scrabble-solver/dictionaries": "^2.11.8"
34
34
  },
35
35
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
36
36
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/types",
3
- "version": "2.11.6",
3
+ "version": "2.11.8",
4
4
  "description": "Scrabble Solver 2 - Types",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -24,7 +24,7 @@
24
24
  "clean:force": "npm run clean && rimraf package-lock.json"
25
25
  },
26
26
  "dependencies": {
27
- "@scrabble-solver/constants": "^2.11.6"
27
+ "@scrabble-solver/constants": "^2.11.8"
28
28
  },
29
29
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
30
30
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.11.6",
4
- "lockfileVersion": 3,
3
+ "version": "2.11.8",
4
+ "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-definitions",
9
- "version": "2.11.6",
9
+ "version": "2.11.8",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "cheerio": "^1.0.0-rc.12",
@@ -27,9 +27,9 @@
27
27
  }
28
28
  },
29
29
  "node_modules/@types/node": {
30
- "version": "18.15.3",
31
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz",
32
- "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==",
30
+ "version": "18.15.11",
31
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
32
+ "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
33
33
  "dev": true
34
34
  },
35
35
  "node_modules/boolbase": {
@@ -181,9 +181,9 @@
181
181
  }
182
182
  },
183
183
  "node_modules/htmlparser2": {
184
- "version": "8.0.1",
185
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
186
- "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
184
+ "version": "8.0.2",
185
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
186
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
187
187
  "funding": [
188
188
  "https://github.com/fb55/htmlparser2?sponsor=1",
189
189
  {
@@ -193,9 +193,9 @@
193
193
  ],
194
194
  "dependencies": {
195
195
  "domelementtype": "^2.3.0",
196
- "domhandler": "^5.0.2",
196
+ "domhandler": "^5.0.3",
197
197
  "domutils": "^3.0.1",
198
- "entities": "^4.3.0"
198
+ "entities": "^4.4.0"
199
199
  }
200
200
  },
201
201
  "node_modules/nth-check": {
@@ -237,5 +237,155 @@
237
237
  "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
238
238
  "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
239
239
  }
240
+ },
241
+ "dependencies": {
242
+ "@types/follow-redirects": {
243
+ "version": "1.14.1",
244
+ "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.1.tgz",
245
+ "integrity": "sha512-THBEFwqsLuU/K62B5JRwab9NW97cFmL4Iy34NTMX0bMycQVzq2q7PKOkhfivIwxdpa/J72RppgC42vCHfwKJ0Q==",
246
+ "dev": true,
247
+ "requires": {
248
+ "@types/node": "*"
249
+ }
250
+ },
251
+ "@types/node": {
252
+ "version": "18.15.11",
253
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
254
+ "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
255
+ "dev": true
256
+ },
257
+ "boolbase": {
258
+ "version": "1.0.0",
259
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
260
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
261
+ },
262
+ "cheerio": {
263
+ "version": "1.0.0-rc.12",
264
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
265
+ "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
266
+ "requires": {
267
+ "cheerio-select": "^2.1.0",
268
+ "dom-serializer": "^2.0.0",
269
+ "domhandler": "^5.0.3",
270
+ "domutils": "^3.0.1",
271
+ "htmlparser2": "^8.0.1",
272
+ "parse5": "^7.0.0",
273
+ "parse5-htmlparser2-tree-adapter": "^7.0.0"
274
+ }
275
+ },
276
+ "cheerio-select": {
277
+ "version": "2.1.0",
278
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
279
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
280
+ "requires": {
281
+ "boolbase": "^1.0.0",
282
+ "css-select": "^5.1.0",
283
+ "css-what": "^6.1.0",
284
+ "domelementtype": "^2.3.0",
285
+ "domhandler": "^5.0.3",
286
+ "domutils": "^3.0.1"
287
+ }
288
+ },
289
+ "css-select": {
290
+ "version": "5.1.0",
291
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
292
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
293
+ "requires": {
294
+ "boolbase": "^1.0.0",
295
+ "css-what": "^6.1.0",
296
+ "domhandler": "^5.0.2",
297
+ "domutils": "^3.0.1",
298
+ "nth-check": "^2.0.1"
299
+ }
300
+ },
301
+ "css-what": {
302
+ "version": "6.1.0",
303
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
304
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
305
+ },
306
+ "dom-serializer": {
307
+ "version": "2.0.0",
308
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
309
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
310
+ "requires": {
311
+ "domelementtype": "^2.3.0",
312
+ "domhandler": "^5.0.2",
313
+ "entities": "^4.2.0"
314
+ }
315
+ },
316
+ "domelementtype": {
317
+ "version": "2.3.0",
318
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
319
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
320
+ },
321
+ "domhandler": {
322
+ "version": "5.0.3",
323
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
324
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
325
+ "requires": {
326
+ "domelementtype": "^2.3.0"
327
+ }
328
+ },
329
+ "domutils": {
330
+ "version": "3.0.1",
331
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
332
+ "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
333
+ "requires": {
334
+ "dom-serializer": "^2.0.0",
335
+ "domelementtype": "^2.3.0",
336
+ "domhandler": "^5.0.1"
337
+ }
338
+ },
339
+ "entities": {
340
+ "version": "4.4.0",
341
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
342
+ "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA=="
343
+ },
344
+ "follow-redirects": {
345
+ "version": "1.15.2",
346
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
347
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
348
+ },
349
+ "htmlparser2": {
350
+ "version": "8.0.2",
351
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
352
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
353
+ "requires": {
354
+ "domelementtype": "^2.3.0",
355
+ "domhandler": "^5.0.3",
356
+ "domutils": "^3.0.1",
357
+ "entities": "^4.4.0"
358
+ }
359
+ },
360
+ "nth-check": {
361
+ "version": "2.1.1",
362
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
363
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
364
+ "requires": {
365
+ "boolbase": "^1.0.0"
366
+ }
367
+ },
368
+ "parse5": {
369
+ "version": "7.1.2",
370
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
371
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
372
+ "requires": {
373
+ "entities": "^4.4.0"
374
+ }
375
+ },
376
+ "parse5-htmlparser2-tree-adapter": {
377
+ "version": "7.0.0",
378
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
379
+ "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
380
+ "requires": {
381
+ "domhandler": "^5.0.2",
382
+ "parse5": "^7.0.0"
383
+ }
384
+ },
385
+ "striptags": {
386
+ "version": "3.2.0",
387
+ "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
388
+ "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
389
+ }
240
390
  }
241
391
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.11.6",
3
+ "version": "2.11.8",
4
4
  "description": "Scrabble Solver 2 - Word definitions",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -23,7 +23,7 @@
23
23
  "clean": "rimraf build/ node_modules/ package-lock.json"
24
24
  },
25
25
  "dependencies": {
26
- "@scrabble-solver/types": "^2.11.6",
26
+ "@scrabble-solver/types": "^2.11.8",
27
27
  "cheerio": "^1.0.0-rc.12",
28
28
  "follow-redirects": "^1.15.2",
29
29
  "striptags": "^3.2.0"
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-lists",
3
- "version": "2.11.6",
3
+ "version": "2.11.8",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-lists",
9
- "version": "2.11.6",
9
+ "version": "2.11.8",
10
10
  "license": "CC-BY-NC-ND-4.0",
11
11
  "dependencies": {
12
12
  "cheerio": "^1.0.0-rc.12",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-lists",
3
- "version": "2.11.6",
3
+ "version": "2.11.8",
4
4
  "description": "Scrabble Solver 2 - Word lists",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -24,7 +24,7 @@
24
24
  "clean:force": "npm run clean && rimraf package-lock.json"
25
25
  },
26
26
  "dependencies": {
27
- "@scrabble-solver/types": "^2.11.6",
27
+ "@scrabble-solver/types": "^2.11.8",
28
28
  "cheerio": "^1.0.0-rc.12",
29
29
  "follow-redirects": "^1.15.2",
30
30
  "unzipper": "^0.10.11"
package/screencast.gif ADDED
Binary file
Binary file
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/css/34adfcf12a7d9bb6.css","static/chunks/pages/index-ccd762f8f5028729.js"],"/404":["static/chunks/pages/404-8176f4acd0cfeb42.js"],"/_error":["static/chunks/pages/_error-54de1933a164a1ff.js"],sortedPages:["/","/404","/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();