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",