import { is } from 'typescript-is'; export const readFileAs = ( file: File, getReaderMethod = (reader: FileReader) => reader.readAsDataURL ): Promise => { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onerror = reject; reader.onload = async (event) => { const buffer = event.target?.result; if (!buffer) reject('failed to read file'); if (!is(buffer)) reject('wrong type'); else resolve(buffer as T); }; getReaderMethod(reader as FileReader)(file); }); }; export const readFileBuffer = async (file: File): Promise => { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onerror = reject; reader.onload = async (event) => { const buffer = event.target?.result; if (buffer === null || buffer === undefined || typeof buffer === 'string') reject('failed to read file'); else resolve(buffer); }; reader.readAsArrayBuffer(file); }); /*return readFileAs( file, (reader: FileReader) => reader.readAsArrayBuffer );*/ }; export const readFileBlob = async (file: File): Promise => { const data = await readFileAs(file); return await (await fetch(data)).blob(); };