@syntropysoft/praetorian
Version:
Praetorian CLI – A universal multi-environment configuration validator for DevSecOps teams. Validate, compare, and secure YAML/ENV files with ease.
148 lines • 4.08 kB
TypeScript
/**
* @file src/shared/types/devsecops-config.ts
* @description Declarative configuration for DevSecOps teams
*/
/**
* @interface RuleSource
* @description Source configuration for rules (SOLID SRP)
*/
export interface RuleSource {
/** Type of rule source */
type: 'core' | 'local' | 'remote' | 'package' | 'git';
/** Human-readable name for this source */
name: string;
/** Description for team visibility */
description?: string;
/** Path for local files (supports glob patterns) */
path?: string;
/** URL for remote sources */
url?: string;
/** NPM package name */
package?: string;
/** Git repository URL */
repo?: string;
/** Branch/tag for git sources */
branch?: string;
/** Subpath within git repo */
gitPath?: string;
/** Whether this source is enabled */
enabled?: boolean;
/** Priority for rule conflicts (higher = wins) */
priority?: number;
}
/**
* @interface EnvironmentConfig
* @description Environment-specific rule configuration (SOLID SRP)
*/
export interface EnvironmentConfig {
/** Environment name */
name: string;
/** Sources to load for this environment */
sources: string[];
/** Additional rules specific to this environment */
additionalRules?: {
[ruleId: string]: string;
};
/** Rules to disable for this environment */
disabledRules?: string[];
/** Environment-specific overrides */
overrides?: {
[ruleId: string]: string;
};
}
/**
* @interface DevSecOpsConfig
* @description Main configuration for DevSecOps teams
*/
export interface DevSecOpsConfig {
/** Version of the configuration schema */
version: string;
/** Project information */
project: {
name: string;
description?: string;
team?: string;
repository?: string;
};
/** Rule sources configuration */
sources: {
[sourceName: string]: RuleSource;
};
/** Environment-specific configurations */
environments: {
[envName: string]: EnvironmentConfig;
};
/** Global rule overrides */
globalOverrides?: {
[ruleId: string]: string;
};
/** Global disabled rules */
globalDisabled?: string[];
/** Validation settings */
validation: {
/** Whether to validate on config load */
validateOnLoad?: boolean;
/** Whether to fail on missing sources */
failOnMissingSource?: boolean;
/** Whether to warn on duplicate rules */
warnOnDuplicates?: boolean;
};
}
/**
* @interface RuleLoadContext
* @description Context for loading rules (SOLID SRP)
*/
export interface RuleLoadContext {
/** Current environment */
environment: string;
/** Working directory */
workingDirectory: string;
/** Whether to include core rules by default */
includeCoreRules?: boolean;
/** Cache settings */
cache?: {
enabled: boolean;
ttl: number;
};
}
/**
* @interface RuleLoadResult
* @description Result of loading rules from configuration
*/
export interface RuleLoadResult {
/** Successfully loaded rules */
rules: {
[ruleId: string]: string;
};
/** Errors encountered during loading */
errors: string[];
/** Warnings encountered during loading */
warnings: string[];
/** Metadata about the loading process */
metadata: {
sourcesLoaded: string[];
environmentsProcessed: string[];
totalRules: number;
duplicateRules: number;
loadDuration: number;
};
}
/**
* @interface SourceLoadResult
* @description Result of loading from a specific source
*/
export interface SourceLoadResult {
/** Source name */
sourceName: string;
/** Successfully loaded rules */
rules: {
[ruleId: string]: string;
};
/** Errors encountered */
errors: string[];
/** Warnings encountered */
warnings: string[];
/** Whether loading was successful */
success: boolean;
}
//# sourceMappingURL=devsecops-config.d.ts.map