UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

33 lines (32 loc) 1.23 kB
import sanitize from 'sanitize-filename'; import docWithFilenameExists from './docWithFilenameExists.js'; import fileExists from './fileExists.js'; const incrementName = (name)=>{ const extension = name.split('.').pop(); const baseFilename = sanitize(name.substring(0, name.lastIndexOf('.')) || name); let incrementedName = baseFilename; const regex = /(.*)-(\d+)$/; const found = baseFilename.match(regex); if (found === null) { incrementedName += '-1'; } else { const matchedName = found[1]; const matchedNumber = found[2]; const incremented = Number(matchedNumber) + 1; incrementedName = `${matchedName}-${incremented}`; } return `${incrementedName}.${extension}`; }; export async function getSafeFileName({ collectionSlug, desiredFilename, req, staticPath }) { let modifiedFilename = desiredFilename; while(await docWithFilenameExists({ collectionSlug, filename: modifiedFilename, path: staticPath, req }) || await fileExists(`${staticPath}/${modifiedFilename}`)){ modifiedFilename = incrementName(modifiedFilename); } return modifiedFilename; } //# sourceMappingURL=getSafeFilename.js.map