| const sharp = require('sharp'); |
|
|
| |
| |
| |
| |
| |
| |
| const determineFileType = async (dataBuffer, returnFileType) => { |
| const fileType = await import('file-type'); |
| const type = await fileType.fileTypeFromBuffer(dataBuffer); |
| if (returnFileType) { |
| return type; |
| } |
| return type ? type.ext : null; |
| }; |
|
|
| |
| |
| |
| |
| |
| const getBufferMetadata = async (buffer) => { |
| const fileType = await determineFileType(buffer, true); |
| const bytes = buffer.length; |
| let extension = fileType ? fileType.ext : 'unknown'; |
|
|
| |
| let dimensions = {}; |
|
|
| if (fileType && fileType.mime.startsWith('image/') && extension !== 'unknown') { |
| const imageMetadata = await sharp(buffer).metadata(); |
| dimensions = { |
| width: imageMetadata.width, |
| height: imageMetadata.height, |
| }; |
| } |
|
|
| return { |
| bytes, |
| type: fileType?.mime ?? 'unknown', |
| dimensions, |
| extension, |
| }; |
| }; |
|
|
| |
| |
| |
| |
| |
| |
| const cleanFileName = (fileName) => { |
| if (!fileName) { |
| return fileName; |
| } |
|
|
| |
| const cleaned = fileName.replace( |
| /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}__/i, |
| '', |
| ); |
|
|
| return cleaned; |
| }; |
|
|
| module.exports = { determineFileType, getBufferMetadata, cleanFileName }; |
|
|