UNPKG

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

313 lines 9.39 kB
/** * Adobe PDF Services Configuration and Client Setup * Phase 1: Foundation for Adobe PDF Services Integration */ /** * Default Adobe PDF Services configuration * Uses environment variables for secure credential management */ export const getAdobeConfig = () => { const requiredEnvVars = [ 'ADOBE_CLIENT_ID', 'ADOBE_CLIENT_SECRET', 'ADOBE_ORGANIZATION_ID', 'ADOBE_ACCOUNT_ID', 'ADOBE_PRIVATE_KEY' ]; // Validate required environment variables for (const envVar of requiredEnvVars) { if (!process.env[envVar]) { throw new Error(`Missing required environment variable: ${envVar}`); } } return { clientId: process.env.ADOBE_CLIENT_ID, clientSecret: process.env.ADOBE_CLIENT_SECRET, organizationId: process.env.ADOBE_ORGANIZATION_ID, accountId: process.env.ADOBE_ACCOUNT_ID, privateKey: process.env.ADOBE_PRIVATE_KEY, environment: process.env.ADOBE_ENVIRONMENT || 'sandbox', apiBaseUrl: process.env.ADOBE_API_BASE_URL || 'https://pdf-services.adobe.io', timeoutMs: parseInt(process.env.ADOBE_TIMEOUT_MS || '30000'), retryAttempts: parseInt(process.env.ADOBE_RETRY_ATTEMPTS || '3'), rateLimitPerSecond: parseInt(process.env.ADOBE_RATE_LIMIT || '10') }; }; /** * Default PDF templates for different document types */ export const DEFAULT_PDF_TEMPLATES = { corporate: { id: 'corporate-standard', name: 'Corporate Standard', description: 'Standard corporate document template with professional styling', corporateFonts: [ { family: 'Arial', variants: ['Regular', 'Bold', 'Italic', 'Bold Italic'], fallback: ['Helvetica', 'sans-serif'] }, { family: 'Times New Roman', variants: ['Regular', 'Bold', 'Italic', 'Bold Italic'], fallback: ['Times', 'serif'] } ], watermark: { text: 'CONFIDENTIAL', opacity: 0.1, position: 'center' }, headerFooter: { header: { left: 'Company Name', center: '', right: 'Document Title', height: 30 }, footer: { left: 'Generated by ADPA', center: '', right: 'Page {pageNumber}', height: 25 } }, colorScheme: { primary: '#0066CC', secondary: '#004499', accent: '#FF6600', text: '#333333', background: '#FFFFFF', border: '#CCCCCC' }, margins: { top: 25, bottom: 25, left: 20, right: 20 }, pageLayout: 'A4' }, technical: { id: 'technical-spec', name: 'Technical Specification', description: 'Template optimized for technical documentation with code blocks and diagrams', corporateFonts: [ { family: 'Consolas', variants: ['Regular', 'Bold'], fallback: ['Monaco', 'Courier New', 'monospace'] }, { family: 'Segoe UI', variants: ['Regular', 'Bold', 'Light', 'Semibold'], fallback: ['Arial', 'sans-serif'] } ], colorScheme: { primary: '#2E7D32', secondary: '#1B5E20', accent: '#FF9800', text: '#212121', background: '#FAFAFA', border: '#E0E0E0' }, margins: { top: 30, bottom: 30, left: 25, right: 25 }, pageLayout: 'A4' }, executive: { id: 'executive-summary', name: 'Executive Summary', description: 'High-level executive template with emphasis on key metrics and visuals', corporateFonts: [ { family: 'Calibri', variants: ['Regular', 'Bold', 'Light'], fallback: ['Arial', 'sans-serif'] } ], colorScheme: { primary: '#1565C0', secondary: '#0D47A1', accent: '#FFC107', text: '#263238', background: '#FFFFFF', border: '#90A4AE' }, margins: { top: 35, bottom: 30, left: 30, right: 30 }, pageLayout: 'A4' }, proposal: { id: 'business-proposal', name: 'Business Proposal', description: 'Professional proposal template with modern styling and branding focus', corporateFonts: [ { family: 'Open Sans', variants: ['Regular', 'Bold', 'Light', 'Semibold'], fallback: ['Arial', 'sans-serif'] } ], watermark: { text: 'PROPOSAL', opacity: 0.05, position: 'center' }, colorScheme: { primary: '#6A1B9A', secondary: '#4A148C', accent: '#E91E63', text: '#424242', background: '#FFFFFF', border: '#BDBDBD' }, margins: { top: 40, bottom: 35, left: 35, right: 35 }, pageLayout: 'A4' } }; /** * Default brand guidelines for corporate compliance */ export const DEFAULT_BRAND_GUIDELINES = { colorPalette: { primary: '#0066CC', secondary: '#004499', accent: '#FF6600', text: '#333333', background: '#FFFFFF', border: '#CCCCCC' }, typography: { headings: [ { family: 'Arial', size: 24, weight: 'Bold', color: '#0066CC' }, // H1 { family: 'Arial', size: 20, weight: 'Bold', color: '#004499' }, // H2 { family: 'Arial', size: 16, weight: 'Semibold', color: '#333333' }, // H3 { family: 'Arial', size: 14, weight: 'Semibold', color: '#333333' } // H4 ], body: { family: 'Arial', size: 11, weight: 'Regular', color: '#333333' }, captions: { family: 'Arial', size: 9, weight: 'Italic', color: '#666666' }, lineHeight: 1.4, spacing: { paragraphs: 6, sections: 18, lists: 3 } }, logoPlacement: { minSize: { width: 50, height: 20 }, maxSize: { width: 200, height: 80 }, clearSpace: 15, allowedPositions: ['top-left', 'top-right', 'center'] }, layoutRules: { gridSystem: { columns: 12, gutters: 15, margins: { top: 25, bottom: 25, left: 20, right: 20 } }, margins: { top: 25, bottom: 25, left: 20, right: 20 }, columns: 1, gutters: 15 } }; /** * Adobe API endpoints and service URLs */ export const ADOBE_ENDPOINTS = { AUTH: '/token', PDF_SERVICES: '/v2/pdf', CREATE_PDF: '/v2/pdf/create', COMBINE_PDF: '/v2/pdf/combine', COMPRESS_PDF: '/v2/pdf/compress', EXTRACT_PDF: '/v2/pdf/extract', OCR_PDF: '/v2/pdf/ocr', PROTECT_PDF: '/v2/pdf/protect', REMOVE_PROTECTION: '/v2/pdf/remove-protection', LINEARIZE_PDF: '/v2/pdf/linearize', EXPORT_PDF: '/v2/pdf/export', DOCUMENT_GENERATION: '/v2/document-generation' }; /** * Adobe API rate limiting and retry configuration */ export const ADOBE_API_LIMITS = { REQUESTS_PER_MINUTE: 600, REQUESTS_PER_HOUR: 10000, MAX_FILE_SIZE_MB: 100, MAX_PAGES_PER_DOCUMENT: 1000, TIMEOUT_MS: 300000, // 5 minutes for complex operations RETRY_DELAYS: [1000, 2000, 4000], // Exponential backoff CIRCUIT_BREAKER_THRESHOLD: 5, CIRCUIT_BREAKER_RESET_TIMEOUT: 60000 }; /** * Document processing quality presets */ export const QUALITY_PRESETS = { draft: { compression: 'high', imageQuality: 60, optimizeFor: 'size', colorSpace: 'RGB' }, standard: { compression: 'medium', imageQuality: 80, optimizeFor: 'balanced', colorSpace: 'RGB' }, high: { compression: 'low', imageQuality: 95, optimizeFor: 'quality', colorSpace: 'RGB' }, print: { compression: 'none', imageQuality: 100, optimizeFor: 'print', colorSpace: 'CMYK' } }; /** * Error codes for Adobe integration */ export const ADOBE_ERROR_CODES = { AUTH_FAILED: 'ADOBE_AUTH_FAILED', INVALID_CONFIG: 'ADOBE_INVALID_CONFIG', API_ERROR: 'ADOBE_API_ERROR', TIMEOUT: 'ADOBE_TIMEOUT', RATE_LIMITED: 'ADOBE_RATE_LIMITED', FILE_TOO_LARGE: 'ADOBE_FILE_TOO_LARGE', INVALID_FORMAT: 'ADOBE_INVALID_FORMAT', PROCESSING_FAILED: 'ADOBE_PROCESSING_FAILED', TEMPLATE_NOT_FOUND: 'ADOBE_TEMPLATE_NOT_FOUND', BRAND_VIOLATION: 'ADOBE_BRAND_VIOLATION' }; /** * Success status codes */ export const ADOBE_SUCCESS_CODES = { DOCUMENT_CREATED: 'DOCUMENT_CREATED', PROCESSING_COMPLETE: 'PROCESSING_COMPLETE', BRAND_COMPLIANT: 'BRAND_COMPLIANT', QUALITY_VALIDATED: 'QUALITY_VALIDATED' }; // Legacy compatibility export export const config = getAdobeConfig(); //# sourceMappingURL=config.js.map