scrabble-solver 2.18.2 → 2.18.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/.nx/workspace-data/d/server-process.json +2 -2
- package/.nx/workspace-data/file-map.json +530 -526
- 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/project-graph.json +12 -11
- package/.nx/workspace-data/source-maps.json +4 -0
- package/CLAUDE.md +1 -1
- package/README.md +1 -1
- package/bun.lock +29 -29
- package/lerna.json +1 -1
- package/package.json +4 -3
- package/packages/configs/build/games/index.d.ts +1 -0
- package/packages/configs/build/games/index.js +1 -0
- package/packages/configs/build/games/wyrazy.d.ts +19 -0
- package/packages/configs/build/games/wyrazy.js +73 -0
- package/packages/configs/build/languages/polish.d.ts +1 -0
- package/packages/configs/build/languages/polish.js +39 -1
- package/packages/configs/package.json +5 -4
- package/packages/configs/src/games/index.ts +1 -0
- package/packages/configs/src/games/wyrazy.ts +71 -0
- package/packages/configs/src/languages/polish.ts +40 -1
- package/packages/constants/package.json +1 -1
- package/packages/dictionaries/package.json +4 -4
- package/packages/logger/package.json +1 -1
- package/packages/logger/scripts/stats.js +52 -31
- package/packages/scrabble-solver/.next/BUILD_ID +1 -1
- package/packages/scrabble-solver/.next/build-manifest.json +8 -8
- 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/392.js +1 -1
- package/packages/scrabble-solver/.next/server/chunks/67.js +1 -1
- package/packages/scrabble-solver/.next/server/chunks/812.js +1 -1
- package/packages/scrabble-solver/.next/server/middleware-build-manifest.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/404.html +2 -2
- package/packages/scrabble-solver/.next/server/pages/500.html +2 -2
- package/packages/scrabble-solver/.next/server/pages/_app.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/_document.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/solve.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/api/verify.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.html +2 -2
- package/packages/scrabble-solver/.next/server/pages/index.js +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/index.json +1 -1
- package/packages/scrabble-solver/.next/server/pages/not-found.html +2 -2
- package/packages/scrabble-solver/.next/server/pages/not-found.js.nft.json +1 -1
- package/packages/scrabble-solver/.next/static/{nvGZh1gPuX98L07YmxlYD → 8WnIUTe-yJvPD6stltvYI}/_buildManifest.js +1 -1
- package/packages/scrabble-solver/.next/static/chunks/256.6a20b23a766cfebd.js +1 -0
- package/packages/scrabble-solver/.next/static/chunks/pages/_app-e3fe880e24c024ab.js +1 -0
- package/packages/scrabble-solver/.next/static/chunks/pages/{index-b5bf018100015277.js → index-b073a1686818dd26.js} +1 -1
- package/packages/scrabble-solver/.next/static/chunks/{webpack-9f5c9d275348829b.js → webpack-d7138f1ef6b8c9d6.js} +1 -1
- package/packages/scrabble-solver/.next/trace +22 -21
- package/packages/scrabble-solver/.next/trace-build +1 -1
- package/packages/scrabble-solver/package.json +8 -8
- package/packages/scrabble-solver/public/llms.txt +1 -1
- package/packages/scrabble-solver/public/service-worker.js +1 -1
- package/packages/scrabble-solver/src/pages/index.tsx +1 -1
- package/packages/scrabble-solver/tsconfig.tsbuildinfo +1 -1
- package/packages/solver/package.json +5 -5
- package/packages/types/build/Game.d.ts +2 -1
- package/packages/types/build/Game.js +1 -0
- package/packages/types/package.json +2 -2
- package/packages/types/src/Game.ts +1 -0
- package/packages/word-definitions/package.json +2 -2
- package/packages/word-lists/package.json +2 -2
- package/playwright-report/index.html +1 -1
- package/packages/scrabble-solver/.next/static/chunks/256.66ff9fb6d7db9ec7.js +0 -1
- package/packages/scrabble-solver/.next/static/chunks/pages/_app-f9ec81278ffa7b1a.js +0 -1
- /package/packages/scrabble-solver/.next/static/{nvGZh1gPuX98L07YmxlYD → 8WnIUTe-yJvPD6stltvYI}/_ssgManifest.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/dictionaries",
|
|
3
|
-
"version": "2.18.
|
|
3
|
+
"version": "2.18.3",
|
|
4
4
|
"description": "Dictionary manager for Scrabble Solver: downloads per-locale word lists and serves them as GADDAG automata with layered disk/memory caching.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"scrabble",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@kamilmielnik/gaddag": "^2.0.0",
|
|
41
|
-
"@scrabble-solver/logger": "^2.18.
|
|
42
|
-
"@scrabble-solver/types": "^2.18.
|
|
43
|
-
"@scrabble-solver/word-lists": "^2.18.
|
|
41
|
+
"@scrabble-solver/logger": "^2.18.3",
|
|
42
|
+
"@scrabble-solver/types": "^2.18.3",
|
|
43
|
+
"@scrabble-solver/word-lists": "^2.18.3"
|
|
44
44
|
},
|
|
45
45
|
"gitHead": "1e2d1ad49a288d4a44196d8e3336740da132c637"
|
|
46
46
|
}
|
|
@@ -4,49 +4,70 @@ const path = require('path');
|
|
|
4
4
|
const { argv } = require('process');
|
|
5
5
|
|
|
6
6
|
const DAY = 24 * 60 * 60 * 1000;
|
|
7
|
+
const EVENTS = [` message: 'visit - request',`, ` message: 'solve - request',`, ` message: 'dictionary - request',`];
|
|
8
|
+
const TIMESTAMP_PREFIX = ` timestamp: '`;
|
|
9
|
+
const DATE_LENGTH = 'YYYY-MM-DD'.length;
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
main();
|
|
12
|
+
|
|
13
|
+
async function main() {
|
|
14
|
+
const filepath = path.resolve(os.homedir(), 'desktop', 'all.log');
|
|
15
|
+
const since = argv[2] || '2021-06-01';
|
|
16
|
+
const countsPerDay = await countEventsPerDay(filepath, since);
|
|
17
|
+
|
|
18
|
+
for (const event of EVENTS) {
|
|
19
|
+
printStats(getStats(event, countsPerDay.get(event), since));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
11
22
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
23
|
+
async function countEventsPerDay(filepath, since) {
|
|
24
|
+
const countsPerDay = new Map(EVENTS.map((event) => [event, {}]));
|
|
25
|
+
let pendingEvent;
|
|
15
26
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const day =
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
for await (const line of readLines(filepath)) {
|
|
28
|
+
if (pendingEvent) {
|
|
29
|
+
const day = line.slice(TIMESTAMP_PREFIX.length, TIMESTAMP_PREFIX.length + DATE_LENGTH);
|
|
30
|
+
|
|
31
|
+
if (day >= since) {
|
|
32
|
+
const counts = countsPerDay.get(pendingEvent);
|
|
33
|
+
counts[day] = (counts[day] || 0) + 1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
pendingEvent = undefined;
|
|
37
|
+
} else if (countsPerDay.has(line)) {
|
|
38
|
+
pendingEvent = line;
|
|
21
39
|
}
|
|
22
40
|
}
|
|
23
41
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
42
|
+
return countsPerDay;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function* readLines(filepath) {
|
|
46
|
+
let remainder = '';
|
|
47
|
+
|
|
48
|
+
for await (const chunk of fs.createReadStream(filepath, 'utf-8')) {
|
|
49
|
+
const lines = (remainder + chunk).split('\n');
|
|
50
|
+
remainder = lines.pop();
|
|
51
|
+
yield* lines;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (remainder) {
|
|
55
|
+
yield remainder;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
29
58
|
|
|
30
|
-
|
|
59
|
+
function getStats(event, countsPerDay, since) {
|
|
60
|
+
const daysCount = Math.ceil((Date.now() - Number(new Date(since))) / DAY);
|
|
61
|
+
const sum = Object.values(countsPerDay).reduce((result, count) => result + count, 0);
|
|
31
62
|
|
|
32
|
-
return { daysCount, event,
|
|
33
|
-
}
|
|
63
|
+
return { daysCount, event, countsPerDay, sum };
|
|
64
|
+
}
|
|
34
65
|
|
|
35
|
-
|
|
66
|
+
function printStats({ daysCount, event, countsPerDay, sum }) {
|
|
36
67
|
console.log('--------------------------------------');
|
|
37
68
|
console.log(event);
|
|
38
69
|
console.log('--------------------------------------');
|
|
39
70
|
console.log(`Sum: ${sum}`);
|
|
40
71
|
console.log(`Avg: ${sum / daysCount}`);
|
|
41
|
-
console.table(
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const filepath = path.resolve(os.homedir(), '.scrabble-solver', 'logs', 'all.log');
|
|
45
|
-
const file = fs.readFileSync(filepath, 'utf-8');
|
|
46
|
-
const lines = file.split('\n');
|
|
47
|
-
const since = argv[2] || '2021-06-01';
|
|
48
|
-
const events = [` message: 'visit - request',`, ` message: 'solve - request',`, ` message: 'dictionary - request',`];
|
|
49
|
-
|
|
50
|
-
for (const event of events) {
|
|
51
|
-
printStats(getStats(event, lines, since));
|
|
72
|
+
console.table(countsPerDay);
|
|
52
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
8WnIUTe-yJvPD6stltvYI
|
|
@@ -4,35 +4,35 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static/
|
|
8
|
-
"static/
|
|
7
|
+
"static/8WnIUTe-yJvPD6stltvYI/_buildManifest.js",
|
|
8
|
+
"static/8WnIUTe-yJvPD6stltvYI/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [],
|
|
11
11
|
"rootMainFilesTree": {},
|
|
12
12
|
"pages": {
|
|
13
13
|
"/": [
|
|
14
|
-
"static/chunks/webpack-
|
|
14
|
+
"static/chunks/webpack-d7138f1ef6b8c9d6.js",
|
|
15
15
|
"static/chunks/framework-626cbd48ac5aca57.js",
|
|
16
16
|
"static/chunks/main-7e52da35a4beea0b.js",
|
|
17
17
|
"static/chunks/101-829ab8a8d310e7a0.js",
|
|
18
18
|
"static/css/a691348b788f8bc0.css",
|
|
19
|
-
"static/chunks/pages/index-
|
|
19
|
+
"static/chunks/pages/index-b073a1686818dd26.js"
|
|
20
20
|
],
|
|
21
21
|
"/_app": [
|
|
22
|
-
"static/chunks/webpack-
|
|
22
|
+
"static/chunks/webpack-d7138f1ef6b8c9d6.js",
|
|
23
23
|
"static/chunks/framework-626cbd48ac5aca57.js",
|
|
24
24
|
"static/chunks/main-7e52da35a4beea0b.js",
|
|
25
25
|
"static/css/92f85ce358a0a468.css",
|
|
26
|
-
"static/chunks/pages/_app-
|
|
26
|
+
"static/chunks/pages/_app-e3fe880e24c024ab.js"
|
|
27
27
|
],
|
|
28
28
|
"/_error": [
|
|
29
|
-
"static/chunks/webpack-
|
|
29
|
+
"static/chunks/webpack-d7138f1ef6b8c9d6.js",
|
|
30
30
|
"static/chunks/framework-626cbd48ac5aca57.js",
|
|
31
31
|
"static/chunks/main-7e52da35a4beea0b.js",
|
|
32
32
|
"static/chunks/pages/_error-f0290a98eb3ed0ec.js"
|
|
33
33
|
],
|
|
34
34
|
"/not-found": [
|
|
35
|
-
"static/chunks/webpack-
|
|
35
|
+
"static/chunks/webpack-d7138f1ef6b8c9d6.js",
|
|
36
36
|
"static/chunks/framework-626cbd48ac5aca57.js",
|
|
37
37
|
"static/chunks/main-7e52da35a4beea0b.js",
|
|
38
38
|
"static/css/dee878eb64099d92.css",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"previewModeId":"
|
|
1
|
+
{"previewModeId":"d56d08e80e1c264fb9d5bd2f046d21e9","previewModeSigningKey":"710dfc296ee593a012938c12ca917fa8a7e3ee8c4ee055414ad75479b6de3c74","previewModeEncryptionKey":"b8cd042dcfa5ffc82dead343e6d398a5c6e43f0914c1fcf246c66c0a019c64ed","expireAt":1788815296531}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"encryption.key":"
|
|
1
|
+
{"encryption.key":"YarGHnilucy7AOI9ayDZUAGfe4eQGgej5vNDdcCPS2k=","encryption.expire_at":1788815296528}
|