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
JavaScript
/**
* 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