UNPKG

@catamphetamine/id3js

Version:

A modern ID3 parser written completely in JavaScript, making use of typed arrays and the HTML5 File API

35 lines (34 loc) 1.46 kB
/** * @param {Blob} blob Blob to read * @param {string} [options.contentType] Content Type * @return {Promise<string>} */ export default function getBlobDataUrl(blob, { contentType } = {}) { return new Promise((resolve, reject) => { const fileReader = new FileReader(); fileReader.addEventListener('error', reject); fileReader.addEventListener('abort', reject); fileReader.addEventListener('load', () => { // Works around TypeScript error: "Object is possibly 'null'". // if (event.target === null) { // return reject(new Error('No data')); // } // Works around TypeScript error: "Property 'result' does not exist // on type 'EventTarget'". // https://stackoverflow.com/questions/35789498/new-typescript-1-8-4-build-error-build-property-result-does-not-exist-on-t. // let dataUrl = event.target.result; if (fileReader.result === null) { // Shouldn't be possible. return reject(new Error('No data')); } let dataUrl = fileReader.result; if (dataUrl !== null) { if (contentType) { dataUrl = dataUrl.replace('application/octet-stream', contentType); } } resolve(dataUrl); }); fileReader.readAsDataURL(blob); }); }