/** * Pattern Loader Utility * * Loads pattern configurations from JSON files and converts string patterns * to compiled RegExp objects at runtime. * * Benefits: * - Patterns can be updated without code changes * - JSON files are easier to review and audit * - Custom patterns via CLI flag (future: --patterns ) * - Smaller TypeScript bundle * * @module assessment/patterns/patternLoader * @since v1.43.0 (Issue #200 - V2 Refactoring) */ /** * Raw annotation patterns from JSON (string-based) */ export interface AnnotationPatternsJson { readOnly: string[]; destructive: string[]; write: string[]; ambiguous: string[]; } /** * Compiled annotation patterns (RegExp-based) */ export interface CompiledAnnotationPatterns { readOnly: RegExp[]; destructive: RegExp[]; write: RegExp[]; ambiguous: RegExp[]; } /** * Categories of sanitization approaches (matches config/sanitizationPatterns.ts) */ export type SanitizationCategory = "xss" | "html" | "sql" | "input" | "encoding" | "framework"; /** * Raw library pattern from JSON */ export interface LibraryPatternJson { name: string; patterns: string[]; category: string; confidenceBoost: number; languageHint?: string[]; } /** * Compiled library pattern */ export interface CompiledLibraryPattern { name: string; patterns: RegExp[]; category: SanitizationCategory; confidenceBoost: number; languageHint?: string[]; } /** * Raw sanitization patterns from JSON */ export interface SanitizationPatternsJson { libraries: LibraryPatternJson[]; genericKeywords: string[]; responseIndicators: string[]; confidenceBoosts: { SPECIFIC_LIBRARY: number; GENERIC_KEYWORD: number; RESPONSE_EVIDENCE: number; MAX_ADJUSTMENT: number; }; } /** * Compiled sanitization patterns */ export interface CompiledSanitizationPatterns { libraries: CompiledLibraryPattern[]; genericKeywords: RegExp[]; responseIndicators: RegExp[]; confidenceBoosts: { SPECIFIC_LIBRARY: number; GENERIC_KEYWORD: number; RESPONSE_EVIDENCE: number; MAX_ADJUSTMENT: number; }; } /** * Convert a string pattern to a RegExp with case-insensitive flag. * Handles patterns from JSON which are stored as escaped strings. * * @param pattern - String pattern (e.g., "\\bDOMPurify\\b") * @returns Compiled RegExp */ export declare function stringToRegExp(pattern: string): RegExp; /** * Convert an array of string patterns to RegExp array. * * @param patterns - Array of string patterns * @returns Array of compiled RegExp */ export declare function compilePatterns(patterns: string[]): RegExp[]; /** * Load and compile annotation patterns from JSON. * Results are cached for performance. * * @returns Compiled annotation patterns */ export declare function loadAnnotationPatterns(): CompiledAnnotationPatterns; /** * Get raw annotation patterns (string-based) for config files or debugging. */ export declare function getRawAnnotationPatterns(): AnnotationPatternsJson; /** * Load and compile sanitization patterns from JSON. * Results are cached for performance. * * @returns Compiled sanitization patterns */ export declare function loadSanitizationPatterns(): CompiledSanitizationPatterns; /** * Get raw sanitization patterns (string-based) for config files or debugging. */ export declare function getRawSanitizationPatterns(): SanitizationPatternsJson; /** * Clear all cached patterns (useful for testing or hot-reload scenarios). */ export declare function clearPatternCaches(): void; /** * Check if patterns are loaded and cached. */ export declare function arePatternsLoaded(): { annotation: boolean; sanitization: boolean; }; //# sourceMappingURL=patternLoader.d.ts.map