@scrabble-solver/scrabble-solver 2.15.14 → 2.15.16

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 (94) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +23 -25
  3. package/.next/cache/.previewinfo +1 -1
  4. package/.next/cache/.rscinfo +1 -1
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  9. package/.next/cache/webpack/edge-server-production/0.pack +0 -0
  10. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  11. package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  12. package/.next/cache/webpack/server-production/0.pack +0 -0
  13. package/.next/cache/webpack/server-production/index.pack +0 -0
  14. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  15. package/.next/diagnostics/framework.json +1 -1
  16. package/.next/images-manifest.json +12 -3
  17. package/.next/next-minimal-server.js.nft.json +1 -1
  18. package/.next/next-server.js.nft.json +1 -1
  19. package/.next/prerender-manifest.json +4 -4
  20. package/.next/required-server-files.json +68 -62
  21. package/.next/routes-manifest.json +26 -5
  22. package/.next/server/chunks/30.js +3 -3
  23. package/.next/server/chunks/318.js +3 -1
  24. package/.next/server/chunks/392.js +1 -0
  25. package/.next/server/chunks/671.js +1 -0
  26. package/.next/server/chunks/712.js +1 -0
  27. package/.next/server/chunks/791.js +6 -6
  28. package/.next/server/middleware-build-manifest.js +1 -1
  29. package/.next/server/pages/404.html +1 -1
  30. package/.next/server/pages/500.html +1 -1
  31. package/.next/server/pages/_app.js +1 -1
  32. package/.next/server/pages/_app.js.nft.json +1 -1
  33. package/.next/server/pages/_document.js +1 -1
  34. package/.next/server/pages/_document.js.nft.json +1 -1
  35. package/.next/server/pages/_error.js +1 -1
  36. package/.next/server/pages/_error.js.nft.json +1 -1
  37. package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
  38. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  39. package/.next/server/pages/api/dictionary/[locale].js +1 -1
  40. package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  41. package/.next/server/pages/api/solve.js +1 -1
  42. package/.next/server/pages/api/solve.js.nft.json +1 -1
  43. package/.next/server/pages/api/verify.js +1 -1
  44. package/.next/server/pages/api/verify.js.nft.json +1 -1
  45. package/.next/server/pages/api/visit.js +1 -1
  46. package/.next/server/pages/api/visit.js.nft.json +1 -1
  47. package/.next/server/pages/index.html +1 -1
  48. package/.next/server/pages/index.js +1 -1
  49. package/.next/server/pages/index.js.nft.json +1 -1
  50. package/.next/server/pages/index.json +1 -1
  51. package/.next/server/pages/not-found.html +1 -0
  52. package/.next/server/pages/{404.js.nft.json → not-found.js.nft.json} +1 -1
  53. package/.next/server/pages-manifest.json +5 -4
  54. package/.next/server/webpack-api-runtime.js +1 -1
  55. package/.next/server/webpack-runtime.js +1 -1
  56. package/.next/static/JsuHKQsDCNm7ddeBFmAGT/_buildManifest.js +1 -0
  57. package/.next/static/chunks/framework-07e31bfe438047c5.js +1 -0
  58. package/.next/static/chunks/main-5ae82999af4e5667.js +5 -0
  59. package/.next/static/chunks/pages/_app-34d868ee8cde5436.js +3 -0
  60. package/.next/static/chunks/pages/{_error-e7f663d1e0f43380.js → _error-afeda7c5231b6c3c.js} +1 -1
  61. package/.next/static/chunks/pages/index-a23a3a272e535225.js +1 -0
  62. package/.next/static/chunks/pages/not-found-9e076427bad69d90.js +1 -0
  63. package/.next/static/chunks/webpack-06b4b4da58317e44.js +1 -0
  64. package/.next/static/css/500cdc9a24075d91.css +2 -0
  65. package/.next/static/css/addf6fd4f75742d0.css +1 -0
  66. package/.next/trace +21 -24
  67. package/.next/trace-build +1 -0
  68. package/.next/types/routes.d.ts +2 -2
  69. package/.next/types/validator.ts +4 -5
  70. package/next-env.d.ts +1 -1
  71. package/next.config.js +22 -46
  72. package/package.json +26 -29
  73. package/src/components/Modal/Modal.tsx +1 -0
  74. package/src/hooks/useMedia.ts +1 -0
  75. package/src/pages/_app.tsx +1 -1
  76. package/src/pages/{404.tsx → not-found.tsx} +2 -0
  77. package/src/state/cellFilters/slice.ts +1 -2
  78. package/src/state/settings/selectors.ts +0 -1
  79. package/src/styles/global.scss +1 -1
  80. package/src/styles/variables.scss +2 -2
  81. package/.next/server/InjectManifest.js.nft.json +0 -1
  82. package/.next/server/chunks/717.js +0 -1
  83. package/.next/server/chunks/829.js +0 -1
  84. package/.next/server/chunks/929.js +0 -1
  85. package/.next/static/UHBG2hxudxuZNMubluQ6A/_buildManifest.js +0 -1
  86. package/.next/static/chunks/framework-e4d8bdda7b6c00b3.js +0 -1
  87. package/.next/static/chunks/main-40732898df2b5947.js +0 -1
  88. package/.next/static/chunks/pages/404-3ab23f01145bda71.js +0 -1
  89. package/.next/static/chunks/pages/_app-ca98ddb1c33cb8b1.js +0 -1
  90. package/.next/static/chunks/pages/index-5c4af5351329bef5.js +0 -1
  91. package/.next/static/chunks/webpack-6224d37324e372cb.js +0 -1
  92. package/.next/static/css/04a3767982ec10e8.css +0 -1
  93. package/.next/static/css/d611d31bf52b6e25.css +0 -2
  94. /package/.next/static/{UHBG2hxudxuZNMubluQ6A → JsuHKQsDCNm7ddeBFmAGT}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ [{"name":"run-typescript","duration":2067890,"timestamp":2606505827,"id":13,"parentId":1,"tags":{},"startTime":1765478648457,"traceId":"40f356747006c551"},{"name":"run-webpack","duration":6543147,"timestamp":2608575786,"id":15,"parentId":1,"tags":{},"startTime":1765478650527,"traceId":"40f356747006c551"},{"name":"static-check","duration":171493,"timestamp":2615266926,"id":1996,"parentId":1,"tags":{},"startTime":1765478657219,"traceId":"40f356747006c551"},{"name":"static-generation","duration":1017642,"timestamp":2615447601,"id":2015,"parentId":1,"tags":{},"startTime":1765478657399,"traceId":"40f356747006c551"},{"name":"collect-build-traces","duration":4143815,"timestamp":2615438999,"id":2012,"parentId":1,"tags":{},"startTime":1765478657391,"traceId":"40f356747006c551"},{"name":"telemetry-flush","duration":19,"timestamp":2619583901,"id":2027,"parentId":1,"tags":{},"startTime":1765478661536,"traceId":"40f356747006c551"},{"name":"next-build","duration":13278424,"timestamp":2606305582,"id":1,"tags":{"buildMode":"default","version":"16.0.8","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1765478648257,"traceId":"40f356747006c551"}]
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = never
5
- type PageRoutes = "/" | "/404"
5
+ type PageRoutes = "/" | "/not-found"
6
6
  type LayoutRoutes = never
7
7
  type RedirectRoutes = never
8
8
  type RewriteRoutes = never
@@ -11,7 +11,7 @@ type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRo
11
11
 
12
12
  interface ParamMap {
13
13
  "/": {}
14
- "/404": {}
14
+ "/not-found": {}
15
15
  }
16
16
 
17
17
 
@@ -16,7 +16,6 @@ type PagesPageConfig = {
16
16
  * Validated at build-time by parsePagesSegmentConfig.
17
17
  */
18
18
  config?: {
19
- amp?: boolean | 'hybrid' | string // necessary for JS
20
19
  maxDuration?: number
21
20
  runtime?: 'edge' | 'experimental-edge' | 'nodejs' | string // necessary unless config is exported as const
22
21
  regions?: string[]
@@ -41,19 +40,19 @@ type ApiRouteConfig = {
41
40
 
42
41
 
43
42
 
44
- // Validate ../../src/pages/404.tsx
43
+ // Validate ../../src/pages/index.tsx
45
44
  {
46
45
  type __IsExpected<Specific extends PagesPageConfig> = Specific
47
- const handler = {} as typeof import("../../src/pages/404.js")
46
+ const handler = {} as typeof import("../../src/pages/index.js")
48
47
  type __Check = __IsExpected<typeof handler>
49
48
  // @ts-ignore
50
49
  type __Unused = __Check
51
50
  }
52
51
 
53
- // Validate ../../src/pages/index.tsx
52
+ // Validate ../../src/pages/not-found.tsx
54
53
  {
55
54
  type __IsExpected<Specific extends PagesPageConfig> = Specific
56
- const handler = {} as typeof import("../../src/pages/index.js")
55
+ const handler = {} as typeof import("../../src/pages/not-found.js")
57
56
  type __Check = __IsExpected<typeof handler>
58
57
  // @ts-ignore
59
58
  type __Unused = __Check
package/next-env.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="next" />
2
2
  /// <reference types="next/image-types/global" />
3
- /// <reference path="./.next/types/routes.d.ts" />
3
+ import "./.next/types/routes.d.ts";
4
4
 
5
5
  // NOTE: This file should not be edited
6
6
  // see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
package/next.config.js CHANGED
@@ -1,55 +1,31 @@
1
1
  /* eslint-disable @typescript-eslint/no-var-requires */
2
2
 
3
- const fs = require('fs');
4
3
  const path = require('path');
5
4
  const WorkboxPlugin = require('workbox-webpack-plugin');
6
5
 
7
- const tsConfig = fs.readFileSync(path.resolve(__dirname, 'tsconfig.json'), 'utf-8');
8
- const tsConfigJson = JSON.parse(tsConfig);
9
- const tsConfigAliases = Object.keys(tsConfigJson.compilerOptions.paths).reduce(
10
- (result, key) => ({
11
- ...result,
12
- [key]: path.resolve(__dirname, tsConfigJson.compilerOptions.paths[key][0]),
13
- }),
14
- {},
15
- );
16
-
17
6
  module.exports = {
18
7
  compress: false,
19
- eslint: {
20
- ignoreDuringBuilds: true,
21
- },
22
8
  reactStrictMode: true,
23
- webpack: (config) => ({
24
- ...config,
25
- resolve: {
26
- ...config.resolve,
27
- alias: {
28
- ...config.resolve.alias,
29
- ...tsConfigAliases,
30
- },
31
- },
32
- module: {
33
- ...config.module,
34
- rules: [
35
- ...config.module.rules,
36
- {
37
- test: /\.svg$/,
38
- include: [path.resolve(__dirname, 'src/icons')],
39
- issuer: /\.tsx?$/,
40
- use: ['@svgr/webpack'],
41
- },
42
- ],
43
- },
44
- plugins: [
45
- ...config.plugins,
46
- process.env.NODE_ENV === 'production'
47
- ? new WorkboxPlugin.InjectManifest({
48
- swSrc: path.join(__dirname, 'src/service-worker/index.ts'),
49
- swDest: path.join(__dirname, 'public/service-worker.js'),
50
- exclude: [/\.map$/, /\.next/, /_next/, /manifest/, /\.htaccess$/, /.*\/static\/.*/, /service-worker\.js$/],
51
- })
52
- : undefined,
53
- ].filter(Boolean),
54
- }),
9
+ sassOptions: {
10
+ loadPaths: ['./src', path.join(__dirname, '../../node_modules/include-media/dist')],
11
+ },
12
+ webpack(config, { isServer, dev }) {
13
+ config.module.rules.push({
14
+ test: /\.svg$/i,
15
+ issuer: /\.[jt]sx?$/,
16
+ use: ['@svgr/webpack'],
17
+ });
18
+
19
+ if (!isServer && !dev) {
20
+ config.plugins.push(
21
+ new WorkboxPlugin.InjectManifest({
22
+ swSrc: path.join(__dirname, 'src/service-worker/index.ts'),
23
+ swDest: path.join(__dirname, 'public/service-worker.js'),
24
+ exclude: [/\.map$/, /\.next/, /_next/, /manifest/, /\.htaccess$/, /.*\/static\/.*/, /service-worker\.js$/],
25
+ }),
26
+ );
27
+ }
28
+
29
+ return config;
30
+ },
55
31
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.15.14",
3
+ "version": "2.15.16",
4
4
  "description": "Scrabble Solver 2 - App",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,60 +17,57 @@
17
17
  },
18
18
  "homepage": "https://scrabble-solver.org",
19
19
  "scripts": {
20
- "build": "env-cmd next build",
20
+ "build": "env-cmd next build --webpack",
21
21
  "clean": "rimraf .next/",
22
- "debug": "NODE_OPTIONS='--inspect' next dev",
23
- "dev": "env-cmd next dev",
22
+ "debug": "NODE_OPTIONS='--inspect' next dev --webpack",
23
+ "dev": "env-cmd next dev --webpack",
24
24
  "start": "env-cmd next start -p 3333",
25
25
  "type-check": "tsc --noEmit"
26
26
  },
27
27
  "dependencies": {
28
28
  "@floating-ui/react": "^0.27.16",
29
29
  "@kamilmielnik/trie": "^4.0.0",
30
- "@reduxjs/toolkit": "^2.9.0",
31
- "@scrabble-solver/configs": "^2.15.14",
32
- "@scrabble-solver/constants": "^2.15.14",
33
- "@scrabble-solver/dictionaries": "^2.15.14",
34
- "@scrabble-solver/logger": "^2.15.14",
35
- "@scrabble-solver/solver": "^2.15.14",
36
- "@scrabble-solver/types": "^2.15.14",
37
- "@scrabble-solver/word-definitions": "^2.15.14",
30
+ "@reduxjs/toolkit": "^2.11.1",
31
+ "@scrabble-solver/configs": "^2.15.16",
32
+ "@scrabble-solver/constants": "^2.15.16",
33
+ "@scrabble-solver/dictionaries": "^2.15.16",
34
+ "@scrabble-solver/logger": "^2.15.16",
35
+ "@scrabble-solver/solver": "^2.15.16",
36
+ "@scrabble-solver/types": "^2.15.16",
37
+ "@scrabble-solver/word-definitions": "^2.15.16",
38
38
  "classnames": "^2.5.1",
39
39
  "env-cmd": "^11.0.0",
40
40
  "include-media": "^2.0.0",
41
41
  "include-media-query-builder": "^1.1.0",
42
- "next": "^15.5.3",
42
+ "next": "^16.0.8",
43
43
  "normalize.css": "^8.0.1",
44
- "react": "^19.1.1",
44
+ "react": "^19.2.1",
45
45
  "react-cool-onclickoutside": "^1.7.0",
46
- "react-dom": "^19.1.1",
46
+ "react-dom": "^19.2.1",
47
47
  "react-highlight-words": "^0.21.0",
48
48
  "react-modal": "^3.16.3",
49
49
  "react-redux": "^9.2.0",
50
- "react-window": "^2.1.1",
51
- "redux-saga": "^1.3.0",
50
+ "react-window": "^2.2.3",
51
+ "redux-saga": "^1.4.2",
52
52
  "store2": "^2.14.4",
53
53
  "transliteration": "^2.3.5",
54
54
  "use-debounce": "^10.0.6",
55
- "workbox-expiration": "^7.3.0",
56
- "workbox-precaching": "^7.3.0",
57
- "workbox-routing": "^7.3.0",
58
- "workbox-webpack-plugin": "^7.3.0",
59
- "workbox-window": "^7.3.0"
55
+ "workbox-expiration": "^7.4.0",
56
+ "workbox-precaching": "^7.4.0",
57
+ "workbox-routing": "^7.4.0",
58
+ "workbox-webpack-plugin": "^7.4.0",
59
+ "workbox-window": "^7.4.0"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@svgr/webpack": "^8.1.0",
63
- "@types/classnames": "^2.3.4",
64
- "@types/react": "^19.1.13",
65
- "@types/react-dom": "^19.1.9",
63
+ "@types/react": "^19.2.7",
64
+ "@types/react-dom": "^19.2.3",
66
65
  "@types/react-highlight-words": "^0.20.0",
67
66
  "@types/react-modal": "^3.16.3",
68
67
  "@types/react-portal": "^4.0.7",
69
68
  "@types/react-redux": "^7.1.34",
70
- "@types/react-window": "^2.0.0",
71
69
  "@types/redux": "^3.6.31",
72
- "@types/redux-saga": "^0.10.5",
73
- "sass": "^1.93.0"
70
+ "sass": "^1.96.0"
74
71
  },
75
- "gitHead": "ff8105e2d4e2fff5fffde35cbeaa40474c232599"
72
+ "gitHead": "885d587f6003d5dfa0f6029a6c01cbfc59d4acc9"
76
73
  }
@@ -46,6 +46,7 @@ const ModalBase: FunctionComponent<Props> = ({ children, className, footer, isOp
46
46
 
47
47
  useEffect(() => {
48
48
  if (isOpen) {
49
+ // eslint-disable-next-line react-hooks/set-state-in-effect
49
50
  setShouldReturnFocusAfterClose(true);
50
51
  }
51
52
  }, [isOpen]);
@@ -22,6 +22,7 @@ export const useMedia = (query: string, defaultState?: boolean) => {
22
22
  setState(mediaQuery.matches);
23
23
  };
24
24
 
25
+ // eslint-disable-next-line react-hooks/set-state-in-effect
25
26
  setState(mediaQuery.matches);
26
27
  mediaQuery.addEventListener('change', handleChange);
27
28
 
@@ -7,7 +7,7 @@ import { Provider } from 'react-redux';
7
7
  import { SeoMessage } from 'components';
8
8
  import { store } from 'state';
9
9
 
10
- import 'styles/global.scss';
10
+ import '../styles/global.scss';
11
11
 
12
12
  const DESCRIPTION =
13
13
  // eslint-disable-next-line max-len
@@ -1,3 +1,5 @@
1
+ 'use-client';
2
+
1
3
  import { NotFound } from 'components';
2
4
 
3
5
  export default NotFound;
@@ -41,8 +41,7 @@ export const cellFiltersSlice = createSlice({
41
41
 
42
42
  removeCells: (state, action: PayloadAction<Cell[]>) => {
43
43
  const cellsToRemove = action.payload;
44
- return state.filter((entry) =>
45
- cellsToRemove.every((cell) => cell.x !== entry.x || cell.y !== entry.y));
44
+ return state.filter((entry) => cellsToRemove.every((cell) => cell.x !== entry.x || cell.y !== entry.y));
46
45
  },
47
46
 
48
47
  reset: () => cellFiltersInitialState,
@@ -66,4 +66,3 @@ export const selectCellIsValid = createSelector([selectConfig, selectCell], (con
66
66
  export const selectTranslations = createSelector([selectLocale], (locale) => i18n[locale]);
67
67
 
68
68
  export const selectRemoveCellFilters = createSelector([selectSettings], (settings) => settings.removeCellFilters);
69
-
@@ -1,4 +1,4 @@
1
- @import '~normalize.css';
1
+ @import 'normalize.css';
2
2
 
3
3
  @import './mixins';
4
4
  @import './variables';
@@ -62,8 +62,8 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
62
62
  --color--tooltip--foreground: var(--color--white);
63
63
 
64
64
  --font--family: system-ui, sans-serif;
65
- --font--family--monospace: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono',
66
- monospace;
65
+ --font--family--monospace:
66
+ ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
67
67
  --font--size--h1: 30px;
68
68
  --font--size--h2: 22px;
69
69
  --font--size--h3: 18px;
@@ -1 +0,0 @@
1
- {"version":1,"files":["../../public/service-worker.js"]}