UNPKG

@enface/js

Version:
67 lines (60 loc) 1.84 kB
const isNodeEnvironment = ( typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node !== 'undefined' ); const readFileAsArrayBuffer = async file => { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (event => { resolve(event.target.result); }); reader.onerror = (error => { reject(error); }); reader.readAsArrayBuffer(file); }); }; export const nameImagesByIndex = images => { return images.map((item, index) => { item.name = `${index}.jpg`; return item; }); }; export const isUuid = string => { const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; return uuidRegex.test(string); }; export const checkImages = async (images, minLength, minSize) => { if ( !images || !Array.isArray(images) || minLength !== images.length ) { throw new Error(`images array of length ${minLength} required`); } return Promise.all(images.map(async (item, index) => { if (item instanceof Uint8Array) item = item.buffer; if ( !(item instanceof ArrayBuffer) ) { if (!isNodeEnvironment && item instanceof File) { item = await readFileAsArrayBuffer(item); } else throw new Error(`image [${index}] is not an instance of ArrayBuffer`); } if (item.byteLength < minSize) throw new Error(`image [${index}] is too small`); return item; })); }; export const isObject = obj => { return obj === Object(obj); }; export const filterObject = (obj, filteredKey) => { for (const key of Object.keys(obj)) { delete obj[filteredKey]; if (isObject(obj[key])) { obj[key] = filterObject(obj[key], filteredKey); } } return obj; };