diff --git a/.gitignore b/.gitignore
index bac2cd5..46ce66f 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
# Global
node_modules/
coverage
+package-lock.json
# OS Generated
.DS_Store*
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c2fce1d..7ef5444 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+
+# [2.2.1](https://github.com/faker-javascript/letter) (2022-01-19)
+* Add locales folder for genders.
+
# [2.1.1](https://github.com/faker-javascript/letter) (2022-01-15)
* Typo updates.
diff --git a/index.js b/index.js
index 95a72ea..f0711f3 100644
--- a/index.js
+++ b/index.js
@@ -1,11 +1,18 @@
-/* eslint camelcase: ["error", {properties: "never"}] */
+import path from 'node:path';
+import {loadJsonFileSync} from 'load-json-file';
+
export default function letter(options) {
options = options || {};
- const keyspace = {
- en_US: 'abcdefghijklmnopqrstuvwxyz',
- ru_RU: 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя',
- };
const locale = options.locale || 'en_US';
- const letter = keyspace[locale].charAt(Math.floor(Math.random() * keyspace[locale].length));
+ const filePath = `./locales/${locale}/letters.json`;
+ let letters = [];
+
+ try {
+ letters = loadJsonFileSync(filePath);
+ } catch {
+ letters = loadJsonFileSync(path.resolve('node_modules/@fakerjs/letter/', filePath));
+ }
+
+ const letter = letters[0].charAt(Math.floor(Math.random() * letters[0].length));
return (options.casing === 'upper' ? letter.toUpperCase() : letter);
}
diff --git a/index.test-d.ts b/index.test-d.ts
index 9ba0156..010b4c8 100644
--- a/index.test-d.ts
+++ b/index.test-d.ts
@@ -3,4 +3,4 @@ import letter from './index.js';
expectType(letter());
expectType(letter({casing: 'upper'}));
-expectType(letter({casing: 'upper', locale: 'en_US'}));
\ No newline at end of file
+expectType(letter({casing: 'upper', locale: 'en_US'}));
diff --git a/locales/en_US/letters.json b/locales/en_US/letters.json
new file mode 100644
index 0000000..679db46
--- /dev/null
+++ b/locales/en_US/letters.json
@@ -0,0 +1,3 @@
+[
+ "abcdefghijklmnopqrstuvwxyz"
+]
\ No newline at end of file
diff --git a/locales/ru_RU/letters.json b/locales/ru_RU/letters.json
new file mode 100644
index 0000000..9d7c84c
--- /dev/null
+++ b/locales/ru_RU/letters.json
@@ -0,0 +1,3 @@
+[
+ "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
+]
\ No newline at end of file
diff --git a/package.json b/package.json
index eb6c9d3..ee617a7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@fakerjs/letter",
- "version": "2.1.1",
+ "version": "2.2.1",
"description": "Letter package provides functionality to generate a fake letter value.",
"license": "MIT",
"repository": "faker-javascript/letter",
@@ -17,6 +17,9 @@
"scripts": {
"test": "c8 ava; xo --space 4; tsd;"
},
+ "dependencies": {
+ "load-json-file": "^7.0.1"
+ },
"devDependencies": {
"ava": "^4.0.0",
"c8": "^7.11.0",