scrabble-solver 2.16.1 → 2.16.3
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.
- package/.github/workflows/bunx.yml +11 -3
- package/.github/workflows/npx.yml +11 -3
- package/.nx/workspace-data/d/server-process.json +2 -2
- package/.nx/workspace-data/file-map.json +548 -504
- package/.nx/workspace-data/lockfile-dependencies.hash +1 -1
- package/.nx/workspace-data/lockfile-nodes.hash +1 -1
- package/.nx/workspace-data/nx_files.nxt +0 -0
- package/.nx/workspace-data/parsed-lock-file.dependencies.json +110 -90
- package/.nx/workspace-data/parsed-lock-file.nodes.json +96 -60
- package/.nx/workspace-data/project-graph.json +220 -162
- package/CLAUDE.md +1 -1
- package/README.md +1 -2
- package/bump-version.js +19 -7
- package/bun.lock +55 -41
- package/cypress/e2e/features/198-highlight-unreachable-cells.ts +101 -0
- package/cypress/e2e/features/91-hover-remaining-tile-highlights.ts +90 -0
- package/cypress/e2e/features.spec.cy.ts +2 -0
- package/lerna.json +1 -1
- package/package.json +4 -4
- package/packages/configs/package.json +3 -3
- package/packages/constants/package.json +1 -1
- package/packages/dictionaries/package.json +4 -4
- package/packages/logger/package.json +1 -1
- package/packages/scrabble-solver/.next/BUILD_ID +1 -1
- package/packages/scrabble-solver/.next/build-manifest.json +6 -6
- package/packages/scrabble-solver/.next/cache/.previewinfo +1 -1
- package/packages/scrabble-solver/.next/cache/.rscinfo +1 -1
- package/packages/scrabble-solver/.next/cache/.tsbuildinfo +1 -1
- package/packages/scrabble-solver/.next/cache/webpack/client-production/0.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/0.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack +0 -0
- package/packages/scrabble-solver/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/packages/scrabble-solver/.next/prerender-manifest.json +4 -4
- package/packages/scrabble-solver/.next/routes-manifest.json +1 -1
- package/packages/scrabble-solver/.next/server/chunks/712.js +1 -1
- package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/404.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/500.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.html +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/not-found.html +1 -1
- package/packages/scrabble-solver/.next/static/{-2mw8IrOEpCcsQa6oPYhR → 2uHbiXWVmb-guNjYk2sfF}/_buildManifest.js +1 -1
- package/packages/scrabble-solver/.next/static/chunks/pages/_app-b74c31c912e414e4.js +7 -0
- package/packages/scrabble-solver/.next/static/chunks/pages/index-35f70f1627836521.js +1 -0
- package/packages/scrabble-solver/.next/static/css/0af35adb4bab56f0.css +2 -0
- package/packages/scrabble-solver/.next/static/css/a78e04fe95452380.css +1 -0
- package/packages/scrabble-solver/.next/trace +21 -21
- package/packages/scrabble-solver/.next/trace-build +1 -1
- package/packages/scrabble-solver/package.json +8 -8
- package/packages/scrabble-solver/public/service-worker.js +1 -1
- package/packages/scrabble-solver/src/components/Board/Board.tsx +3 -1
- package/packages/scrabble-solver/src/components/Board/BoardPure.tsx +3 -0
- package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.module.scss +6 -0
- package/packages/scrabble-solver/src/components/Board/components/Cell/Cell.tsx +18 -6
- package/packages/scrabble-solver/src/components/Board/lib.ts +83 -2
- package/packages/scrabble-solver/src/components/Board/selectors.ts +20 -1
- package/packages/scrabble-solver/src/components/DictionaryInput/DictionaryInput.tsx +1 -0
- package/packages/scrabble-solver/src/components/Modal/Modal.tsx +2 -0
- package/packages/scrabble-solver/src/components/Progress/Progress.tsx +5 -0
- package/packages/scrabble-solver/src/components/Rack/components/RackTile/RackTile.tsx +4 -1
- package/packages/scrabble-solver/src/components/Radio/Radio.tsx +1 -1
- package/packages/scrabble-solver/src/components/Results/Result.tsx +1 -0
- package/packages/scrabble-solver/src/components/Results/Results.tsx +8 -2
- package/packages/scrabble-solver/src/components/Tile/TilePure.tsx +20 -18
- package/packages/scrabble-solver/src/i18n/languages/english.json +4 -1
- package/packages/scrabble-solver/src/i18n/languages/french.json +4 -1
- package/packages/scrabble-solver/src/i18n/languages/german.json +4 -1
- package/packages/scrabble-solver/src/i18n/languages/persian.json +4 -1
- package/packages/scrabble-solver/src/i18n/languages/polish.json +4 -1
- package/packages/scrabble-solver/src/i18n/languages/romanian.json +4 -1
- package/packages/scrabble-solver/src/i18n/languages/spanish.json +4 -1
- package/packages/scrabble-solver/src/i18n/languages/turkish.json +4 -1
- package/packages/scrabble-solver/src/modals/RemainingTilesModal/components/Character/Character.module.scss +4 -0
- package/packages/scrabble-solver/src/modals/RemainingTilesModal/components/Character/Character.tsx +35 -2
- package/packages/scrabble-solver/src/modals/SettingsModal/SettingsModal.tsx +8 -0
- package/packages/scrabble-solver/src/modals/SettingsModal/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +4 -4
- package/packages/scrabble-solver/src/modals/SettingsModal/components/HighlightUnreachableCellsSetting/HighlightUnreachableCellsSetting.module.scss +12 -0
- package/packages/scrabble-solver/src/modals/SettingsModal/components/HighlightUnreachableCellsSetting/HighlightUnreachableCellsSetting.tsx +51 -0
- package/packages/scrabble-solver/src/modals/SettingsModal/components/HighlightUnreachableCellsSetting/index.ts +1 -0
- package/packages/scrabble-solver/src/modals/SettingsModal/components/index.ts +1 -0
- package/packages/scrabble-solver/src/state/hoveredTile/index.ts +4 -0
- package/packages/scrabble-solver/src/state/hoveredTile/initialState.ts +5 -0
- package/packages/scrabble-solver/src/state/hoveredTile/selectors.ts +3 -0
- package/packages/scrabble-solver/src/state/hoveredTile/slice.ts +16 -0
- package/packages/scrabble-solver/src/state/hoveredTile/types.ts +3 -0
- package/packages/scrabble-solver/src/state/index.ts +1 -0
- package/packages/scrabble-solver/src/state/localStorage.ts +1 -0
- package/packages/scrabble-solver/src/state/settings/initialState.ts +1 -0
- package/packages/scrabble-solver/src/state/settings/selectors.ts +5 -0
- package/packages/scrabble-solver/src/state/settings/slice.ts +5 -0
- package/packages/scrabble-solver/src/state/settings/types.ts +1 -0
- package/packages/scrabble-solver/src/state/store.ts +2 -0
- package/packages/scrabble-solver/src/state/types.ts +2 -0
- package/packages/scrabble-solver/src/types/index.ts +3 -0
- package/packages/scrabble-solver/tsconfig.tsbuildinfo +1 -1
- package/packages/solver/package.json +5 -5
- package/packages/types/package.json +2 -2
- package/packages/word-definitions/package.json +2 -2
- package/packages/word-lists/package.json +2 -2
- package/todo.txt +0 -4
- package/packages/scrabble-solver/.next/static/chunks/pages/_app-9c9aaea7b6881765.js +0 -7
- package/packages/scrabble-solver/.next/static/chunks/pages/index-e9ea63e97865edcf.js +0 -1
- package/packages/scrabble-solver/.next/static/css/78726ae7cf7a5497.css +0 -2
- package/packages/scrabble-solver/.next/static/css/addf6fd4f75742d0.css +0 -1
- /package/packages/scrabble-solver/.next/static/{-2mw8IrOEpCcsQa6oPYhR → 2uHbiXWVmb-guNjYk2sfF}/_ssgManifest.js +0 -0
package/CLAUDE.md
CHANGED
|
@@ -86,7 +86,7 @@ Hot reload only works for the `scrabble-solver` package. Edits to any other pack
|
|
|
86
86
|
- `unit-tests.yml` — `bun run build && bun run test-unit`.
|
|
87
87
|
- `e2e-tests.yml` — Cypress against `bun start` on :3333. Uploads screenshots on failure.
|
|
88
88
|
- `oxlint.yml` / `oxfmt.yml` — lint and format-check.
|
|
89
|
-
- `bunx.yml` —
|
|
89
|
+
- `bunx.yml` / `npx.yml` — run daily and on push to master. Download the latest published `scrabble-solver` tarball with `npm pack`, install the global binary (`bun add --global` / `npm install --global`), then run Cypress from the extracted tarball against that binary. The Cypress specs come from the published package, **not** from `master` — if they came from master, any spec added for a feature that's merged but not yet released would run against the older published binary that lacks the feature, and fail (#428). Catches packaging regressions in the `bin/scrabble-solver.js` launcher.
|
|
90
90
|
- `deploy.yml` — `workflow_dispatch` only. SSHs into prod, pulls, builds, restarts `scrabble-solver.service`.
|
|
91
91
|
|
|
92
92
|
When adding a workflow, match the existing pattern: trigger on `push`/`pull_request` to `master`, use `actions/checkout@v6` and `oven-sh/setup-bun@v2`, install with `bun install --frozen-lockfile`.
|
package/README.md
CHANGED
|
@@ -84,7 +84,7 @@ Some of the word lists below are sourced from the companion repository [kamilmie
|
|
|
84
84
|
| 🇵🇱 Polish | [💾](https://sjp.pl/slownik/growy/) [SJP.PL](https://sjp.pl/slownik/dp.phtml) | [SJP.PL](https://sjp.pl) | współposiądźmyż (1512) |
|
|
85
85
|
| 🇷🇴 Romanian | [💾](https://dexonline.ro/static/download/scrabble/loc-flexiuni-5.0.zip) [LOC 5](https://dexonline.ro/scrabble) | [dexonline](https://dexonline.ro/) | luxemburghezele (1944) |
|
|
86
86
|
| 🇪🇸 Spanish | [💾](https://github.com/kamilmielnik/scrabble-dictionaries/blob/master/spanish/file-2017.txt) [FILE 2017](https://www.facebook.com/Escrablistica) | [Diccionarios.com](https://www.diccionarios.com/) | flexibilizabais (1323) |
|
|
87
|
-
| 🇹🇷 Turkish | [💾](https://github.com/kamilmielnik/scrabble-dictionaries/blob/master/turkish/kelimelik.txt)
|
|
87
|
+
| 🇹🇷 Turkish | [💾](https://github.com/kamilmielnik/scrabble-dictionaries/blob/master/turkish/kelimelik.txt) Kelimelik | [Türk Dil Kurumu Sözlükleri](https://sozluk.gov.tr/) | peygamberdevesi (1323) |
|
|
88
88
|
|
|
89
89
|
## Run
|
|
90
90
|
|
|
@@ -189,7 +189,6 @@ bun run --filter @scrabble-solver/word-lists build
|
|
|
189
189
|
- [Bun](https://bun.sh/docs)
|
|
190
190
|
- [Node.js](https://nodejs.org/)
|
|
191
191
|
- [Next.js](https://nextjs.org/)
|
|
192
|
-
- [Express](https://expressjs.com/)
|
|
193
192
|
- [Workbox](https://developer.chrome.com/docs/workbox/)
|
|
194
193
|
- [React](https://reactjs.org/)
|
|
195
194
|
- [Redux](https://redux.js.org/)
|
package/bump-version.js
CHANGED
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
* the "dependencies" from underlying packages/ would have been installed and any package scripts
|
|
5
5
|
* that work on subpackages would not work - specifically: bun start.
|
|
6
6
|
*
|
|
7
|
-
* This script
|
|
7
|
+
* This script ensures the dependency version in the root package.json and the workspace metadata
|
|
8
|
+
* in bun.lock (each package's "version" field and every "@scrabble-solver/*" inter-package
|
|
9
|
+
* dependency) are synced to the current app version after `lerna version --force-publish` has
|
|
10
|
+
* bumped the per-package package.json files in lockstep.
|
|
8
11
|
*/
|
|
9
12
|
|
|
10
13
|
const fs = require('fs');
|
|
@@ -14,14 +17,23 @@ const getCurrentAppVersion = () => {
|
|
|
14
17
|
return packageJson.version;
|
|
15
18
|
};
|
|
16
19
|
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const replaced = packageJsonString.replace(new RegExp(`"${dependency}": ".*",`), replacement);
|
|
20
|
+
const updateRootPackageJson = (filename, version) => {
|
|
21
|
+
const content = fs.readFileSync(filename, 'utf-8');
|
|
22
|
+
const replaced = content.replace(/("@scrabble-solver\/scrabble-solver":\s*)"[^"]+"/, `$1"^${version}"`);
|
|
21
23
|
|
|
22
24
|
fs.writeFileSync(filename, replaced);
|
|
23
25
|
};
|
|
24
26
|
|
|
27
|
+
const updateBunLock = (filename, version) => {
|
|
28
|
+
let content = fs.readFileSync(filename, 'utf-8');
|
|
29
|
+
|
|
30
|
+
content = content.replace(/("@scrabble-solver\/[^"]+":\s*)"\^[^"]+"/g, `$1"^${version}"`);
|
|
31
|
+
|
|
32
|
+
content = content.replace(/("version":\s*)"[^"]+"/g, `$1"${version}"`);
|
|
33
|
+
|
|
34
|
+
fs.writeFileSync(filename, content);
|
|
35
|
+
};
|
|
36
|
+
|
|
25
37
|
const currentAppVersion = getCurrentAppVersion();
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
updateRootPackageJson('package.json', currentAppVersion);
|
|
39
|
+
updateBunLock('bun.lock', currentAppVersion);
|
package/bun.lock
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"": {
|
|
6
6
|
"name": "scrabble-solver",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@scrabble-solver/scrabble-solver": "^2.16.
|
|
8
|
+
"@scrabble-solver/scrabble-solver": "^2.16.3",
|
|
9
9
|
"concurrently": "^9.2.1",
|
|
10
10
|
"open-cli": "^9.0.0",
|
|
11
11
|
"wait-on": "^9.0.5",
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"devDependencies": {
|
|
14
14
|
"@babel/core": "^7.29.0",
|
|
15
15
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
16
|
-
"@babel/preset-env": "^7.29.
|
|
16
|
+
"@babel/preset-env": "^7.29.3",
|
|
17
17
|
"@testing-library/cypress": "^10.1.3",
|
|
18
18
|
"@types/bun": "^1.3.13",
|
|
19
19
|
"@types/node": "^25.6.0",
|
|
20
|
-
"@typescript/native-preview": "^7.0.0-dev.
|
|
20
|
+
"@typescript/native-preview": "^7.0.0-dev.20260501.1",
|
|
21
21
|
"cypress": "^15.14.2",
|
|
22
22
|
"cypress-real-events": "^1.15.0",
|
|
23
23
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
@@ -36,51 +36,51 @@
|
|
|
36
36
|
},
|
|
37
37
|
"packages/configs": {
|
|
38
38
|
"name": "@scrabble-solver/configs",
|
|
39
|
-
"version": "2.16.
|
|
39
|
+
"version": "2.16.3",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@scrabble-solver/constants": "^2.16.
|
|
42
|
-
"@scrabble-solver/types": "^2.16.
|
|
41
|
+
"@scrabble-solver/constants": "^2.16.3",
|
|
42
|
+
"@scrabble-solver/types": "^2.16.3",
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
45
|
"packages/constants": {
|
|
46
46
|
"name": "@scrabble-solver/constants",
|
|
47
|
-
"version": "2.16.
|
|
47
|
+
"version": "2.16.3",
|
|
48
48
|
},
|
|
49
49
|
"packages/dictionaries": {
|
|
50
50
|
"name": "@scrabble-solver/dictionaries",
|
|
51
|
-
"version": "2.16.
|
|
51
|
+
"version": "2.16.3",
|
|
52
52
|
"bin": {
|
|
53
53
|
"remove-dictionaries": "./bin/remove-dictionaries.js",
|
|
54
54
|
"update-dictionaries": "./bin/update-dictionaries.js",
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@kamilmielnik/trie": "^5.0.0",
|
|
58
|
-
"@scrabble-solver/logger": "^2.16.
|
|
59
|
-
"@scrabble-solver/types": "^2.16.
|
|
60
|
-
"@scrabble-solver/word-lists": "^2.16.
|
|
58
|
+
"@scrabble-solver/logger": "^2.16.3",
|
|
59
|
+
"@scrabble-solver/types": "^2.16.3",
|
|
60
|
+
"@scrabble-solver/word-lists": "^2.16.3",
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
"packages/logger": {
|
|
64
64
|
"name": "@scrabble-solver/logger",
|
|
65
|
-
"version": "2.16.
|
|
65
|
+
"version": "2.16.3",
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"winston": "^3.19.0",
|
|
68
68
|
},
|
|
69
69
|
},
|
|
70
70
|
"packages/scrabble-solver": {
|
|
71
71
|
"name": "@scrabble-solver/scrabble-solver",
|
|
72
|
-
"version": "2.16.
|
|
72
|
+
"version": "2.16.3",
|
|
73
73
|
"dependencies": {
|
|
74
74
|
"@floating-ui/react": "^0.27.19",
|
|
75
75
|
"@kamilmielnik/trie": "^5.0.0",
|
|
76
76
|
"@reduxjs/toolkit": "^2.11.2",
|
|
77
|
-
"@scrabble-solver/configs": "^2.16.
|
|
78
|
-
"@scrabble-solver/constants": "^2.16.
|
|
79
|
-
"@scrabble-solver/dictionaries": "^2.16.
|
|
80
|
-
"@scrabble-solver/logger": "^2.16.
|
|
81
|
-
"@scrabble-solver/solver": "^2.16.
|
|
82
|
-
"@scrabble-solver/types": "^2.16.
|
|
83
|
-
"@scrabble-solver/word-definitions": "^2.16.
|
|
77
|
+
"@scrabble-solver/configs": "^2.16.3",
|
|
78
|
+
"@scrabble-solver/constants": "^2.16.3",
|
|
79
|
+
"@scrabble-solver/dictionaries": "^2.16.3",
|
|
80
|
+
"@scrabble-solver/logger": "^2.16.3",
|
|
81
|
+
"@scrabble-solver/solver": "^2.16.3",
|
|
82
|
+
"@scrabble-solver/types": "^2.16.3",
|
|
83
|
+
"@scrabble-solver/word-definitions": "^2.16.3",
|
|
84
84
|
"classnames": "^2.5.1",
|
|
85
85
|
"env-cmd": "^11.0.0",
|
|
86
86
|
"include-media": "^2.0.0",
|
|
@@ -118,29 +118,29 @@
|
|
|
118
118
|
},
|
|
119
119
|
"packages/solver": {
|
|
120
120
|
"name": "@scrabble-solver/solver",
|
|
121
|
-
"version": "2.16.
|
|
121
|
+
"version": "2.16.3",
|
|
122
122
|
"dependencies": {
|
|
123
123
|
"@kamilmielnik/trie": "^5.0.0",
|
|
124
|
-
"@scrabble-solver/types": "^2.16.
|
|
124
|
+
"@scrabble-solver/types": "^2.16.3",
|
|
125
125
|
},
|
|
126
126
|
"devDependencies": {
|
|
127
|
-
"@scrabble-solver/configs": "^2.16.
|
|
128
|
-
"@scrabble-solver/constants": "^2.16.
|
|
129
|
-
"@scrabble-solver/dictionaries": "^2.16.
|
|
127
|
+
"@scrabble-solver/configs": "^2.16.3",
|
|
128
|
+
"@scrabble-solver/constants": "^2.16.3",
|
|
129
|
+
"@scrabble-solver/dictionaries": "^2.16.3",
|
|
130
130
|
},
|
|
131
131
|
},
|
|
132
132
|
"packages/types": {
|
|
133
133
|
"name": "@scrabble-solver/types",
|
|
134
|
-
"version": "2.16.
|
|
134
|
+
"version": "2.16.3",
|
|
135
135
|
"dependencies": {
|
|
136
|
-
"@scrabble-solver/constants": "^2.16.
|
|
136
|
+
"@scrabble-solver/constants": "^2.16.3",
|
|
137
137
|
},
|
|
138
138
|
},
|
|
139
139
|
"packages/word-definitions": {
|
|
140
140
|
"name": "@scrabble-solver/word-definitions",
|
|
141
|
-
"version": "2.16.
|
|
141
|
+
"version": "2.16.3",
|
|
142
142
|
"dependencies": {
|
|
143
|
-
"@scrabble-solver/types": "^2.16.
|
|
143
|
+
"@scrabble-solver/types": "^2.16.3",
|
|
144
144
|
"cheerio": "^1.2.0",
|
|
145
145
|
"follow-redirects": "^1.16.0",
|
|
146
146
|
"striptags": "^3.2.0",
|
|
@@ -152,9 +152,9 @@
|
|
|
152
152
|
},
|
|
153
153
|
"packages/word-lists": {
|
|
154
154
|
"name": "@scrabble-solver/word-lists",
|
|
155
|
-
"version": "2.16.
|
|
155
|
+
"version": "2.16.3",
|
|
156
156
|
"dependencies": {
|
|
157
|
-
"@scrabble-solver/types": "^2.16.
|
|
157
|
+
"@scrabble-solver/types": "^2.16.3",
|
|
158
158
|
"cheerio": "^1.2.0",
|
|
159
159
|
"follow-redirects": "^1.16.0",
|
|
160
160
|
"transliteration": "^2.6.1",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
|
|
172
172
|
"@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="],
|
|
173
173
|
|
|
174
|
-
"@babel/compat-data": ["@babel/compat-data@7.29.
|
|
174
|
+
"@babel/compat-data": ["@babel/compat-data@7.29.3", "", {}, "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg=="],
|
|
175
175
|
|
|
176
176
|
"@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="],
|
|
177
177
|
|
|
@@ -223,6 +223,8 @@
|
|
|
223
223
|
|
|
224
224
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA=="],
|
|
225
225
|
|
|
226
|
+
"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": ["@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg=="],
|
|
227
|
+
|
|
226
228
|
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw=="],
|
|
227
229
|
|
|
228
230
|
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g=="],
|
|
@@ -355,7 +357,7 @@
|
|
|
355
357
|
|
|
356
358
|
"@babel/plugin-transform-unicode-sets-regex": ["@babel/plugin-transform-unicode-sets-regex@7.28.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q=="],
|
|
357
359
|
|
|
358
|
-
"@babel/preset-env": ["@babel/preset-env@7.29.
|
|
360
|
+
"@babel/preset-env": ["@babel/preset-env@7.29.3", "", { "dependencies": { "@babel/compat-data": "^7.29.3", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.28.6", "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-async-generator-functions": "^7.29.0", "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", "@babel/plugin-transform-block-scoping": "^7.28.6", "@babel/plugin-transform-class-properties": "^7.28.6", "@babel/plugin-transform-class-static-block": "^7.28.6", "@babel/plugin-transform-classes": "^7.28.6", "@babel/plugin-transform-computed-properties": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.6", "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", "@babel/plugin-transform-numeric-separator": "^7.28.6", "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.28.6", "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.28.6", "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", "@babel/plugin-transform-regenerator": "^7.29.0", "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.15", "babel-plugin-polyfill-corejs3": "^0.14.0", "babel-plugin-polyfill-regenerator": "^0.6.6", "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ySZypNLAIH1ClygLDQzVMoGQRViATnkHkYYV6TcNDz+8+jwZCdsguGvsb3EY5d9wyWyhmF1iSuFM0Yh5XPnqSA=="],
|
|
359
361
|
|
|
360
362
|
"@babel/preset-modules": ["@babel/preset-modules@0.1.6-no-external-plugins", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA=="],
|
|
361
363
|
|
|
@@ -947,21 +949,21 @@
|
|
|
947
949
|
|
|
948
950
|
"@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="],
|
|
949
951
|
|
|
950
|
-
"@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.
|
|
952
|
+
"@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20260501.1", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260501.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260501.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20260501.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260501.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20260501.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260501.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20260501.1" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-skD0ig8IzPwSY1L8VmNgfaxkfT8ImBwKeIypfZyJA+zHzWvroRKbRbT2GryOSREl22ZqLOuDfcq+7BdA0rjF2Q=="],
|
|
951
953
|
|
|
952
|
-
"@typescript/native-preview-darwin-arm64": ["@typescript/native-preview-darwin-arm64@7.0.0-dev.
|
|
954
|
+
"@typescript/native-preview-darwin-arm64": ["@typescript/native-preview-darwin-arm64@7.0.0-dev.20260501.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-OIYsqKouI2U7W5Q6VgUz7+t9FpIXNFk30xSUG7gGlN1bdDniWfW7t5n6mzEtiHUVTxRgJQBjXGAlhVa6A9h+pg=="],
|
|
953
955
|
|
|
954
|
-
"@typescript/native-preview-darwin-x64": ["@typescript/native-preview-darwin-x64@7.0.0-dev.
|
|
956
|
+
"@typescript/native-preview-darwin-x64": ["@typescript/native-preview-darwin-x64@7.0.0-dev.20260501.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-hQ5UsEyOz3ErQE3sKKHMCfJJGQenD0DSCi2ob+ywElXirG2NyFNA8cmx1g+MIm1lpQeEQslWZhe9EGwo9DJAbg=="],
|
|
955
957
|
|
|
956
|
-
"@typescript/native-preview-linux-arm": ["@typescript/native-preview-linux-arm@7.0.0-dev.
|
|
958
|
+
"@typescript/native-preview-linux-arm": ["@typescript/native-preview-linux-arm@7.0.0-dev.20260501.1", "", { "os": "linux", "cpu": "arm" }, "sha512-agkTW/t85XSJKWGcXdUV9ZmSi3Akh3POK+HhWehigEJR3W/jebiO9njifETfoUF6cpoYkFn+CZvfAJ00IWGZfA=="],
|
|
957
959
|
|
|
958
|
-
"@typescript/native-preview-linux-arm64": ["@typescript/native-preview-linux-arm64@7.0.0-dev.
|
|
960
|
+
"@typescript/native-preview-linux-arm64": ["@typescript/native-preview-linux-arm64@7.0.0-dev.20260501.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-fbaFKE1UvtsQ6i1eJjBiNbglR9ywXrW/CH1sqYPEtr0WgTUpixbE6inQOXjB0jlEA9RzQq+QMzDyaCDmU82Dkw=="],
|
|
959
961
|
|
|
960
|
-
"@typescript/native-preview-linux-x64": ["@typescript/native-preview-linux-x64@7.0.0-dev.
|
|
962
|
+
"@typescript/native-preview-linux-x64": ["@typescript/native-preview-linux-x64@7.0.0-dev.20260501.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Sd8D+S88P7K0IH1U+a8pK20ZD+GM54t48/GLw9ebSklfCdt0iKdHgprjKIcl54C3SocGCcvEBPr1thwtTO9Vtg=="],
|
|
961
963
|
|
|
962
|
-
"@typescript/native-preview-win32-arm64": ["@typescript/native-preview-win32-arm64@7.0.0-dev.
|
|
964
|
+
"@typescript/native-preview-win32-arm64": ["@typescript/native-preview-win32-arm64@7.0.0-dev.20260501.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-07sJNDnU7KHfo/trv/cBXpgFBELDYJAsTx5kNvBckSQUxbX+p/b9oQ3eFbtK3zDP4EEKdeiD9EelIy22atBnzA=="],
|
|
963
965
|
|
|
964
|
-
"@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.
|
|
966
|
+
"@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20260501.1", "", { "os": "win32", "cpu": "x64" }, "sha512-8rzd/eQZyBuR+IRiPnIQrCwSuXIGBFiL8LsUMFqQt2WAUlQ0gGWBlLJHUVU4YNlju9QROjNHUGpJ52XGZbFv0Q=="],
|
|
965
967
|
|
|
966
968
|
"@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="],
|
|
967
969
|
|
|
@@ -2785,6 +2787,8 @@
|
|
|
2785
2787
|
|
|
2786
2788
|
"@apideck/better-ajv-errors/ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="],
|
|
2787
2789
|
|
|
2790
|
+
"@babel/helper-compilation-targets/@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="],
|
|
2791
|
+
|
|
2788
2792
|
"@babel/helper-define-polyfill-provider/resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": "bin/resolve" }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="],
|
|
2789
2793
|
|
|
2790
2794
|
"@commander-js/extra-typings/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="],
|
|
@@ -2879,6 +2883,8 @@
|
|
|
2879
2883
|
|
|
2880
2884
|
"@svgr/plugin-svgo/cosmiconfig": ["cosmiconfig@8.3.6", "", { "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "peerDependencies": { "typescript": ">=4.9.5" } }, "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA=="],
|
|
2881
2885
|
|
|
2886
|
+
"@svgr/webpack/@babel/preset-env": ["@babel/preset-env@7.29.2", "", { "dependencies": { "@babel/compat-data": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.28.6", "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-async-generator-functions": "^7.29.0", "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", "@babel/plugin-transform-block-scoping": "^7.28.6", "@babel/plugin-transform-class-properties": "^7.28.6", "@babel/plugin-transform-class-static-block": "^7.28.6", "@babel/plugin-transform-classes": "^7.28.6", "@babel/plugin-transform-computed-properties": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.6", "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", "@babel/plugin-transform-numeric-separator": "^7.28.6", "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.28.6", "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.28.6", "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", "@babel/plugin-transform-regenerator": "^7.29.0", "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.15", "babel-plugin-polyfill-corejs3": "^0.14.0", "babel-plugin-polyfill-regenerator": "^0.6.6", "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw=="],
|
|
2887
|
+
|
|
2882
2888
|
"@swc/helpers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
2883
2889
|
|
|
2884
2890
|
"@tufjs/models/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
|
|
@@ -2897,6 +2903,8 @@
|
|
|
2897
2903
|
|
|
2898
2904
|
"axios/proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="],
|
|
2899
2905
|
|
|
2906
|
+
"babel-plugin-polyfill-corejs2/@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="],
|
|
2907
|
+
|
|
2900
2908
|
"bin-links/cmd-shim": ["cmd-shim@7.0.0", "", {}, "sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw=="],
|
|
2901
2909
|
|
|
2902
2910
|
"bin-links/read-cmd-shim": ["read-cmd-shim@5.0.0", "", {}, "sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw=="],
|
|
@@ -3321,6 +3329,8 @@
|
|
|
3321
3329
|
|
|
3322
3330
|
"widest-line/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
|
|
3323
3331
|
|
|
3332
|
+
"workbox-build/@babel/preset-env": ["@babel/preset-env@7.29.2", "", { "dependencies": { "@babel/compat-data": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.28.6", "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-async-generator-functions": "^7.29.0", "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", "@babel/plugin-transform-block-scoping": "^7.28.6", "@babel/plugin-transform-class-properties": "^7.28.6", "@babel/plugin-transform-class-static-block": "^7.28.6", "@babel/plugin-transform-classes": "^7.28.6", "@babel/plugin-transform-computed-properties": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.6", "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", "@babel/plugin-transform-numeric-separator": "^7.28.6", "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.28.6", "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.28.6", "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", "@babel/plugin-transform-regenerator": "^7.29.0", "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.15", "babel-plugin-polyfill-corejs3": "^0.14.0", "babel-plugin-polyfill-regenerator": "^0.6.6", "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw=="],
|
|
3333
|
+
|
|
3324
3334
|
"workbox-build/ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="],
|
|
3325
3335
|
|
|
3326
3336
|
"workbox-build/glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": "dist/esm/bin.mjs" }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="],
|
|
@@ -3379,6 +3389,8 @@
|
|
|
3379
3389
|
|
|
3380
3390
|
"@svgr/plugin-svgo/cosmiconfig/path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="],
|
|
3381
3391
|
|
|
3392
|
+
"@svgr/webpack/@babel/preset-env/@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="],
|
|
3393
|
+
|
|
3382
3394
|
"@tufjs/models/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="],
|
|
3383
3395
|
|
|
3384
3396
|
"@unrs/resolver-binding-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ=="],
|
|
@@ -3665,6 +3677,8 @@
|
|
|
3665
3677
|
|
|
3666
3678
|
"widest-line/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
|
|
3667
3679
|
|
|
3680
|
+
"workbox-build/@babel/preset-env/@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="],
|
|
3681
|
+
|
|
3668
3682
|
"workbox-build/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
|
|
3669
3683
|
|
|
3670
3684
|
"workbox-build/glob/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import {
|
|
2
|
+
closeModal,
|
|
3
|
+
getBoardTile,
|
|
4
|
+
getOpenModal,
|
|
5
|
+
getSettingOption,
|
|
6
|
+
getSettingsButton,
|
|
7
|
+
typeBoard,
|
|
8
|
+
typeRack,
|
|
9
|
+
unregisterServiceWorkers,
|
|
10
|
+
visitIndex,
|
|
11
|
+
} from '../../support';
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
* @see https://github.com/kamilmielnik/scrabble-solver/issues/198
|
|
15
|
+
*/
|
|
16
|
+
describe('#198 - Highlight unreachable cells', () => {
|
|
17
|
+
beforeEach(async () => {
|
|
18
|
+
await unregisterServiceWorkers();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
cy.clearLocalStorage();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('has no effect when the rack is empty', () => {
|
|
26
|
+
visitIndex();
|
|
27
|
+
typeBoard('cat', 'horizontal', 7, 7);
|
|
28
|
+
setHighlightUnreachableCells('On');
|
|
29
|
+
|
|
30
|
+
expectReachable(0, 0);
|
|
31
|
+
expectReachable(14, 14);
|
|
32
|
+
expectReachable(7, 7);
|
|
33
|
+
expectReachable(7, 8);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('has no effect when the setting is off', () => {
|
|
37
|
+
visitIndex();
|
|
38
|
+
typeRack('abcdefg');
|
|
39
|
+
|
|
40
|
+
expectReachable(0, 0);
|
|
41
|
+
expectReachable(14, 14);
|
|
42
|
+
expectReachable(7, 7);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('dims unreachable cells on an empty board when rack has tiles', () => {
|
|
46
|
+
visitIndex();
|
|
47
|
+
typeRack('abc');
|
|
48
|
+
setHighlightUnreachableCells('On');
|
|
49
|
+
|
|
50
|
+
expectReachable(7, 7);
|
|
51
|
+
expectReachable(5, 7);
|
|
52
|
+
expectReachable(7, 5);
|
|
53
|
+
|
|
54
|
+
expectUnreachable(0, 0);
|
|
55
|
+
expectUnreachable(14, 14);
|
|
56
|
+
expectUnreachable(4, 7);
|
|
57
|
+
expectUnreachable(6, 6);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('dims cells far from any placed tile or rack reach', () => {
|
|
61
|
+
visitIndex();
|
|
62
|
+
typeBoard('cat', 'horizontal', 7, 7);
|
|
63
|
+
typeRack('ab');
|
|
64
|
+
setHighlightUnreachableCells('On');
|
|
65
|
+
|
|
66
|
+
expectReachable(7, 7);
|
|
67
|
+
expectReachable(6, 7);
|
|
68
|
+
expectReachable(10, 7);
|
|
69
|
+
expectReachable(8, 6);
|
|
70
|
+
|
|
71
|
+
expectUnreachable(0, 0);
|
|
72
|
+
expectUnreachable(14, 14);
|
|
73
|
+
expectUnreachable(0, 14);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('updates dimming when toggled off after being on', () => {
|
|
77
|
+
visitIndex();
|
|
78
|
+
typeRack('abc');
|
|
79
|
+
setHighlightUnreachableCells('On');
|
|
80
|
+
expectUnreachable(0, 0);
|
|
81
|
+
|
|
82
|
+
setHighlightUnreachableCells('Off');
|
|
83
|
+
expectReachable(0, 0);
|
|
84
|
+
expectReachable(14, 14);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const setHighlightUnreachableCells = (value: 'On' | 'Off') => {
|
|
89
|
+
getSettingsButton().realClick();
|
|
90
|
+
getOpenModal().should('be.visible');
|
|
91
|
+
getSettingOption('Highlight unreachable cells', value).check();
|
|
92
|
+
closeModal();
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const expectUnreachable = (x: number, y: number) => {
|
|
96
|
+
getBoardTile(x, y).parent().invoke('attr', 'class').should('include', 'unreachable');
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const expectReachable = (x: number, y: number) => {
|
|
100
|
+
getBoardTile(x, y).parent().invoke('attr', 'class').should('not.include', 'unreachable');
|
|
101
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getBoardTile,
|
|
3
|
+
getOpenModal,
|
|
4
|
+
getRackTile,
|
|
5
|
+
typeBoard,
|
|
6
|
+
typeRack,
|
|
7
|
+
unregisterServiceWorkers,
|
|
8
|
+
visitIndex,
|
|
9
|
+
} from '../../support';
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* @see https://github.com/kamilmielnik/scrabble-solver/issues/91
|
|
13
|
+
*/
|
|
14
|
+
describe('#91 - Hovering remaining tile highlights all same tiles on the board and rack', () => {
|
|
15
|
+
beforeEach(async () => {
|
|
16
|
+
await unregisterServiceWorkers();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
cy.clearLocalStorage();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('highlights matching letter tiles on the board and rack', () => {
|
|
24
|
+
visitIndex();
|
|
25
|
+
typeBoard('cat', 'horizontal', 7, 7);
|
|
26
|
+
typeRack('aab ');
|
|
27
|
+
openRemainingTilesModal();
|
|
28
|
+
|
|
29
|
+
hoverRemainingTile('a');
|
|
30
|
+
getRackTile(0).parent().should('have.attr', 'role', 'mark');
|
|
31
|
+
getRackTile(1).parent().should('have.attr', 'role', 'mark');
|
|
32
|
+
getRackTile(2).parent().should('not.have.attr', 'role', 'mark');
|
|
33
|
+
getRackTile(3).parent().should('not.have.attr', 'role', 'mark');
|
|
34
|
+
getBoardTile(7, 7).parent().should('not.have.attr', 'role', 'mark');
|
|
35
|
+
getBoardTile(8, 7).parent().should('have.attr', 'role', 'mark');
|
|
36
|
+
getBoardTile(9, 7).parent().should('not.have.attr', 'role', 'mark');
|
|
37
|
+
|
|
38
|
+
hoverRemainingTile('b');
|
|
39
|
+
getRackTile(0).parent().should('not.have.attr', 'role', 'mark');
|
|
40
|
+
getRackTile(1).parent().should('not.have.attr', 'role', 'mark');
|
|
41
|
+
getRackTile(2).parent().should('have.attr', 'role', 'mark');
|
|
42
|
+
getRackTile(3).parent().should('not.have.attr', 'role', 'mark');
|
|
43
|
+
getBoardTile(7, 7).parent().should('not.have.attr', 'role', 'mark');
|
|
44
|
+
getBoardTile(8, 7).parent().should('not.have.attr', 'role', 'mark');
|
|
45
|
+
getBoardTile(9, 7).parent().should('not.have.attr', 'role', 'mark');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('highlights matching blank tiles on the board and rack', () => {
|
|
49
|
+
visitIndex();
|
|
50
|
+
typeBoard('a', 'horizontal', 7, 7);
|
|
51
|
+
getBoardTile(7, 7).focus();
|
|
52
|
+
typeBoard(' ', 'horizontal', 7, 7);
|
|
53
|
+
typeRack(' a');
|
|
54
|
+
openRemainingTilesModal();
|
|
55
|
+
|
|
56
|
+
hoverRemainingTile(' ');
|
|
57
|
+
getRackTile(0).parent().should('have.attr', 'role', 'mark');
|
|
58
|
+
getRackTile(1).parent().should('not.have.attr', 'role', 'mark');
|
|
59
|
+
getBoardTile(7, 7).parent().should('have.attr', 'role', 'mark');
|
|
60
|
+
|
|
61
|
+
hoverRemainingTile('a');
|
|
62
|
+
getRackTile(0).parent().should('not.have.attr', 'role', 'mark');
|
|
63
|
+
getRackTile(1).parent().should('have.attr', 'role', 'mark');
|
|
64
|
+
getBoardTile(7, 7).parent().should('not.have.attr', 'role', 'mark');
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('does not highlight a remaining tile in the sidebar if it has not been used', () => {
|
|
68
|
+
visitIndex();
|
|
69
|
+
typeRack('a');
|
|
70
|
+
openRemainingTilesModal();
|
|
71
|
+
|
|
72
|
+
hoverRemainingTile('z');
|
|
73
|
+
cy.findByTestId('remaining-tile-z').find('[role="mark"]').should('not.exist');
|
|
74
|
+
getRackTile(0).parent().should('not.have.attr', 'role', 'mark');
|
|
75
|
+
|
|
76
|
+
hoverRemainingTile('a');
|
|
77
|
+
cy.findByTestId('remaining-tile-a').find('[role="mark"]').should('exist');
|
|
78
|
+
getRackTile(0).parent().should('have.attr', 'role', 'mark');
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const openRemainingTilesModal = () => {
|
|
83
|
+
cy.findByLabelText('Remaining tiles').realClick();
|
|
84
|
+
getOpenModal().should('be.visible');
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const hoverRemainingTile = (character: string) => {
|
|
88
|
+
const testId = character === ' ' ? 'remaining-tile-blank' : `remaining-tile-${character}`;
|
|
89
|
+
cy.findByTestId(testId).trigger('mouseover');
|
|
90
|
+
};
|
package/lerna.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scrabble-solver",
|
|
3
|
-
"version": "2.16.
|
|
3
|
+
"version": "2.16.3",
|
|
4
4
|
"description": "Scrabble Solver 2 - Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Letter League, Crossplay, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Scrabble",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"packages/scrabble-solver"
|
|
96
96
|
],
|
|
97
97
|
"dependencies": {
|
|
98
|
-
"@scrabble-solver/scrabble-solver": "^2.16.
|
|
98
|
+
"@scrabble-solver/scrabble-solver": "^2.16.3",
|
|
99
99
|
"concurrently": "^9.2.1",
|
|
100
100
|
"open-cli": "^9.0.0",
|
|
101
101
|
"wait-on": "^9.0.5"
|
|
@@ -103,11 +103,11 @@
|
|
|
103
103
|
"devDependencies": {
|
|
104
104
|
"@babel/core": "^7.29.0",
|
|
105
105
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
106
|
-
"@babel/preset-env": "^7.29.
|
|
106
|
+
"@babel/preset-env": "^7.29.3",
|
|
107
107
|
"@testing-library/cypress": "^10.1.3",
|
|
108
108
|
"@types/bun": "^1.3.13",
|
|
109
109
|
"@types/node": "^25.6.0",
|
|
110
|
-
"@typescript/native-preview": "^7.0.0-dev.
|
|
110
|
+
"@typescript/native-preview": "^7.0.0-dev.20260501.1",
|
|
111
111
|
"cypress": "^15.14.2",
|
|
112
112
|
"cypress-real-events": "^1.15.0",
|
|
113
113
|
"eslint-import-resolver-typescript": "^4.4.4",
|