UNPKG

@uploadcare/file-uploader

Version:

Building blocks for Uploadcare products integration

31 lines (25 loc) 1.06 kB
// @ts-check import { IMAGE_ACCEPT_LIST, matchExtension, matchMimeType, mergeFileTypes } from '../../fileTypes.js'; /** @type {import('../../../abstract/managers/ValidationManager.js').FuncFileValidator} */ export const validateFileType = (outputEntry, api) => { const imagesOnly = api.cfg.imgOnly; const accept = api.cfg.accept; const allowedFileTypes = mergeFileTypes([...(imagesOnly ? IMAGE_ACCEPT_LIST : []), accept]); if (!allowedFileTypes.length) return; const mimeType = outputEntry.mimeType; const fileName = outputEntry.name; if (!mimeType || !fileName) { // Skip client validation if mime type or file name are not available for some reasons return; } const mimeOk = matchMimeType(mimeType, allowedFileTypes); const extOk = matchExtension(fileName, allowedFileTypes); if (!mimeOk && !extOk) { // Assume file type is not allowed if both mime and ext checks fail return { type: 'FORBIDDEN_FILE_TYPE', message: api.l10n('file-type-not-allowed'), payload: { entry: outputEntry }, }; } };