UNPKG

n8n-nodes-pdf-accessibility

Version:

AI-powered PDF accessibility automation for N8N - comprehensive WCAG compliance analysis, intelligent remediation, and professional audit reporting with 5 integrated accessibility tools

97 lines (96 loc) 2.94 kB
import { Buffer } from 'buffer'; export interface AccessibilityIssue { type: 'missing_alt_text' | 'heading_structure' | 'table_headers' | 'link_text' | 'metadata' | 'reading_order' | 'color_contrast'; severity: 'low' | 'medium' | 'high' | 'critical'; description: string; location?: string; wcagCriteria: string[]; suggestion: string; } export interface AccessibilityFix { type: string; description: string; applied: boolean; wcagImprovement: string[]; beforeValue?: string; afterValue?: string; } export interface ToolExecutionResult { toolName: string; success: boolean; issuesFound: AccessibilityIssue[]; fixesApplied: AccessibilityFix[]; processing_time_ms: number; error?: string; } export interface PdfAnalysisContext { buffer: Buffer; fileName: string; pageCount: number; textContent: string; hasImages: boolean; hasTables: boolean; hasLinks: boolean; language: string; wcagLevel: 'A' | 'AA' | 'AAA'; } export interface AccessibilityToolInterface { getName(): string; getDescription(): string; getSupportedWCAGCriteria(): string[]; canProcess(context: PdfAnalysisContext): boolean; execute(context: PdfAnalysisContext, llmProvider?: any): Promise<ToolExecutionResult>; } export declare class AccessibilityToolsManager { private tools; private executionLog; constructor(); private initializeTools; registerTool(tool: AccessibilityToolInterface): void; getAvailableTools(): string[]; getToolDescription(toolName: string): string | null; /** * Analyze PDF and determine which tools should be executed based on content */ analyzeAndRecommendTools(context: PdfAnalysisContext): Promise<{ recommendedTools: string[]; reasoning: string[]; estimatedComplexity: 'simple' | 'moderate' | 'complex'; }>; /** * Execute specific tools in optimized order */ executeTools(toolNames: string[], context: PdfAnalysisContext, llmProvider?: any): Promise<{ results: ToolExecutionResult[]; summary: { totalIssues: number; totalFixes: number; processingTime: number; success: boolean; }; }>; /** * Optimize tool execution order for best results */ private optimizeToolOrder; /** * Get execution statistics */ getExecutionStats(): { totalExecutions: number; successRate: number; averageProcessingTime: number; mostUsedTools: string[]; }; /** * Generate comprehensive accessibility report */ generateAccessibilityReport(results: ToolExecutionResult[], wcagLevel: string): { summary: string; detailedFindings: any; complianceScore: number; recommendations: string[]; }; private groupIssuesByType; private groupFixesBySeverity; }