import { buildStoragePath } from '@/lib/minio'; import { MIME_TO_EXT } from '@/lib/constants/file-validation'; export function generateStorageKey( portSlug: string, entity: string, entityId: string, mimeType: string, ): string { const fileId = crypto.randomUUID(); const extension = MIME_TO_EXT[mimeType] ?? 'bin'; return buildStoragePath(portSlug, entity, entityId, fileId, extension); } export function sanitizeFilename(name: string): string { return name .replace(/[/\\:]/g, '') // strip path chars .replace(/\x00/g, '') // strip null bytes // eslint-disable-next-line no-control-regex .replace(/[\x01-\x1f\x7f]/g, '') // strip control chars .trim() .slice(0, 255); }