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
TypeScript
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;
}