@scrabble-solver/scrabble-solver 2.15.13 → 2.15.15
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/.next/BUILD_ID +1 -1
- package/.next/build/chunks/[root-of-the-server]__6e020478._.js +441 -0
- package/.next/build/chunks/[root-of-the-server]__6e020478._.js.map +7 -0
- package/.next/build/chunks/[root-of-the-server]__c7ae8543._.js +500 -0
- package/.next/build/chunks/[root-of-the-server]__c7ae8543._.js.map +11 -0
- package/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_c84aa21a._.js +12 -0
- package/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_c84aa21a._.js.map +5 -0
- package/.next/build/chunks/[turbopack]_runtime.js +770 -0
- package/.next/build/chunks/[turbopack]_runtime.js.map +10 -0
- package/.next/build/package.json +1 -0
- package/.next/build/webpack-loaders.js +6 -0
- package/.next/build/webpack-loaders.js.map +5 -0
- package/.next/build-manifest.json +29 -32
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/build-diagnostics.json +1 -1
- package/.next/diagnostics/framework.json +1 -1
- package/.next/fallback-build-manifest.json +24 -0
- package/.next/images-manifest.json +12 -3
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +4 -4
- package/.next/required-server-files.json +104 -73
- package/.next/routes-manifest.json +30 -9
- package/.next/server/chunks/[root-of-the-server]__378b5933._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__378b5933._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__51a21f60._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__51a21f60._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__53eb4a3b._.js +4 -0
- package/.next/server/chunks/[root-of-the-server]__53eb4a3b._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__7e4e99cd._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__7e4e99cd._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__a6a82e19._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__a6a82e19._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__a84df743._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__a84df743._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__a99303dc._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__a99303dc._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__bfa4320b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__bfa4320b._.js.map +1 -0
- package/.next/server/chunks/[turbopack]_runtime.js +770 -0
- package/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
- package/.next/server/chunks/scrabble-solver_b903dbba._.js +3 -0
- package/.next/server/chunks/scrabble-solver_b903dbba._.js.map +1 -0
- package/.next/server/chunks/scrabble-solver_packages_configs_build_5accd600._.js +3 -0
- package/.next/server/chunks/scrabble-solver_packages_configs_build_5accd600._.js.map +1 -0
- package/.next/server/chunks/ssr/1b834_next_d69de9fa._.js +3 -0
- package/.next/server/chunks/ssr/1b834_next_d69de9fa._.js.map +1 -0
- package/.next/server/chunks/ssr/[externals]_fs_54ffce70._.js +3 -0
- package/.next/server/chunks/ssr/[externals]_fs_54ffce70._.js.map +1 -0
- package/.next/server/chunks/ssr/[externals]_transliteration_b8916dda._.js +3 -0
- package/.next/server/chunks/ssr/[externals]_transliteration_b8916dda._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1115f13a._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1115f13a._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__421f2b10._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__421f2b10._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__b87cf431._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__b87cf431._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__bdcde4df._.js +5 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__bdcde4df._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c803ce2b._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c803ce2b._.js.map +1 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +770 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
- package/.next/server/chunks/ssr/scrabble-solver_1bf76a93._.js +3 -0
- package/.next/server/chunks/ssr/scrabble-solver_1bf76a93._.js.map +1 -0
- package/.next/server/chunks/ssr/scrabble-solver_a6d23152._.js +8 -0
- package/.next/server/chunks/ssr/scrabble-solver_a6d23152._.js.map +1 -0
- package/.next/server/chunks/ssr/scrabble-solver_packages_scrabble-solver_src_i18n_languages_1f0474f1._.js +3 -0
- package/.next/server/chunks/ssr/scrabble-solver_packages_scrabble-solver_src_i18n_languages_1f0474f1._.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +40 -1
- package/.next/server/middleware-manifest.json +2 -2
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +6 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app/build-manifest.json +18 -0
- package/.next/server/pages/_app/client-build-manifest.json +5 -0
- package/.next/server/pages/_app/next-font-manifest.json +6 -0
- package/.next/server/pages/_app/pages-manifest.json +3 -0
- package/.next/server/pages/_app/react-loadable-manifest.json +1 -0
- package/.next/server/pages/_app.js +6 -1
- package/.next/server/pages/_app.js.map +5 -0
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document/next-font-manifest.json +6 -0
- package/.next/server/pages/_document/pages-manifest.json +3 -0
- package/.next/server/pages/_document/react-loadable-manifest.json +1 -0
- package/.next/server/pages/_document.js +5 -1
- package/.next/server/pages/_document.js.map +5 -0
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error/build-manifest.json +15 -0
- package/.next/server/pages/_error/client-build-manifest.json +5 -0
- package/.next/server/pages/_error/next-font-manifest.json +6 -0
- package/.next/server/pages/_error/pages-manifest.json +3 -0
- package/.next/server/pages/_error/react-loadable-manifest.json +1 -0
- package/.next/server/pages/_error.js +10 -1
- package/.next/server/pages/_error.js.map +5 -0
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word]/pages-manifest.json +3 -0
- package/.next/server/pages/api/dictionary/[locale]/[word].js +8 -2
- package/.next/server/pages/api/dictionary/[locale]/[word].js.map +5 -0
- package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/pages-manifest.json +3 -0
- package/.next/server/pages/api/dictionary/[locale].js +6 -1
- package/.next/server/pages/api/dictionary/[locale].js.map +5 -0
- package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
- package/.next/server/pages/api/solve/pages-manifest.json +3 -0
- package/.next/server/pages/api/solve.js +8 -1
- package/.next/server/pages/api/solve.js.map +5 -0
- package/.next/server/pages/api/solve.js.nft.json +1 -1
- package/.next/server/pages/api/verify/pages-manifest.json +3 -0
- package/.next/server/pages/api/verify.js +7 -1
- package/.next/server/pages/api/verify.js.map +5 -0
- package/.next/server/pages/api/verify.js.nft.json +1 -1
- package/.next/server/pages/api/visit/pages-manifest.json +3 -0
- package/.next/server/pages/api/visit.js +5 -1
- package/.next/server/pages/api/visit.js.map +5 -0
- package/.next/server/pages/api/visit.js.nft.json +1 -1
- package/.next/server/pages/index/build-manifest.json +18 -0
- package/.next/server/pages/index/client-build-manifest.json +5 -0
- package/.next/server/pages/index/next-font-manifest.json +6 -0
- package/.next/server/pages/index/pages-manifest.json +3 -0
- package/.next/server/pages/index/react-loadable-manifest.json +1 -0
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js +11 -1
- package/.next/server/pages/index.js.map +5 -0
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/server/pages/not-found/build-manifest.json +17 -0
- package/.next/server/pages/not-found/client-build-manifest.json +5 -0
- package/.next/server/pages/not-found/next-font-manifest.json +6 -0
- package/.next/server/pages/not-found/pages-manifest.json +3 -0
- package/.next/server/pages/not-found/react-loadable-manifest.json +1 -0
- package/.next/server/pages/not-found.html +1 -0
- package/.next/server/pages/not-found.js.map +5 -0
- package/.next/server/pages/not-found.js.nft.json +1 -0
- package/.next/server/pages-manifest.json +6 -5
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +5 -0
- package/.next/static/7kzTSHcrJ7tE47btIJcLO/_buildManifest.js +27 -0
- package/.next/static/chunks/060b82a3f336704f.js +3 -0
- package/.next/static/chunks/18159e87dc14f3cf.js +1 -0
- package/.next/static/chunks/27692b9d65f8b241.js +8 -0
- package/.next/static/chunks/2f5ae49118c8c86e.js +1 -0
- package/.next/static/chunks/339ed8704781040d.js +5 -0
- package/.next/static/chunks/3c8b810de7908416.js +3 -0
- package/.next/static/chunks/50e709cb7765c2f9.js +1 -0
- package/.next/static/chunks/69fdc9801e177051.js +1 -0
- package/.next/static/chunks/77bd0d5f1fb6eeba.js +3 -0
- package/.next/static/chunks/88b0985f454c1075.js +1 -0
- package/.next/static/chunks/95230bbbdd629d16.js +1 -0
- package/.next/static/chunks/997907c5fccf02bb.js +5 -0
- package/.next/static/chunks/9b2e7a689e581b58.js +7 -0
- package/.next/static/chunks/a4580bbcd72cf165.css +2 -0
- package/.next/static/chunks/e37c75eaddd8268a.css +47 -0
- package/.next/static/chunks/e75d2aeb209c3d8c.js +8 -0
- package/.next/static/chunks/eebac312ab720248.js +1 -0
- package/.next/static/chunks/turbopack-3eaa540498b1c1e9.js +3 -0
- package/.next/static/chunks/turbopack-6422aba52462ed1d.js +3 -0
- package/.next/static/chunks/turbopack-c70c4122d677e1a8.js +3 -0
- package/.next/static/chunks/turbopack-cc316a12eadf598b.js +3 -0
- package/.next/trace +1 -24
- package/.next/trace-build +1 -0
- package/.next/turbopack +0 -0
- package/.next/types/routes.d.ts +57 -0
- package/.next/types/validator.ts +106 -0
- package/next-env.d.ts +1 -0
- package/next.config.js +9 -32
- package/package.json +27 -27
- package/src/components/Modal/Modal.tsx +1 -0
- package/src/components/Results/Result.tsx +13 -17
- package/src/components/Results/Results.tsx +23 -24
- package/src/hooks/useMedia.ts +1 -0
- package/src/pages/_app.tsx +1 -1
- package/src/pages/{404.tsx → not-found.tsx} +2 -0
- package/src/state/cellFilters/slice.ts +1 -2
- package/src/state/settings/selectors.ts +0 -1
- package/src/styles/global.scss +1 -1
- package/src/styles/variables.scss +2 -2
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/server/InjectManifest.js.nft.json +0 -1
- package/.next/server/chunks/106.js +0 -1
- package/.next/server/chunks/30.js +0 -6
- package/.next/server/chunks/318.js +0 -1
- package/.next/server/chunks/50.js +0 -19
- package/.next/server/chunks/812.js +0 -1
- package/.next/server/chunks/929.js +0 -1
- package/.next/server/chunks/974.js +0 -1
- package/.next/server/dynamic-css-manifest.js +0 -1
- package/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/.next/server/pages/404.js.nft.json +0 -1
- package/.next/server/webpack-api-runtime.js +0 -1
- package/.next/server/webpack-runtime.js +0 -1
- package/.next/static/MhrqAqLI9_L8obb7tgjvi/_buildManifest.js +0 -1
- package/.next/static/chunks/framework-aad31c68dd0bb0ea.js +0 -1
- package/.next/static/chunks/main-eab5847b41f0af4a.js +0 -1
- package/.next/static/chunks/pages/404-04457ede98c6b53e.js +0 -1
- package/.next/static/chunks/pages/_app-bf81f201c021fdc1.js +0 -1
- package/.next/static/chunks/pages/_error-a9800cedd835bcad.js +0 -1
- package/.next/static/chunks/pages/index-79a390f3c2a2499f.js +0 -1
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/.next/static/chunks/webpack-6224d37324e372cb.js +0 -1
- package/.next/static/css/04a3767982ec10e8.css +0 -1
- package/.next/static/css/1fae874a25934f54.css +0 -2
- /package/.next/{react-loadable-manifest.json → server/app-paths-manifest.json} +0 -0
- /package/.next/{dynamic-css-manifest.json → static/7kzTSHcrJ7tE47btIJcLO/_clientMiddlewareManifest.json} +0 -0
- /package/.next/static/{MhrqAqLI9_L8obb7tgjvi → 7kzTSHcrJ7tE47btIJcLO}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"name":"run-typescript","duration":2175226,"timestamp":7353403028,"id":13,"parentId":1,"tags":{},"startTime":1765217409878,"traceId":"2c6a9b8e4b3b2cff"},{"name":"run-turbopack","duration":2334309,"timestamp":7355580124,"id":15,"parentId":1,"tags":{},"startTime":1765217412055,"traceId":"2c6a9b8e4b3b2cff"},{"name":"static-check","duration":193050,"timestamp":7358348351,"id":17,"parentId":1,"tags":{},"startTime":1765217414823,"traceId":"2c6a9b8e4b3b2cff"},{"name":"static-generation","duration":568678,"timestamp":7358543899,"id":34,"parentId":1,"tags":{},"startTime":1765217415018,"traceId":"2c6a9b8e4b3b2cff"},{"name":"telemetry-flush","duration":25,"timestamp":7359120410,"id":45,"parentId":1,"tags":{},"startTime":1765217415595,"traceId":"2c6a9b8e4b3b2cff"},{"name":"next-build","duration":5923308,"timestamp":7353197131,"id":1,"tags":{"buildMode":"default","version":"16.0.7","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1765217409672,"traceId":"2c6a9b8e4b3b2cff"}]
|
package/.next/turbopack
ADDED
|
File without changes
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// This file is generated automatically by Next.js
|
|
2
|
+
// Do not edit this file manually
|
|
3
|
+
|
|
4
|
+
type AppRoutes = never
|
|
5
|
+
type PageRoutes = "/" | "/not-found"
|
|
6
|
+
type LayoutRoutes = never
|
|
7
|
+
type RedirectRoutes = never
|
|
8
|
+
type RewriteRoutes = never
|
|
9
|
+
type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRoutes
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
interface ParamMap {
|
|
13
|
+
"/": {}
|
|
14
|
+
"/not-found": {}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
export type ParamsOf<Route extends Routes> = ParamMap[Route]
|
|
19
|
+
|
|
20
|
+
interface LayoutSlotMap {
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
export type { AppRoutes, PageRoutes, LayoutRoutes, RedirectRoutes, RewriteRoutes, ParamMap }
|
|
25
|
+
|
|
26
|
+
declare global {
|
|
27
|
+
/**
|
|
28
|
+
* Props for Next.js App Router page components
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* export default function Page(props: PageProps<'/blog/[slug]'>) {
|
|
32
|
+
* const { slug } = await props.params
|
|
33
|
+
* return <div>Blog post: {slug}</div>
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
interface PageProps<AppRoute extends AppRoutes> {
|
|
38
|
+
params: Promise<ParamMap[AppRoute]>
|
|
39
|
+
searchParams: Promise<Record<string, string | string[] | undefined>>
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Props for Next.js App Router layout components
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* export default function Layout(props: LayoutProps<'/dashboard'>) {
|
|
47
|
+
* return <div>{props.children}</div>
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
type LayoutProps<LayoutRoute extends LayoutRoutes> = {
|
|
52
|
+
params: Promise<ParamMap[LayoutRoute]>
|
|
53
|
+
children: React.ReactNode
|
|
54
|
+
} & {
|
|
55
|
+
[K in LayoutSlotMap[LayoutRoute]]: React.ReactNode
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// This file is generated automatically by Next.js
|
|
2
|
+
// Do not edit this file manually
|
|
3
|
+
// This file validates that all pages and layouts export the correct types
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
import type { NextApiHandler } from "next/types.js"
|
|
7
|
+
|
|
8
|
+
type PagesPageConfig = {
|
|
9
|
+
default: React.ComponentType<any> | ((props: any) => React.ReactNode | Promise<React.ReactNode> | never | void)
|
|
10
|
+
getStaticProps?: (context: any) => Promise<any> | any
|
|
11
|
+
getStaticPaths?: (context: any) => Promise<any> | any
|
|
12
|
+
getServerSideProps?: (context: any) => Promise<any> | any
|
|
13
|
+
getInitialProps?: (context: any) => Promise<any> | any
|
|
14
|
+
/**
|
|
15
|
+
* Segment configuration for legacy Pages Router pages.
|
|
16
|
+
* Validated at build-time by parsePagesSegmentConfig.
|
|
17
|
+
*/
|
|
18
|
+
config?: {
|
|
19
|
+
maxDuration?: number
|
|
20
|
+
runtime?: 'edge' | 'experimental-edge' | 'nodejs' | string // necessary unless config is exported as const
|
|
21
|
+
regions?: string[]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type ApiRouteConfig = {
|
|
26
|
+
default: (req: any, res: any) => ReturnType<NextApiHandler>
|
|
27
|
+
config?: {
|
|
28
|
+
api?: {
|
|
29
|
+
bodyParser?: boolean | { sizeLimit?: string }
|
|
30
|
+
responseLimit?: string | number | boolean
|
|
31
|
+
externalResolver?: boolean
|
|
32
|
+
}
|
|
33
|
+
runtime?: 'edge' | 'experimental-edge' | 'nodejs' | string // necessary unless config is exported as const
|
|
34
|
+
maxDuration?: number
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
// Validate ../../src/pages/index.tsx
|
|
44
|
+
{
|
|
45
|
+
type __IsExpected<Specific extends PagesPageConfig> = Specific
|
|
46
|
+
const handler = {} as typeof import("../../src/pages/index.js")
|
|
47
|
+
type __Check = __IsExpected<typeof handler>
|
|
48
|
+
// @ts-ignore
|
|
49
|
+
type __Unused = __Check
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Validate ../../src/pages/not-found.tsx
|
|
53
|
+
{
|
|
54
|
+
type __IsExpected<Specific extends PagesPageConfig> = Specific
|
|
55
|
+
const handler = {} as typeof import("../../src/pages/not-found.js")
|
|
56
|
+
type __Check = __IsExpected<typeof handler>
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
type __Unused = __Check
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Validate ../../src/pages/api/dictionary/[locale]/[word].ts
|
|
62
|
+
{
|
|
63
|
+
type __IsExpected<Specific extends ApiRouteConfig> = Specific
|
|
64
|
+
const handler = {} as typeof import("../../src/pages/api/dictionary/[locale]/[word].js")
|
|
65
|
+
type __Check = __IsExpected<typeof handler>
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
type __Unused = __Check
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Validate ../../src/pages/api/dictionary/[locale]/index.ts
|
|
71
|
+
{
|
|
72
|
+
type __IsExpected<Specific extends ApiRouteConfig> = Specific
|
|
73
|
+
const handler = {} as typeof import("../../src/pages/api/dictionary/[locale]/index.js")
|
|
74
|
+
type __Check = __IsExpected<typeof handler>
|
|
75
|
+
// @ts-ignore
|
|
76
|
+
type __Unused = __Check
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Validate ../../src/pages/api/solve.ts
|
|
80
|
+
{
|
|
81
|
+
type __IsExpected<Specific extends ApiRouteConfig> = Specific
|
|
82
|
+
const handler = {} as typeof import("../../src/pages/api/solve.js")
|
|
83
|
+
type __Check = __IsExpected<typeof handler>
|
|
84
|
+
// @ts-ignore
|
|
85
|
+
type __Unused = __Check
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Validate ../../src/pages/api/verify.ts
|
|
89
|
+
{
|
|
90
|
+
type __IsExpected<Specific extends ApiRouteConfig> = Specific
|
|
91
|
+
const handler = {} as typeof import("../../src/pages/api/verify.js")
|
|
92
|
+
type __Check = __IsExpected<typeof handler>
|
|
93
|
+
// @ts-ignore
|
|
94
|
+
type __Unused = __Check
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Validate ../../src/pages/api/visit.ts
|
|
98
|
+
{
|
|
99
|
+
type __IsExpected<Specific extends ApiRouteConfig> = Specific
|
|
100
|
+
const handler = {} as typeof import("../../src/pages/api/visit.js")
|
|
101
|
+
type __Check = __IsExpected<typeof handler>
|
|
102
|
+
// @ts-ignore
|
|
103
|
+
type __Unused = __Check
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
package/next-env.d.ts
CHANGED
package/next.config.js
CHANGED
|
@@ -1,48 +1,25 @@
|
|
|
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
8
|
eslint: {
|
|
20
9
|
ignoreDuringBuilds: true,
|
|
21
10
|
},
|
|
22
11
|
reactStrictMode: true,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
12
|
+
sassOptions: {
|
|
13
|
+
loadPaths: ['./src', path.join(__dirname, '../../node_modules/include-media/dist')],
|
|
14
|
+
},
|
|
15
|
+
turbopack: {
|
|
16
|
+
rules: {
|
|
17
|
+
'*.svg': {
|
|
18
|
+
loaders: ['@svgr/webpack'],
|
|
19
|
+
as: '*.js',
|
|
30
20
|
},
|
|
31
21
|
},
|
|
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
22
|
plugins: [
|
|
45
|
-
...config.plugins,
|
|
46
23
|
process.env.NODE_ENV === 'production'
|
|
47
24
|
? new WorkboxPlugin.InjectManifest({
|
|
48
25
|
swSrc: path.join(__dirname, 'src/service-worker/index.ts'),
|
|
@@ -51,5 +28,5 @@ module.exports = {
|
|
|
51
28
|
})
|
|
52
29
|
: undefined,
|
|
53
30
|
].filter(Boolean),
|
|
54
|
-
}
|
|
31
|
+
},
|
|
55
32
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/scrabble-solver",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.15",
|
|
4
4
|
"description": "Scrabble Solver 2 - App",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,52 +25,52 @@
|
|
|
25
25
|
"type-check": "tsc --noEmit"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@floating-ui/react": "^0.27.
|
|
28
|
+
"@floating-ui/react": "^0.27.16",
|
|
29
29
|
"@kamilmielnik/trie": "^4.0.0",
|
|
30
|
-
"@reduxjs/toolkit": "^2.
|
|
31
|
-
"@scrabble-solver/configs": "^2.15.
|
|
32
|
-
"@scrabble-solver/constants": "^2.15.
|
|
33
|
-
"@scrabble-solver/dictionaries": "^2.15.
|
|
34
|
-
"@scrabble-solver/logger": "^2.15.
|
|
35
|
-
"@scrabble-solver/solver": "^2.15.
|
|
36
|
-
"@scrabble-solver/types": "^2.15.
|
|
37
|
-
"@scrabble-solver/word-definitions": "^2.15.
|
|
30
|
+
"@reduxjs/toolkit": "^2.11.1",
|
|
31
|
+
"@scrabble-solver/configs": "^2.15.15",
|
|
32
|
+
"@scrabble-solver/constants": "^2.15.15",
|
|
33
|
+
"@scrabble-solver/dictionaries": "^2.15.15",
|
|
34
|
+
"@scrabble-solver/logger": "^2.15.15",
|
|
35
|
+
"@scrabble-solver/solver": "^2.15.15",
|
|
36
|
+
"@scrabble-solver/types": "^2.15.15",
|
|
37
|
+
"@scrabble-solver/word-definitions": "^2.15.15",
|
|
38
38
|
"classnames": "^2.5.1",
|
|
39
|
-
"env-cmd": "^
|
|
39
|
+
"env-cmd": "^11.0.0",
|
|
40
40
|
"include-media": "^2.0.0",
|
|
41
41
|
"include-media-query-builder": "^1.1.0",
|
|
42
|
-
"next": "^
|
|
42
|
+
"next": "^16.0.7",
|
|
43
43
|
"normalize.css": "^8.0.1",
|
|
44
|
-
"react": "^19.1
|
|
44
|
+
"react": "^19.2.1",
|
|
45
45
|
"react-cool-onclickoutside": "^1.7.0",
|
|
46
|
-
"react-dom": "^19.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": "^
|
|
51
|
-
"redux-saga": "^1.
|
|
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
|
-
"use-debounce": "^10.0.
|
|
55
|
-
"workbox-expiration": "^7.
|
|
56
|
-
"workbox-precaching": "^7.
|
|
57
|
-
"workbox-routing": "^7.
|
|
58
|
-
"workbox-webpack-plugin": "^7.
|
|
59
|
-
"workbox-window": "^7.
|
|
54
|
+
"use-debounce": "^10.0.6",
|
|
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
63
|
"@types/classnames": "^2.3.4",
|
|
64
|
-
"@types/react": "^19.
|
|
65
|
-
"@types/react-dom": "^19.
|
|
64
|
+
"@types/react": "^19.2.7",
|
|
65
|
+
"@types/react-dom": "^19.2.3",
|
|
66
66
|
"@types/react-highlight-words": "^0.20.0",
|
|
67
67
|
"@types/react-modal": "^3.16.3",
|
|
68
68
|
"@types/react-portal": "^4.0.7",
|
|
69
69
|
"@types/react-redux": "^7.1.34",
|
|
70
|
-
"@types/react-window": "^
|
|
70
|
+
"@types/react-window": "^2.0.0",
|
|
71
71
|
"@types/redux": "^3.6.31",
|
|
72
72
|
"@types/redux-saga": "^0.10.5",
|
|
73
|
-
"sass": "^1.
|
|
73
|
+
"sass": "^1.94.2"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "5035e8363c499f920bec5790467723a4d0d9a4c7"
|
|
76
76
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import classNames from 'classnames';
|
|
2
|
-
import { type
|
|
2
|
+
import { type FocusEventHandler, type MouseEventHandler, type ReactElement, useRef } from 'react';
|
|
3
3
|
import Highlighter from 'react-highlight-words';
|
|
4
|
+
import { type RowComponentProps } from 'react-window';
|
|
4
5
|
|
|
5
6
|
import { useAppLayout, useColumns } from 'hooks';
|
|
6
7
|
import { LOCALE_FEATURES } from 'i18n';
|
|
@@ -18,22 +19,17 @@ import { Cell } from './Cell';
|
|
|
18
19
|
import styles from './Results.module.scss';
|
|
19
20
|
import { type ResultData } from './types';
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
onClick = noop,
|
|
33
|
-
onFocus = noop,
|
|
34
|
-
onMouseEnter = noop,
|
|
35
|
-
onMouseLeave = noop,
|
|
36
|
-
} = data;
|
|
22
|
+
export const Result = ({
|
|
23
|
+
index,
|
|
24
|
+
highlightedIndex,
|
|
25
|
+
results = [],
|
|
26
|
+
onBlur = noop,
|
|
27
|
+
onClick = noop,
|
|
28
|
+
onFocus = noop,
|
|
29
|
+
onMouseEnter = noop,
|
|
30
|
+
onMouseLeave = noop,
|
|
31
|
+
style,
|
|
32
|
+
}: RowComponentProps<ResultData>): ReactElement => {
|
|
37
33
|
const { resultWordWidth } = useAppLayout();
|
|
38
34
|
const ref = useRef<HTMLButtonElement>(null);
|
|
39
35
|
const columns = useColumns();
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import classNames from 'classnames';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { useEffect, useMemo, type FunctionComponent } from 'react';
|
|
3
|
+
import { List, useListRef } from 'react-window';
|
|
4
4
|
import { useDebounce } from 'use-debounce';
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { useLatest } from 'hooks';
|
|
7
7
|
import { LOCALE_FEATURES } from 'i18n';
|
|
8
|
-
import {
|
|
8
|
+
import { RESULTS_ITEM_HEIGHT } from 'parameters';
|
|
9
9
|
import {
|
|
10
10
|
selectAreResultsOutdated,
|
|
11
|
-
selectSolveIsLoading,
|
|
12
11
|
selectLocale,
|
|
13
12
|
selectProcessedResults,
|
|
14
13
|
selectSolveError,
|
|
14
|
+
selectSolveIsLoading,
|
|
15
15
|
useTranslate,
|
|
16
16
|
useTypedSelector,
|
|
17
17
|
} from 'state';
|
|
@@ -36,7 +36,6 @@ const IS_LOADING_DEBOUNCE = 100;
|
|
|
36
36
|
|
|
37
37
|
export const Results: FunctionComponent<Props> = ({ callbacks, className, highlightedIndex }) => {
|
|
38
38
|
const translate = useTranslate();
|
|
39
|
-
const { resultsHeight, resultsWidth } = useAppLayout();
|
|
40
39
|
const locale = useTypedSelector(selectLocale);
|
|
41
40
|
const { direction } = LOCALE_FEATURES[locale];
|
|
42
41
|
const results = useTypedSelector(selectProcessedResults);
|
|
@@ -44,22 +43,25 @@ export const Results: FunctionComponent<Props> = ({ callbacks, className, highli
|
|
|
44
43
|
const [isLoadingDebounced] = useDebounce(isLoading, IS_LOADING_DEBOUNCE);
|
|
45
44
|
const isOutdated = useTypedSelector(selectAreResultsOutdated);
|
|
46
45
|
const error = useTypedSelector(selectSolveError);
|
|
47
|
-
const itemData = useMemo(
|
|
48
|
-
|
|
46
|
+
const itemData = useMemo<ResultData>(
|
|
47
|
+
() => ({ ...callbacks, highlightedIndex, results }),
|
|
48
|
+
[callbacks, highlightedIndex, results],
|
|
49
|
+
);
|
|
50
|
+
const listRef = useListRef(null);
|
|
49
51
|
const scrollToIndex = typeof highlightedIndex === 'number' ? highlightedIndex : 0;
|
|
50
52
|
const scrollToIndexRef = useLatest(scrollToIndex);
|
|
51
53
|
const hasResults = typeof error === 'undefined' && typeof results !== 'undefined';
|
|
52
54
|
const showInput = hasResults && results.length > 0 && !isOutdated;
|
|
53
|
-
const height = resultsHeight - RESULTS_HEADER_HEIGHT - (showInput ? TEXT_INPUT_HEIGHT : 0) - 2 * BORDER_WIDTH;
|
|
54
|
-
const width = resultsWidth - 2 * BORDER_WIDTH;
|
|
55
55
|
|
|
56
56
|
useEffect(() => {
|
|
57
57
|
// without setTimeout, the initial scrolling offset is calculated
|
|
58
58
|
// incorrectly, as the list is not fully rendered by the browser yet
|
|
59
59
|
const timeout = globalThis.setTimeout(() => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
listRef.current?.scrollToRow({
|
|
61
|
+
align: 'center',
|
|
62
|
+
behavior: 'instant',
|
|
63
|
+
index: scrollToIndexRef.current,
|
|
64
|
+
});
|
|
63
65
|
}, 0);
|
|
64
66
|
|
|
65
67
|
return () => {
|
|
@@ -104,20 +106,17 @@ export const Results: FunctionComponent<Props> = ({ callbacks, className, highli
|
|
|
104
106
|
|
|
105
107
|
{!isOutdated && results.length > 0 && (
|
|
106
108
|
<div className={styles.listContainer}>
|
|
107
|
-
<
|
|
109
|
+
<List
|
|
108
110
|
className={classNames(styles.list, {
|
|
109
111
|
[styles.outdated]: isOutdated,
|
|
110
112
|
})}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
>
|
|
119
|
-
{Result}
|
|
120
|
-
</FixedSizeList>
|
|
113
|
+
dir={direction}
|
|
114
|
+
listRef={listRef}
|
|
115
|
+
rowComponent={Result}
|
|
116
|
+
rowCount={results.length}
|
|
117
|
+
rowHeight={RESULTS_ITEM_HEIGHT}
|
|
118
|
+
rowProps={itemData}
|
|
119
|
+
/>
|
|
121
120
|
</div>
|
|
122
121
|
)}
|
|
123
122
|
</>
|
package/src/hooks/useMedia.ts
CHANGED
|
@@ -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
|
|
package/src/pages/_app.tsx
CHANGED
|
@@ -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
|
-
|
package/src/styles/global.scss
CHANGED
|
@@ -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:
|
|
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;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"files":["../../public/service-worker.js"]}
|