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

89 lines (88 loc) 3.47 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AnthropicProvider = void 0; const axios_1 = __importDefault(require("axios")); const base_1 = require("./base"); class AnthropicProvider extends base_1.BaseLLMProvider { getName() { return 'Anthropic'; } getModels() { return [ 'claude-3-5-sonnet-20241022', 'claude-3-5-haiku-20241022', 'claude-3-opus-20240229', 'claude-3-sonnet-20240229', 'claude-3-haiku-20240307', ]; } async validateCredentials() { try { if (!this.isValidApiKey(this.credentials.apiKey)) { return false; } const response = await axios_1.default.post(`${AnthropicProvider.BASE_URL}/messages`, { model: 'claude-3-haiku-20240307', max_tokens: 10, messages: [{ role: 'user', content: 'Hello' }], }, { headers: { 'x-api-key': this.credentials.apiKey, 'anthropic-version': AnthropicProvider.VERSION, 'Content-Type': 'application/json', }, timeout: 10000, }); return response.status === 200; } catch (error) { return false; } } async analyzeAccessibility(text, documentInfo, options) { const model = options.model || this.credentials.model || 'claude-3-5-sonnet-20241022'; const prompt = this.buildAnalysisPrompt(text, documentInfo, options.wcagLevel, options.language || 'en-US'); try { const response = await axios_1.default.post(`${AnthropicProvider.BASE_URL}/messages`, { model, max_tokens: AnthropicProvider.MAX_TOKENS, messages: [ { role: 'user', content: prompt, }, ], }, { headers: { 'x-api-key': this.credentials.apiKey, 'anthropic-version': AnthropicProvider.VERSION, 'Content-Type': 'application/json', }, timeout: 60000, }); const analysisText = response.data.content[0]?.text; if (!analysisText) { throw new Error('No analysis content received from Anthropic'); } return this.parseAnalysisResponse(analysisText, documentInfo.fileName); } catch (error) { if (axios_1.default.isAxiosError(error)) { const status = error.response?.status; const message = error.response?.data?.error?.message || error.message; throw new Error(`Anthropic API Error (${status}): ${message}`); } throw new Error(`Anthropic analysis failed: ${error instanceof Error ? error.message : String(error)}`); } } isValidApiKey(apiKey) { return /^sk-ant-api/.test(apiKey) && apiKey.length > 20; } } exports.AnthropicProvider = AnthropicProvider; AnthropicProvider.BASE_URL = 'https://api.anthropic.com/v1'; AnthropicProvider.VERSION = '2023-06-01'; AnthropicProvider.MAX_TOKENS = 4000;