@scrabble-solver/word-lists 2.15.12 → 2.15.14
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/build/languages/english.js +2 -2
- package/build/languages/french.js +1 -1
- package/build/languages/german.js +1 -1
- package/build/languages/persian.js +1 -1
- package/build/languages/polish.js +23 -9
- package/package.json +5 -5
- package/src/languages/english.ts +4 -2
- package/src/languages/french.ts +2 -1
- package/src/languages/german.ts +2 -1
- package/src/languages/persian.ts +2 -1
- package/src/languages/polish.ts +27 -10
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getWordListUs = exports.getWordListGb = void 0;
|
|
4
4
|
const types_1 = require("@scrabble-solver/types");
|
|
5
5
|
const lib_1 = require("../lib");
|
|
6
|
-
const EN_GB_FILE_URL = 'https://
|
|
7
|
-
const EN_US_FILE_URL = 'https://
|
|
6
|
+
const EN_GB_FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/sowpods.txt';
|
|
7
|
+
const EN_US_FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/twl06.txt';
|
|
8
8
|
const getWordListGb = async () => {
|
|
9
9
|
return (0, lib_1.getTxtWordList)(EN_GB_FILE_URL, types_1.Locale.EN_GB);
|
|
10
10
|
};
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getWordList = void 0;
|
|
4
4
|
const types_1 = require("@scrabble-solver/types");
|
|
5
5
|
const lib_1 = require("../lib");
|
|
6
|
-
const FILE_URL = 'https://raw.githubusercontent.com/
|
|
6
|
+
const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/french/ods8.txt';
|
|
7
7
|
const getWordList = async () => {
|
|
8
8
|
const words = await (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.FR_FR);
|
|
9
9
|
return (0, lib_1.transliterateDiacritics)(words);
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getWordList = void 0;
|
|
4
4
|
const types_1 = require("@scrabble-solver/types");
|
|
5
5
|
const lib_1 = require("../lib");
|
|
6
|
-
const FILE_URL = 'https://raw.githubusercontent.com/
|
|
6
|
+
const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/german/german.txt';
|
|
7
7
|
const getWordList = async () => {
|
|
8
8
|
return (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.DE_DE);
|
|
9
9
|
};
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getWordList = void 0;
|
|
4
4
|
const types_1 = require("@scrabble-solver/types");
|
|
5
5
|
const lib_1 = require("../lib");
|
|
6
|
-
const FILE_URL = 'https://raw.githubusercontent.com/
|
|
6
|
+
const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/persian/persian.txt';
|
|
7
7
|
const getWordList = async () => {
|
|
8
8
|
return (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.FA_IR);
|
|
9
9
|
};
|
|
@@ -4,22 +4,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getWordList = void 0;
|
|
7
|
+
const types_1 = require("@scrabble-solver/types");
|
|
7
8
|
const cheerio_1 = require("cheerio");
|
|
8
9
|
const fs_1 = __importDefault(require("fs"));
|
|
9
10
|
const url_1 = require("url");
|
|
10
11
|
const lib_1 = require("../lib");
|
|
11
12
|
const PAGE_URL = 'https://sjp.pl/sl/growy/';
|
|
12
13
|
const FILE_TO_EXTRACT_FROM_ZIP = 'slowa.txt';
|
|
14
|
+
const REASONABLE_VALID_WORD_COUNT_TRESHOLD = 2_000_000; // more like 3M, but just to be safe
|
|
15
|
+
const SECONDARY_FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/polish/sjp.txt';
|
|
13
16
|
const getWordList = async () => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
try {
|
|
18
|
+
const tempFilepath = (0, lib_1.getTempFilepath)();
|
|
19
|
+
const zipUrl = await fetchZipUrl(PAGE_URL);
|
|
20
|
+
const zipTempFilename = await (0, lib_1.downloadFile)(zipUrl);
|
|
21
|
+
await (0, lib_1.unzip)(zipTempFilename, FILE_TO_EXTRACT_FROM_ZIP, tempFilepath);
|
|
22
|
+
fs_1.default.unlinkSync(zipTempFilename);
|
|
23
|
+
const file = fs_1.default.readFileSync(tempFilepath, 'utf-8');
|
|
24
|
+
fs_1.default.unlinkSync(tempFilepath);
|
|
25
|
+
const words = (0, lib_1.extractWords)(file.toLocaleString(), 'pl-PL');
|
|
26
|
+
if (words.length < REASONABLE_VALID_WORD_COUNT_TRESHOLD) {
|
|
27
|
+
return getBackupWordList();
|
|
28
|
+
}
|
|
29
|
+
return words;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return getBackupWordList();
|
|
33
|
+
}
|
|
23
34
|
};
|
|
24
35
|
exports.getWordList = getWordList;
|
|
25
36
|
const fetchZipUrl = async (url) => {
|
|
@@ -40,3 +51,6 @@ const parseZipContainingPage = (html) => {
|
|
|
40
51
|
}
|
|
41
52
|
return zipFilename;
|
|
42
53
|
};
|
|
54
|
+
const getBackupWordList = () => {
|
|
55
|
+
return (0, lib_1.getTxtWordList)(SECONDARY_FILE_URL, types_1.Locale.PL_PL);
|
|
56
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scrabble-solver/word-lists",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.14",
|
|
4
4
|
"description": "Scrabble Solver 2 - Word lists",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"clean": "rimraf build/"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@scrabble-solver/types": "^2.15.
|
|
27
|
-
"cheerio": "^1.
|
|
28
|
-
"follow-redirects": "^1.15.
|
|
26
|
+
"@scrabble-solver/types": "^2.15.14",
|
|
27
|
+
"cheerio": "^1.1.2",
|
|
28
|
+
"follow-redirects": "^1.15.11",
|
|
29
29
|
"transliteration": "^2.3.5",
|
|
30
30
|
"unzipper": "^0.12.3"
|
|
31
31
|
},
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"@types/follow-redirects": "^1.14.4",
|
|
34
34
|
"@types/unzipper": "^0.10.11"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "ff8105e2d4e2fff5fffde35cbeaa40474c232599"
|
|
37
37
|
}
|
package/src/languages/english.ts
CHANGED
|
@@ -2,8 +2,10 @@ import { Locale } from '@scrabble-solver/types';
|
|
|
2
2
|
|
|
3
3
|
import { getTxtWordList } from '../lib';
|
|
4
4
|
|
|
5
|
-
const EN_GB_FILE_URL =
|
|
6
|
-
|
|
5
|
+
const EN_GB_FILE_URL =
|
|
6
|
+
'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/sowpods.txt';
|
|
7
|
+
const EN_US_FILE_URL =
|
|
8
|
+
'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/english/twl06.txt';
|
|
7
9
|
|
|
8
10
|
export const getWordListGb = async (): Promise<string[]> => {
|
|
9
11
|
return getTxtWordList(EN_GB_FILE_URL, Locale.EN_GB);
|
package/src/languages/french.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { Locale } from '@scrabble-solver/types';
|
|
|
2
2
|
|
|
3
3
|
import { getTxtWordList, transliterateDiacritics } from '../lib';
|
|
4
4
|
|
|
5
|
-
const FILE_URL =
|
|
5
|
+
const FILE_URL =
|
|
6
|
+
'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/french/ods8.txt';
|
|
6
7
|
|
|
7
8
|
export const getWordList = async (): Promise<string[]> => {
|
|
8
9
|
const words = await getTxtWordList(FILE_URL, Locale.FR_FR);
|
package/src/languages/german.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { Locale } from '@scrabble-solver/types';
|
|
|
2
2
|
|
|
3
3
|
import { getTxtWordList } from '../lib';
|
|
4
4
|
|
|
5
|
-
const FILE_URL =
|
|
5
|
+
const FILE_URL =
|
|
6
|
+
'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/german/german.txt';
|
|
6
7
|
|
|
7
8
|
export const getWordList = async (): Promise<string[]> => {
|
|
8
9
|
return getTxtWordList(FILE_URL, Locale.DE_DE);
|
package/src/languages/persian.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { Locale } from '@scrabble-solver/types';
|
|
|
2
2
|
|
|
3
3
|
import { getTxtWordList } from '../lib';
|
|
4
4
|
|
|
5
|
-
const FILE_URL =
|
|
5
|
+
const FILE_URL =
|
|
6
|
+
'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/persian/persian.txt';
|
|
6
7
|
|
|
7
8
|
export const getWordList = async (): Promise<string[]> => {
|
|
8
9
|
return getTxtWordList(FILE_URL, Locale.FA_IR);
|
package/src/languages/polish.ts
CHANGED
|
@@ -1,22 +1,35 @@
|
|
|
1
|
+
import { Locale } from '@scrabble-solver/types';
|
|
1
2
|
import { load } from 'cheerio';
|
|
2
3
|
import fs from 'fs';
|
|
3
4
|
import { URL } from 'url';
|
|
4
5
|
|
|
5
|
-
import { downloadFile, downloadHtml, extractWords, getTempFilepath, unzip } from '../lib';
|
|
6
|
+
import { downloadFile, downloadHtml, extractWords, getTempFilepath, getTxtWordList, unzip } from '../lib';
|
|
6
7
|
|
|
7
8
|
const PAGE_URL = 'https://sjp.pl/sl/growy/';
|
|
8
9
|
const FILE_TO_EXTRACT_FROM_ZIP = 'slowa.txt';
|
|
10
|
+
const REASONABLE_VALID_WORD_COUNT_TRESHOLD = 2_000_000; // more like 3M, but just to be safe
|
|
11
|
+
const SECONDARY_FILE_URL =
|
|
12
|
+
'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/refs/heads/master/polish/sjp.txt';
|
|
9
13
|
|
|
10
14
|
export const getWordList = async (): Promise<string[]> => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
try {
|
|
16
|
+
const tempFilepath = getTempFilepath();
|
|
17
|
+
const zipUrl = await fetchZipUrl(PAGE_URL);
|
|
18
|
+
const zipTempFilename = await downloadFile(zipUrl);
|
|
19
|
+
await unzip(zipTempFilename, FILE_TO_EXTRACT_FROM_ZIP, tempFilepath);
|
|
20
|
+
fs.unlinkSync(zipTempFilename);
|
|
21
|
+
const file = fs.readFileSync(tempFilepath, 'utf-8');
|
|
22
|
+
fs.unlinkSync(tempFilepath);
|
|
23
|
+
const words = extractWords(file.toLocaleString(), 'pl-PL');
|
|
24
|
+
|
|
25
|
+
if (words.length < REASONABLE_VALID_WORD_COUNT_TRESHOLD) {
|
|
26
|
+
return getBackupWordList();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return words;
|
|
30
|
+
} catch {
|
|
31
|
+
return getBackupWordList();
|
|
32
|
+
}
|
|
20
33
|
};
|
|
21
34
|
|
|
22
35
|
const fetchZipUrl = async (url: string): Promise<string> => {
|
|
@@ -40,3 +53,7 @@ const parseZipContainingPage = (html: string): string => {
|
|
|
40
53
|
|
|
41
54
|
return zipFilename;
|
|
42
55
|
};
|
|
56
|
+
|
|
57
|
+
const getBackupWordList = () => {
|
|
58
|
+
return getTxtWordList(SECONDARY_FILE_URL, Locale.PL_PL);
|
|
59
|
+
};
|