/** * Lens Requirements * * Defines what each lens needs to function properly: * - devDependencies that must be installed * - scripts that should be in package.json * - config files that should exist * * Used by: * - codebase-composition: to detect lens readiness per package * - quality-lens-cli: to validate setup and suggest fixes * - UI panels: to display lens status visually */ /** * A single requirement for a lens to function */ export interface LensRequirement { /** Type of requirement */ type: 'devDependency' | 'script' | 'config'; /** Name of the requirement (package name, script name, or config file pattern) */ name: string; /** Human-readable description */ description?: string; /** * For scripts: expected command pattern (regex or substring) * e.g., "tsc" for typecheck script, "eslint" for lint script */ commandPattern?: string; /** * For configs: alternative file patterns that satisfy this requirement * e.g., ["eslint.config.js", "eslint.config.mjs", ".eslintrc.*"] */ alternatives?: string[]; /** Whether this requirement can be auto-fixed */ autoFixable?: boolean; /** Suggested fix value (script command, package version, config template) */ suggestedFix?: string; /** Is this requirement critical (lens won't work without it) or optional (degraded functionality)? */ critical?: boolean; } /** * Complete requirements definition for a lens */ export interface LensRequirements { /** Lens identifier (matches lens.name) */ lensId: string; /** Human-readable lens name */ displayName: string; /** Required dev dependencies */ devDependencies: LensRequirement[]; /** Required/expected scripts */ scripts: LensRequirement[]; /** Required/expected config files */ configs: LensRequirement[]; /** Additional notes about this lens's requirements */ notes?: string; } /** * Result of checking a single requirement */ export interface RequirementCheckResult { requirement: LensRequirement; satisfied: boolean; foundValue?: string; isInherited?: boolean; inheritedFrom?: string; } /** * Result of checking all requirements for a lens */ export interface LensReadiness { lensId: string; displayName: string; ready: boolean; partial: boolean; checks: RequirementCheckResult[]; missing: LensRequirement[]; readyViaInheritance?: boolean; inheritedChecks?: number; } export declare const TYPESCRIPT_REQUIREMENTS: LensRequirements; export declare const ESLINT_REQUIREMENTS: LensRequirements; export declare const PRETTIER_REQUIREMENTS: LensRequirements; export declare const JEST_REQUIREMENTS: LensRequirements; export declare const VITEST_REQUIREMENTS: LensRequirements; export declare const BUN_TEST_REQUIREMENTS: LensRequirements; export declare const KNIP_REQUIREMENTS: LensRequirements; export declare const BIOME_REQUIREMENTS: LensRequirements; export declare const RUFF_REQUIREMENTS: LensRequirements; export declare const MYPY_REQUIREMENTS: LensRequirements; export declare const PYTEST_REQUIREMENTS: LensRequirements; export declare const CLIPPY_REQUIREMENTS: LensRequirements; export declare const RUSTFMT_REQUIREMENTS: LensRequirements; export declare const CARGO_TEST_REQUIREMENTS: LensRequirements; export declare const CARGO_NEXTEST_REQUIREMENTS: LensRequirements; export declare const NODE_TEST_REQUIREMENTS: LensRequirements; export declare const STORYBOARD_COVERAGE_REQUIREMENTS: LensRequirements; export declare const OBSERVABILITY_REQUIREMENTS: LensRequirements; /** * Map of all lens requirements by lens ID */ export declare const ALL_LENS_REQUIREMENTS: Record; /** * Get requirements for a specific lens */ export declare function getLensRequirements(lensId: string): LensRequirements | undefined; /** * Get all available lens IDs that have defined requirements */ export declare function getAvailableLensIds(): string[]; //# sourceMappingURL=requirements.d.ts.map