UNPKG

@r1tsu/payload

Version:

37 lines (36 loc) 1.53 kB
import fs from 'fs'; import { ErrorDeletingFile } from '../errors/index.js'; import fileExists from './fileExists.js'; export const deleteAssociatedFiles = async ({ collectionConfig, doc, files = [], overrideDelete, req })=>{ if (!collectionConfig.upload) return; if (overrideDelete || files.length > 0) { const { staticDir: staticPath } = collectionConfig.upload; const fileToDelete = `${staticPath}/${doc.filename}`; try { if (await fileExists(fileToDelete)) { fs.unlinkSync(fileToDelete); } } catch (err) { throw new ErrorDeletingFile(req.t); } if (doc.sizes) { const sizes = Object.values(doc.sizes); // Since forEach will not wait until unlink is finished it could // happen that two operations will try to delete the same file. // To avoid this it is recommended to use "sync" instead // eslint-disable-next-line no-restricted-syntax for (const size of sizes){ const sizeToDelete = `${staticPath}/${size.filename}`; try { // eslint-disable-next-line no-await-in-loop if (await fileExists(sizeToDelete)) { fs.unlinkSync(sizeToDelete); } } catch (err) { throw new ErrorDeletingFile(req.t); } } } } }; //# sourceMappingURL=deleteAssociatedFiles.js.map