@dbs-portal/core-api
Version:
HTTP client and API utilities for DBS Portal
93 lines • 2.96 kB
TypeScript
/**
* Base factory for creating mock data with type safety
*/
import type { MockDataFactory } from '../types';
/**
* Base factory class for creating mock data
*/
export declare abstract class BaseFactory<T> {
/**
* Create a single instance with optional overrides
*/
abstract create(overrides?: Partial<T>): T;
/**
* Create multiple instances
*/
createMany(count: number, overrides?: Partial<T>): T[];
/**
* Create instances with different overrides for each
*/
createManyWithOverrides(overridesArray: Array<Partial<T>>): T[];
/**
* Create a sequence of instances with incremental values
*/
createSequence(count: number, sequenceFn: (index: number) => Partial<T>): T[];
/**
* Create instances with random variations
*/
createVariations(count: number, variationFn: () => Partial<T>): T[];
}
/**
* Simple factory function creator
*/
export declare function createFactory<T>(factoryFn: (overrides?: Partial<T>) => T): MockDataFactory<T>;
/**
* Factory builder for creating complex factories
*/
export declare class FactoryBuilder<T> {
private baseFn;
private traits;
private sequences;
private afterBuildHooks;
constructor(baseFn: (overrides?: Partial<T>) => T);
/**
* Add a trait (named set of attributes)
*/
trait(name: string, attributes: Partial<T>): this;
/**
* Add a sequence for generating incremental values
*/
sequence<K extends keyof T>(key: K, sequenceFn: (n: number) => T[K]): this;
/**
* Add after-build hook
*/
afterBuild(fn: (instance: T) => T): this;
/**
* Build the factory
*/
build(): FactoryInstance<T>;
}
/**
* Factory instance with trait and sequence support
*/
export declare class FactoryInstance<T> {
private baseFn;
private traits;
private sequences;
private afterBuildHooks;
constructor(baseFn: (overrides?: Partial<T>) => T, traits: Map<string, Partial<T>>, sequences: Map<string, () => any>, afterBuildHooks: Array<(instance: T) => T>);
/**
* Create instance with optional traits and overrides
*/
create(overrides?: Partial<T>, traitNames?: string[]): T;
/**
* Create with specific traits
*/
withTraits(...traitNames: string[]): {
create: (overrides?: Partial<T>) => T;
createMany: (count: number, overrides?: Partial<T>) => T[];
};
/**
* Create multiple instances
*/
createMany(count: number, overrides?: Partial<T>, traitNames?: string[]): T[];
}
/**
* Create a factory builder
*/
export declare function defineFactory<T>(baseFn: (overrides?: Partial<T>) => T): FactoryBuilder<T>;
/**
* Utility for creating factories with default values
*/
export declare function createFactoryWithDefaults<T extends object>(defaults: T, customizations?: Partial<Record<keyof T, () => T[keyof T]>>): MockDataFactory<T>;
//# sourceMappingURL=base-factory.d.ts.map