| | 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 }; |
| |
|