@enface/js
Version:
Biometric researches
67 lines (60 loc) • 1.84 kB
JavaScript
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;
};