@syntropysoft/praetorian
Version:
Praetorian CLI – A universal multi-environment configuration validator for DevSecOps teams. Validate, compare, and secure YAML/ENV files with ease.
123 lines • 3.26 kB
TypeScript
/**
* TODO: IMPERATIVE PROGRAMMING PATTERN - NEEDS REFACTORING
*
* This file demonstrates imperative programming practices that make testing difficult:
* - Imperative for loops (lines 200-210, 250-260, 280-290)
* - Mutable state handling with object mutations
* - Complex nested conditionals
* - Multiple responsibilities in single methods
* - Side effects in loops and object mutations
*
* Mutation Score: 32.04% - Imperative patterns make testing fragile!
*
* RECOMMENDATION: Refactor to use:
* - Functional array methods (map, filter, reduce)
* - Immutable data transformations
* - Pure functions with clear contracts
* - Composition over mutation
* - Recursive functional patterns for object traversal
*/
export interface ValidationResult {
success: boolean;
errors?: any[];
warnings?: any[];
summary?: any;
results?: any[];
error?: string;
}
export interface ValidationOptions {
verbose?: boolean;
strict?: boolean;
env?: string;
all?: boolean;
environments?: string;
failFast?: boolean;
ignore_keys?: string[];
required_keys?: string[];
}
export interface PraetorianConfig {
files: string[];
ignore_keys?: string[];
required_keys?: string[];
}
export declare class ValidationOrchestrator {
private environmentManager;
constructor();
/**
* Orchestrate validation based on options
*/
orchestrateValidation(configPath: string, options: ValidationOptions): Promise<ValidationResult>;
/**
* Validate using environment-based approach
*/
private validateByEnvironments;
/**
* Validate all environments
*/
private validateAllEnvironments;
/**
* Validate specific environment
*/
private validateSpecificEnvironment;
/**
* Validate single file
*/
private validateSingleFile;
/**
* Load Praetorian configuration
*/
private loadPraetorianConfig;
/**
* Separate existing and missing files
*/
private separateExistingAndMissingFiles;
/**
* Handle missing files by creating empty structures
*/
private handleMissingFiles;
/**
* Load all configuration files
*/
private loadAllConfigurationFiles;
/**
* Load file content
*/
private loadFileContent;
/**
* Determine file format
*/
private determineFileFormat;
/**
* Create validation function
*/
private createValidationFunction;
/**
* Create empty structure file
*/
private createEmptyStructureFile;
/**
* Create empty structure from existing files
*/
private createEmptyStructureFromExisting;
/**
* Create structure from required keys
*/
private createStructureFromRequiredKeys;
/**
* Create structure from existing files
*/
private createStructureFromExistingFiles;
/**
* Merge structure
*/
private mergeStructure;
/**
* Replace values with null
*/
private replaceValuesWithNull;
}
/**
* Run validation with the orchestrator
*/
export declare function runValidation(configPath: string, options?: ValidationOptions): Promise<ValidationResult>;
//# sourceMappingURL=ValidationOrchestrator.d.ts.map