aboutsummaryrefslogtreecommitdiff
path: root/src/faker.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/faker.ts')
-rw-r--r--src/faker.ts192
1 files changed, 6 insertions, 186 deletions
diff --git a/src/faker.ts b/src/faker.ts
index 9161497e..43811f05 100644
--- a/src/faker.ts
+++ b/src/faker.ts
@@ -1,8 +1,6 @@
import type { LocaleDefinition, MetadataDefinition } from './definitions';
import { FakerError } from './errors/faker-error';
import { deprecated } from './internal/deprecated';
-import type { Mersenne } from './internal/mersenne/mersenne';
-import mersenne from './internal/mersenne/mersenne';
import type { LocaleProxy } from './locale-proxy';
import { createLocaleProxy } from './locale-proxy';
import { AirlineModule } from './modules/airline';
@@ -11,7 +9,6 @@ import { ColorModule } from './modules/color';
import { CommerceModule } from './modules/commerce';
import { CompanyModule } from './modules/company';
import { DatabaseModule } from './modules/database';
-import { DatatypeModule } from './modules/datatype';
import { DateModule } from './modules/date';
import { FinanceModule } from './modules/finance';
import { GitModule } from './modules/git';
@@ -23,16 +20,15 @@ import type { LocationModule as AddressModule } from './modules/location';
import { LocationModule } from './modules/location';
import { LoremModule } from './modules/lorem';
import { MusicModule } from './modules/music';
-import { NumberModule } from './modules/number';
import type { PersonModule as NameModule } from './modules/person';
import { PersonModule } from './modules/person';
import { PhoneModule } from './modules/phone';
import { RandomModule } from './modules/random';
import { ScienceModule } from './modules/science';
-import { StringModule } from './modules/string';
import { SystemModule } from './modules/system';
import { VehicleModule } from './modules/vehicle';
import { WordModule } from './modules/word';
+import { SimpleFaker } from './simple-faker';
import { mergeLocales } from './utils/merge-locales';
/**
@@ -60,61 +56,9 @@ import { mergeLocales } from './utils/merge-locales';
*
* customFaker.music.genre(); // throws Error as this data is not available in `es`
*/
-export class Faker {
+export class Faker extends SimpleFaker {
readonly rawDefinitions: LocaleDefinition;
readonly definitions: LocaleProxy;
- private _defaultRefDate: () => Date = () => new Date();
-
- /**
- * Gets a new reference date used to generate relative dates.
- */
- get defaultRefDate(): () => Date {
- return this._defaultRefDate;
- }
-
- /**
- * Sets the `refDate` source to use if no `refDate` date is passed to the date methods.
- *
- * @param dateOrSource The function or the static value used to generate the `refDate` date instance.
- * The function must return a new valid `Date` instance for every call.
- * Defaults to `() => new Date()`.
- *
- * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results)
- * @see faker.seed() for reproducible results.
- *
- * @example
- * faker.seed(1234);
- *
- * // Default behavior
- * // faker.setDefaultRefDate();
- * faker.date.past(); // Changes based on the current date/time
- *
- * // Use a static ref date
- * faker.setDefaultRefDate(new Date('2020-01-01'));
- * faker.date.past(); // Reproducible '2019-07-03T08:27:58.118Z'
- *
- * // Use a ref date that changes every time it is used
- * let clock = new Date("2020-01-01").getTime();
- * faker.setDefaultRefDate(() => {
- * clock += 1000; // +1s
- * return new Date(clock);
- * });
- *
- * faker.defaultRefDate() // 2020-01-01T00:00:01Z
- * faker.defaultRefDate() // 2020-01-01T00:00:02Z
- */
- setDefaultRefDate(
- dateOrSource: string | Date | number | (() => Date) = () => new Date()
- ): void {
- if (typeof dateOrSource === 'function') {
- this._defaultRefDate = dateOrSource;
- } else {
- this._defaultRefDate = () => new Date(dateOrSource);
- }
- }
-
- /** @internal */
- private readonly _mersenne: Mersenne = mersenne();
/**
* @deprecated Use the modules specific to the type of data you want to generate instead.
@@ -122,10 +66,6 @@ export class Faker {
// eslint-disable-next-line deprecation/deprecation
readonly random: RandomModule = new RandomModule(this);
- readonly helpers: HelpersModule = new HelpersModule(this);
-
- readonly datatype: DatatypeModule = new DatatypeModule(this);
-
readonly airline: AirlineModule = new AirlineModule(this);
readonly animal: AnimalModule = new AnimalModule(this);
readonly color: ColorModule = new ColorModule(this);
@@ -136,16 +76,15 @@ export class Faker {
readonly finance = new FinanceModule(this);
readonly git: GitModule = new GitModule(this);
readonly hacker: HackerModule = new HackerModule(this);
+ readonly helpers: HelpersModule = new HelpersModule(this);
readonly image: ImageModule = new ImageModule(this);
readonly internet: InternetModule = new InternetModule(this);
readonly location: LocationModule = new LocationModule(this);
readonly lorem: LoremModule = new LoremModule(this);
readonly music: MusicModule = new MusicModule(this);
readonly person: PersonModule = new PersonModule(this);
- readonly number: NumberModule = new NumberModule(this);
readonly phone: PhoneModule = new PhoneModule(this);
readonly science: ScienceModule = new ScienceModule(this);
- readonly string: StringModule = new StringModule(this);
readonly system: SystemModule = new SystemModule(this);
readonly vehicle: VehicleModule = new VehicleModule(this);
readonly word: WordModule = new WordModule(this);
@@ -299,9 +238,12 @@ export class Faker {
localeFallback?: string;
}
) {
+ super();
+
const { locales } = options as {
locales: Record<string, LocaleDefinition>;
};
+
if (locales != null) {
deprecated({
deprecated:
@@ -337,128 +279,6 @@ export class Faker {
}
/**
- * Sets the seed or generates a new one.
- *
- * Please note that generated values are dependent on both the seed and the
- * number of calls that have been made since it was set.
- *
- * This method is intended to allow for consistent values in tests, so you
- * might want to use hardcoded values as the seed.
- *
- * In addition to that it can be used for creating truly random tests
- * (by passing no arguments), that still can be reproduced if needed,
- * by logging the result and explicitly setting it if needed.
- *
- * @param seed The seed to use. Defaults to a random number.
- *
- * @returns The seed that was set.
- *
- * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results)
- * @see faker.setDefaultRefDate() when generating relative dates.
- *
- * @example
- * // Consistent values for tests:
- * faker.seed(42)
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * faker.seed(42)
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * // Random but reproducible tests:
- * // Simply log the seed, and if you need to reproduce it, insert the seed here
- * console.log('Running test with seed:', faker.seed());
- */
- seed(seed?: number): number;
- /**
- * Sets the seed array.
- *
- * Please note that generated values are dependent on both the seed and the
- * number of calls that have been made since it was set.
- *
- * This method is intended to allow for consistent values in a tests, so you
- * might want to use hardcoded values as the seed.
- *
- * In addition to that it can be used for creating truly random tests
- * (by passing no arguments), that still can be reproduced if needed,
- * by logging the result and explicitly setting it if needed.
- *
- * @param seedArray The seed array to use.
- *
- * @returns The seed array that was set.
- *
- * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results)
- * @see faker.setDefaultRefDate() when generating relative dates.
- *
- * @example
- * // Consistent values for tests:
- * faker.seed([42, 13, 17])
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * faker.seed([42, 13, 17])
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * // Random but reproducible tests:
- * // Simply log the seed, and if you need to reproduce it, insert the seed here
- * console.log('Running test with seed:', faker.seed());
- */
- seed(seedArray: number[]): number[];
- /**
- * Sets the seed or generates a new one.
- *
- * Please note that generated values are dependent on both the seed and the
- * number of calls that have been made since it was set.
- *
- * This method is intended to allow for consistent values in a tests, so you
- * might want to use hardcoded values as the seed.
- *
- * In addition to that it can be used for creating truly random tests
- * (by passing no arguments), that still can be reproduced if needed,
- * by logging the result and explicitly setting it if needed.
- *
- * @param seed The seed or seed array to use.
- *
- * @returns The seed that was set.
- *
- * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results)
- * @see faker.setDefaultRefDate() when generating relative dates.
- *
- * @example
- * // Consistent values for tests (using a number):
- * faker.seed(42)
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * faker.seed(42)
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * // Consistent values for tests (using an array):
- * faker.seed([42, 13, 17])
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * faker.seed([42, 13, 17])
- * faker.number.int(10); // 4
- * faker.number.int(10); // 8
- *
- * // Random but reproducible tests:
- * // Simply log the seed, and if you need to reproduce it, insert the seed here
- * console.log('Running test with seed:', faker.seed());
- */
- seed(seed?: number | number[]): number | number[];
- seed(
- seed: number | number[] = Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER)
- ): number | number[] {
- this._mersenne.seed(seed);
-
- return seed;
- }
-
- /**
* Returns an object with metadata about the current locale.
*
* @example