@scrabble-solver/word-lists 2.12.5 → 2.13.1

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.
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const types_1 = require("@scrabble-solver/types");
7
+ const latinize_1 = __importDefault(require("latinize"));
4
8
  const lib_1 = require("./lib");
5
- const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/fise-2/master/fise-2.txt';
9
+ const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/fise-2.txt';
10
+ const N_PLACEHOLDER = '---n---';
6
11
  const getEsEsWordList = async () => {
7
12
  const words = await (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.ES_ES);
8
- return words.map(normalizeWord);
9
- };
10
- const normalizeWord = (word) => {
11
- // normalization from https://stackoverflow.com/a/37511463
12
- return word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
13
+ return words
14
+ .map((word) => word.replaceAll('ñ', N_PLACEHOLDER))
15
+ .map(latinize_1.default)
16
+ .map((word) => word.replaceAll(N_PLACEHOLDER, 'ñ'));
13
17
  };
14
18
  exports.default = getEsEsWordList;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const types_1 = require("@scrabble-solver/types");
7
+ const latinize_1 = __importDefault(require("latinize"));
4
8
  const lib_1 = require("./lib");
5
9
  const FILE_URL = 'https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-ODS8/main/French%20ODS%20dictionary.txt';
6
10
  const getFrFrWordList = async () => {
7
11
  const words = await (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.FR_FR);
8
- return words.map(normalizeWord);
9
- };
10
- const normalizeWord = (word) => {
11
- // normalization from https://stackoverflow.com/a/37511463
12
- return word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
12
+ return words.map(latinize_1.default);
13
13
  };
14
14
  exports.default = getFrFrWordList;
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const cheerio_1 = require("cheerio");
7
7
  const fs_1 = __importDefault(require("fs"));
8
- const unzipper_1 = __importDefault(require("unzipper"));
9
8
  const url_1 = require("url");
10
9
  const lib_1 = require("./lib");
11
10
  const PAGE_URL = 'https://sjp.pl/sl/growy/';
@@ -14,7 +13,7 @@ const getPlPlWordList = async () => {
14
13
  const tempFilepath = (0, lib_1.getTempFilepath)();
15
14
  const zipUrl = await fetchZipUrl(PAGE_URL);
16
15
  const zipTempFilename = await (0, lib_1.downloadFile)(zipUrl);
17
- await unzip(zipTempFilename, tempFilepath);
16
+ await (0, lib_1.unzip)(zipTempFilename, FILE_TO_EXTRACT_FROM_ZIP, tempFilepath);
18
17
  fs_1.default.unlinkSync(zipTempFilename);
19
18
  const file = fs_1.default.readFileSync(tempFilepath, 'utf-8');
20
19
  fs_1.default.unlinkSync(tempFilepath);
@@ -39,19 +38,4 @@ const parseZipContainingPage = (html) => {
39
38
  }
40
39
  return zipFilename;
41
40
  };
42
- const unzip = (zipFilename, outputFilename) => {
43
- return fs_1.default
44
- .createReadStream(zipFilename)
45
- .pipe(unzipper_1.default.Parse())
46
- .on('entry', (entry) => {
47
- const fileName = entry.path;
48
- if (fileName === FILE_TO_EXTRACT_FROM_ZIP) {
49
- entry.pipe(fs_1.default.createWriteStream(outputFilename));
50
- }
51
- else {
52
- entry.autodrain();
53
- }
54
- })
55
- .promise();
56
- };
57
41
  exports.default = getPlPlWordList;
@@ -0,0 +1,2 @@
1
+ declare const getRoRoWordList: () => Promise<string[]>;
2
+ export default getRoRoWordList;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const types_1 = require("@scrabble-solver/types");
7
+ const latinize_1 = __importDefault(require("latinize"));
8
+ const lib_1 = require("./lib");
9
+ const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt';
10
+ const getRoRoWordList = async () => {
11
+ const words = await (0, lib_1.getTxtWordList)(FILE_URL, types_1.Locale.RO_RO);
12
+ return words.map(latinize_1.default);
13
+ };
14
+ exports.default = getRoRoWordList;
@@ -11,6 +11,7 @@ const getEsEsWordList_1 = __importDefault(require("./getEsEsWordList"));
11
11
  const getFaIrWordList_1 = __importDefault(require("./getFaIrWordList"));
12
12
  const getFrFrWordList_1 = __importDefault(require("./getFrFrWordList"));
13
13
  const getPlPlWordList_1 = __importDefault(require("./getPlPlWordList"));
14
+ const getRoRoWordList_1 = __importDefault(require("./getRoRoWordList"));
14
15
  const localeMap = {
15
16
  [types_1.Locale.DE_DE]: getDeDeWordList_1.default,
16
17
  [types_1.Locale.EN_GB]: getEnGbWordList_1.default,
@@ -19,6 +20,7 @@ const localeMap = {
19
20
  [types_1.Locale.FA_IR]: getFaIrWordList_1.default,
20
21
  [types_1.Locale.FR_FR]: getFrFrWordList_1.default,
21
22
  [types_1.Locale.PL_PL]: getPlPlWordList_1.default,
23
+ [types_1.Locale.RO_RO]: getRoRoWordList_1.default,
22
24
  };
23
25
  const getWordList = (locale) => localeMap[locale]();
24
26
  exports.default = getWordList;
@@ -5,3 +5,4 @@ export { default as findFirstWordIndex } from './findFirstWordIndex';
5
5
  export { default as getHash } from './getHash';
6
6
  export { default as getTempFilepath } from './getTempFilepath';
7
7
  export { default as getTxtWordList } from './getTxtWordList';
8
+ export { default as unzip } from './unzip';
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getTxtWordList = exports.getTempFilepath = exports.getHash = exports.findFirstWordIndex = exports.extractWords = exports.downloadHtml = exports.downloadFile = void 0;
6
+ exports.unzip = exports.getTxtWordList = exports.getTempFilepath = exports.getHash = exports.findFirstWordIndex = exports.extractWords = exports.downloadHtml = exports.downloadFile = void 0;
7
7
  var downloadFile_1 = require("./downloadFile");
8
8
  Object.defineProperty(exports, "downloadFile", { enumerable: true, get: function () { return __importDefault(downloadFile_1).default; } });
9
9
  var downloadHtml_1 = require("./downloadHtml");
@@ -18,3 +18,5 @@ var getTempFilepath_1 = require("./getTempFilepath");
18
18
  Object.defineProperty(exports, "getTempFilepath", { enumerable: true, get: function () { return __importDefault(getTempFilepath_1).default; } });
19
19
  var getTxtWordList_1 = require("./getTxtWordList");
20
20
  Object.defineProperty(exports, "getTxtWordList", { enumerable: true, get: function () { return __importDefault(getTxtWordList_1).default; } });
21
+ var unzip_1 = require("./unzip");
22
+ Object.defineProperty(exports, "unzip", { enumerable: true, get: function () { return __importDefault(unzip_1).default; } });
@@ -0,0 +1,2 @@
1
+ declare const unzip: (zipFilename: string, extractFilename: string, outputFilename: string) => Promise<void>;
2
+ export default unzip;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const unzipper_1 = __importDefault(require("unzipper"));
8
+ const unzip = (zipFilename, extractFilename, outputFilename) => {
9
+ return fs_1.default
10
+ .createReadStream(zipFilename)
11
+ .pipe(unzipper_1.default.Parse())
12
+ .on('entry', (entry) => {
13
+ const fileName = entry.path;
14
+ if (fileName === extractFilename) {
15
+ entry.pipe(fs_1.default.createWriteStream(outputFilename));
16
+ }
17
+ else {
18
+ entry.autodrain();
19
+ }
20
+ })
21
+ .promise();
22
+ };
23
+ exports.default = unzip;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/word-lists",
3
- "version": "2.12.5",
3
+ "version": "2.13.1",
4
4
  "description": "Scrabble Solver 2 - Word lists",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -24,14 +24,16 @@
24
24
  "clean:force": "npm run clean && rimraf package-lock.json"
25
25
  },
26
26
  "dependencies": {
27
- "@scrabble-solver/types": "^2.12.5",
27
+ "@scrabble-solver/types": "^2.13.1",
28
28
  "cheerio": "^1.0.0-rc.12",
29
29
  "follow-redirects": "^1.15.2",
30
+ "latinize": "^1.0.0",
30
31
  "unzipper": "^0.10.11"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@types/follow-redirects": "^1.14.1",
35
+ "@types/latinize": "^0.2.17",
34
36
  "@types/unzipper": "^0.10.5"
35
37
  },
36
- "gitHead": "ff33bcbceeb7010bade54d6a370efe3c574fe183"
38
+ "gitHead": "0588fd5c88be44c2f3e96d8cf8cc6fa7166c924c"
37
39
  }
@@ -1,17 +1,18 @@
1
1
  import { Locale } from '@scrabble-solver/types';
2
+ import latinize from 'latinize';
2
3
 
3
4
  import { getTxtWordList } from './lib';
4
5
 
5
- const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/fise-2/master/fise-2.txt';
6
+ const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/spanish/fise-2.txt';
7
+ const N_PLACEHOLDER = '---n---';
6
8
 
7
9
  const getEsEsWordList = async (): Promise<string[]> => {
8
10
  const words = await getTxtWordList(FILE_URL, Locale.ES_ES);
9
- return words.map(normalizeWord);
10
- };
11
11
 
12
- const normalizeWord = (word: string): string => {
13
- // normalization from https://stackoverflow.com/a/37511463
14
- return word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
12
+ return words
13
+ .map((word) => word.replaceAll('ñ', N_PLACEHOLDER))
14
+ .map(latinize)
15
+ .map((word) => word.replaceAll(N_PLACEHOLDER, 'ñ'));
15
16
  };
16
17
 
17
18
  export default getEsEsWordList;
@@ -1,4 +1,5 @@
1
1
  import { Locale } from '@scrabble-solver/types';
2
+ import latinize from 'latinize';
2
3
 
3
4
  import { getTxtWordList } from './lib';
4
5
 
@@ -6,12 +7,7 @@ const FILE_URL = 'https://raw.githubusercontent.com/Thecoolsim/French-Scrabble-O
6
7
 
7
8
  const getFrFrWordList = async (): Promise<string[]> => {
8
9
  const words = await getTxtWordList(FILE_URL, Locale.FR_FR);
9
- return words.map(normalizeWord);
10
- };
11
-
12
- const normalizeWord = (word: string): string => {
13
- // normalization from https://stackoverflow.com/a/37511463
14
- return word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
10
+ return words.map(latinize);
15
11
  };
16
12
 
17
13
  export default getFrFrWordList;
@@ -1,9 +1,8 @@
1
1
  import { load } from 'cheerio';
2
2
  import fs from 'fs';
3
- import unzipper from 'unzipper';
4
3
  import { URL } from 'url';
5
4
 
6
- import { downloadFile, downloadHtml, extractWords, getTempFilepath } from './lib';
5
+ import { downloadFile, downloadHtml, extractWords, getTempFilepath, unzip } from './lib';
7
6
 
8
7
  const PAGE_URL = 'https://sjp.pl/sl/growy/';
9
8
  const FILE_TO_EXTRACT_FROM_ZIP = 'slowa.txt';
@@ -12,7 +11,7 @@ const getPlPlWordList = async (): Promise<string[]> => {
12
11
  const tempFilepath = getTempFilepath();
13
12
  const zipUrl = await fetchZipUrl(PAGE_URL);
14
13
  const zipTempFilename = await downloadFile(zipUrl);
15
- await unzip(zipTempFilename, tempFilepath);
14
+ await unzip(zipTempFilename, FILE_TO_EXTRACT_FROM_ZIP, tempFilepath);
16
15
  fs.unlinkSync(zipTempFilename);
17
16
  const file = fs.readFileSync(tempFilepath, 'utf-8');
18
17
  fs.unlinkSync(tempFilepath);
@@ -42,20 +41,4 @@ const parseZipContainingPage = (html: string): string => {
42
41
  return zipFilename;
43
42
  };
44
43
 
45
- const unzip = (zipFilename: string, outputFilename: string): Promise<void> => {
46
- return fs
47
- .createReadStream(zipFilename)
48
- .pipe(unzipper.Parse())
49
- .on('entry', (entry) => {
50
- const fileName = entry.path;
51
-
52
- if (fileName === FILE_TO_EXTRACT_FROM_ZIP) {
53
- entry.pipe(fs.createWriteStream(outputFilename));
54
- } else {
55
- entry.autodrain();
56
- }
57
- })
58
- .promise();
59
- };
60
-
61
44
  export default getPlPlWordList;
@@ -0,0 +1,13 @@
1
+ import { Locale } from '@scrabble-solver/types';
2
+ import latinize from 'latinize';
3
+
4
+ import { getTxtWordList } from './lib';
5
+
6
+ const FILE_URL = 'https://raw.githubusercontent.com/kamilmielnik/scrabble-dictionaries/master/romanian/loc-5.0.txt';
7
+
8
+ const getRoRoWordList = async (): Promise<string[]> => {
9
+ const words = await getTxtWordList(FILE_URL, Locale.RO_RO);
10
+ return words.map(latinize);
11
+ };
12
+
13
+ export default getRoRoWordList;
@@ -7,6 +7,7 @@ import getEsEsWordList from './getEsEsWordList';
7
7
  import getFaIrWordList from './getFaIrWordList';
8
8
  import getFrFrWordList from './getFrFrWordList';
9
9
  import getPlPlWordList from './getPlPlWordList';
10
+ import getRoRoWordList from './getRoRoWordList';
10
11
 
11
12
  const localeMap: Record<Locale, () => Promise<string[]>> = {
12
13
  [Locale.DE_DE]: getDeDeWordList,
@@ -16,6 +17,7 @@ const localeMap: Record<Locale, () => Promise<string[]>> = {
16
17
  [Locale.FA_IR]: getFaIrWordList,
17
18
  [Locale.FR_FR]: getFrFrWordList,
18
19
  [Locale.PL_PL]: getPlPlWordList,
20
+ [Locale.RO_RO]: getRoRoWordList,
19
21
  };
20
22
 
21
23
  const getWordList = (locale: Locale): Promise<string[]> => localeMap[locale]();
package/src/lib/index.ts CHANGED
@@ -5,3 +5,4 @@ export { default as findFirstWordIndex } from './findFirstWordIndex';
5
5
  export { default as getHash } from './getHash';
6
6
  export { default as getTempFilepath } from './getTempFilepath';
7
7
  export { default as getTxtWordList } from './getTxtWordList';
8
+ export { default as unzip } from './unzip';
@@ -0,0 +1,20 @@
1
+ import fs from 'fs';
2
+ import unzipper from 'unzipper';
3
+
4
+ const unzip = (zipFilename: string, extractFilename: string, outputFilename: string): Promise<void> => {
5
+ return fs
6
+ .createReadStream(zipFilename)
7
+ .pipe(unzipper.Parse())
8
+ .on('entry', (entry) => {
9
+ const fileName = entry.path;
10
+
11
+ if (fileName === extractFilename) {
12
+ entry.pipe(fs.createWriteStream(outputFilename));
13
+ } else {
14
+ entry.autodrain();
15
+ }
16
+ })
17
+ .promise();
18
+ };
19
+
20
+ export default unzip;