Skip to content

Commit bebd2a8

Browse files
authored
Merge branch 'main' into feat-random-numeric
2 parents a5e1e95 + 7bf9688 commit bebd2a8

File tree

4 files changed

+124
-93
lines changed

4 files changed

+124
-93
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,12 @@
9696
"@types/validator": "~13.7.2",
9797
"@typescript-eslint/eslint-plugin": "~5.18.0",
9898
"@typescript-eslint/parser": "~5.18.0",
99-
"@vitest/ui": "~0.8.4",
99+
"@vitest/ui": "~0.9.2",
100100
"c8": "~7.11.0",
101101
"conventional-changelog-cli": "~2.2.2",
102102
"cypress": "~9.5.3",
103103
"esbuild": "~0.14.34",
104-
"eslint": "~8.12.0",
104+
"eslint": "~8.13.0",
105105
"eslint-config-prettier": "~8.5.0",
106106
"eslint-define-config": "~1.3.0",
107107
"eslint-gitignore": "~0.1.0",
@@ -124,7 +124,7 @@
124124
"validator": "~13.7.0",
125125
"vite": "~2.9.1",
126126
"vitepress": "~0.22.3",
127-
"vitest": "~0.8.4"
127+
"vitest": "~0.9.2"
128128
},
129129
"packageManager": "[email protected]",
130130
"engines": {

pnpm-lock.yaml

Lines changed: 47 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/datatype.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Faker } from '.';
2+
import { FakerError } from './errors/faker-error';
23
import { deprecated } from './internal/deprecated';
34

45
/**
@@ -24,7 +25,7 @@ export class Datatype {
2425
* @param options.max Upper bound for generated number. Defaults to `min + 99999`.
2526
* @param options.precision Precision of the generated number. Defaults to `1`.
2627
*
27-
* @throws When options define `max < min`
28+
* @throws When options define `max < min`.
2829
*
2930
* @example
3031
* faker.datatype.number() // 55422
@@ -35,25 +36,25 @@ export class Datatype {
3536
* faker.datatype.number({ min: 10, max: 100, precision: 0.01 }) // 36.94
3637
*/
3738
number(
38-
options?: number | { min?: number; max?: number; precision?: number }
39+
options: number | { min?: number; max?: number; precision?: number } = 99999
3940
): number {
40-
const opts = typeof options === 'number' ? { max: options } : options ?? {};
41+
if (typeof options === 'number') {
42+
options = { max: options };
43+
}
4144

42-
const min = typeof opts.min === 'number' ? opts.min : 0;
43-
let max = typeof opts.max === 'number' ? opts.max : min + 99999;
44-
const precision = typeof opts.precision === 'number' ? opts.precision : 1;
45+
const { min = 0, precision = 1 } = options;
46+
const max = options.max ?? min + 99999;
4547

46-
if (max < min) {
47-
throw new Error(`Max ${max} should be larger then min ${min}`);
48+
if (max === min) {
49+
return min;
4850
}
4951

50-
// Make the range inclusive of the max value
51-
if (max >= 0) {
52-
max += precision;
52+
if (max < min) {
53+
throw new FakerError(`Max ${max} should be larger then min ${min}.`);
5354
}
5455

5556
const randomNumber = Math.floor(
56-
this.faker.mersenne.rand(max / precision, min / precision)
57+
this.faker.mersenne.rand(max / precision + 1, min / precision)
5758
);
5859

5960
// Workaround problem in float point arithmetics for e.g. 6681493 / 0.01

0 commit comments

Comments
 (0)