import type { FileValidationConfig } from '@admin/utils/validation/file-validation-config' import type { FileValidationError } from '@admin/utils/validation/file-validation-error' import type { FileValidationResult } from '@admin/utils/validation/file-validation-result' import { isFileTypeAllowed } from '@admin/utils/validation/is-file-type-allowed' export function validateFiles( files: File[], config: FileValidationConfig = {} ): FileValidationResult { const { maxSizeInBytes, allowedTypes, maxFiles } = config const errors: FileValidationError[] = [] if (typeof maxFiles === 'number' && maxFiles > 0 && files.length > maxFiles) { errors.push({ filename: '', error: `Too many files. Maximum is ${maxFiles}.` }) } for (const file of files) { if (typeof maxSizeInBytes === 'number' && maxSizeInBytes > 0 && file.size > maxSizeInBytes) { const maxMB = Math.round(maxSizeInBytes / (1024 * 1024)) errors.push({ filename: file.name, error: `File exceeds maximum size of ${maxMB}MB.` }) } if (allowedTypes && allowedTypes.length > 0 && !isFileTypeAllowed(file, allowedTypes)) { errors.push({ filename: file.name, error: `File type "${file.type || 'unknown'}" is not allowed.` }) } } return { valid: errors.length === 0, errors } }