supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
117 lines • 3.39 kB
TypeScript
/**
* Configuration Validation System
* Phase 6, Checkpoint F1 - Comprehensive validation for all configuration inputs
*/
export interface ValidationRule {
name: string;
description: string;
validator: (value: any, context?: ValidationContext) => ValidationResult;
severity: 'error' | 'warning' | 'info';
category: 'security' | 'performance' | 'compatibility' | 'syntax' | 'logic';
}
export interface ValidationResult {
valid: boolean;
message: string;
suggestion?: string;
details?: Record<string, any>;
}
export interface ValidationContext {
configPath: string[];
fullConfig: Record<string, any>;
environment: 'development' | 'production' | 'test';
metadata?: Record<string, any>;
}
export interface ConfigValidationReport {
valid: boolean;
errors: Array<ValidationError>;
warnings: Array<ValidationWarning>;
info: Array<ValidationInfo>;
summary: {
totalRules: number;
passed: number;
failed: number;
warnings: number;
criticalIssues: string[];
recommendations: string[];
};
}
export interface ValidationError {
path: string;
rule: string;
message: string;
severity: 'error';
category: string;
suggestion?: string;
}
export interface ValidationWarning {
path: string;
rule: string;
message: string;
severity: 'warning';
category: string;
suggestion?: string;
}
export interface ValidationInfo {
path: string;
rule: string;
message: string;
severity: 'info';
category: string;
}
export declare class ConfigValidator {
private static validationRules;
private static globalRules;
/**
* Initialize configuration validator with built-in rules
*/
static initialize(): void;
/**
* Register a validation rule for a specific config path
*/
static registerRule(configPath: string, rule: ValidationRule): void;
/**
* Register a global validation rule
*/
static registerGlobalRule(rule: ValidationRule): void;
/**
* Validate a configuration object
*/
static validateConfig(config: Record<string, any>, environment?: 'development' | 'production' | 'test'): ConfigValidationReport;
/**
* Validate specific configuration value
*/
static validateValue(value: any, configPath: string, context?: Partial<ValidationContext>): ValidationResult;
/**
* Get validation rules for a path
*/
static getRulesForPath(configPath: string): ValidationRule[];
/**
* Validate configuration schema structure
*/
static validateSchema(config: Record<string, any>, expectedSchema: Record<string, any>): ValidationResult;
/**
* Register built-in validation rules
*/
private static registerBuiltInRules;
/**
* Validate object recursively
*/
private static validateObjectRecursively;
/**
* Validate with specific rules
*/
private static validateWithRules;
/**
* Generate validation summary
*/
private static generateValidationSummary;
/**
* Helper methods for schema validation
*/
private static checkRequiredFields;
private static checkExtraFields;
private static checkFieldTypes;
private static getNestedValue;
}
export default ConfigValidator;
//# sourceMappingURL=config-validator.d.ts.map