payload
Version:
Node, React, Headless CMS and Application Framework built on Next.js
22 lines (21 loc) • 739 B
JavaScript
import { APIError } from '../errors/APIError.js';
/**
* Strips directory components and control characters from a filename,
* leaving only the base filename.
*/ export function sanitizeFilename(filename) {
let sanitized = filename.replace(/\\/g, '/');
const lastSlash = sanitized.lastIndexOf('/');
if (lastSlash !== -1) {
sanitized = sanitized.slice(lastSlash + 1);
}
if (sanitized === '.' || sanitized === '..') {
sanitized = '';
}
// eslint-disable-next-line no-control-regex
sanitized = sanitized.replace(/[\x00-\x1f\x80-\x9f]/g, '');
if (!sanitized) {
throw new APIError('Invalid filename', 400);
}
return sanitized;
}
//# sourceMappingURL=sanitizeFilename.js.map