UNPKG

unhoax-chance

Version:

Generate seeded Chance fixtures based on unhoax schemas

61 lines (60 loc) 2.04 kB
import { x } from 'unhoax'; import type { GenerateFixtureFromSchema } from './internal/GenerateFixtureFromSchema'; /** @internal Fixture Factory */ export type FixtureFactory = typeof createFixtureFactory; /** @category Fixture Factory */ export type GenerateFixture<T> = (seedOrChance?: number | Chance.Chance) => T; /** @category Fixture Factory */ export type Overrides<T> = T extends Record<PropertyKey, unknown> ? { [Key in keyof T]?: GenerateFixtureFromSchema<T[Key]>; } : never; /** * @category Fixture Factory * @example From object schema * ```ts * import { x } from 'unhoax' * import { createFixtureFactory } from 'unhoax-chance' * * const userSchema = x.object({ id: x.string, … }) * const createRandomUser = createFixtureFactory(userSchema) * const createRandomUser: (seed?: number) => User * * // overriding generators for specific properties: * const createRandomUser = createFixtureFactory(userSchema, { * id: (chance) => chance.guid(), * }) * * * const user = createRandomUser() * const user = createRandomUser(42) // with seed * ``` * * @example From array/Set/Map schema * ```ts * import { x } from 'unhoax' * import { createFixtureFactory } from 'unhoax-chance' * * const users = x.array(userSchema) * const users = x.mapOf(x.string, userSchema) // Map<id, user> * const users = x.setOf(userSchema) * * const createRandomUsers = createFixtureFactory(userSchema) * ``` * <br> * @example From Primitive * ```ts * import { x } from 'unhoax' * import { createFixtureFactory } from 'unhoax-chance' * * const createRandomString = createFixtureFactory(x.string) * const result = createRandomString() * const result = createRandomString(42) // seed: 42 * result: string * * const createRandomNumber = createFixtureFactory(x.number) * const result = createRandomNumber() * const result = createRandomNumber(42) // seed: 42 * result: number * ``` */ export declare function createFixtureFactory<T>(schema: x.BaseSchema<T>, overrides?: Overrides<T>): GenerateFixture<T>;