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