From a6b2502e155a4a2033f1666f52db6063934f9556 Mon Sep 17 00:00:00 2001 From: Awilum Date: Wed, 12 Jan 2022 20:06:59 +0300 Subject: [PATCH] Integer 2.1.0 --- .editorconfig | 13 ++++++------- .gitattributes | 1 + .gitignore | 1 + CHANGELOG.md | 5 +++++ index.d.ts | 5 +++++ index.js | 12 +++++++----- index.test-d.ts | 6 ++++++ package.json | 12 ++++++++---- test.js | 28 ++++++++++------------------ 9 files changed, 49 insertions(+), 34 deletions(-) create mode 100644 .gitattributes create mode 100644 index.d.ts create mode 100644 index.test-d.ts 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 82e2738..f5eef4d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ + +# [2.1.0](https://github.com/faker-javascript/integer) (2022-01-12) +* Added xo, tsd, c8. +* Improved tests. + # [2.0.1](https://github.com/faker-javascript/integer) (2022-01-10) * GitHub docs updates. diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..954c217 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,5 @@ +interface Options { + min?: number; + max?: number; +} +export default function integer(options?: Options): number; diff --git a/index.js b/index.js index 3540d89..3a6ef06 100644 --- a/index.js +++ b/index.js @@ -3,12 +3,14 @@ export default function integer(options) { let max = options.max === undefined ? Number.MAX_SAFE_INTEGER : options.max; let min = options.min === undefined ? Number.MIN_SAFE_INTEGER : options.min; if (typeof min !== 'number' || typeof max !== 'number') { - throw new TypeError('Expected all arguments to be numbers.'); - } + throw new TypeError('Expected all arguments to be numbers.'); + } + if (min > max) { - throw new TypeError('Min cannot be greater than Max.'); - } + throw new TypeError('Min cannot be greater than Max.'); + } + min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; -}; \ No newline at end of file +} diff --git a/index.test-d.ts b/index.test-d.ts new file mode 100644 index 0000000..f880a1e --- /dev/null +++ b/index.test-d.ts @@ -0,0 +1,6 @@ +import {expectType} from 'tsd'; +import integer from './index.js'; + +expectType(integer()); +expectType(integer({min: 0})); +expectType(integer({min: 0, max: 10})); diff --git a/package.json b/package.json index 0eb3757..71489b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@fakerjs/integer", - "version": "2.0.1", + "version": "2.1.0", "description": "Integer package provides functionality to generate a fake integer value.", "license": "MIT", "repository": "faker-javascript/integer", @@ -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", diff --git a/test.js b/test.js index 3a2fb7f..809edd1 100644 --- a/test.js +++ b/test.js @@ -1,34 +1,26 @@ -import integer from './index.js'; import test from 'ava'; +import integer from './index.js'; test('integer return type to be number', t => { - t.is(typeof integer(), 'number'); + t.is(typeof integer(), 'number'); }); test('integer with number min 0 return type to be number', t => { - t.is(typeof integer({min: 0}), 'number'); + t.is(typeof integer({min: 0}), 'number'); }); test('integer with number min 0 and max 10 return type to be number', t => { - t.is(typeof integer({min: 0, max: 10}), 'number'); + t.is(typeof integer({min: 0, max: 10}), 'number'); }); test('integer with number min 0 and max 10 less than 11', t => { - t.true(integer({min: 0, max: 10}) < 11); + t.true(integer({min: 0, max: 10}) < 11); }); -test('integer with string to thow error on string', t => { - const error = t.throws(() => { - integer({min: 'string'}) - }, {instanceOf: TypeError}); +test('integer with string to thow error on min > max', t => { + const error = t.throws(() => { + integer({min: 10, max: 0}); + }, {instanceOf: TypeError}); - t.is(error.message, 'Expected all arguments to be numbers.'); + t.is(error.message, 'Min cannot be greater than Max.'); }); - -test('integer with string to thow error on min > max', t => { - const error = t.throws(() => { - integer({min: 10, max: 0}) - }, {instanceOf: TypeError}); - - t.is(error.message, 'Min cannot be greater than Max.'); - }); \ No newline at end of file