adpa-enterprise-framework-automation
Version:
Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe
130 lines • 3.97 kB
TypeScript
/**
* Validation Registry
*
* Central registry for all validation processors in the ADPA Quality Assurance Engine.
* Provides registration, discovery, and management of validation rules.
*
* This registry follows the factory pattern and enables dynamic discovery
* and execution of validation checks based on document types and context.
*
* @version 1.0.0
* @author ADPA Quality Assurance Engine Team
* @created June 2025
*/
import { IValidator } from './interfaces/IValidator.js';
/**
* Configuration for validator registration
*/
export interface ValidatorRegistration {
/** The validator instance */
validator: IValidator;
/** Whether this validator is currently enabled */
enabled: boolean;
/** When this validator was registered */
registeredAt: Date;
/** Version of the validator */
version?: string;
/** Additional metadata */
metadata?: Record<string, any>;
}
/**
* Filter criteria for validator discovery
*/
export interface ValidatorFilter {
/** Only return validators applicable to these document types */
documentTypes?: string[];
/** Only return validators with these IDs */
validatorIds?: string[];
/** Only return enabled/disabled validators */
enabledOnly?: boolean;
/** Minimum priority level (1 = highest) */
minPriority?: number;
/** Maximum priority level (10 = lowest) */
maxPriority?: number;
/** Only return validators with specific tags */
tags?: string[];
}
/**
* Central registry for all validation processors
*/
export declare class ValidationRegistry {
private static instance;
private validators;
private tags;
private constructor();
/**
* Get the singleton instance of the registry
*/
static getInstance(): ValidationRegistry;
/**
* Register a new validator
* @param validator The validator to register
* @param options Registration options
*/
register(validator: IValidator, options?: {
enabled?: boolean;
version?: string;
tags?: string[];
metadata?: Record<string, any>;
}): void;
/**
* Unregister a validator
* @param validatorId The ID of the validator to remove
*/
unregister(validatorId: string): boolean;
/**
* Enable or disable a validator
* @param validatorId The validator ID
* @param enabled Whether to enable or disable
*/
setEnabled(validatorId: string, enabled: boolean): boolean;
/**
* Get all registered validators matching the filter
* @param filter Optional filter criteria
* @returns Array of validator registrations
*/
getValidators(filter?: ValidatorFilter): ValidatorRegistration[];
/**
* Get a specific validator by ID
* @param validatorId The validator ID
* @returns The validator registration or undefined
*/
getValidator(validatorId: string): ValidatorRegistration | undefined;
/**
* Check if a validator is registered
* @param validatorId The validator ID
* @returns Whether the validator is registered
*/
isRegistered(validatorId: string): boolean;
/**
* Get all available tags
* @returns Array of tag names
*/
getTags(): string[];
/**
* Get validators by tag
* @param tag The tag name
* @returns Array of validator IDs with this tag
*/
getValidatorsByTag(tag: string): string[];
/**
* Get registry statistics
* @returns Statistics about the registry
*/
getStats(): {
totalValidators: number;
enabledValidators: number;
disabledValidators: number;
totalTags: number;
validatorsByPriority: Record<number, number>;
};
/**
* Clear all registered validators (useful for testing)
*/
clear(): void;
/**
* List all registered validators for debugging
*/
listValidators(): void;
}
//# sourceMappingURL=ValidationRegistry.d.ts.map