@syntropysoft/praetorian
Version:
Praetorian CLI – A universal multi-environment configuration validator for DevSecOps teams. Validate, compare, and secure YAML/ENV files with ease.
124 lines • 4.51 kB
TypeScript
/**
* @file src/application/services/rule-loading/RuleDictionary.ts
* @description Pure functional rule dictionary to manage unique rule loading
*/
import { PraetorianRule } from '../../../shared/types/rules';
/**
* @interface RuleDictionary
* @description Dictionary of rules indexed by ID
*/
export interface RuleDictionary {
[ruleId: string]: PraetorianRule;
}
/**
* @interface RuleDictionaryResult
* @description Result of dictionary operations
*/
export interface RuleDictionaryResult {
dictionary: RuleDictionary;
added: string[];
skipped: string[];
warnings: string[];
}
/**
* Creates an empty rule dictionary
* @returns Empty rule dictionary
*/
export declare const createEmptyDictionary: () => RuleDictionary;
/**
* Adds rules to dictionary, skipping duplicates
* @param dictionary - Current dictionary
* @param rules - Rules to add
* @param source - Source identifier for warnings
* @returns Dictionary result with added/skipped rules
*/
export declare const addRulesToDictionary: (dictionary: RuleDictionary, rules: PraetorianRule[], source?: string) => RuleDictionaryResult;
/**
* Merges multiple rule dictionaries
* @param dictionaries - Array of dictionaries to merge
* @param sources - Source identifiers for warnings
* @returns Merged dictionary result
*/
export declare const mergeRuleDictionaries: (dictionaries: RuleDictionary[], sources?: string[]) => RuleDictionaryResult;
/**
* Converts dictionary to array of rules
* @param dictionary - Rule dictionary
* @returns Array of rules
*/
export declare const dictionaryToRules: (dictionary: RuleDictionary) => PraetorianRule[];
/**
* Gets rule by ID from dictionary
* @param dictionary - Rule dictionary
* @param ruleId - Rule ID to find
* @returns Rule if found, undefined otherwise
*/
export declare const getRuleById: (dictionary: RuleDictionary, ruleId: string) => PraetorianRule | undefined;
/**
* Checks if rule exists in dictionary
* @param dictionary - Rule dictionary
* @param ruleId - Rule ID to check
* @returns True if rule exists
*/
export declare const hasRule: (dictionary: RuleDictionary, ruleId: string) => boolean;
/**
* Gets rules by category from dictionary
* @param dictionary - Rule dictionary
* @param category - Category to filter by
* @returns Array of rules in category
*/
export declare const getRulesByCategory: (dictionary: RuleDictionary, category: string) => PraetorianRule[];
/**
* Gets rules by type from dictionary
* @param dictionary - Rule dictionary
* @param type - Type to filter by
* @returns Array of rules of type
*/
export declare const getRulesByType: (dictionary: RuleDictionary, type: string) => PraetorianRule[];
/**
* Gets enabled rules from dictionary
* @param dictionary - Rule dictionary
* @returns Array of enabled rules
*/
export declare const getEnabledRules: (dictionary: RuleDictionary) => PraetorianRule[];
/**
* Gets disabled rules from dictionary
* @param dictionary - Rule dictionary
* @returns Array of disabled rules
*/
export declare const getDisabledRules: (dictionary: RuleDictionary) => PraetorianRule[];
/**
* Gets dictionary statistics
* @param dictionary - Rule dictionary
* @returns Statistics about the dictionary
*/
export declare const getDictionaryStats: (dictionary: RuleDictionary) => {
totalRules: number;
enabledRules: number;
disabledRules: number;
categories: (string | undefined)[];
types: ("schema" | "security" | "format" | "structure")[];
severities: import("../../../shared/types").ValidationSeverity[];
uniqueIds: number;
};
/**
* Filters dictionary by predicate
* @param dictionary - Rule dictionary
* @param predicate - Filter function
* @returns Filtered dictionary
*/
export declare const filterDictionary: (dictionary: RuleDictionary, predicate: (rule: PraetorianRule) => boolean) => RuleDictionary;
/**
* Removes rules from dictionary
* @param dictionary - Rule dictionary
* @param ruleIds - Rule IDs to remove
* @returns New dictionary without specified rules
*/
export declare const removeRulesFromDictionary: (dictionary: RuleDictionary, ruleIds: string[]) => RuleDictionary;
/**
* Overrides rules in dictionary
* @param dictionary - Rule dictionary
* @param overrides - Rules to override (by ID)
* @returns New dictionary with overridden rules
*/
export declare const overrideRulesInDictionary: (dictionary: RuleDictionary, overrides: Partial<PraetorianRule>[]) => RuleDictionaryResult;
//# sourceMappingURL=RuleDictionary.d.ts.map