unhoax-chance
Version:
Generate seeded Chance fixtures based on unhoax schemas
61 lines (60 loc) • 2.04 kB
TypeScript
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>;