/** * Jest Configuration Factory * Eliminates duplication across multiple Jest configuration files * Provides standardized, configurable Jest setups for different project types */ import type { Config } from '@jest/types'; /** * Options for creating Jest configurations */ export interface JestConfigOptions { /** Jest preset to use */ preset?: string; /** Test environment */ testEnvironment?: string; /** Additional module file extensions */ moduleFileExtensions?: string[]; /** Root directories for tests */ roots?: string[]; /** Test path patterns */ testMatch?: string[]; /** Paths to ignore during test discovery */ testPathIgnorePatterns?: string[]; /** Module name mapping for mocks */ moduleNameMapper?: Record; /** Setup files to run before tests */ setupFiles?: string[]; /** Setup files to run after environment is established */ setupFilesAfterEnv?: string[]; /** Coverage collection settings */ collectCoverage?: boolean; /** Coverage directory */ coverageDirectory?: string; /** Coverage report formats */ coverageReporters?: any[]; /** Transform configurations */ transform?: Record; /** Module path ignore patterns */ modulePathIgnorePatterns?: string[]; /** Watch path ignore patterns */ watchPathIgnorePatterns?: string[]; /** Coverage collection patterns */ collectCoverageFrom?: string[]; /** Additional configuration overrides */ overrides?: Partial; } /** * Project type presets for common configurations */ export type ProjectType = 'typescript-esm' | 'typescript-cjs' | 'javascript-cjs' | 'react-typescript' | 'demo'; /** * Create a Jest configuration based on project type and custom options * * @param projectType - Type of project configuration * @param options - Additional configuration options * @returns Complete Jest configuration object */ export declare function createJestConfig(projectType?: ProjectType, options?: JestConfigOptions): Config.InitialOptions; /** * Create a Jest configuration for TypeScript ESM projects (most common) */ export declare function createTypeScriptESMConfig(options?: JestConfigOptions): Config.InitialOptions; /** * Create a Jest configuration for TypeScript CommonJS projects */ export declare function createTypeScriptCJSConfig(options?: JestConfigOptions): Config.InitialOptions; /** * Create a Jest configuration for JavaScript projects */ export declare function createJavaScriptConfig(options?: JestConfigOptions): Config.InitialOptions; /** * Create a Jest configuration for React TypeScript projects */ export declare function createReactConfig(options?: JestConfigOptions): Config.InitialOptions; /** * Create a Jest configuration for demo projects */ export declare function createDemoConfig(options?: JestConfigOptions): Config.InitialOptions; /** * Create a minimal Jest configuration for quick testing */ export declare function createMinimalConfig(testEnvironment?: string): Config.InitialOptions; /** * Create a Jest configuration with coverage enabled */ export declare function createCoverageConfig(projectType?: ProjectType, options?: JestConfigOptions): Config.InitialOptions; /** * Jest configuration factory interface */ export declare const jestConfigFactory: { create: typeof createJestConfig; createTypeScriptESM: typeof createTypeScriptESMConfig; createTypeScriptCJS: typeof createTypeScriptCJSConfig; createJavaScript: typeof createJavaScriptConfig; createReact: typeof createReactConfig; createDemo: typeof createDemoConfig; createMinimal: typeof createMinimalConfig; createCoverage: typeof createCoverageConfig; projectTypes: { readonly TYPESCRIPT_ESM: "typescript-esm"; readonly TYPESCRIPT_CJS: "typescript-cjs"; readonly JAVASCRIPT: "javascript-cjs"; readonly REACT_TYPESCRIPT: "react-typescript"; readonly DEMO: "demo"; }; }; export default jestConfigFactory; //# sourceMappingURL=jestConfigFactory.d.ts.map