nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
49 lines (48 loc) • 1.7 kB
JavaScript
import { isString } from '../guards/primitives.js';
export function isValidFormData(value) {
if (!(value instanceof FormData))
return false;
if ('entries' in value) {
if (typeof value.entries !== 'function') {
console.warn('`FormData.entries()` is not supported!');
return false;
}
return Array.from(value.entries())?.length > 0;
}
return false;
}
export function isOriginFileObj(value) {
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
return false;
}
const obj = value;
return isString(obj.uid);
}
export function isCustomFile(value) {
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
return false;
}
const obj = value;
return 'originFileObj' in obj && isOriginFileObj(obj.originFileObj);
}
export function isCustomFileArray(value) {
return Array.isArray(value) && value?.length > 0 && value?.every(isCustomFile);
}
export function isFileArray(value) {
return Array.isArray(value) && value?.length > 0 && value?.every(isFileOrBlob);
}
export function isFileList(value) {
return typeof FileList !== 'undefined' && value instanceof FileList;
}
export function isFileOrBlob(value) {
return ((typeof File !== 'undefined' && value instanceof File) ||
(typeof Blob !== 'undefined' && value instanceof Blob));
}
export function isFileUpload(value) {
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
return false;
}
const obj = value;
return (('file' in obj && isCustomFile(obj.file)) ||
('fileList' in obj && isCustomFileArray(obj.fileList)));
}