scrabble-solver 2.8.10 → 2.8.11

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 (61) hide show
  1. package/README.md +8 -8
  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 +9 -9
  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/server-production/0.pack +0 -0
  18. package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
  19. package/packages/scrabble-solver/.next/next-server.js.nft.json +1 -1
  20. package/packages/scrabble-solver/.next/prerender-manifest.json +1 -1
  21. package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
  22. package/packages/scrabble-solver/.next/server/chunks/413.js +8 -4
  23. package/packages/scrabble-solver/.next/server/chunks/515.js +78 -44
  24. package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
  25. package/packages/scrabble-solver/.next/server/pages/404.html +2 -2
  26. package/packages/scrabble-solver/.next/server/pages/404.js.nft.json +1 -1
  27. package/packages/scrabble-solver/.next/server/pages/500.html +2 -2
  28. package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
  29. package/packages/scrabble-solver/.next/server/pages/_document.js.nft.json +1 -1
  30. package/packages/scrabble-solver/.next/server/pages/_error.js.nft.json +1 -1
  31. package/packages/scrabble-solver/.next/server/pages/api/solve.js +25 -1
  32. package/packages/scrabble-solver/.next/server/pages/index.html +2 -2
  33. package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
  34. package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
  35. package/packages/scrabble-solver/.next/static/VJkrGviICslA_8zNVJ-g-/_buildManifest.js +1 -0
  36. package/packages/scrabble-solver/.next/static/{A8A_Lmg8cM-Bkf-Jo1CLh → VJkrGviICslA_8zNVJ-g-}/_ssgManifest.js +0 -0
  37. package/packages/scrabble-solver/.next/static/chunks/317-8e8909dd2f587b64.js +1 -0
  38. package/packages/scrabble-solver/.next/static/chunks/{758-eff80059a1365d5d.js → 546-447e243fc9de2c59.js} +1 -1
  39. package/packages/scrabble-solver/.next/static/chunks/pages/{404-90c624da3c83fd17.js → 404-7082923654d5996f.js} +1 -1
  40. package/packages/scrabble-solver/.next/static/chunks/pages/{_app-0e358b5622cf9e66.js → _app-57c77cad0f197d93.js} +1 -1
  41. package/packages/scrabble-solver/.next/static/chunks/pages/{index-0cc5e6eda5adac73.js → index-d3360e075ca3c222.js} +1 -1
  42. package/packages/scrabble-solver/.next/trace +42 -42
  43. package/packages/scrabble-solver/package-lock.json +2 -2
  44. package/packages/scrabble-solver/package.json +8 -8
  45. package/packages/scrabble-solver/src/components/Board/components/Cell/CellPure.tsx +33 -31
  46. package/packages/scrabble-solver/src/components/Board/hooks/useGrid.ts +23 -18
  47. package/packages/scrabble-solver/src/components/Sidebar/Sidebar.tsx +20 -1
  48. package/packages/scrabble-solver/src/state/sagas.ts +6 -0
  49. package/packages/scrabble-solver/src/state/slices/rackSlice.ts +0 -5
  50. package/packages/solver/build/index.d.ts +12 -0
  51. package/packages/solver/build/index.js +25 -1
  52. package/packages/solver/package-lock.json +2 -2
  53. package/packages/solver/package.json +5 -5
  54. package/packages/solver/src/index.ts +12 -0
  55. package/packages/types/package.json +2 -2
  56. package/packages/word-definitions/package-lock.json +8 -8
  57. package/packages/word-definitions/package.json +2 -2
  58. package/packages/word-lists/package-lock.json +2 -2
  59. package/packages/word-lists/package.json +2 -2
  60. package/packages/scrabble-solver/.next/static/A8A_Lmg8cM-Bkf-Jo1CLh/_buildManifest.js +0 -1
  61. package/packages/scrabble-solver/.next/static/chunks/317-95ab9051449362fa.js +0 -1
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.8.10",
3
+ "version": "2.8.11",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/scrabble-solver",
9
- "version": "2.8.10",
9
+ "version": "2.8.11",
10
10
  "license": "CC BY-NC-ND 4.0",
11
11
  "dependencies": {
12
12
  "@popperjs/core": "^2.11.6",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.8.10",
3
+ "version": "2.8.11",
4
4
  "description": "Scrabble Solver 2 - App",
5
5
  "engines": {
6
6
  "node": ">=16"
@@ -30,13 +30,13 @@
30
30
  "dependencies": {
31
31
  "@popperjs/core": "^2.11.6",
32
32
  "@reduxjs/toolkit": "^1.8.6",
33
- "@scrabble-solver/configs": "^2.8.10",
34
- "@scrabble-solver/constants": "^2.8.10",
35
- "@scrabble-solver/dictionaries": "^2.8.10",
36
- "@scrabble-solver/logger": "^2.8.10",
37
- "@scrabble-solver/solver": "^2.8.10",
38
- "@scrabble-solver/types": "^2.8.10",
39
- "@scrabble-solver/word-definitions": "^2.8.10",
33
+ "@scrabble-solver/configs": "^2.8.11",
34
+ "@scrabble-solver/constants": "^2.8.11",
35
+ "@scrabble-solver/dictionaries": "^2.8.11",
36
+ "@scrabble-solver/logger": "^2.8.11",
37
+ "@scrabble-solver/solver": "^2.8.11",
38
+ "@scrabble-solver/types": "^2.8.11",
39
+ "@scrabble-solver/word-definitions": "^2.8.11",
40
40
  "classnames": "^2.3.2",
41
41
  "next": "^12.3.1",
42
42
  "normalize.css": "^8.0.1",
@@ -81,39 +81,41 @@ const CellPure: FunctionComponent<Props> = ({
81
81
  onFocus={onFocus}
82
82
  />
83
83
 
84
- <div className={styles.actions}>
85
- <Button tooltip={translate('cell.toggle-direction')} onClick={onDirectionToggleClick}>
86
- <ArrowDown
87
- className={classNames(styles.toggleDirection, {
88
- [styles.right]: direction === 'horizontal',
89
- })}
90
- />
91
- </Button>
92
-
93
- {isEmpty && (
94
- <Button
95
- className={classNames(styles.filterCell, {
96
- [styles.filtered]: isFiltered,
97
- })}
98
- tooltip={translate('cell.filter-cell')}
99
- onClick={onToggleFilterCellClick}
100
- >
101
- <Flag />
84
+ {!cell.isCandidate() && (
85
+ <div className={styles.actions}>
86
+ <Button tooltip={translate('cell.toggle-direction')} onClick={onDirectionToggleClick}>
87
+ <ArrowDown
88
+ className={classNames(styles.toggleDirection, {
89
+ [styles.right]: direction === 'horizontal',
90
+ })}
91
+ />
102
92
  </Button>
103
- )}
104
93
 
105
- {!isEmpty && (
106
- <Button
107
- className={classNames(styles.blank, {
108
- [styles.active]: tile.isBlank,
109
- })}
110
- tooltip={tile.isBlank ? translate('cell.set-not-blank') : translate('cell.set-blank')}
111
- onClick={onToggleBlankClick}
112
- >
113
- B
114
- </Button>
115
- )}
116
- </div>
94
+ {isEmpty && (
95
+ <Button
96
+ className={classNames(styles.filterCell, {
97
+ [styles.filtered]: isFiltered,
98
+ })}
99
+ tooltip={translate('cell.filter-cell')}
100
+ onClick={onToggleFilterCellClick}
101
+ >
102
+ <Flag />
103
+ </Button>
104
+ )}
105
+
106
+ {!isEmpty && (
107
+ <Button
108
+ className={classNames(styles.blank, {
109
+ [styles.active]: tile.isBlank,
110
+ })}
111
+ tooltip={tile.isBlank ? translate('cell.set-not-blank') : translate('cell.set-blank')}
112
+ onClick={onToggleBlankClick}
113
+ >
114
+ B
115
+ </Button>
116
+ )}
117
+ </div>
118
+ )}
117
119
  </div>
118
120
  );
119
121
 
@@ -15,6 +15,7 @@ import {
15
15
  } from 'react';
16
16
  import { useDispatch } from 'react-redux';
17
17
  import { useLatest } from 'react-use';
18
+ import { AnyAction } from 'redux';
18
19
 
19
20
  import { createGridOf, createKeyboardNavigation, extractCharacters, extractInputValue, isCtrl } from 'lib';
20
21
  import { boardSlice, selectConfig, useTypedSelector } from 'state';
@@ -82,6 +83,7 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
82
83
  const insertValue = useCallback(
83
84
  (position: Point, value: string) => {
84
85
  const characters = value ? extractCharacters(config, value).filter((character) => character !== BLANK) : [BLANK];
86
+ const actions: AnyAction[] = [];
85
87
  let board = new Board({ rows: rows.map((row) => row.map((cell) => cell.clone())) });
86
88
  let { x, y } = position;
87
89
 
@@ -108,10 +110,9 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
108
110
  const twoCharacterCandidate = cellUp.tile.character + character;
109
111
 
110
112
  if (!cellUp.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate)) {
111
- board = boardSlice.reducer(
112
- board,
113
- boardSlice.actions.changeCellValue({ x, y: y - 1, value: twoCharacterCandidate }),
114
- );
113
+ const action = boardSlice.actions.changeCellValue({ x, y: y - 1, value: twoCharacterCandidate });
114
+ board = boardSlice.reducer(board, action);
115
+ actions.push(action);
115
116
  return;
116
117
  }
117
118
  }
@@ -121,8 +122,10 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
121
122
  const twoCharacterCandidate = character + cellDown.tile.character;
122
123
 
123
124
  if (!cellDown.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate)) {
124
- board = boardSlice.reducer(board, boardSlice.actions.changeCellValue({ x, y, value: character }));
125
- board = boardSlice.reducer(board, boardSlice.actions.changeCellValue({ x, y: y + 1, value: EMPTY_CELL }));
125
+ const action1 = boardSlice.actions.changeCellValue({ x, y, value: character });
126
+ const action2 = boardSlice.actions.changeCellValue({ x, y: y + 1, value: EMPTY_CELL });
127
+ board = boardSlice.reducer(boardSlice.reducer(board, action1), action2);
128
+ actions.push(action1, action2);
126
129
  scheduleMoveFocus();
127
130
  return;
128
131
  }
@@ -133,10 +136,9 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
133
136
  const twoCharacterCandidate = cellLeft.tile.character + character;
134
137
 
135
138
  if (!cellLeft.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate)) {
136
- board = boardSlice.reducer(
137
- board,
138
- boardSlice.actions.changeCellValue({ x: x - 1, y, value: twoCharacterCandidate }),
139
- );
139
+ const action = boardSlice.actions.changeCellValue({ x: x - 1, y, value: twoCharacterCandidate });
140
+ board = boardSlice.reducer(board, action);
141
+ actions.push(action);
140
142
  return;
141
143
  }
142
144
  }
@@ -146,8 +148,10 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
146
148
  const twoCharacterCandidate = character + cellRight.tile.character;
147
149
 
148
150
  if (!cellRight.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate)) {
149
- board = boardSlice.reducer(board, boardSlice.actions.changeCellValue({ x, y, value: character }));
150
- board = boardSlice.reducer(board, boardSlice.actions.changeCellValue({ x: x + 1, y, value: EMPTY_CELL }));
151
+ const action1 = boardSlice.actions.changeCellValue({ x, y, value: character });
152
+ const action2 = boardSlice.actions.changeCellValue({ x: x + 1, y, value: EMPTY_CELL });
153
+ board = boardSlice.reducer(boardSlice.reducer(board, action1), action2);
154
+ actions.push(action1, action2);
151
155
  scheduleMoveFocus();
152
156
  return;
153
157
  }
@@ -158,20 +162,21 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
158
162
  const twoCharacterCandidate = cell.tile.character + character;
159
163
 
160
164
  if (!cell.tile.isBlank && config.twoCharacterTiles.includes(twoCharacterCandidate)) {
161
- board = boardSlice.reducer(
162
- board,
163
- boardSlice.actions.changeCellValue({ x, y, value: twoCharacterCandidate }),
164
- );
165
+ const action = boardSlice.actions.changeCellValue({ x, y, value: twoCharacterCandidate });
166
+ board = boardSlice.reducer(board, action);
167
+ actions.push(action);
165
168
  return;
166
169
  }
167
170
  }
168
171
 
169
- board = boardSlice.reducer(board, boardSlice.actions.changeCellValue({ x, y, value: character }));
172
+ const action = boardSlice.actions.changeCellValue({ x, y, value: character });
173
+ board = boardSlice.reducer(board, action);
174
+ actions.push(action);
170
175
  scheduleMoveFocus();
171
176
  });
172
177
 
173
178
  moveFocus(Math.abs(position.x - x) + Math.abs(position.y - y));
174
- dispatch(boardSlice.actions.change(board));
179
+ actions.forEach(dispatch);
175
180
  },
176
181
  [config, directionRef, dispatch, moveFocus, rows],
177
182
  );
@@ -1,6 +1,7 @@
1
1
  import classNames from 'classnames';
2
- import { FunctionComponent, ReactNode } from 'react';
2
+ import { FunctionComponent, ReactNode, useEffect, useState } from 'react';
3
3
  import Modal from 'react-modal';
4
+ import { useKey } from 'react-use';
4
5
 
5
6
  import { CrossFill } from 'icons';
6
7
  import { TRANSITION_DURATION_LONG } from 'parameters';
@@ -21,6 +22,23 @@ export interface Props {
21
22
 
22
23
  const Sidebar: FunctionComponent<Props> = ({ children, className, isOpen, title, onClose }) => {
23
24
  const translate = useTranslate();
25
+ const [shouldReturnFocusAfterClose, setShouldReturnFocusAfterClose] = useState(true);
26
+
27
+ useKey(
28
+ 'Escape',
29
+ () => {
30
+ setShouldReturnFocusAfterClose(false);
31
+ onClose();
32
+ },
33
+ undefined,
34
+ [onClose],
35
+ );
36
+
37
+ useEffect(() => {
38
+ if (isOpen) {
39
+ setShouldReturnFocusAfterClose(true);
40
+ }
41
+ }, [isOpen]);
24
42
 
25
43
  return (
26
44
  <Modal
@@ -33,6 +51,7 @@ const Sidebar: FunctionComponent<Props> = ({ children, className, isOpen, title,
33
51
  contentLabel={title}
34
52
  isOpen={isOpen}
35
53
  overlayClassName={styles.overlay}
54
+ shouldReturnFocusAfterClose={shouldReturnFocusAfterClose}
36
55
  onRequestClose={onClose}
37
56
  >
38
57
  <div className={classNames(styles.sidebar, className)}>
@@ -37,6 +37,7 @@ type AnyGenerator = Generator<any, any, any>;
37
37
 
38
38
  export function* rootSaga(): AnyGenerator {
39
39
  yield takeEvery(boardSlice.actions.changeCellValue.type, onCellValueChange);
40
+ yield takeEvery([rackSlice.actions.changeCharacter.type, rackSlice.actions.changeCharacters.type], onRackValueChange);
40
41
  yield takeEvery(resultsSlice.actions.applyResult.type, onApplyResult);
41
42
  yield takeEvery(resultsSlice.actions.changeResultCandidate.type, onResultCandidateChange);
42
43
  yield takeEvery(settingsSlice.actions.changeConfigId.type, onConfigIdChange);
@@ -55,9 +56,14 @@ function* onCellValueChange({ payload }: PayloadAction<{ value: string; x: numbe
55
56
  yield put(cellFilterSlice.actions.toggle(payload));
56
57
  }
57
58
 
59
+ yield put(resultsSlice.actions.changeResultCandidate(null));
58
60
  yield put(verifySlice.actions.submit());
59
61
  }
60
62
 
63
+ function* onRackValueChange(): AnyGenerator {
64
+ yield put(resultsSlice.actions.changeResultCandidate(null));
65
+ }
66
+
61
67
  function* onApplyResult({ payload: result }: PayloadAction<Result>): AnyGenerator {
62
68
  const autoGroupTiles = yield select(selectAutoGroupTiles);
63
69
  yield put(boardSlice.actions.applyResult(result));
@@ -9,11 +9,6 @@ const rackSlice = createSlice({
9
9
  initialState: rackInitialState,
10
10
  name: 'rack',
11
11
  reducers: {
12
- change: (_state, action: PayloadAction<(string | null)[]>) => {
13
- const rack = action.payload;
14
- return rack;
15
- },
16
-
17
12
  changeCharacter: (state, action: PayloadAction<{ character: string | null; index: number }>) => {
18
13
  const { character, index } = action.payload;
19
14
  return [...state.slice(0, index), character, ...state.slice(index + 1)];
@@ -1 +1,13 @@
1
+ export { default as fillPattern } from './fillPattern';
2
+ export { default as generateEndIndices } from './generateEndIndices';
3
+ export { default as generateHorizontalPatterns } from './generateHorizontalPatterns';
4
+ export { default as generatePattern } from './generatePattern';
5
+ export { default as generatePatterns } from './generatePatterns';
6
+ export { default as generateStartIndices } from './generateStartIndices';
7
+ export { default as generateVectors } from './generateVectors';
8
+ export { default as generateVerticalPatterns } from './generateVerticalPatterns';
9
+ export { default as getCellsScore } from './getCellsScore';
10
+ export { default as getPatternHash } from './getPatternHash';
11
+ export { default as getPatternScore } from './getPatternScore';
12
+ export { default as getUniquePatterns } from './getUniquePatterns';
1
13
  export { default as solve } from './solve';
@@ -3,6 +3,30 @@ 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.solve = void 0;
6
+ exports.solve = exports.getUniquePatterns = exports.getPatternScore = exports.getPatternHash = exports.getCellsScore = exports.generateVerticalPatterns = exports.generateVectors = exports.generateStartIndices = exports.generatePatterns = exports.generatePattern = exports.generateHorizontalPatterns = exports.generateEndIndices = exports.fillPattern = void 0;
7
+ var fillPattern_1 = require("./fillPattern");
8
+ Object.defineProperty(exports, "fillPattern", { enumerable: true, get: function () { return __importDefault(fillPattern_1).default; } });
9
+ var generateEndIndices_1 = require("./generateEndIndices");
10
+ Object.defineProperty(exports, "generateEndIndices", { enumerable: true, get: function () { return __importDefault(generateEndIndices_1).default; } });
11
+ var generateHorizontalPatterns_1 = require("./generateHorizontalPatterns");
12
+ Object.defineProperty(exports, "generateHorizontalPatterns", { enumerable: true, get: function () { return __importDefault(generateHorizontalPatterns_1).default; } });
13
+ var generatePattern_1 = require("./generatePattern");
14
+ Object.defineProperty(exports, "generatePattern", { enumerable: true, get: function () { return __importDefault(generatePattern_1).default; } });
15
+ var generatePatterns_1 = require("./generatePatterns");
16
+ Object.defineProperty(exports, "generatePatterns", { enumerable: true, get: function () { return __importDefault(generatePatterns_1).default; } });
17
+ var generateStartIndices_1 = require("./generateStartIndices");
18
+ Object.defineProperty(exports, "generateStartIndices", { enumerable: true, get: function () { return __importDefault(generateStartIndices_1).default; } });
19
+ var generateVectors_1 = require("./generateVectors");
20
+ Object.defineProperty(exports, "generateVectors", { enumerable: true, get: function () { return __importDefault(generateVectors_1).default; } });
21
+ var generateVerticalPatterns_1 = require("./generateVerticalPatterns");
22
+ Object.defineProperty(exports, "generateVerticalPatterns", { enumerable: true, get: function () { return __importDefault(generateVerticalPatterns_1).default; } });
23
+ var getCellsScore_1 = require("./getCellsScore");
24
+ Object.defineProperty(exports, "getCellsScore", { enumerable: true, get: function () { return __importDefault(getCellsScore_1).default; } });
25
+ var getPatternHash_1 = require("./getPatternHash");
26
+ Object.defineProperty(exports, "getPatternHash", { enumerable: true, get: function () { return __importDefault(getPatternHash_1).default; } });
27
+ var getPatternScore_1 = require("./getPatternScore");
28
+ Object.defineProperty(exports, "getPatternScore", { enumerable: true, get: function () { return __importDefault(getPatternScore_1).default; } });
29
+ var getUniquePatterns_1 = require("./getUniquePatterns");
30
+ Object.defineProperty(exports, "getUniquePatterns", { enumerable: true, get: function () { return __importDefault(getUniquePatterns_1).default; } });
7
31
  var solve_1 = require("./solve");
8
32
  Object.defineProperty(exports, "solve", { enumerable: true, get: function () { return __importDefault(solve_1).default; } });
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/solver",
3
- "version": "2.8.10",
3
+ "version": "2.8.11",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/solver",
9
- "version": "2.8.10",
9
+ "version": "2.8.11",
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.8.10",
3
+ "version": "2.8.11",
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.8.10"
28
+ "@scrabble-solver/types": "^2.8.11"
29
29
  },
30
30
  "devDependencies": {
31
- "@scrabble-solver/configs": "^2.8.10",
32
- "@scrabble-solver/constants": "^2.8.10",
33
- "@scrabble-solver/dictionaries": "^2.8.10"
31
+ "@scrabble-solver/configs": "^2.8.11",
32
+ "@scrabble-solver/constants": "^2.8.11",
33
+ "@scrabble-solver/dictionaries": "^2.8.11"
34
34
  },
35
35
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
36
36
  }
@@ -1 +1,13 @@
1
+ export { default as fillPattern } from './fillPattern';
2
+ export { default as generateEndIndices } from './generateEndIndices';
3
+ export { default as generateHorizontalPatterns } from './generateHorizontalPatterns';
4
+ export { default as generatePattern } from './generatePattern';
5
+ export { default as generatePatterns } from './generatePatterns';
6
+ export { default as generateStartIndices } from './generateStartIndices';
7
+ export { default as generateVectors } from './generateVectors';
8
+ export { default as generateVerticalPatterns } from './generateVerticalPatterns';
9
+ export { default as getCellsScore } from './getCellsScore';
10
+ export { default as getPatternHash } from './getPatternHash';
11
+ export { default as getPatternScore } from './getPatternScore';
12
+ export { default as getUniquePatterns } from './getUniquePatterns';
1
13
  export { default as solve } from './solve';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/types",
3
- "version": "2.8.10",
3
+ "version": "2.8.11",
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.8.10"
27
+ "@scrabble-solver/constants": "^2.8.11"
28
28
  },
29
29
  "gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
30
30
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.8.10",
3
+ "version": "2.8.11",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-definitions",
9
- "version": "2.8.10",
9
+ "version": "2.8.11",
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.11.2",
31
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.2.tgz",
32
- "integrity": "sha512-BWN3M23gLO2jVG8g/XHIRFWiiV4/GckeFIqbU/C4V3xpoBBWSMk4OZomouN0wCkfQFPqgZikyLr7DOYDysIkkw==",
30
+ "version": "18.11.3",
31
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.3.tgz",
32
+ "integrity": "sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A==",
33
33
  "dev": true
34
34
  },
35
35
  "node_modules/boolbase": {
@@ -249,9 +249,9 @@
249
249
  }
250
250
  },
251
251
  "@types/node": {
252
- "version": "18.11.2",
253
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.2.tgz",
254
- "integrity": "sha512-BWN3M23gLO2jVG8g/XHIRFWiiV4/GckeFIqbU/C4V3xpoBBWSMk4OZomouN0wCkfQFPqgZikyLr7DOYDysIkkw==",
252
+ "version": "18.11.3",
253
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.3.tgz",
254
+ "integrity": "sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A==",
255
255
  "dev": true
256
256
  },
257
257
  "boolbase": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-definitions",
3
- "version": "2.8.10",
3
+ "version": "2.8.11",
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.8.10",
26
+ "@scrabble-solver/types": "^2.8.11",
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.8.10",
3
+ "version": "2.8.11",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@scrabble-solver/word-lists",
9
- "version": "2.8.10",
9
+ "version": "2.8.11",
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.8.10",
3
+ "version": "2.8.11",
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.8.10",
27
+ "@scrabble-solver/types": "^2.8.11",
28
28
  "cheerio": "^1.0.0-rc.12",
29
29
  "follow-redirects": "^1.15.2",
30
30
  "memfs": "^3.4.7",
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(s,e,a){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[s,e,a,"static/css/751e8a14776d05d8.css","static/chunks/pages/index-0cc5e6eda5adac73.js"],"/404":[s,e,a,"static/chunks/pages/404-90c624da3c83fd17.js"],"/_error":["static/chunks/pages/_error-a4ba2246ff8fb532.js"],sortedPages:["/","/404","/_app","/_error"]}}("static/chunks/758-eff80059a1365d5d.js","static/css/9ac903004135f4b1.css","static/chunks/317-95ab9051449362fa.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();