diff --git a/.editorconfig b/.editorconfig
index e98f58d..ea8f4ab 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,18 +1,17 @@
-# EditorConfig: http://EditorConfig.org
+# EditorConfig is awesome: https://EditorConfig.org
-# top-most EditorConfig file
root = true
-# Unix-style newlines with a newline ending every file
[*]
-charset = utf-8
end_of_line = lf
-trim_trailing_whitespace = true
insert_final_newline = true
+
+[*.{js,d.ts,ts}]
+charset = utf-8
+trim_trailing_whitespace = true
indent_style = space
indent_size = 4
-# 2 space indentation
-[*.yaml, *.yml]
+[package.json,*.yaml]
indent_style = space
indent_size = 2
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..94f480d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+* text=auto eol=lf
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index e7ef1ee..bac2cd5 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
# Global
node_modules/
+coverage
# OS Generated
.DS_Store*
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 16e1e6b..5d8a222 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+
+# [2.1.0](https://github.com/faker-javascript/gender) (2022-01-11)
+* Added xo, tsd, c8.
+* Improved tests.
+
# [2.0.1](https://github.com/faker-javascript/gender) (2022-01-10)
* GitHub docs updates.
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 0000000..1d98021
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,5 @@
+interface Options {
+ locale?: string;
+ extra?: string[];
+}
+export default function gender(options?: Options): string;
diff --git a/index.js b/index.js
index 05bf47b..af3a5da 100644
--- a/index.js
+++ b/index.js
@@ -1,17 +1,18 @@
+/* eslint camelcase: ["error", {properties: "never"}] */
export default function gender(options) {
options = options || {};
- let genders = {
- "en_US": [
- "Male",
- "Female"
+ const genders = {
+ en_US: [
+ 'Male',
+ 'Female',
],
- "ru_RU": [
- "Мужской",
- "Женский"
+ ru_RU: [
+ 'Мужской',
+ 'Женский',
],
};
- let locale = options.locale || 'en_US';
- let gendersWithExtra = genders[locale].concat(options.extra || []);
- let randomGender = gendersWithExtra[Math.floor(Math.random() * gendersWithExtra.length)];
+ const locale = options.locale || 'en_US';
+ const gendersWithExtra = [...genders[locale], ...options.extra || []];
+ const randomGender = gendersWithExtra[Math.floor(Math.random() * gendersWithExtra.length)];
return randomGender;
-};
\ No newline at end of file
+}
diff --git a/index.test-d.ts b/index.test-d.ts
new file mode 100644
index 0000000..600004f
--- /dev/null
+++ b/index.test-d.ts
@@ -0,0 +1,6 @@
+import {expectType} from 'tsd';
+import gender from './index.js';
+
+expectType(gender());
+expectType(gender({locale: 'en_US'}));
+expectType(gender({locale: 'en_US', extra: ['gender']}));
diff --git a/package.json b/package.json
index 66dfd1e..043b8c6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@fakerjs/gender",
- "version": "2.0.1",
+ "version": "2.1.0",
"description": "Gender package provides functionality to generate a fake gender value.",
"license": "MIT",
"repository": "faker-javascript/gender",
@@ -15,13 +15,17 @@
"node": ">=12"
},
"scripts": {
- "test": "ava"
+ "test": "c8 ava; xo --space 4; tsd;"
},
"devDependencies": {
- "ava": "^3.15.0"
+ "ava": "^4.0.0",
+ "c8": "^7.11.0",
+ "tsd": "^0.19.1",
+ "xo": "^0.47.0"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"keywords": [
"fakerjs",