Handle more input types gracefully

This commit is contained in:
Surma
2021-05-24 17:56:53 +01:00
parent 4192c607f1
commit fa331586d7

View File

@@ -9,7 +9,18 @@ import { autoOptimize } from './auto-optimizer.js';
export { ImagePool, encoders, preprocessors };
async function decodeFile({ file }) {
const buffer = await fsp.readFile(file);
let buffer;
if (ArrayBuffer.isView(file)) {
buffer = Buffer.from(file.buffer);
} else if (file instanceof ArrayBuffer) {
buffer = Buffer.from(file);
} else if (file instanceof Buffer) {
buffer = file;
} else if (typeof file === 'string') {
buffer = await fsp.readFile(file);
} else {
throw Error('Unexpected input type');
}
const firstChunk = buffer.slice(0, 16);
const firstChunkString = Array.from(firstChunk)
.map((v) => String.fromCodePoint(v))