MCP GitHub Issue Server

/** * Core validation system exports */ // Export validation constants and types export * from './constants.js'; // Export path validation export * from './path/schema.js'; // Export ID validation export * from './id/schema.js'; // Export config validation export * from './config/schema.js'; /** * Validation error helper */ export class ValidationError extends Error { constructor( message: string | string[], public readonly metadata?: Record<string, unknown> ) { super(Array.isArray(message) ? message.join('; ') : message); this.name = 'ValidationError'; } } /** * Helper to create a validation result */ export function createValidationResult<T>( success: boolean, data?: T, errors?: string[], warnings?: string[] ): ValidationResult<T> { return { success, data, errors, warnings, metadata: { validationTime: Date.now(), }, }; } /** * Helper to combine multiple validation results */ export function combineValidationResults<T>(results: ValidationResult<T>[]): ValidationResult<T[]> { const success = results.every(r => r.success); const data = results.map(r => r.data).filter((d): d is T => d !== undefined); const errors = results.flatMap(r => r.errors || []); const warnings = results.flatMap(r => r.warnings || []); return { success, data: data.length > 0 ? data : undefined, errors: errors.length > 0 ? errors : undefined, warnings: warnings.length > 0 ? warnings : undefined, metadata: { validationTime: Date.now(), }, }; } // Import ValidationResult type import type { ValidationResult } from './constants.js';