From 9537dfddba882bd93d9a429697fd44bc72428426 Mon Sep 17 00:00:00 2001 From: DivisionByZero Date: Thu, 26 Sep 2024 17:50:05 +0200 Subject: infra: update file structure for util/internal (#3141) --- src/utils/mersenne.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/utils/types.ts | 39 --------------------------------------- 2 files changed, 48 insertions(+), 39 deletions(-) create mode 100644 src/utils/mersenne.ts delete mode 100644 src/utils/types.ts (limited to 'src/utils') diff --git a/src/utils/mersenne.ts b/src/utils/mersenne.ts new file mode 100644 index 00000000..de415f91 --- /dev/null +++ b/src/utils/mersenne.ts @@ -0,0 +1,48 @@ +import { MersenneTwister19937 } from '../internal/mersenne'; +import type { Randomizer } from '../randomizer'; + +/** + * Generates a MersenneTwister19937 randomizer with 32 bits of precision. + * This is the default randomizer used by faker prior to v9.0. + */ +export function generateMersenne32Randomizer(): Randomizer { + const twister = new MersenneTwister19937(); + + twister.initGenrand(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER)); + + return { + next(): number { + return twister.genrandReal2(); + }, + seed(seed: number | number[]): void { + if (typeof seed === 'number') { + twister.initGenrand(seed); + } else if (Array.isArray(seed)) { + twister.initByArray(seed, seed.length); + } + }, + }; +} + +/** + * Generates a MersenneTwister19937 randomizer with 53 bits of precision. + * This is the default randomizer used by faker starting with v9.0. + */ +export function generateMersenne53Randomizer(): Randomizer { + const twister = new MersenneTwister19937(); + + twister.initGenrand(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER)); + + return { + next(): number { + return twister.genrandRes53(); + }, + seed(seed: number | number[]): void { + if (typeof seed === 'number') { + twister.initGenrand(seed); + } else if (Array.isArray(seed)) { + twister.initByArray(seed, seed.length); + } + }, + }; +} diff --git a/src/utils/types.ts b/src/utils/types.ts deleted file mode 100644 index affdda7e..00000000 --- a/src/utils/types.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Type that provides auto-suggestions but also any string. - * - * @see https://github.com/microsoft/TypeScript/issues/29729#issuecomment-471566609 - */ -export type LiteralUnion = - | TSuggested - | (TBase & { zz_IGNORE_ME?: never }); - -/** - * A function that returns a value. - * - * `Function` cannot be used instead because it doesn't accept class declarations. - * These would fail when invoked since they are invoked without the `new` keyword. - */ -export type Callable = ( - // TODO @Shinigami92 2023-02-14: This `any` type can be fixed by anyone if they want to. - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ...args: any[] -) => unknown; - -/** - * Type that represents a single method/function name of the given type. - */ -export type MethodOf = { - [Key in keyof TObjectType]: TObjectType[Key] extends TSignature - ? Key extends string - ? Key - : never - : never; -}[keyof TObjectType]; - -/** - * Type that represents all method/function names of the given type. - */ -export type MethodsOf< - TObjectType, - TSignature extends Callable = Callable, -> = ReadonlyArray>; -- cgit v1.2.3