UNPKG

mimicry-js

Version:

TS library for generating fake data for tests

47 lines 2.89 kB
import type { FixedValue } from '../generators/fixed'; import type { FieldsGenerator } from '../generators/generate'; import { ResetSignal } from '../reset/ResetSignal'; export type FunctionalGenerator<T> = () => T; export type FieldGenerator<T> = FunctionalGenerator<T> | Iterator<T, never | void, ResetSignal>; export type FieldType<T> = T | FixedValue<T> | FieldGenerator<T> | FieldsConfiguration<T>; export type FieldsConfiguration<Origin> = { readonly [Key in keyof Origin]: FieldType<Origin[Key]>; }; export type FieldsConfigurationFunction<Origin> = (prevBuild?: Origin) => FieldsConfiguration<Origin>; export type FieldsConfigurationGenerator<Origin> = Generator<FieldsConfiguration<Origin>, never | void, Origin | undefined>; export type FieldsConfigurationGeneratorFunction<Origin, InitialParameters extends any[] = never> = (...initialParameters: InitialParameters) => FieldsConfigurationGenerator<Origin>; export type BuilderConfigurationFields<Origin, InitialParameters extends any[] = never> = FieldsConfiguration<Origin> | FieldsConfigurationFunction<Origin> | FieldsGenerator<Origin, InitialParameters>; export type BuilderConfiguration<Origin, PostBuildResult = Origin, TraitName extends string = string, InitialParameters extends any[] = never> = { readonly fields: BuilderConfigurationFields<Origin, InitialParameters>; readonly traits?: TraitsConfiguration<Origin, TraitName>; readonly postBuild?: (x: Origin) => PostBuildResult; }; export type Overrides<Result> = { [Key in keyof Result]?: FieldType<Result[Key]> | Overrides<Result[Key]>; }; export type BuildTimeConfig<Origin, StaticPostBuildResult = Origin, PostBuildResult = StaticPostBuildResult, TraitName = string, InitialParameters extends any[] = never> = { overrides?: Overrides<Origin>; postBuild?: (builtThing: StaticPostBuildResult) => PostBuildResult; traits?: TraitName | TraitName[]; initialParameters?: InitialParameters; }; export interface Builder<Origin, PostBuildResult = Origin, TraitName extends string = string, InitialParameters extends any[] = never> { one<Result = PostBuildResult>(buildTimeConfig?: BuildTimeConfig<Origin, PostBuildResult, Result, TraitName, InitialParameters>): Result; many<Result = PostBuildResult>(count: number, buildTimeConfig?: BuildTimeConfig<Origin, PostBuildResult, Result, TraitName, InitialParameters>): Result[]; reset(): void; } export type IteratorsConfiguration<T> = { [Key in keyof T]: IteratorsConfiguration<T[Key]> | Iterator<T[Key]>; }; export type FreezeKeys<T> = { [Key in keyof T as Key]: T[Key]; }; export type TraitsConfiguration<FactoryResultType, TraitName extends string = string> = { [key in TraitName]: { overrides?: Overrides<FreezeKeys<FactoryResultType>>; }; }; export type Mutable<T> = { -readonly [Key in keyof T]: T[Key]; }; //# sourceMappingURL=types.d.ts.map