/** * Storage Configuration Constants * * Default configuration values for the storage system. * These can be overridden at runtime through configuration objects. * * @module src/storage/constants */ import { ADAPTER_HEALTH_STATUS, FILE_ACCESS_LEVEL, PATH_GENERATION_STRATEGY, STORAGE_QUEUE_PRIORITY, RETRY_STRATEGY } from '@plyaz/types'; /** * File Validation Configuration */ export declare const FILE_VALIDATION_CONFIG: { /** * Default maximum file size (bytes) * 100MB - reasonable default for most applications */ readonly DEFAULT_MAX_FILE_SIZE: number; /** * Default minimum file size (bytes) * 1 byte - allow any non-empty file */ readonly DEFAULT_MIN_FILE_SIZE: 1; /** * Maximum file size for images (bytes) * 25MB - covers high-resolution images */ readonly IMAGE_MAX_SIZE: number; /** * Maximum file size for videos (bytes) * 500MB - allows reasonable quality videos */ readonly VIDEO_MAX_SIZE: number; /** * Maximum file size for documents (bytes) * 50MB - covers most document types including PDFs */ readonly DOCUMENT_MAX_SIZE: number; /** * Maximum file size for audio (bytes) * 100MB - allows high-quality audio files */ readonly AUDIO_MAX_SIZE: number; /** * Maximum file size for archives (bytes) * 1GB - allows compressed collections */ readonly ARCHIVE_MAX_SIZE: number; /** * Default allowed MIME types for images */ readonly DEFAULT_ALLOWED_IMAGE_TYPES: readonly ["image/jpeg", "image/jpg", "image/png", "image/gif", "image/webp", "image/avif", "image/svg+xml"]; /** * Default allowed MIME types for videos */ readonly DEFAULT_ALLOWED_VIDEO_TYPES: readonly ["video/mp4", "video/mpeg", "video/quicktime", "video/x-msvideo", "video/webm"]; /** * Default allowed MIME types for documents */ readonly DEFAULT_ALLOWED_DOCUMENT_TYPES: readonly ["application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "text/plain", "text/csv"]; /** * Default allowed MIME types for audio */ readonly DEFAULT_ALLOWED_AUDIO_TYPES: readonly ["audio/mpeg", "audio/mp3", "audio/wav", "audio/ogg", "audio/webm"]; /** * Blocked executable extensions */ readonly BLOCKED_EXECUTABLE_EXTENSIONS: readonly [".exe", ".bat", ".cmd", ".com", ".sh", ".bash", ".ps1", ".app", ".deb", ".rpm", ".dmg", ".pkg", ".msi"]; }; /** * Storage Retry Configuration */ export declare const STORAGE_RETRY_CONFIG: { /** * Default retry strategy */ readonly DEFAULT_STRATEGY: RETRY_STRATEGY.ExponentialBackoff; /** * Default maximum number of retry attempts */ readonly DEFAULT_MAX_ATTEMPTS: 3; /** * Default initial delay between retries (milliseconds) */ readonly DEFAULT_INITIAL_DELAY_MS: 1000; /** * Maximum delay between retries (milliseconds) */ readonly MAX_DELAY_MS: 30000; /** * Backoff multiplier for exponential backoff */ readonly BACKOFF_MULTIPLIER: 2; }; /** * Path Generation Configuration */ export declare const PATH_GENERATION_CONFIG: { /** * Default path generation strategy */ readonly DEFAULT_STRATEGY: PATH_GENERATION_STRATEGY.HashBased; /** * Whether to include hash in path by default */ readonly DEFAULT_INCLUDE_HASH: true; /** * Whether to include timestamp in path by default */ readonly DEFAULT_INCLUDE_TIMESTAMP: false; /** * Default path template for entity-based strategy * Supports: {entityType}, {entityId}, {category}, {filename}, {hash}, {timestamp} */ readonly DEFAULT_ENTITY_TEMPLATE: "{entityType}/{entityId}/{category}/{filename}"; /** * Default path template for date-based strategy */ readonly DEFAULT_DATE_TEMPLATE: "{year}/{month}/{day}/{filename}"; /** * Default path template for category-based strategy */ readonly DEFAULT_CATEGORY_TEMPLATE: "{category}/{filename}"; }; /** * Storage Queue Configuration */ export declare const STORAGE_QUEUE_CONFIG: { /** * Default maximum queue size */ readonly DEFAULT_MAX_SIZE: 10000; /** * Default number of concurrent workers */ readonly DEFAULT_CONCURRENCY: 5; /** * Default queue priority */ readonly DEFAULT_PRIORITY: STORAGE_QUEUE_PRIORITY.NORMAL; /** * Default maximum retries for queue items */ readonly DEFAULT_MAX_RETRIES: 3; /** * Default retry delay for failed queue items (milliseconds) */ readonly DEFAULT_RETRY_DELAY_MS: 5000; }; /** * Adapter Configuration */ export declare const ADAPTER_CONFIG: { /** * Default adapter priority */ readonly DEFAULT_PRIORITY: 1; /** * Default health check interval (milliseconds) */ readonly DEFAULT_HEALTH_CHECK_INTERVAL_MS: 30000; /** * Default health check timeout (milliseconds) */ readonly DEFAULT_HEALTH_CHECK_TIMEOUT_MS: 5000; /** * Default healthy status */ readonly DEFAULT_HEALTH_STATUS: ADAPTER_HEALTH_STATUS.UNKNOWN; /** * Maximum acceptable health check response time (milliseconds) */ readonly MAX_ACCEPTABLE_RESPONSE_TIME_MS: 2000; }; /** * Upload Configuration */ export declare const UPLOAD_CONFIG: { /** * Default maximum concurrent uploads */ readonly DEFAULT_MAX_CONCURRENT: 3; /** * Maximum allowed concurrent uploads (hard limit) */ readonly MAX_CONCURRENT: 10; /** * Default upload timeout (milliseconds) * 5 minutes for large files */ readonly DEFAULT_TIMEOUT_MS: 300000; /** * Default chunk size for chunked uploads (bytes) * 5MB per chunk */ readonly DEFAULT_CHUNK_SIZE: number; /** * Minimum file size to trigger chunked upload (bytes) * 50MB - files larger than this use chunked upload */ readonly CHUNKED_UPLOAD_THRESHOLD: number; /** * Maximum number of upload retries */ readonly MAX_UPLOAD_RETRIES: 3; /** * Whether to extract metadata by default */ readonly DEFAULT_EXTRACT_METADATA: true; /** * Whether to scan for viruses by default */ readonly DEFAULT_VIRUS_SCAN: false; /** * Default file access level */ readonly DEFAULT_ACCESS_LEVEL: FILE_ACCESS_LEVEL.PRIVATE; }; /** * Download Configuration */ export declare const DOWNLOAD_CONFIG: { /** * Default download timeout (milliseconds) */ readonly DEFAULT_TIMEOUT_MS: 120000; /** * Default signed URL expiry (seconds) * 1 hour */ readonly DEFAULT_SIGNED_URL_EXPIRY_SECONDS: 3600; /** * Maximum signed URL expiry (seconds) * 7 days */ readonly MAX_SIGNED_URL_EXPIRY_SECONDS: 604800; /** * Minimum signed URL expiry (seconds) * 5 minutes */ readonly MIN_SIGNED_URL_EXPIRY_SECONDS: 300; }; /** * Media Processing Configuration */ export declare const MEDIA_PROCESSING_CONFIG: { /** * Default image quality (1-100) */ readonly DEFAULT_IMAGE_QUALITY: 85; /** * Default thumbnail width (pixels) */ readonly DEFAULT_THUMBNAIL_WIDTH: 200; /** * Default thumbnail height (pixels) */ readonly DEFAULT_THUMBNAIL_HEIGHT: 200; /** * Default image format for conversion */ readonly DEFAULT_IMAGE_FORMAT: "jpeg"; /** * Maximum processing timeout (milliseconds) * 10 minutes for complex media processing */ readonly MAX_PROCESSING_TIMEOUT_MS: 600000; /** * Maximum image dimensions (pixels) */ readonly MAX_IMAGE_DIMENSIONS: 10000; /** * Whether to generate thumbnails by default */ readonly DEFAULT_GENERATE_THUMBNAIL: true; }; /** * Virus Scan Configuration */ export declare const VIRUS_SCAN_CONFIG: { /** * Maximum file size to scan (bytes) * 100MB - VirusTotal free tier limit */ readonly MAX_SCAN_SIZE: number; /** * Whether to fail upload on virus detection */ readonly FAIL_ON_DETECTION: true; /** * Scan timeout (milliseconds) */ readonly SCAN_TIMEOUT_MS: 60000; }; /** * Compliance Configuration */ export declare const COMPLIANCE_CONFIG: { /** * Default retention period (days) */ readonly DEFAULT_RETENTION_DAYS: 365; /** * Whether files are immutable by default */ readonly DEFAULT_IMMUTABLE: false; /** * Whether to auto-delete after retention expires */ readonly DEFAULT_AUTO_DELETE: false; /** * Retention check interval (milliseconds) * Check daily */ readonly RETENTION_CHECK_INTERVAL_MS: 86400000; }; /** * Storage Template & PDF Configuration */ export declare const STORAGE_TEMPLATE_CONFIG: { /** * Default PDF format */ readonly DEFAULT_PDF_FORMAT: "A4"; /** * Default PDF orientation */ readonly DEFAULT_PDF_ORIENTATION: "portrait"; /** * Default PDF margin */ readonly DEFAULT_PDF_MARGIN: { readonly top: "20mm"; readonly right: "15mm"; readonly bottom: "20mm"; readonly left: "15mm"; }; /** * Whether to print background by default */ readonly DEFAULT_PRINT_BACKGROUND: true; /** * Default PDF scale */ readonly DEFAULT_PDF_SCALE: 1; /** * Minimum PDF scale factor */ readonly PDF_SCALE_MIN: 0.1; /** * Maximum PDF scale factor */ readonly PDF_SCALE_MAX: 2; /** * PDF generation timeout (milliseconds) */ readonly PDF_GENERATION_TIMEOUT_MS: 60000; /** * Maximum template size (bytes) */ readonly MAX_TEMPLATE_SIZE: 1048576; }; /** * Share Link Configuration */ export declare const SHARE_LINK_CONFIG: { /** * Default share link expiry (seconds) * 7 days */ readonly DEFAULT_EXPIRY_SECONDS: 604800; /** * Maximum share link expiry (seconds) * 30 days */ readonly MAX_EXPIRY_SECONDS: 2592000; /** * Default maximum downloads per share link */ readonly DEFAULT_MAX_DOWNLOADS: 100; /** * Whether to require password by default */ readonly DEFAULT_REQUIRE_PASSWORD: false; }; /** * TTL Configuration */ export declare const TTL_CONFIG: { /** * Default TTL for temporary files (seconds) * 24 hours */ readonly DEFAULT_TTL_SECONDS: 86400; /** * TTL cleanup interval (milliseconds) * Check every hour */ readonly CLEANUP_INTERVAL_MS: 3600000; /** * Grace period before actual deletion (milliseconds) * 1 hour buffer */ readonly DELETION_GRACE_PERIOD_MS: 3600000; }; /** * CORS Configuration */ export declare const CORS_CONFIG: { /** * Default allowed origins */ readonly DEFAULT_ALLOWED_ORIGINS: readonly ["*"]; /** * Default allowed methods */ readonly DEFAULT_ALLOWED_METHODS: readonly ["GET", "POST", "PUT", "DELETE", "HEAD"]; /** * Default allowed headers */ readonly DEFAULT_ALLOWED_HEADERS: readonly ["Content-Type", "Authorization", "X-Requested-With", "X-Upload-Content-Type", "X-Upload-Content-Length"]; /** * Default exposed headers */ readonly DEFAULT_EXPOSED_HEADERS: readonly ["ETag", "Content-Length", "Content-Type", "Last-Modified"]; /** * Default max age (seconds) */ readonly DEFAULT_MAX_AGE_SECONDS: 3600; /** * Whether to allow credentials by default */ readonly DEFAULT_ALLOW_CREDENTIALS: false; }; /** * Audit Log Configuration */ export declare const AUDIT_CONFIG: { /** * Whether to log uploads by default */ readonly DEFAULT_LOG_UPLOADS: true; /** * Whether to log downloads by default */ readonly DEFAULT_LOG_DOWNLOADS: true; /** * Whether to log deletes by default */ readonly DEFAULT_LOG_DELETES: true; /** * Audit log retention period (days) */ readonly LOG_RETENTION_DAYS: 365; /** * Maximum audit log size per file (bytes) */ readonly MAX_LOG_SIZE: number; }; /** * CDN Invalidation Configuration */ export declare const CDN_CONFIG: { /** * Default invalidation timeout (milliseconds) */ readonly DEFAULT_INVALIDATION_TIMEOUT_MS: 30000; /** * Maximum batch size for invalidation */ readonly MAX_INVALIDATION_BATCH_SIZE: 100; /** * Invalidation retry attempts */ readonly INVALIDATION_MAX_RETRIES: 3; }; /** * Monitoring Configuration */ export declare const MONITORING_CONFIG: { /** * Metrics collection interval (milliseconds) */ readonly METRICS_INTERVAL_MS: 60000; /** * Whether to track upload progress by default */ readonly DEFAULT_TRACK_PROGRESS: true; /** * Progress update interval (milliseconds) */ readonly PROGRESS_UPDATE_INTERVAL_MS: 500; }; /** * Cloudflare R2 Configuration */ export declare const CLOUDFLARE_R2_CONFIG: { /** * Default region */ readonly DEFAULT_REGION: "auto"; /** * Default endpoint format */ readonly DEFAULT_ENDPOINT_FORMAT: "https://{accountId}.r2.cloudflarestorage.com"; }; /** * Supabase Storage Configuration */ export declare const SUPABASE_STORAGE_CONFIG: { /** * Default bucket name */ readonly DEFAULT_BUCKET: "uploads"; /** * Upload upsert by default */ readonly DEFAULT_UPSERT: false; }; /** * Export all configuration as a single object for convenience */ export declare const STORAGE_PACKAGE_CONFIG: { readonly FILE_VALIDATION: { /** * Default maximum file size (bytes) * 100MB - reasonable default for most applications */ readonly DEFAULT_MAX_FILE_SIZE: number; /** * Default minimum file size (bytes) * 1 byte - allow any non-empty file */ readonly DEFAULT_MIN_FILE_SIZE: 1; /** * Maximum file size for images (bytes) * 25MB - covers high-resolution images */ readonly IMAGE_MAX_SIZE: number; /** * Maximum file size for videos (bytes) * 500MB - allows reasonable quality videos */ readonly VIDEO_MAX_SIZE: number; /** * Maximum file size for documents (bytes) * 50MB - covers most document types including PDFs */ readonly DOCUMENT_MAX_SIZE: number; /** * Maximum file size for audio (bytes) * 100MB - allows high-quality audio files */ readonly AUDIO_MAX_SIZE: number; /** * Maximum file size for archives (bytes) * 1GB - allows compressed collections */ readonly ARCHIVE_MAX_SIZE: number; /** * Default allowed MIME types for images */ readonly DEFAULT_ALLOWED_IMAGE_TYPES: readonly ["image/jpeg", "image/jpg", "image/png", "image/gif", "image/webp", "image/avif", "image/svg+xml"]; /** * Default allowed MIME types for videos */ readonly DEFAULT_ALLOWED_VIDEO_TYPES: readonly ["video/mp4", "video/mpeg", "video/quicktime", "video/x-msvideo", "video/webm"]; /** * Default allowed MIME types for documents */ readonly DEFAULT_ALLOWED_DOCUMENT_TYPES: readonly ["application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "text/plain", "text/csv"]; /** * Default allowed MIME types for audio */ readonly DEFAULT_ALLOWED_AUDIO_TYPES: readonly ["audio/mpeg", "audio/mp3", "audio/wav", "audio/ogg", "audio/webm"]; /** * Blocked executable extensions */ readonly BLOCKED_EXECUTABLE_EXTENSIONS: readonly [".exe", ".bat", ".cmd", ".com", ".sh", ".bash", ".ps1", ".app", ".deb", ".rpm", ".dmg", ".pkg", ".msi"]; }; readonly RETRY: { /** * Default retry strategy */ readonly DEFAULT_STRATEGY: RETRY_STRATEGY.ExponentialBackoff; /** * Default maximum number of retry attempts */ readonly DEFAULT_MAX_ATTEMPTS: 3; /** * Default initial delay between retries (milliseconds) */ readonly DEFAULT_INITIAL_DELAY_MS: 1000; /** * Maximum delay between retries (milliseconds) */ readonly MAX_DELAY_MS: 30000; /** * Backoff multiplier for exponential backoff */ readonly BACKOFF_MULTIPLIER: 2; }; readonly PATH_GENERATION: { /** * Default path generation strategy */ readonly DEFAULT_STRATEGY: PATH_GENERATION_STRATEGY.HashBased; /** * Whether to include hash in path by default */ readonly DEFAULT_INCLUDE_HASH: true; /** * Whether to include timestamp in path by default */ readonly DEFAULT_INCLUDE_TIMESTAMP: false; /** * Default path template for entity-based strategy * Supports: {entityType}, {entityId}, {category}, {filename}, {hash}, {timestamp} */ readonly DEFAULT_ENTITY_TEMPLATE: "{entityType}/{entityId}/{category}/{filename}"; /** * Default path template for date-based strategy */ readonly DEFAULT_DATE_TEMPLATE: "{year}/{month}/{day}/{filename}"; /** * Default path template for category-based strategy */ readonly DEFAULT_CATEGORY_TEMPLATE: "{category}/{filename}"; }; readonly QUEUE: { /** * Default maximum queue size */ readonly DEFAULT_MAX_SIZE: 10000; /** * Default number of concurrent workers */ readonly DEFAULT_CONCURRENCY: 5; /** * Default queue priority */ readonly DEFAULT_PRIORITY: STORAGE_QUEUE_PRIORITY.NORMAL; /** * Default maximum retries for queue items */ readonly DEFAULT_MAX_RETRIES: 3; /** * Default retry delay for failed queue items (milliseconds) */ readonly DEFAULT_RETRY_DELAY_MS: 5000; }; readonly ADAPTER: { /** * Default adapter priority */ readonly DEFAULT_PRIORITY: 1; /** * Default health check interval (milliseconds) */ readonly DEFAULT_HEALTH_CHECK_INTERVAL_MS: 30000; /** * Default health check timeout (milliseconds) */ readonly DEFAULT_HEALTH_CHECK_TIMEOUT_MS: 5000; /** * Default healthy status */ readonly DEFAULT_HEALTH_STATUS: ADAPTER_HEALTH_STATUS.UNKNOWN; /** * Maximum acceptable health check response time (milliseconds) */ readonly MAX_ACCEPTABLE_RESPONSE_TIME_MS: 2000; }; readonly UPLOAD: { /** * Default maximum concurrent uploads */ readonly DEFAULT_MAX_CONCURRENT: 3; /** * Maximum allowed concurrent uploads (hard limit) */ readonly MAX_CONCURRENT: 10; /** * Default upload timeout (milliseconds) * 5 minutes for large files */ readonly DEFAULT_TIMEOUT_MS: 300000; /** * Default chunk size for chunked uploads (bytes) * 5MB per chunk */ readonly DEFAULT_CHUNK_SIZE: number; /** * Minimum file size to trigger chunked upload (bytes) * 50MB - files larger than this use chunked upload */ readonly CHUNKED_UPLOAD_THRESHOLD: number; /** * Maximum number of upload retries */ readonly MAX_UPLOAD_RETRIES: 3; /** * Whether to extract metadata by default */ readonly DEFAULT_EXTRACT_METADATA: true; /** * Whether to scan for viruses by default */ readonly DEFAULT_VIRUS_SCAN: false; /** * Default file access level */ readonly DEFAULT_ACCESS_LEVEL: FILE_ACCESS_LEVEL.PRIVATE; }; readonly DOWNLOAD: { /** * Default download timeout (milliseconds) */ readonly DEFAULT_TIMEOUT_MS: 120000; /** * Default signed URL expiry (seconds) * 1 hour */ readonly DEFAULT_SIGNED_URL_EXPIRY_SECONDS: 3600; /** * Maximum signed URL expiry (seconds) * 7 days */ readonly MAX_SIGNED_URL_EXPIRY_SECONDS: 604800; /** * Minimum signed URL expiry (seconds) * 5 minutes */ readonly MIN_SIGNED_URL_EXPIRY_SECONDS: 300; }; readonly MEDIA_PROCESSING: { /** * Default image quality (1-100) */ readonly DEFAULT_IMAGE_QUALITY: 85; /** * Default thumbnail width (pixels) */ readonly DEFAULT_THUMBNAIL_WIDTH: 200; /** * Default thumbnail height (pixels) */ readonly DEFAULT_THUMBNAIL_HEIGHT: 200; /** * Default image format for conversion */ readonly DEFAULT_IMAGE_FORMAT: "jpeg"; /** * Maximum processing timeout (milliseconds) * 10 minutes for complex media processing */ readonly MAX_PROCESSING_TIMEOUT_MS: 600000; /** * Maximum image dimensions (pixels) */ readonly MAX_IMAGE_DIMENSIONS: 10000; /** * Whether to generate thumbnails by default */ readonly DEFAULT_GENERATE_THUMBNAIL: true; }; readonly VIRUS_SCAN: { /** * Maximum file size to scan (bytes) * 100MB - VirusTotal free tier limit */ readonly MAX_SCAN_SIZE: number; /** * Whether to fail upload on virus detection */ readonly FAIL_ON_DETECTION: true; /** * Scan timeout (milliseconds) */ readonly SCAN_TIMEOUT_MS: 60000; }; readonly COMPLIANCE: { /** * Default retention period (days) */ readonly DEFAULT_RETENTION_DAYS: 365; /** * Whether files are immutable by default */ readonly DEFAULT_IMMUTABLE: false; /** * Whether to auto-delete after retention expires */ readonly DEFAULT_AUTO_DELETE: false; /** * Retention check interval (milliseconds) * Check daily */ readonly RETENTION_CHECK_INTERVAL_MS: 86400000; }; readonly TEMPLATE: { /** * Default PDF format */ readonly DEFAULT_PDF_FORMAT: "A4"; /** * Default PDF orientation */ readonly DEFAULT_PDF_ORIENTATION: "portrait"; /** * Default PDF margin */ readonly DEFAULT_PDF_MARGIN: { readonly top: "20mm"; readonly right: "15mm"; readonly bottom: "20mm"; readonly left: "15mm"; }; /** * Whether to print background by default */ readonly DEFAULT_PRINT_BACKGROUND: true; /** * Default PDF scale */ readonly DEFAULT_PDF_SCALE: 1; /** * Minimum PDF scale factor */ readonly PDF_SCALE_MIN: 0.1; /** * Maximum PDF scale factor */ readonly PDF_SCALE_MAX: 2; /** * PDF generation timeout (milliseconds) */ readonly PDF_GENERATION_TIMEOUT_MS: 60000; /** * Maximum template size (bytes) */ readonly MAX_TEMPLATE_SIZE: 1048576; }; readonly SHARE_LINK: { /** * Default share link expiry (seconds) * 7 days */ readonly DEFAULT_EXPIRY_SECONDS: 604800; /** * Maximum share link expiry (seconds) * 30 days */ readonly MAX_EXPIRY_SECONDS: 2592000; /** * Default maximum downloads per share link */ readonly DEFAULT_MAX_DOWNLOADS: 100; /** * Whether to require password by default */ readonly DEFAULT_REQUIRE_PASSWORD: false; }; readonly TTL: { /** * Default TTL for temporary files (seconds) * 24 hours */ readonly DEFAULT_TTL_SECONDS: 86400; /** * TTL cleanup interval (milliseconds) * Check every hour */ readonly CLEANUP_INTERVAL_MS: 3600000; /** * Grace period before actual deletion (milliseconds) * 1 hour buffer */ readonly DELETION_GRACE_PERIOD_MS: 3600000; }; readonly CORS: { /** * Default allowed origins */ readonly DEFAULT_ALLOWED_ORIGINS: readonly ["*"]; /** * Default allowed methods */ readonly DEFAULT_ALLOWED_METHODS: readonly ["GET", "POST", "PUT", "DELETE", "HEAD"]; /** * Default allowed headers */ readonly DEFAULT_ALLOWED_HEADERS: readonly ["Content-Type", "Authorization", "X-Requested-With", "X-Upload-Content-Type", "X-Upload-Content-Length"]; /** * Default exposed headers */ readonly DEFAULT_EXPOSED_HEADERS: readonly ["ETag", "Content-Length", "Content-Type", "Last-Modified"]; /** * Default max age (seconds) */ readonly DEFAULT_MAX_AGE_SECONDS: 3600; /** * Whether to allow credentials by default */ readonly DEFAULT_ALLOW_CREDENTIALS: false; }; readonly AUDIT: { /** * Whether to log uploads by default */ readonly DEFAULT_LOG_UPLOADS: true; /** * Whether to log downloads by default */ readonly DEFAULT_LOG_DOWNLOADS: true; /** * Whether to log deletes by default */ readonly DEFAULT_LOG_DELETES: true; /** * Audit log retention period (days) */ readonly LOG_RETENTION_DAYS: 365; /** * Maximum audit log size per file (bytes) */ readonly MAX_LOG_SIZE: number; }; readonly CDN: { /** * Default invalidation timeout (milliseconds) */ readonly DEFAULT_INVALIDATION_TIMEOUT_MS: 30000; /** * Maximum batch size for invalidation */ readonly MAX_INVALIDATION_BATCH_SIZE: 100; /** * Invalidation retry attempts */ readonly INVALIDATION_MAX_RETRIES: 3; }; readonly MONITORING: { /** * Metrics collection interval (milliseconds) */ readonly METRICS_INTERVAL_MS: 60000; /** * Whether to track upload progress by default */ readonly DEFAULT_TRACK_PROGRESS: true; /** * Progress update interval (milliseconds) */ readonly PROGRESS_UPDATE_INTERVAL_MS: 500; }; readonly CLOUDFLARE_R2: { /** * Default region */ readonly DEFAULT_REGION: "auto"; /** * Default endpoint format */ readonly DEFAULT_ENDPOINT_FORMAT: "https://{accountId}.r2.cloudflarestorage.com"; }; readonly SUPABASE_STORAGE: { /** * Default bucket name */ readonly DEFAULT_BUCKET: "uploads"; /** * Upload upsert by default */ readonly DEFAULT_UPSERT: false; }; }; //# sourceMappingURL=constants.d.ts.map